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

QQ登錄

只需一步,快速開始

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

數(shù)字電子鐘 共陽數(shù)碼管顯示,帶開啟關(guān)閉鍵,調(diào)時(shí)調(diào)分調(diào)秒鍵

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:108263 發(fā)表于 2016-11-11 19:19 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
數(shù)字電子鐘,很基礎(chǔ)的,用得共陽數(shù)碼管顯示,四個(gè)按鍵,分別是開啟關(guān)閉鍵,調(diào)時(shí)調(diào)分調(diào)秒鍵。和大家一起學(xué)習(xí)。

完整的代碼下載:
Practice1--要求1.zip (73.99 KB, 下載次數(shù): 34)

  1. /*******************************************************************
  2. 程 序 名:數(shù)字電子時(shí)鐘模塊化程序(緩沖數(shù)組)

  3. 編 寫 者:龍皓明

  4. 指導(dǎo)老師:王韌

  5. 時(shí)   間 :2016.8.12

  6. 功   能 :顯示時(shí)分秒,設(shè)有四個(gè)功能鍵:啟動(dòng)/停止,調(diào)時(shí),調(diào)分,調(diào)秒
  7.                                                                                   
  8. 使用說明:將單片機(jī)的P2口用排線連于J31即73ls573位選(P20對(duì)I11),P0口
  9.                       連于J32即數(shù)碼管段選(P00對(duì)O11),P1口連接J16(P10--P7...S1--S7)
  10.                                                                                                           
  11. ********************************************************************/

  12. #include <reg52.h>
  13. #include "delay.h"                       //延時(shí)頭文件
  14. #include "display.h"                           //顯示函數(shù)頭文件
  15. #include "set_find_code.h"  //設(shè)置緩沖數(shù)組文件
  16. #include "key.h"                                //鍵掃描函數(shù)文件
  17. uchar find_code[8];
  18. bit sign=0;
  19. uchar i,hour,minute,second,keyzhi,c=0;

  20. /*****************主函數(shù)****************/
  21. void main()
  22. {                hour=8;                                                                //設(shè)置小時(shí)初始值
  23.                 minute=30;                                                        //設(shè)置分鐘初始值
  24.                 second=0;                                                        //設(shè)置秒鐘初始值
  25.     TMOD=0x01;              //設(shè)置定時(shí)器0為工作方式1
  26.     TH0=(65536-50000)/256;  //定時(shí)50ms高8位求模       
  27.     TL0=(65536-50000)%256;  //定時(shí)50ms低8位求模
  28.     EA=1;                   //開總中斷
  29.     ET0=1;                  //開定時(shí)器0中斷
  30.     //TR0=1;
  31.                 set_find_code(12,12,12,12,12,12,12,10);//顯示系統(tǒng)提示符“P.”
  32.                 while(1)
  33.                 {               
  34.                         display(find_code);
  35.                         keyzhi=key_scan();                                        //鍵掃函數(shù),提取返回值(即鍵值)
  36.                         if(keyzhi==0x01)
  37.                         {
  38.                                 sign=~sign;                                                        //取反,判定開啟/暫停
  39.                                 if(sign==1)                                                  //判定開啟電子鐘
  40.                                 {
  41.                                         TR0=1;                                                  //開啟定時(shí)器0,電子鐘運(yùn)行                                                       
  42.                                         display(find_code); //電子鐘顯示
  43.                                 }                               
  44.                 if(sign==0)             //判定暫停電子鐘,進(jìn)入調(diào)節(jié)模式
  45.                                 {
  46.                     TR0=0;                                                        //關(guān)閉定時(shí)器0,電子鐘停止運(yùn)行
  47.                                         keyzhi=key_scan();       
  48.                                         while(keyzhi!=0x01) //如果開啟/暫停鍵沒有按下
  49.                                         {
  50.                                                 keyzhi=key_scan();//讀取鍵值
  51.                                                 switch(keyzhi)                //進(jìn)入調(diào)時(shí)/分/秒模式
  52.                                                 {
  53.                                                         case 0x02: hour++;if(hour==24)                 //調(diào)時(shí)鍵按下并釋放后時(shí)鐘+1
  54.                                                                 {
  55.                                                                         hour=0;                        //調(diào)到24時(shí)時(shí)清零
  56.                                                                 }
  57.                                                                 set_find_code(hour/10,hour%10,11,minute/10,minute%10,11,second/10,second%10);
  58.                                                                 break;
  59.                                                         case 0x04: minute++;if(minute==60)//調(diào)分鍵按下并釋放后分鐘+1
  60.                                                                 {
  61.                                                                         minute=0;                //調(diào)到60分時(shí)清零
  62.                                                                 }
  63.                                                                 set_find_code(hour/10,hour%10,11,minute/10,minute%10,11,second/10,second%10);                               
  64.                                                                 break;
  65.                                                         case 0x08: second++;if(second==60)//調(diào)秒鍵按下并釋放后秒鐘+1
  66.                                                                 {
  67.                                                                         second=0;                //秒調(diào)到60時(shí)清零
  68.                                                                 }
  69.                                                                 set_find_code(hour/10,hour%10,11,minute/10,minute%10,11,second/10,second%10);                               
  70.                                                                 break;
  71.                                                                 default : display(find_code);break;                //穩(wěn)定顯示所有數(shù)據(jù)                                                                                  
  72.                                                 }
  73.                                         }
  74.                                 }
  75.                         }                                       
  76.                 }
  77. }               
  78. void timer0() interrupt 1   //定時(shí)器0中斷入口

  79. {
  80.    TH0=(65536-50000)/256;   //定時(shí)器重賦初值
  81.    TL0=(65536-50000)%256;
  82.    c++;                             //中斷次數(shù)
  83.          if(c==20)
  84.          {
  85.                                 c=0;
  86.                                 second++;
  87.                                 if(second==60)                          //計(jì)時(shí)一分鐘后清零
  88.                                 {
  89.                                                 second=0;
  90.                                                 minute++;                                        //秒鐘每計(jì)時(shí)一分鐘,分鐘自+1
  91.                                                 if(minute==60)          //計(jì)時(shí)一小時(shí)后清零
  92.                                                 {
  93.                                                                 minute=0;
  94.                                                                 hour++;        //分鐘每計(jì)時(shí)一小時(shí),時(shí)鐘自+1
  95.                                                                 if(hour==24)         //24小時(shí)倒計(jì)時(shí)到
  96.                                                                 {
  97.                                                                                         hour=0;         //清零
  98.                                                                 }               
  99.                                                 }
  100.                                 }
  101.                 }
  102.                 set_find_code(hour/10,hour%10,11,minute/10,minute%10,11,second/10,second%10);                                                                         
  103. }                //送顯示數(shù)據(jù)

復(fù)制代碼

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161231 發(fā)表于 2017-2-10 09:02 來自手機(jī) | 只看該作者
沒有錢下載不下來
回復(fù)

使用道具 舉報(bào)

板凳
ID:108263 發(fā)表于 2017-8-8 11:09 | 只看該作者

你要的話我可以發(fā)給你
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表