找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么这个单片机数码管程序出现个位频闪?

[复制链接]
跳转到指定楼层
楼主
ID:490966 发表于 2019-3-14 19:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uint a,b,c,d,e,f,g;
  6. uchar temp,ge,shi;
  7. sbit wei = P2^7;
  8. sbit duang=P2^6;
  9. uchar code leddata[]={

  10.                 0x3F,  //"0"
  11.                 0x06,  //"1"
  12.                 0x5B,  //"2"
  13.                 0x4F,  //"3"
  14.                 0x66,  //"4"
  15.                 0x6D,  //"5"
  16.                 0x7D,  //"6"
  17.                 0x07,  //"7"
  18.                 0x7F,  //"8"
  19.                 0x6F,  //"9"
  20.                 0x77,  //"A"
  21.                 0x7C,  //"B"
  22.                 0x39,  //"C"
  23.                 0x5E,  //"D"
  24.                 0x79,  //"E"
  25.                 0x71,  //"F"
  26.                 0x76,  //"H"
  27.                 0x38,  //"L"
  28.                 0x37,  //"n"
  29.                 0x3E,  //"u"
  30.                 0x73,  //"P"
  31.                 0x5C,  //"o"
  32.                 0x40,  //"-"
  33.                 0x00,  //熄灭
  34.                 0x00  //自定义

  35.                          };


  36. void delay();
  37. void delay(uint z)
  38. {
  39.   for(a = z;a > 0;a--)
  40.     for(b = 114;b > 0;b--);
  41. }
  42. void dishzhdu()
  43. {
  44.          TMOD=0x10;
  45.          TH1 =0x4b;
  46.          TL1 =0xfd;
  47.          TR1 = 1;        //50MS
  48.          EA  = 1;
  49.          ET1 = 1;
  50.          
  51. }
  52. void wabuzhdu()
  53. {
  54.         EX0 = 1;
  55.         IT0 = 0;
  56.         EA  = 1;
  57.         TMOD=0x01;
  58.         TH0 =0x4b;
  59.         TL0 =0xfd; //50ms
  60.         TR0 = 1;
  61. }
  62. void display(uint f )
  63. {  ge = f%10;
  64.    shi= f/10;
  65.    P0 = 0xff;
  66.    wei= 1;
  67.    P0 = 0xfd;
  68.    wei= 0;
  69.    duang= 1;
  70.    P0 = leddata[ge];
  71.    duang= 0;
  72.    delay(1);
  73.    P0 = 0xff;
  74.    wei= 1;
  75.    P0 = 0xfe;
  76.    wei= 0;
  77.    duang= 1;
  78.    P0 = leddata[shi];
  79.    duang= 0;
  80.    delay(1);
  81. }

  82. void main()
  83. {
  84.     temp = 0xfe;
  85.         P1 = temp;
  86.         dishzhdu();
  87.         wabuzhdu();
  88.   while (1)
  89.    {  TR0 = 1;
  90.              if(TF0 == 1)
  91.           {         TH0 =0x4b;
  92.              TL0 =0xfd;
  93.                    TF0 = 0;
  94.                  c++;
  95.                 if(c == 20)
  96.            {      
  97.                       c = 0;
  98.                         d++;
  99.                         if(d >= 90)
  100.                         {
  101.                            d = 0;
  102.                         }
  103.                         display(d);
  104.             }      
  105.       }  
  106.          
  107.       
  108. }
  109. }
  110. void dszd0() interrupt 3
  111. {
  112.                    TH1 =0x4b;
  113.             TL1 =0x7d;
  114.                 e++;
  115.                  
  116.                  if(e == 10)
  117.                  {
  118.                          e = 0;
  119.                         temp = _cror_(temp,1);
  120.                          P1 = temp;
  121.                  }
  122. }      
  123. void wbzd() interrupt 0
  124. {
  125.         TR0 = 0;
  126.         delay(1);
  127. }

复制代码


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

使用道具 举报

沙发
ID:96682 发表于 2019-3-14 21:52 | 只看该作者
显示没处理好就这结果
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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