找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

为什么我的数码管不显示其他的东西啊?

查看数: 1652 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-4-12 00:00

正文摘要:

大神帮忙看看为什么我的数码管不显示其他的东西啊 #include <regx51.h> char code seg7cat[17] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,              &nbs ...

回复

ID:213173 发表于 2020-4-12 21:30


楼主对比一下就知道问题在哪
  1. #include <AT89X52.H>
  2. sbit k1=P1^0;
  3. sbit k2=P1^1;
  4. sbit k3=P1^2;
  5. unsigned char code seg7cat[17] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,                     
  6.                         0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};//'-'
  7. unsigned char dis_buf[8];
  8. unsigned char m=0,s=0,ms=0;
  9. unsigned char i,j;
  10. bit k;

  11. void delayms(unsigned int td)
  12. {
  13.         unsigned int i,j;
  14.         for(i=0;i<td;i++)
  15.                 for(j=0;j<120;j++);
  16. }

  17. void seg7x8_display(unsigned char *p)
  18. {
  19.         P0 = 0xff;
  20.         P2 = 0xff;
  21.         P2&=(0x01<<i);  
  22.         P0 =seg7cat[p[i]];   
  23.         i++;
  24.         i%=8;
  25. }

  26. void main(void)
  27. {
  28.         TMOD=0x01;
  29.         TH0=(65536-10000)/256;
  30.         TL0=(65536-10000)%256;
  31.         ET0=1;
  32.         EA =1;
  33.         TR0=0;
  34.         dis_buf[2] = 16;
  35.         dis_buf[5] = 16;
  36.         while(1)
  37.         {
  38.                 if(!k1||!k2||!k3)
  39.                 {
  40.                         if(++j>=100&&k==0)
  41.                         {
  42.                                 k=1;
  43.                                 if(!k1)
  44.                                         TR0=1;
  45.                                 if(!k2)
  46.                                         TR0=0;
  47.                                 if(!k3)
  48.                                         m=s=ms=0;
  49.                         }
  50.                 }
  51.                 else j=k=0;

  52.                 dis_buf[0] = m/10;
  53.                 dis_buf[1] = m%10;
  54.                 dis_buf[3] = s/10;
  55.                 dis_buf[4] = s%10;
  56.                 dis_buf[6] = ms/10;
  57.                 dis_buf[7] = ms%10;

  58.                 seg7x8_display(dis_buf);
  59.                 delayms(1);
  60.         }
  61. }
  62. void  timer0_isr(void)   interrupt   1
  63. {
  64.         TH0=(65536-10000)/256; //10ms???
  65.         TL0=(65536-10000)%256;
  66.         if(++ms >= 100)
  67.         {
  68.                 ms=0;
  69.                 if(++s>=60)
  70.                 {   
  71.                         s = 0;
  72.                         if(++m>=60)
  73.                                 m = 0;
  74.                 }     
  75.         }
  76. }

复制代码



ID:514901 发表于 2020-4-12 16:41
TR0  =0;
改成
TR0  =1;

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

Powered by 单片机教程网

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