找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机中断简易电子时钟设计,这个应该是我感觉最简单的了,没有其它复杂电路

[复制链接]
ID:868430 发表于 2020-12-26 18:50 | 显示全部楼层 |阅读模式
e99c2583a7a7bf3625a9cfc317da2545.png
  1. #include <reg52.h>
  2. unsigned char Seg_CC_Data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  3. unsigned char Seg_CC_Position[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  4. void DelayTime10ms(unsigned int DelayValue);
  5. void Seg_Display_Second(unsigned char DisData,unsigned char Seg_Number);
  6. void Seg_Display_Minute(unsigned char DisData,unsigned char Seg_Number);
  7. void Seg_Display_Hour(unsigned char DisData,unsigned char Seg_Number);
  8. unsigned char Count=0;
  9. unsigned char  Second=45;
  10. unsigned char  Minute=58;
  11. unsigned char  Hour=10;
  12. void main()
  13. {
  14.          TMOD=0x01;
  15.     EA=1;
  16.          ET0=1;
  17.         
  18.          PT0=1;
  19.         
  20.          TH0=(65536-50000)/256;          //??×°??êy3??μ
  21.    TL0=(65536-50000)%256;          //??×°??êy3??μ
  22.         
  23.          TR0=1;

  24.       
  25.    for(;;)
  26.          {
  27.                           Seg_Display_Second(Second,2);
  28.                           Seg_Display_Minute(Minute,2);        
  29.            Seg_Display_Hour(Hour,2);                  
  30.    }
  31. }

  32. void DelayTime10ms(unsigned int DelayValue){
  33.          unsigned int a,b;
  34.          for(a =0 ;a < DelayValue; a++)
  35.              for(b =0 ;b < 1828; b++);
  36. }
  37. void Seg_Display_Second(unsigned char DisData,unsigned char Seg_Number)
  38. {
  39.    unsigned char i=0;
  40.           for(i=0;i<Seg_Number;i++)
  41.           {        
  42.              P2=Seg_CC_Position[i];
  43.                    P0=Seg_CC_Data[DisData%10];
  44.                    DisData=DisData/10;
  45.                    DelayTime10ms(1);         
  46.           }
  47. }

  48. void Seg_Display_Minute(unsigned char DisData,unsigned char Seg_Number)
  49. {
  50.    unsigned char i=0;
  51.             
  52.           for(i=2;i<Seg_Number+2;i++)
  53.            {
  54.              P2=Seg_CC_Position[i];
  55.                    P0=Seg_CC_Data[DisData%10];
  56.                    DisData=DisData/10;
  57.                    DelayTime10ms(1);         
  58.            }
  59. }
  60. void Seg_Display_Hour(unsigned char DisData,unsigned char Seg_Number)
  61. {
  62.    unsigned char i=0;
  63.           for(i=4;i<Seg_Number+4;i++)
  64.           {        
  65.              P2=Seg_CC_Position[i];
  66.                    P0=Seg_CC_Data[DisData%10];
  67.                    DisData=DisData/10;
  68.                    DelayTime10ms(1);         
  69.           }
  70. }
  71. void Irq_Timer_0() interrupt 1 //?D??·t??3ìDò
  72. {        
  73.         TH0=(65536-50000)/256;          //??×°??êy3??μ
  74.   TL0=(65536-50000)%256;          //??×°??êy3??μ
  75.   if(Count++==20)
  76.                 {
  77.                                   Count=0;
  78.                            
  79.                              if(++Second==60)
  80.                                    {
  81.                                      Second=0;
  82.                                            if(++Minute==60)
  83.                                                 {
  84.                                                         Minute=0;
  85.                                                         if(++Hour==24)
  86.                                                         {Hour=0;}
  87.                                                    
  88.                                           }        
  89.                             }
  90.         }
  91. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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