找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于stc89C52单片机自己做的实时时钟

[复制链接]
ID:124763 发表于 2016-6-2 20:22 | 显示全部楼层 |阅读模式
基于stc89C52单片机自己做的实时时钟

  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;
  6. uint second,minute,hour;
  7. uchar t0,secondge,secondshi,minutege,minuteshi,hourge,hourshi;
  8. void display(uchar hourshi,uchar hourge,uchar minuteshi,uchar minutege,uchar secondshi,uchar secondge);
  9. void init();
  10. void delay(uint z)
  11. {
  12.         uint x,y;
  13.         for(x=z;x>0;x--)
  14.                 for(y=110;y>0;y--);
  15. }
  16. uchar code table[]={
  17. 0x3f,0x06,0x5b,0x4f,
  18. 0x66,0x6d,0x7d,0x07,
  19. 0x7f,0x6f};

  20. void main()
  21. {
  22.         init();
  23.         while(1)
  24.         {       
  25.                                         secondge=second%10;
  26.                 delay(1.5);
  27.                         secondshi=second/10;
  28.                 delay(1.5);
  29.                                         minutege=minute%10;
  30.                 delay(1.5);
  31.                         minuteshi=minute/10;
  32.                 delay(1.5);
  33.                                         hourge=hour%10;
  34.                 delay(1.5);
  35.                         hourshi=hour/10;
  36.                 delay(1.5);
  37.                 display(hourshi,hourge,minuteshi,minutege,secondshi,secondge);
  38.         }
  39. }
  40. void init()
  41. {
  42.         wela=0;
  43.         dula=0;
  44.         EA=1;
  45.         ET0=1;
  46.         TR0=1;
  47.         TMOD=0x01;
  48.         TH0=(65535-50000)/256;
  49.         TL0=(65535-50000)%256;
  50.         hour=9;
  51.         minute=54;
  52.         second=0;
  53. }
  54. void timer0() interrupt 1
  55. {
  56.         TH0=(65535-50000)/256;
  57.         TL0=(65535-50000)%256;
  58.         t0++;
  59.         if(t0==20)
  60.         {
  61.                 t0=0;
  62.                 second++;
  63.                 if(second==60)
  64.                 {
  65.                         second=0;
  66.                         minute++;
  67.                         if(minute==60)
  68.                         {
  69.                                 minute=0;
  70.                                 hour++;
  71.                                 if(hour==24)
  72.                                 {
  73.                                         hour=0;
  74.                                 }
  75.                         }
  76.                 }
  77.         }
  78. }
  79. void display(uchar hourshi,uchar hourge,uchar minuteshi,uchar minutege,uchar secondshi,uchar secondge)
  80. {
  81.                                 dula=1;
  82.                 P0=table[hourshi];
  83.                 dula=0;
  84.                 P0=0xff;
  85.                 wela=1;
  86.                 P0=0xfe;
  87.                 wela=0;
  88.                 delay(1);
  89.                
  90.                                 dula=1;
  91.                 P0=table[hourge];
  92.                 dula=0;
  93.                 P0=0xff;
  94.                 wela=1;
  95.                 P0=0xfd;
  96.                 wela=0;
  97.                 delay(1);
  98.                
  99.                                 dula=1;
  100.                 P0=table[minuteshi];
  101.                 dula=0;
  102.                 P0=0xff;
  103.                 wela=1;
  104.                 P0=0xf7;
  105.                 wela=0;
  106.                 delay(1);
  107.                
  108.                                 dula=1;
  109.                 P0=table[minutege];
  110.                 dula=0;
  111.                 P0=0xff;
  112.                 wela=1;
  113.                 P0=0xef;
  114.                 wela=0;
  115.                 delay(1);
  116.                
  117.                        
  118.                         dula=1;
  119.                 P0=table[secondshi];
  120.                 dula=0;
  121.                 P0=0xff;
  122.                 wela=1;
  123.                 P0=0xbf;
  124.                 wela=0;
  125.                 delay(1);
  126.        
  127.                         dula=1;
  128.                 P0=table[secondge];
  129.                 dula=0;
  130.                 P0=0xff;
  131.                 wela=1;
  132.                 P0=0x7f;
  133.                 wela=0;
  134.                 delay(1);
  135.                
  136.                
  137.                                 dula=1;    //-
  138.                 P0=0x40;
  139.                 dula=0;
  140.                 P0=0xff;
  141.                 wela=1;
  142.                 P0=0xfb;
  143.                 wela=0;
  144.                 delay(1);
  145.                
  146.                                 dula=1;    //-
  147.                 P0=0x40;
  148.                 dula=0;
  149.                 P0=0xff;
  150.                 wela=1;
  151.                 P0=0xdf;
  152.                 wela=0;
  153.                 delay(1);
  154. }
复制代码


实时时钟.docx

15.59 KB, 下载次数: 13, 下载积分: 黑币 -5

实时时钟

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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