找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机万年历的切换出现乱码 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:421426 发表于 2019-6-3 19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在切换的过程中切换的不灵敏,并且会出现乱码。应该怎么办
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit dula =P2^6;
  5. sbit wela=P2^7;
  6. sbit key1=P3^4;
  7. sbit key2=P3^5;
  8. sbit key3=P3^6;
  9. sbit key4=P3^7;
  10. uchar miao,fen,shi;
  11. uint aa,bb;
  12. uchar i,nian1,nian2,yue1,yue2,ri1,ri2;
  13. uchar code table[]={0x3f,0x06,0x5b,0x4f,
  14. 0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  15. uchar code weitable[]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  16. uchar duantable[8];
  17. void delayms(uchar z)
  18. {
  19.         uchar x,y;
  20.         for (x=z;x>0;x--)
  21.          for(y=110;y>0;y--);
  22. }
  23. void display();
  24. void display1();
  25. void init();
  26. void main()
  27. {
  28.         P0=0x00;
  29.         init();
  30.         bb=2;
  31.         aa=0;
  32.         miao=0;
  33.         fen=0;
  34.         shi=0;
  35.         nian1=7;
  36.         nian2=2;
  37.         yue1=5;
  38.         yue2=0;
  39.         ri1=9;
  40.         ri2=1;
  41.         P0=0x00;
  42.         while(1)
  43.         {        
  44.                
  45. //                if(key4==0)
  46. //                        {
  47. //                                delayms(5);
  48. //                                if(key4==0)
  49. //                                {
  50. //                                        while(!key4)
  51. //                                        {
  52. //                                                        bb++;
  53. //                if(bb%2==0)
  54. //                        {
  55. //                                display1(nian1,nian2,yue1,yue2,ri1,ri2);
  56. //                        }
  57. //                if(bb%2==1)                                                                           
  58. //                        {
  59. //                            duantable[0]=table[miao%10];
  60. //                                duantable[1]=table[miao/10];
  61. //                                duantable[2]=table[fen%10];
  62. //                                duantable[3]=table[fen/10];
  63. //                            duantable[4]=table[shi%10];
  64. //                                duantable[5]=table[shi/10];                                
  65. //                        }         
  66. //                                        }
  67. //                                }
  68. //                        }
  69.         if(key1==0)
  70.                 {
  71.                   delayms(5);
  72.                         if(key1==0)
  73.                         {
  74.                          while(!key1)
  75.                          {
  76.                                 
  77.                          }
  78.                          shi++;
  79.                         if(shi==24)
  80.                         shi=0;
  81.                         }
  82.                 }                        

  83.                 if(key2==0)
  84.                 {
  85.                         delayms(1);
  86.                         if(key2==0)
  87.                         while(!key2);
  88.                         fen++;
  89.                         if(fen==60)
  90.                         fen=0;
  91.                 }
  92.                 if(key3==0)
  93.                 {
  94.                         delayms(1);
  95.                         if(key3==0)
  96.                         miao++;
  97.                         if(miao==60)
  98.                         miao=0;
  99.                     while(!key3);
  100.                 }
  101.                 if(key4==0)
  102.                         {
  103.                                 delayms(5);
  104.                                 if(key4==0)
  105.                                 {
  106.                                         while(!key4)
  107.                                         {
  108.                                                  bb++;                                                
  109.                                         }
  110.                                 }
  111.                         }            
  112. }
  113. }
  114. void display()
  115. {                        
  116.         wela=1;
  117.         P0=weitable[i];
  118.         wela=0;
  119.         P0=0x00;//消隐
  120.         dula=1;
  121.         P0=duantable[i];//显示个数
  122.         dula=0;
  123.         i++;
  124.         if(i==6)
  125.     i=0;
  126. }
  127. void display1()
  128. {                        
  129.         wela=1;
  130.         P0=weitable[i];
  131.         wela=0;
  132.         P0=0x00;//消隐
  133.         dula=1;
  134.         P0=duantable[i];//显示个数
  135.         dula=0;
  136.         P0=0x00;//消隐
  137.         i++;
  138.         if(i==6)
  139.     i=0;
  140. }
  141. void init()//初始化
  142. {
  143.         TMOD=0x11;//0000 0001
  144.         EA=1;//开总中断
  145.         ET0=1;//开定时器0中断
  146.         ET1=1;
  147.         TH0=(65536-500)/256;
  148.         TL0=(65536-500)%256;
  149.         TH1=(65536-12000)/256;
  150.         TL1=(65536-1000)%256;
  151.         TR0=1;//启动定时器0
  152.         TR1=1;
  153. }
  154. void timer0() interrupt 1
  155. {
  156.         P0=0x00;
  157.         TH0=(65536-250)/256;
  158.         TL0=(65536-250)%256;
  159.         aa++;
  160.                 if(bb%2==1)                                                                    
  161.                         {
  162.                                 display();
  163.                                 duantable[0]=table[miao%10];
  164.                                 P0=0x00;//消隐
  165.                                 duantable[1]=table[miao/10];
  166.                                 P0=0x00;//消隐
  167.                                 duantable[2]=table[fen%10];
  168.                                 P0=0x00;//消隐
  169.                                 duantable[3]=table[fen/10];
  170.                                 P0=0x00;//消隐
  171.                                 duantable[4]=table[shi%10];
  172.                                 P0=0x00;//消隐
  173.                                 duantable[5]=table[shi/10];        
  174.                                 P0=0x00;//消隐
  175.                         }         
  176.                         
  177.         if(aa==4000)
  178.         {
  179.                 aa=0;
  180.                 miao++;
  181.                 if(miao==60)
  182.                 {
  183.                         miao=0;
  184.                         fen++;//满60秒,分加1,秒归0.
  185.                 }
  186.                 if(fen==60)
  187.                 {
  188.                         miao=0;
  189.                         fen=0;
  190.                         shi++;

  191.                 }
  192.                 if(shi==24)
  193.                         shi=0;
  194.         }
  195. }
  196. void timer1() interrupt 3
  197. {
  198.         TH1=(65536-1000)/256;
  199.         TL1=(65536-2000)%256;
  200.                          if(bb%2==0)
  201.                         {
  202.                                 display1();
  203.                             duantable[0]=table[nian1];        
  204.                                 P0=0x00;//消隐                        
  205.                                 duantable[1]=table[nian2];        
  206.                                 P0=0x00;//消隐                        
  207.                                 duantable[2]=table[yue1];
  208.                                 P0=0x00;//消隐
  209.                                 duantable[3]=table[yue2];
  210.                                    P0=0x00;//消隐
  211.                             duantable[4]=table[ri1];
  212.                                 P0=0x00;//消隐
  213.                                 duantable[5]=table[ri2];
  214.                                   P0=0x00;//消隐
  215.                         }                                                                     
  216. }
复制代码

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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