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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2305|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)串口時(shí)鐘仿真+程序設(shè)計(jì) 附虛擬串口軟件下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

本次設(shè)計(jì)要求設(shè)計(jì)一基于單片機(jī)控制的串行口調(diào)時(shí)時(shí)鐘設(shè)計(jì)計(jì),該數(shù)字鐘能同時(shí)顯小時(shí),分鐘和秒。并能對(duì)時(shí)鐘進(jìn)行設(shè)置。時(shí)鐘開(kāi)始顯示為00時(shí) 00分,也就是數(shù)碼管(或用液晶塊)顯示 00.00。秒信號(hào)用時(shí)的個(gè)位的小數(shù)點(diǎn)表示,秒信號(hào)(即小數(shù)點(diǎn))在每秒鐘的前半秒點(diǎn)亮,后半秒鐘熄滅,秒信號(hào)每閃爍 60 次時(shí)“分”的計(jì)數(shù)加 1,秒計(jì)數(shù)變?yōu)?0。分計(jì)數(shù)加到 59分后,分鐘再加 1,分計(jì)數(shù)變?yōu)?0,時(shí)計(jì)數(shù)加 1。依次類推,時(shí)鐘最大的顯示值為 23 小時(shí) 59分。只要確定了1秒的定時(shí)時(shí)間,其他位均以此為基準(zhǔn)往上累加。   


仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdio.h>
  4. #define INT8U  unsigned char
  5. #define INT16U unsigned int
  6. #define FREQ         11059200        //振蕩器頻率11.0592MHz

  7. sbit K1=P1^7;
  8. sbit K2=P1^0;

  9.                                               //0   1    2    3   4    5    6    7    8    9   
  10. INT8U code SEG_CODE[] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xBF,0X86,0xDB,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x00 };
  11. INT8U R[] = {0,0,0,0,0,0};        
  12. INT8U S=0,F=0,M=0,k=0,flag=0,L=1;
  13. INT16U cnt=0,Judge=0;

  14. //-----------------------------------------------------------------
  15. // 延時(shí)程序
  16. //-----------------------------------------------------------------
  17. void delay_ms(INT16U x)
  18. {
  19.         INT8U t;   
  20.         while(x--)
  21.         for(t = 0; t<120; t++);
  22. }

  23. void Init_USART_uT1()
  24. {
  25.           TMOD=0x21;
  26.           SCON=0X50;                        
  27.         PCON=0x00;
  28.         TH0=(65536-50000)/256;
  29.         TL0=(65536-50000)%256;
  30.         TH1=TL1=0xfd;
  31.         TR1=1;
  32. }
  33. void Send()
  34. {
  35. INT8U *s="請(qǐng)依次輸入時(shí)分秒!!!\r\n";
  36.   INT8U i=0;
  37.   while(s[i]!='\0')
  38.   {
  39.     SBUF=s[i++];
  40.         while(TI==0);
  41.         TI=0;
  42.   }
  43. }
  44. void Display()
  45. {
  46.         P2=0XFE;P0=SEG_CODE[S/10];delay_ms(1);
  47.         P2=0XFD;P0=SEG_CODE[S%10+10]; delay_ms(1);
  48.         P2=0XFB;P0=SEG_CODE[F/10];delay_ms(1);
  49.         if(M%2){P2=0XF7;P0=SEG_CODE[F%10+10];}
  50.         else   {P2=0XF7;P0=SEG_CODE[F%10];}delay_ms(1);           

  51. }
  52. void keyscan()
  53. {
  54.    if(K1==0)
  55.    {
  56.       delay_ms(5);
  57.           if(K1==0)
  58.           {
  59.             flag=1;        
  60.                  while(!K1);
  61.           }
  62.    }
  63.    if(K2==0)
  64.    {
  65.       delay_ms(5);
  66.           if(K2==0)
  67.           {
  68.              flag=2;               
  69.                  while(!K2);
  70.           }
  71.    }
  72. }
  73. //-----------------------------------------------------------------
  74. // 主程序
  75. //-----------------------------------------------------------------
  76. void main()
  77. {
  78.    EA=1;
  79.    EX0=1;
  80.    IT0=1;
  81.    ET0=1;
  82.    TR0=1;
  83.    ES=1;  
  84.    Init_USART_uT1();
  85.    Send();
  86.    while(1)
  87.    {
  88.          keyscan();
  89.          Display();
  90.          if(flag==2)
  91.          {
  92.            TR0=0;
  93.          }
  94.          if(flag==1)
  95.          {
  96.                 TR0=1;
  97.          }


  98.    }
  99. }
  100. //-----------------------------------------------------------------
  101. // 串口接收中斷
  102. //-----------------------------------------------------------------
  103. void receive_4_digit() interrupt 4
  104. {
  105.          static  INT8U i=0;
  106.          INT8U c;
  107.          if(RI)
  108.          {
  109.             RI=0;
  110.                 flag=2;
  111.                 c=SBUF;
  112.                 if(c=='#')i=0;
  113.                 else if(c>='0'&&c<='9')
  114.                 {
  115.                    R[i++]=c-'0';           
  116.                    S=R[0]*10+R[1];
  117.                    F=R[2]*10+R[3];
  118.                    M=R[4]*10+R[5];
  119.                    if(i==6)i=0;
  120.                 }
  121.          }
  122. }
  123. void Time0()interrupt 1
  124. {
  125.         TH0=(65536-50000)/256;
  126.         TL0=(65536-50000)%256;
  127.         ++cnt;        
  128.         if(cnt==20)
  129.         {
  130.           cnt=0;
  131.           Judge++;
  132.           if(Judge==10&&L==1)
  133.           {
  134.                     flag=1;
  135.                  L=2;
  136.           }
  137.          
  138.           if(flag==1)
  139. ……………………

  140. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:附虛擬串口軟件
串口通訊.zip (7.81 MB, 下載次數(shù): 70)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2019-4-17 02:05 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线精品 | 夜夜爽99久久国产综合精品女不卡 | 天堂免费看片 | 韩国久久精品 | 玖玖国产精品视频 | 福利视频一区二区 | 九九热在线免费视频 | 欧美国产日韩在线 | 中文字幕av在线 | 国产麻豆一区二区三区 | 国产片侵犯亲女视频播放 | 国产视频精品视频 | 国产在线一区二区三区 | 国产精久久久久久久妇剪断 | a在线免费观看视频 | 欧美v在线| 北条麻妃99精品青青久久 | 久久99精品久久久97夜夜嗨 | 久久久久一区二区三区 | 福利视频一区二区 | 黄色大片免费看 | 日韩和的一区二在线 | 免费黄色的网站 | 爱操影视 | 久久久久久久av | 欧美一级久久 | 永久精品| 欧美久久久久久久 | 精品亚洲一区二区 | 日韩小视频 | 成人二区 | 天天插天天操 | 一区二区在线不卡 | 精品亚洲一区二区三区 | 国产区第一页 | 一级日韩| 亚洲欧洲精品在线 | 精品国产乱码久久久久久丨区2区 | 久久午夜视频 | 搞av.com| 久久精品国产清自在天天线 |