久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3258|回復: 0
打印 上一主題 下一主題
收起左側

單片機串口發送實時時鐘的電路+程序設計

[復制鏈接]
跳轉到指定樓層
樓主

這個程序實現的是 流水燈先流水兩次,數碼管全亮全滅一次,顯示hello,然后顯示時鐘(我設置初值為23-58-40)開始走,當時間為零點零分,鬧鐘燈會亮,打開串口發送助手,會發送實時時,串口zip是protues圖,發送zip是keil文件

單片機源程序如下:
  1. #include <reg51.h>
  2. #include<intrins.h>
  3. //聲明全局函數//
  4. void UsartConfiguration();
  5. unsigned char p;
  6. #define uint unsigned int
  7. #define uchar unsigned char
  8. uchar code duan[]={0x76,0x79,0x38,0x38,0x3f};  //顯示hello段選
  9. uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  10. unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};           //數字0-9
  11. int num,second,minute,hour,a;   
  12. int i,j,k,m,n,s,t;
  13. unsigned char PuZh[16];/數組比較大,一個漢字占兩個字節
  14. unsigned char src[16] = {0,1,2,3,4,5,6,7,8,9};
  15. sbit stop=P3^5;
  16. sbit clear=P3^6;
  17. sbit start=P3^7;
  18. sbit hourjia=P2^0;
  19. sbit hourjian=P2^1;
  20. sbit minutejia=P2^2;
  21. sbit minutejian=P2^3;
  22. sbit clock=P2^4;    //設置鬧鐘
  23. sbit ledground=P2^5;
  24. void mDelay(unsigned int mDelay)    //延遲函數
  25. { unsigned int i;
  26. for(;mDelay>0;mDelay--)
  27. { for(i=0;i<124;i++)
  28. {;}
  29. }
  30. }

  31. void liushuideng()     //流水燈
  32. {        
  33.                 int k=2;      //流水燈流水兩次
  34.   while(k--)
  35.    {     int i;
  36.             ledground=0;   //設置低電平
  37.       P0=0x01;//第一個燈亮
  38.       mDelay(500);
  39.       for(i=0;i<7;i++)           
  40.         {
  41.                P0=P0<<1;  
  42.          mDelay(100);
  43.                     }
  44.        ledground=1;//設置高電平,關掉流水燈
  45.    }
  46. }

  47. void shumaguan_init()    //數碼管初始化
  48. {         
  49.         P0=0xff;//段選碼     全亮
  50.         P1=0x00;//位選碼
  51.         mDelay(900);
  52.         P0=~0xff;// 取反,全滅
  53.         P1=0x00;
  54.   mDelay(900);
  55. }


  56. void shumaguan()   //數碼管初始化
  57. {
  58.     uchar n;
  59.     int z=50;        
  60.     while(z--)
  61.                 {
  62.     for(n=0;n<5;n++)
  63.        {
  64.                         P1=wei[n];
  65.                         P0=duan[n];
  66.       mDelay(1);
  67.        }
  68.                  }
  69. }


  70. void UsartConfiguration()
  71. {
  72.         SCON=0X50;                        //設置為工作方式1
  73.         TMOD=0X21;                        //設置計數器1為方式2 ,定時器0為方式1
  74.         PCON=0X80;                        //波特率加倍 SMOD=1
  75.         TH1=0XF3;                    //定時器初始值設置 TH1=256-2^SMOD*f0sc/(波特率*32*12)
  76.         TL1=0XF3;
  77.         TR1=1;                                            //打開定時器
  78. }


  79. void Interrupt_0()   interrupt 1        
  80. {        TH0=-50000/256;
  81.         TL0=-50000%256;
  82.         num++;
  83.         
  84.         if(num%5==0)
  85.         {        if(minutejia==0)
  86.           {minute++;mDelay(2);if(minute>59) minute=0;}
  87.     if(minutejian==0)
  88.                  { minute--;mDelay(2);if(minute<0) minute=59;}

  89.                 if(hourjia==0)
  90.                 {hour++;mDelay(2);if(hour>23) hour=0;}
  91.                 if(hourjian==0)
  92.           {hour--;mDelay(2);if(hour<0) hour=23;}
  93.         }
  94.         if(num==20)
  95. {        num=0;
  96.     second=second+1;
  97.           if(second>59)
  98.           {second=0;minute=minute+1;}

  99.                 if(minute>59)
  100.                 {minute=0;hour=hour+1;}
  101.                 if(hour>23)
  102.            hour=0;
  103. }               
  104.                  
  105.                
  106. }


  107. void main()
  108. {
  109.          clock=0;
  110.   liushuideng();
  111. shumaguan_init();
  112.          shumaguan();
  113.                 a=-50000;                         //a=(-t*f)/12    設置=50ms   a=[(-50*10^-3)*12*10^6]/12=-50000
  114.         TH0=-50000/256;   //高八位
  115.         TL0=-50000%256;   //低八位
  116.         EA=1;             //總開關
  117.         ET0=1;            //打開定時器0中斷
  118.         TR0=1;            //打開定時器0
  119. hour=23;            //設置時鐘初值
  120. minute=58;
  121. second=40;   
  122. UsartConfiguration();
  123. while(1)
  124. {
  125.         
  126.                
  127.                 for(p=0; p<16; p++)
  128.                 {
  129.                         SBUF = PuZh[p];   //將要發送的數據放入到發送寄存器
  130.                         while(!TI);                  //等待發送數據完成        查詢法
  131.                         TI=0;                          //清除發送標志位
  132.                 }
  133.                 mDelay(3);                  //延時一下再發
  134.         if(stop==0)  {  TR0=0;}    //暫停
  135.                 if(clear==0)             //清零
  136.                 {
  137.                         
  138.                         hour=0;
  139.                         second=0;
  140.                         minute=0;
  141.                         TR0=0;
  142.     }
  143.                 if(start==0)        //啟動
  144.                 {TR0=1;}
  145.         

  146.             j=second%10;               
  147.             k=second/10;        
  148.                   m=minute%10;               
  149.             n=minute/10;        
  150.                   s=hour%10;               
  151.             t=hour/10;        
  152. PuZh[0] = src[hour/10]+0x30;
  153. PuZh[1] = src[hour% 10]+0x30;
  154. PuZh[2] = 0x2D;
  155. PuZh[3] = src[minute/ 10]+0x30;
  156. PuZh[4] = src[minute% 10]+0x30;
  157.                         
  158.   if(hour==0&&minute==0)      //定鬧鐘,當時間為零點零分,鬧鐘燈亮起
  159.   clock=1;
  160.   else  
  161.   clock=0;
  162.                
  163.                         P1=0x7f;  //0111 1111
  164.                   P0=tab[j];
  165.                   mDelay(1);
  166.       P1=0xbf;  //1011 1111
  167.                         P0=tab[k];
  168.       mDelay(1);
  169.         
  170.                         P1=0xdb;  //1101 1111
  171.                         P0=0x40;
  172.                         mDelay(1);
  173.                         
  174.                     
  175.                                 P1=0xef;  //1110 1111
  176.                                 P0=tab[m];
  177.                                 mDelay(1);
  178.                                 P1=0xf7;   //1111 0111
  179.                                 P0=tab[n];
  180.                                 mDelay(1);
  181.                                                 
  182.          
  183.                                 
  184.                                 P1=0xfd;  //1111 1101
  185.                                 P0=tab[s];
  186.                                 mDelay(1);
  187.                                 P1=0xfe;  //1111 1110
  188.                                 P0=tab[t];
  189.                                 mDelay(1);
  190.                 }
  191. }
復制代碼

串口.zip

22.76 KB, 下載次數: 17, 下載積分: 黑幣 -5

發送.zip

48.46 KB, 下載次數: 16, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区不卡在线观看 | 天天干天天操天天射 | 国产成人自拍一区 | 雨宫琴音一区二区在线 | 九九视频网 | 欧美另类视频 | 欧美视频区 | 欧美国产视频 | 中文字幕在线观看一区二区 | 视频一区中文字幕 | 欧美精品91 | 国产精品久久久久久久久久免费看 | 国产一区在线看 | 日韩精品人成在线播放 | 欧美精品一区二区三区一线天视频 | 国产片侵犯亲女视频播放 | 亚洲国产精品99久久久久久久久 | 国产精品久久久久久久久久久久午夜片 | 欧美日韩久久精品 | 91国在线 | 国产精品视频久久久 | 欧美成人精品激情在线观看 | 黑人巨大精品欧美一区二区一视频 | 久久国产香蕉 | 祝你幸福电影在线观看 | 欧美一区在线视频 | 久久亚洲欧美日韩精品专区 | 久久久久久免费观看 | 久久999 | 国产在线a | 精品国产一区久久 | 一区中文字幕 | 亚洲另类春色偷拍在线观看 | 亚洲国产精品视频一区 | 97偷拍视频 | 欧美一级网站 | 久久久.com| 亚洲成色777777在线观看影院 | 午夜专区 | 国产成人99久久亚洲综合精品 | 成人精品免费视频 |