找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机数码管程序显示不正常,最后一个一直全亮

[复制链接]
跳转到指定楼层
楼主
刚刚学习几天,求大佬帮忙检查一下这段代码,自己检查了很多遍,实在发现不了问题所在
问题是:下载后8个数码管最后一个一直全亮,用别人的代码最后一个正常显示
单片机源程序如下:
  1. #include <reg52.h>
  2. #define SEG P0 //数码管段选

  3. //***********************************
  4. sbit c=P2^7;        //138译码器                   **
  5. sbit b=P2^6;        //        端口                       **
  6. sbit a=P2^5;        //        分配                           **
  7. //***********************************

  8. unsigned char code Display[6]={0xb0,0x71,0xdb,0x76,0xcf,0x5e};//菜单段码
  9. void MenuDisplay();//菜单显示

  10. void mian()
  11. {
  12.         MenuDisplay();        
  13. }

  14. void MenuDisplay()
  15. {
  16.         unsigned char i;
  17.         unsigned int j;
  18.         for(i=0;i<6;i++)
  19.         {
  20.                 switch(i)
  21.                 {
  22.                         case(0):
  23.                                         c=0;b=0;a=0;break;
  24.                         case(1):
  25.                                         c=0;b=0;a=1;break;
  26.                         case(2):
  27.                                         c=0;b=1;a=1;break;
  28.                         case(3):
  29.                                         c=1;b=0;a=0;break;
  30.                         case(4):
  31.                                         c=1;b=1;a=0;break;
  32.                         case(5):
  33.                                         c=1;b=1;a=1;break;
  34.                 }
  35.                 SEG=Display[i];
  36.                 j=50;        //将变量 j 增大发现最后一个数码管的显示方式是----正常代码与全亮交替显示
  37.                 while(j--);
  38.                 SEG=0x00;//消隐        
  39.         }
  40. }
复制代码


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

使用道具 举报

沙发
ID:869650 发表于 2021-2-9 12:13 | 显示全部楼层
Crazy· 发表于 2021-2-7 08:42
加个while(1)让他一直循环你的 MenuDisplay()函数,不然只会运行一遍整个程序就结束了,只会停留在你最后 ...

感谢!
回复

使用道具 举报

板凳
ID:869650 发表于 2021-2-9 12:14 | 显示全部楼层
张天师 发表于 2021-2-5 17:36
大概看了下,你要求的应该是逐位扫描显示。而你的程式只有单循环,没反复循环,所以显示停留在最后一位。这 ...

感谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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