找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10667|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机proteus仿真:7段数码管显示小数

[复制链接]
跳转到指定楼层
楼主
这个51单片机的proteus仿真实现无符号浮点数的显示。
具体说,显示个位和小数点后三位
数码管的显示一定要注意消隐的问题,每次显示数字之前要先关一次数码管。否则会出现显示混乱。

仿真电路图如下:

C程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit duan=P3^0;
  4. sbit wei=P3^1;
  5. unsigned char code table[] = {
  6. 0x3f,0x06,0x5b,0x4f,
  7. 0x66,0x6d,0x7d,0x07,
  8. 0x7f,0x6f,0x77,0x7c,
  9. 0x39,0x5e,0x79,0x71 };

  10. void delay(void)
  11. {
  12.   unsigned char i,j;
  13. for(i=0;i<10;i++)
  14.   for(j=0;j<110;j++);


  15. }


  16. void show6led(float num)
  17. {
  18. unsigned char i;


  19. i=num;
  20. duan=1;
  21. P2=table[i]+0x80;  //显示个位和小数点
  22. duan=0;
  23. P2=0xff;   //先关闭led
  24. wei=1;
  25. P2=0xfb;             //段选3
  26. wei=0;
  27. delay();



  28.    P2=0xff;
  29. P3=0xff;  //这两句非常重要,主要是清屏消隐
  30. num=num-i;
  31. num=num*10;
  32. i=num;
  33. duan=1;
  34. P2=table[i];
  35. duan=0;
  36.   P2=0xff;
  37.   wei=1;
  38. P2=0xf7;          //段选4,十分位
  39. wei=0;
  40. delay();


  41.     P2=0xff;
  42. P3=0xff;
  43.   num=num-i;
  44. num=num*10;
  45. i=num;
  46. duan=1;
  47. P2=table[i];
  48. duan=0;
  49. P2=0xff;
  50. wei=1;
  51. P2=0xef;          //段选5,百分位
  52. wei=0;
  53. delay();



  54.   P2=0xff;
  55. P3=0xff;
  56. num=num-i;
  57. num=num*10;
  58. i=num;
  59. duan=1;
  60. P2=table[i];
  61. duan=0;
  62. P2=0xff;
  63. wei=1;
  64. P2=0xdf;          //段选6,千分位
  65. wei=0;
  66. delay();
  67.    P2=0xff;
  68. P3=0xff;

  69. }

  70. main()
  71. {
  72.   float number;
  73.   number=3.718;
  74.   
  75.   while(1)
  76.   {
  77.    show6led(number);

  78.   }


  79. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表