找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机串口发送实时时钟 Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg51.h>
  2. #include<intrins.h>
  3. void UsartConfiguration();
  4. unsigned char p;
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. uchar code duan[]={0x76,0x79,0x38,0x38,0x3f};  
  8. uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  9. unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};           
  10. int num,second,minute,hour,a;   
  11. int i,j,k,m,n,s,t;
  12. unsigned char PuZh[16];
  13. unsigned char src[16] = {0,1,2,3,4,5,6,7,8,9};
  14. sbit stop=P3^5;
  15. sbit clear=P3^6;
  16. sbit start=P3^7;
  17. sbit hourjia=P2^0;
  18. sbit hourjian=P2^1;
  19. sbit minutejia=P2^2;
  20. sbit minutejian=P2^3;
  21. sbit clock=P2^4;     
  22. sbit ledground=P2^5;
  23. void mDelay(unsigned int mDelay)   
  24. { unsigned int i;
  25. for(;mDelay>0;mDelay--)
  26. { for(i=0;i<124;i++)
  27. {;}
  28. }
  29. }
  30. void liushuideng()     
  31. {        
  32.                 int k=2;      
  33.   while(k--)
  34.    {     int i;
  35.             ledground=0;   
  36.       P0=0x01;
  37.       mDelay(500);
  38.       for(i=0;i<7;i++)           
  39.         {
  40.                P0=P0<<1;  
  41.          mDelay(100);
  42.                     }
  43.        ledground=1;
  44.    }
  45. }
  46. void shumaguan_init()   
  47. {         
  48.         P0=0xff;
  49.         P1=0x00;
  50.         mDelay(900);
  51.         P0=~0xff;
  52.         P1=0x00;
  53.   mDelay(900);
  54. }
  55. void shumaguan()   
  56. {
  57.     uchar n;
  58.     int z=50;        
  59.     while(z--)
  60.                 {
  61.     for(n=0;n<5;n++)
  62.        {
  63.                         P1=wei[n];
  64.                         P0=duan[n];
  65.       mDelay(1);
  66.        }
  67.                  }
  68. }
  69. void UsartConfiguration()
  70. {
  71.         SCON=0X50;                        
  72.         TMOD=0X21;                        
  73.         PCON=0X80;                        
  74.         TH1=0XF3;                    
  75.         TL1=0XF3;
  76.         TR1=1;                                            
  77. }
  78. void Interrupt_0()   interrupt 1        
  79. {        TH0=-50000/256;
  80.         TL0=-50000%256;
  81.         num++;
  82.         if(num%5==0)
  83.         {        if(minutejia==0)
  84.           {minute++;mDelay(2);if(minute>59) minute=0;}
  85.     if(minutejian==0)
  86.                  { minute--;mDelay(2);if(minute<0) minute=59;}
  87.                 if(hourjia==0)
  88.                 {hour++;mDelay(2);if(hour>23) hour=0;}
  89.                 if(hourjian==0)
  90.           {hour--;mDelay(2);if(hour<0) hour=23;}
  91.         }
  92.         if(num==20)
  93. {        num=0;
  94.     second=second+1;
  95.           if(second>59)
  96.           {second=0;minute=minute+1;}
  97.                 if(minute>59)
  98.                 {minute=0;hour=hour+1;}
  99.                 if(hour>23)
  100.            hour=0;
  101. }               
  102. }
  103. void main()
  104. {
  105.          clock=0;
  106.   liushuideng();
  107. shumaguan_init();
  108.          shumaguan();
  109.         a=-50000;                        
  110.         TH0=-50000/256;   
  111.         TL0=-50000%256;   
  112.         EA=1;            
  113.         ET0=1;            
  114.         TR0=1;            
  115. hour=23;            
  116. minute=58;
  117. second=40;   
  118. UsartConfiguration();
  119. while(1)
  120. {
  121.                 for(p=0; p<16; p++)
  122.                 {
  123.                         SBUF = PuZh[p];   
  124.                         while(!TI);                  
  125.                         TI=0;                          
  126.                 }
  127.                 mDelay(3);                  
  128.         if(stop==0)  {  TR0=0;}   
  129.                 if(clear==0)            
  130.                 {
  131.                         hour=0;
  132.                         second=0;
  133.                         minute=0;
  134.                         TR0=0;
  135.     }
  136.                 if(start==0)        
  137.                 {TR0=1;}
  138.             j=second%10;               
  139.             k=second/10;        
  140.                   m=minute%10;               
  141.             n=minute/10;        
  142.                   s=hour%10;               
  143.             t=hour/10;        
  144. PuZh[0] = src[hour/10]+0x30;
  145. PuZh[1] = src[hour% 10]+0x30;
  146. PuZh[2] = 0x2D;
  147. PuZh[3] = src[minute/ 10]+0x30;
  148. PuZh[4] = src[minute% 10]+0x30;
  149.   if(hour==0&&minute==0)      
  150.   clock=1;
  151.   else  
  152.   clock=0;
  153.                         P1=0x7f;  
  154.                   P0=tab[j];
  155.                   mDelay(1);
  156.       P1=0xbf;  
  157.                         P0=tab[k];
  158.       mDelay(1);
  159.                         P1=0xdb;  
  160.                         P0=0x40;
  161.                         mDelay(1);
  162.                                 P1=0xef;  
  163.                                 P0=tab[m];
  164.                                 mDelay(1);
  165.                                 P1=0xf7;   
  166.                                 P0=tab[n];
  167.                                 mDelay(1);
  168.                                 P1=0xfd;  
  169.                                 P0=tab[s];
  170.                                 mDelay(1);
  171.                                 P1=0xfe;  
  172.                                 P0=tab[t];
  173.                                 mDelay(1);
  174.                 }
  175. }
复制代码

所有资料51hei提供下载(仿真+程序):
发送.zip (48.46 KB, 下载次数: 16)
串口.zip (22.76 KB, 下载次数: 15)

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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