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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1669|回復: 0
收起左側(cè)

51單片機電子鐘的仿真程序設(shè)計

[復制鏈接]
ID:1071489 發(fā)表于 2023-4-13 16:04 | 顯示全部樓層 |閱讀模式
主要功能:
1.能實現(xiàn)時、分、秒的顯示;
2.按鍵控制時、分、秒的調(diào)整。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
本次設(shè)計的單片機系統(tǒng)由AT89C51、數(shù)碼管顯示屏、時鐘振蕩器、電源、按鍵鍵盤等組成。2.3  單片機系統(tǒng)流程圖程序首先開始進行初始化,在主程序的循環(huán)程序中首先調(diào)用時鐘子程序完成秒的計時及向分鐘、小時的進位,用于調(diào)整分鐘、小時、秒,主要由主函數(shù)組成通過對相關(guān)子程序的調(diào)用。然后調(diào)用按鍵子程序,在判斷是否有按鍵按下。若有按鍵按下則轉(zhuǎn)到相應(yīng)的功能程序執(zhí)行。

第三部分  系統(tǒng)硬件設(shè)計3.1  時鐘振蕩器時鐘振蕩器即時鐘脈沖發(fā)生器,產(chǎn)生整個芯片內(nèi)部個功能電路正常操作所需的時鐘脈沖和定時信號。最常用的一種電路連接方法是,在XTAL1和XTAL2這2只引腳之間外接一只晶體振蕩器XTAL和2只電容C1和C2到地,與片內(nèi)電路共同構(gòu)成一個多諧振蕩器電路。其振蕩頻率取決于外接石英振蕩器原件XTAL的固有頻率3.2  數(shù)碼管顯示電路數(shù)碼管顯示屏的A到G與單片機P0口相連,數(shù)碼管顯示屏的1到6口與單片機P2口相連。

3.3  鍵盤輸入電路本次設(shè)計采用獨立鍵盤,鍵盤按下時,相應(yīng)的I/O口電平由高變低。3個獨立鍵盤依次控制著秒、分鐘、小時的設(shè)置。3個獨立按鍵與單片機P1.0—P1.2口相連。3.4  中心模塊AT89C51是一種帶4K字節(jié)的低電壓、高性能的高效微控制器。P0口:是一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(計時器0外部輸入)
P3.5 T1(計時器1外部輸入)
P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)RST:復位輸入。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};
  6. uchar seconde=0;
  7. uchar minite=0;
  8. uchar hour=0;
  9. uchar mstcnt=0;
  10. sbit P1_0=P1^0;           
  11. sbit P1_1=P1^1;            
  12. sbit P1_2=P1^2;               
  13. void delay(uint k );   
  14. void delay1(uchar h );
  15. void time_pro( );   
  16. void display( );  
  17. void keyscan( );            
  18. void delay1 (uchar h)
  19. {
  20. uchar j;
  21. while((h--)!=0)
  22.    {
  23.     for(j=0;j<125;j++)
  24.      {;}
  25.    }
  26. }   

  27. void delay (uint k)
  28. {
  29.         uint a,b,c;
  30.         for(c=k;c>0;c--)
  31.         for(b=38;b>0;b--)
  32.             for(a=130;a>0;a--);
  33. }     
  34. void time_pro( void)
  35. {
  36.         if(seconde==60)              
  37.           { seconde=0;
  38.             minite++;
  39.            if( minite==60)         
  40.               { minite=0;
  41.                 hour++;
  42.               if(hour==24)           
  43.                  {hour=0; }
  44.               }
  45.           }
  46.    
  47. }
  48. void display(void)   
  49. {      
  50.         P2=0xfe;
  51.         P0=dispcode[hour/10];            
  52.         delay1(4);
  53.         P2=0xfd;
  54.         P0=(dispcode[(hour%10)])|0X80;      
  55.         delay1(4);
  56.         P2=0xfb;
  57.         P0=dispcode[minite/10];           
  58.         delay1(4);
  59.         P2=0xf7;
  60.         P0=(dispcode[minite%10])|0X80;      
  61.         delay1(4);
  62.         P2=0xef;
  63.         P0=dispcode[seconde/10];         
  64.         delay1(4);
  65.         P2=0xdf;
  66.         P0=dispcode[seconde%10];      
  67.         delay1(4);      
  68. }
  69. void keyscan (void)
  70. {
  71.     if(P1_0==0)         
  72.        {
  73.            delay(3);
  74.                if(P1_0==0)
  75.                    {
  76.                        seconde++;
  77.                       if(seconde==60)
  78.                         {seconde=0; }
  79.                    }
  80.        }
  81.     if(P1_1==0)              
  82.        {
  83.             delay(3);
  84.                if(P1_1==0)
  85.                  {
  86.                     minite++;
  87.                     if(minite==60)
  88.                       {minite=0;}
  89.        }
  90.      }
  91.     if(P1_2==0)              
  92.        {
  93.             delay(3);
  94.                if(P1_2==0)
  95.                    {
  96.                        hour++;
  97.                     if(hour==24)
  98.                       {hour=0; }
  99.                  }
  100.        }
  101. }
  102. void timer0(void) interrupt 1 using 0     
  103.     {
  104.      TH0=0x3c;
  105. TMOD = 0x11;
  106.         mstcnt++;
  107.         if(mstcnt==20)
  108.         {
  109.             seconde++;
  110.             mstcnt=0;
  111.         }               
  112.       
  113. }
  114. void main(void)
  115. {       P1=0xff;               
  116. TMOD = 0x11;
  117. TH0=0x3c;            
  118. TL0=0xb0;
  119. EA=1;
  120. ET0=1;
  121. TR0=1;
  122.     while (1)
  123. {   
  124.          keyscan( );   
  125.          time_pro( );
  126.    display( );         
  127. }
  128. }
復制代碼

Keil代碼與Proteus仿真下載:
仿真程序.7z (62.19 KB, 下載次數(shù): 20)

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女搞网站| 欧美日韩视频网站 | 波多野结衣av中文字幕 | 91久久精品一区二区二区 | 久热精品在线观看视频 | 成人在线播放网站 | 91精品久久久久久久久久入口 | 久久se精品一区精品二区 | 国产午夜精品一区二区三区在线观看 | 羞羞视频在线免费 | 国产99视频精品免费视频7 | 亚洲国产区 | 一区视频在线播放 | 国产一级在线观看 | 美女视频h| 免费精品 | 久久成人精品一区二区三区 | 国产精彩视频 | 久久精品黄色 | 欧美在线视频一区二区 | 欧美区在线观看 | 狠狠av| 久久综合成人精品亚洲另类欧美 | 亚洲精品丝袜日韩 | av天天澡天天爽天天av | 日韩一级| 亚洲精品一区中文字幕乱码 | 欧美4p | 亚洲欧美在线观看 | 天天天操 | 国产精品一区二区无线 | 成人精品视频99在线观看免费 | 国产精品1区2区3区 一区中文字幕 | 久久久999国产精品 中文字幕在线精品 | 日本黄色免费大片 | 涩涩视频在线观看 | 新超碰97 | 亚洲精彩视频 | 精品美女在线观看视频在线观看 | 三级视频在线观看 | 免费观看黄色片视频 |