找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1765|回复: 0
收起左侧

利用单片机定时器的时钟显示

[复制链接]
ID:228520 发表于 2017-8-22 08:54 | 显示全部楼层 |阅读模式
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit wela=P2^7;
  6. sbit dula=P2^6;
  7. sbit s2=P3^0;
  8. sbit s3=P3^1;
  9. sbit s4=P3^2;
  10. sbit s5=P3^3;
  11. uchar code table[]={
  12. 0x3f,0x06,0x5b,0x4f,
  13. 0x66,0x6d,0x7d,0x07,
  14. 0x7f,0x6f,0x77,0x7c,
  15. 0x39,0x5e,0x79,0x71,0x40,0x40};
  16. uint num,num1,num2,num3,flag=0;
  17. void delay(uint z)
  18. {
  19.          uint i,j;
  20.         for(i=z;i>0;i--)
  21.                 for(j=110;j>0;j--);
  22. }
  23. void led()
  24. {
  25.         delay(5);
  26.         P1=_crol_(P1,1);        
  27. }
  28. void display(uint shi,fen,miao)
  29. {
  30.         uint shi_s,shi_g,fen_s,fen_g,miao_s,miao_g;
  31.         shi_s=shi/10;
  32.         shi_g=shi%10;

  33.         fen_s=fen/10;
  34.         fen_g=fen%10;

  35.         miao_s=miao/10;
  36.         miao_g=miao%10;
  37.         dula=1;
  38.         P0=table[shi_s];
  39.         dula=0;
  40.         P0=0xff;
  41.         wela=1;
  42.         P0=0xfe;
  43.         wela=0;
  44.         delay(2);
  45.         
  46.         dula=1;
  47.         P0=table[shi_g];
  48.         dula=0;
  49.         P0=0xff;
  50.         wela=1;
  51.         P0=0xfd;
  52.         wela=0;
  53.         delay(2);
  54.         
  55.         dula=1;
  56.         P0=table[16];
  57.         dula=0;
  58.         P0=0xff;
  59.         wela=1;
  60.         P0=0xdf;
  61.         wela=0;
  62.         delay(2);//横杠

  63.         dula=1;
  64.         P0=table[fen_s];
  65.         dula=0;
  66.         P0=0xff;
  67.         wela=1;
  68.         P0=0xf7;
  69.         wela=0;
  70.         delay(2);
  71.         
  72.         dula=1;
  73.         P0=table[fen_g];
  74.         dula=0;
  75.         P0=0xff;
  76.         wela=1;
  77.         P0=0xef;
  78.         wela=0;
  79.         delay(2);

  80.         dula=1;
  81.         P0=table[16];
  82.         dula=0;
  83.         P0=0xff;
  84.         wela=1;
  85.         P0=0xfb;
  86.         wela=0;
  87.         delay(2);//横杠

  88.         dula=1;
  89.         P0=table[miao_s];
  90.         dula=0;
  91.         P0=0xff;
  92.         wela=1;
  93.         P0=0xbf;
  94.         wela=0;
  95.         delay(2);
  96.         
  97.         dula=1;
  98.         P0=table[miao_g];
  99.         dula=0;
  100.         P0=0xff;
  101.         wela=1;
  102.         P0=0x7f;
  103.         wela=0;
  104.         delay(2);
  105.                
  106. }
  107. void keyscan()
  108. {
  109.         if(s2==0)
  110.         {
  111.                 delay(10);
  112.                 if(s2==0)
  113.                 {
  114.                         while(!s2);
  115.                         TR0=~TR0;
  116.                 }
  117.         }
  118.         if(s3==0)
  119.         {
  120.                 delay(10);
  121.                 if(s3==0)
  122.                 {
  123.                         num2++;
  124.                         if(num2==60)
  125.                                 num2=0;
  126.                                 while(!s3);        
  127.                 }                           
  128.         }
  129.         if(s4==0)
  130.         {
  131.                 delay(10);
  132.                 if(s4==0)
  133.                 {
  134.                 num3++;
  135.                 if(num3==24)
  136.                         num3=0;
  137.                         while(!s4);
  138.                 }
  139.         }
  140.         if(s5==0)
  141.         {
  142.                 delay(10);
  143.                 if(s5==0)
  144.                 {
  145.                         while(!s5);
  146.                         flag=~flag;
  147.                 }        
  148.         }        
  149. }
  150. void init()
  151. {
  152.         TMOD=0x01;
  153.         TH0=(65536-45872)/256;
  154.         TL0=(65536-45872)%256;
  155.         EA=1;
  156.         ET0=1;
  157.         TR0=0;        
  158. }
  159. void main()
  160. {
  161.         P1=0xfe;
  162.         init();
  163.         while(1)
  164.         {
  165.         keyscan();
  166.         if(flag==1)
  167.         {
  168.                 led();
  169.         }
  170.         display(num3,num2,num1);
  171.         }        
  172.         }        
  173. void time0() interrupt 1
  174. {
  175.         TH0=(65536-45872)/256;
  176.         TL0=(65536-45872)%256;
  177.         num++;
  178.         if(num==20)
  179.         {
  180.                 num=0;
  181.                 num1++;
  182.         }
  183.         if(num1==60)
  184.                 {
  185.                         num1=0;
  186.                         num2++;
  187.                         if(num2==60)
  188.                         {
  189.                                 num2=0;
  190.                                 num3++;
  191.                                 if(num3==24)
  192.                                 {
  193.                                         num3=0;
  194.                                 }
  195.                         }
  196.                 }
  197. }
复制代码


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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