找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机实时时钟源程序

[复制链接]
ID:256768 发表于 2017-12-3 14:15 | 显示全部楼层 |阅读模式
里面的-初始时间是我定的,你可以根据你的-实际-情况修改

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. typedef unsigned char uchar;
  4. typedef unsigned int  uint;



  5. uchar  DB8;
  6. uchar Wen_Zi[8][8] = {
  7.                                                 {0x10,0x1f,0x10,0x0f,0x0a,0x1f,0x02,0x02},
  8.                                                 {0x0f,0x09,0x0f,0x09,0x09,0x0f,0x09,0x13},
  9.                                                 {0x1f,0x11,0x11,0x1f,0x1f,0x11,0x11,0x1f},
  10.                                                 {0x01,0x01,0x07,0x19,0x1d,0x1b,0x19,0x03},
  11.                                                 {0x0a,0x11,0x00,0x1f,0x05,0x05,0x09,0x13},
  12.                                                 {0x04,0x04,0x0c,0x15,0x05,0x02,0x04,0x08},
  13.                                                 {0x1f,0x15,0x1f,0x15,0x1f,0x11,0x15,0x13},
  14.                                                 {0x1c,0x14,0x18,0x06,0x09,0x08,0x08,0x07},
  15.                                          };
  16. uchar bdata DS_Shu;
  17. sbit DS8 = DS_Shu^7;
  18. sbit LEDl602_RS =  P2^6;
  19. sbit LEDl602_WR = P2^5;
  20. sbit LEDl602_OE = P2^7;
  21. sbit DS_IO = P3^4;
  22. sbit DS_CE = P3^5;
  23. sbit DS_SCLK = P3^6;


  24. void Yan_Shims(uint i)
  25. {       
  26.         for(i=i*83;i>0;i--);
  27. }

  28. void Yan_Shius()
  29. {       
  30.    _nop_();
  31. }



  32. bit Mang_Lu()
  33. {       
  34.         bit i;
  35.         LEDl602_OE = 0;
  36.         LEDl602_RS = 0;
  37.         LEDl602_WR = 1;
  38.         LEDl602_OE = 1;
  39.         Yan_Shius();
  40.         DB8 = P0;               
  41.         i = (bit)(DB8&0x80);
  42.         LEDl602_OE = 0;
  43.         return(i);                                       
  44. }

  45. void Zhi_Ling(uchar NUM,uchar DATA)
  46. {       
  47.         uchar a=0x01;
  48.     a =_crol_(a,(NUM - 1));
  49.         DATA = DATA +a;
  50.         while(Mang_Lu() != 0);         
  51.                 LEDl602_OE = 0;       
  52.                 LEDl602_RS = 0;
  53.                 LEDl602_WR = 0;               
  54.                 Yan_Shius();
  55.                 P0 = DATA;
  56.                 Yan_Shius();                                                       
  57.                 LEDl602_OE = 1;
  58.                 Yan_Shius();
  59.                 LEDl602_OE = 0;                                 
  60. }
  61. void Xie_DATA(uchar DATA)
  62. {
  63.         while(Mang_Lu() != 0);                 
  64.                 LEDl602_OE = 0;       
  65.                 LEDl602_RS = 1;
  66.                 LEDl602_WR = 0;       
  67.                 Yan_Shius();
  68.                 P0 = DATA;               
  69.                 Yan_Shius();
  70.                 LEDl602_OE = 1;       
  71.                 Yan_Shius();       
  72.                 LEDl602_OE = 0;                        
  73. }



  74. void lad_rili()
  75. {
  76.         uchar i,t;
  77.         for(i=0;i<8;i++)
  78.         {
  79.                 for(t=0;t<8;t++)
  80.                 {

  81.                         Zhi_Ling(7,i*8+t);
  82.                         Yan_Shius();
  83.                         Xie_DATA(Wen_Zi[i][t]);       
  84.                         Yan_Shius();
  85.                 }                               
  86.         }  
  87. }
  88.                                                                                           
  89.   void DS_DiZhi(uchar Di_Zhi)
  90. {                               
  91.         uchar x;               
  92.         for(x=0;x<8;x++)
  93.         {       
  94.             DS_IO = Di_Zhi&0x01;
  95.                 Yan_Shims(1);
  96.                 DS_SCLK = 1;                
  97.                 Yan_Shims(1);
  98.                 DS_SCLK = 0;               
  99.                 Di_Zhi = Di_Zhi>>1;       
  100.         }
  101. }

  102. void DS_Xie(uchar Di_Zhi,uchar Shu_Ju)
  103. {       
  104.     DS_SCLK = 0;
  105.         DS_CE = 1;
  106.         Yan_Shius();
  107.         DS_DiZhi(Di_Zhi);
  108.         Yan_Shius();
  109.         DS_DiZhi(Shu_Ju);
  110.         Yan_Shims(1);                               
  111.         DS_CE = 0;
  112. }          

  113. uchar DS_Du(uchar y)  
  114. {

  115.         uchar i,x=0;
  116.         DS_Xie(0x8e,0x00);
  117.         DS_SCLK = 0;
  118.         DS_CE = 1;       
  119.         DS_DiZhi(y);
  120.         DS_IO=1;       
  121.         for(i=0;i<8;i++)
  122.         {       
  123.             DS_Shu=DS_Shu>>1;
  124.                 Yan_Shius();
  125.                 DS8=DS_IO;               
  126.                 Yan_Shius();
  127.                 DS_IO=1;
  128.                 DS_SCLK = 1;
  129.                 Yan_Shius();
  130.                 DS_SCLK = 0;                                               
  131.         }        
  132.         Yan_Shius();
  133.         DS_CE = 0;
  134.         return DS_Shu;
  135. }



  136.                   
  137. void Clock_ChuShi()
  138. {   
  139.         Zhi_Ling(6,0x18);
  140.         Yan_Shius();
  141.         Zhi_Ling(4,0x04);
  142.         Yan_Shius();
  143.         Zhi_Ling(3,0x02);
  144.         Yan_Shius();
  145.         Zhi_Ling(1,0x00);
  146.         Yan_Shims(10);
  147.         lad_rili();
  148.         Yan_Shims(3);
  149.             
  150.         DS_CE = 0;
  151.         DS_SCLK = 0;
  152.         DS_Xie(0x8e,0x00);            
  153.         DS_Xie(0x8c,0x17);
  154.         DS_Xie(0x8a,0x02);
  155.         DS_Xie(0x88,0x09);
  156.         DS_Xie(0x86,0x26);       
  157.         DS_Xie(0x84,0x23);
  158.         DS_Xie(0x82,0x35);
  159.         DS_Xie(0x80,0x00);          
  160. }


  161. void main()
  162. {
  163.    Clock_ChuShi();
  164.    while(1)
  165.    {       
  166.         Zhi_Ling(8,0x00);
  167.                 Xie_DATA('2');       
  168.                 Xie_DATA('0');
  169.                 DS_Du(0x8d);                   
  170.                 Xie_DATA((DS_Shu/16+48));       
  171.                 Xie_DATA((DS_Shu%16+48));
  172.                 Xie_DATA(0x00);
  173.                 Zhi_Ling(5,0x04);
  174.                                   
  175.                    DS_Du(0x89);                   
  176.                 Xie_DATA((DS_Shu/16+48));       
  177.                 Xie_DATA((DS_Shu%16+48));
  178.                 Xie_DATA(0x01);
  179.                 Zhi_Ling(5,0x04);
  180.                
  181.                 DS_Du(0x87);                   
  182.                 Xie_DATA((DS_Shu/16+48));       
  183.                 Xie_DATA((DS_Shu%16+48));
  184.                 Xie_DATA(0x02);
  185.                 Zhi_Ling(5,0x04);

  186.                 Xie_DATA(0x06);
  187.                 DS_Du(0x8b);                           
  188.                 Xie_DATA((DS_Shu%16+48));
  189.                 Zhi_Ling(5,0x04);
  190. ……………………

  191. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
实时时钟.rar (27.56 KB, 下载次数: 5)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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