

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 單片機課程設計任務書</p><p><b> 專 業(yè): </b></p><p> 班 級: </p><p> 姓 名: </p><p> 學 號: </p><p> 題 目: </p>&
2、lt;p><b> 年 月 日</b></p><p><b> 摘要</b></p><p> 本設計是作息時間控制器,由單片機最小系統(tǒng)、按鍵模塊、數(shù)碼管顯示模塊、鬧鐘模塊組成。采用單片機AT89S52與12MHZ晶振相連;通過按鍵K1、K2、K3、K4控制時間的校正、鬧鐘時間設定;數(shù)碼管顯示模塊用來顯示時間,顯示格式為“時分
3、”,并能夠根據(jù)需要顯示年、月、日,由數(shù)碼管小數(shù)點閃動作為秒計數(shù);鬧鐘模塊進行到時提醒并作出相應動作:發(fā)光二極管閃亮,同時播放音樂。</p><p> 本設計中,利用單片機定時器設計時間計時處理,采用單片機內(nèi)部的T0定時器溢出中斷來實現(xiàn),工作在T1方式下,定時50微妙,則連續(xù)中斷20次即為一秒,得到了我們所需時間的最小單位秒,60秒為一分,60分為一小時,24小時為一天,1、3、5、7、8、10、12月為31天,
4、4、6、9、11月為30天,閏年二月為29天,非閏年二月為28天,12個月為一年。采用這種時間設計思想來進行時間設置。</p><p> 在整個系統(tǒng)的設計中,單片機的P0口輸出顯示信號,P1口按鍵輸入控制、P2口用來掃描,為動態(tài)顯示、P3口鬧鐘模塊。</p><p> 該設計用C52編寫程序,由于匯編語言的移植性比較差,而C語言則比較靈活。許多子函數(shù)都可以直接移植過去。</p&g
5、t;<p><b> 目錄</b></p><p><b> 摘要1</b></p><p><b> 目錄2</b></p><p><b> 1概述1</b></p><p> 1.151單片機簡介1</p>
6、;<p> 1.2 設計要求及功能1</p><p> 1.3本設計實現(xiàn)的功能1</p><p> 2 系統(tǒng)總體方案及硬件設計2</p><p> 2.1 系統(tǒng)總體方案框圖2</p><p> 2.2 按鍵控制模塊3</p><p> 2.3 時間顯示模塊4</p&
7、gt;<p> 2.4鬧鐘模塊4</p><p><b> 3軟件設計5</b></p><p> 3.1系統(tǒng)軟件設計思想5</p><p> 3.2 系統(tǒng)主程序5</p><p> 3.3 中斷子程序6</p><p> 3.4 按鍵掃描子程序8&
8、lt;/p><p> 5課程設計體會13</p><p><b> 參考文獻:14</b></p><p> 附1:源程序代碼15</p><p> 附2:系統(tǒng)原理圖25</p><p><b> 1概述</b></p><p> 1.
9、151單片機簡介</p><p> 單片微型計算機簡稱單片機,即把組成微型計算機的各個功能部件,如中央處理器、隨機存儲器、只讀存儲器、I/O接口電路、定時器/計數(shù)器以及串行通信接口等集成在一塊芯片上,構成一個完整的微型計算機。</p><p> 由于單片機主要面對的是測控對象,突出的是控制功能,所以它從功能和形態(tài)上來說都是應測控功能領域應用的要求而誕生的。隨著單片機技術的發(fā)展,它在芯
10、片內(nèi)集成了許多面對測控對象的接口電路,如ADC、DAC、高速I/O口、脈沖寬度調制器、監(jiān)視定時器等,這些接口電路已經(jīng)突破了微型計算機傳統(tǒng)的體系結構,所以單片機也成為微型控制。</p><p> 51單片機是對目前所有兼容Intel 8031指令系統(tǒng)的單片機的統(tǒng)稱。該系列單片機的始祖是Intel的8031單片機,后來隨著Flash rom技術的發(fā)展,8031單片機取得了長足的進展,成為目前應用最廣泛的8位單片機之
11、一,其代表型號是ATMEL公司的AT89系列,它廣泛應用于工業(yè)測控系統(tǒng)之中。目前很多公司都有51系列的兼容機型推出,在目前乃至今后很長的一段時間內(nèi)將占有大量市場。</p><p> 1.2 設計要求及功能</p><p> 本設計是作息時間控制器,其設計實現(xiàn)的功能主要有:使用4位七段顯示器來顯示現(xiàn)在的時間,顯示格式為“時分”,由LED閃動作為秒計數(shù)表示??梢栽O定作息時間,并進行到時提
12、示。能夠根據(jù)預先設定好的作息時間表自動啟停控制電路,完成對外部設備的實時控制。</p><p> 1.3本設計實現(xiàn)的功能</p><p> 本設計實現(xiàn)的功能為:使用七段顯示器顯示時間,顯示格式為“時分”,并可顯示日期,顯示格式為“月日”,年份單獨顯示??梢栽O定作息時間,進行到時提示,并作出相應動作:發(fā)光二極管閃亮,同時播放音樂。</p><p> 2 系統(tǒng)總
13、體方案及硬件設計</p><p> 2.1 系統(tǒng)總體方案框圖</p><p> 圖2-1 系統(tǒng)方框圖</p><p> 本次設計實現(xiàn)的功能主要有:使用4位七段顯示器來顯示現(xiàn)在的時間,顯示格式為“時分”,由LED小數(shù)點閃動作為秒計數(shù)表示??梢栽O定作息時間,并進行到時提示。能夠根據(jù)預先設定好的作息時間表自動啟停控制電路,完成對外部設備的實時控制。</p&g
14、t;<p> 由按鍵輸入控制設置年月日以及當前時間、并可設置鬧鐘定時,時間到由蜂鳴器發(fā)出響聲并作出相應動作:二極管閃亮,同時播放音樂。</p><p> 2.2 按鍵控制模塊</p><p> 圖2-2按鍵控制模塊</p><p> 按鍵控制模塊主要有由四個按鍵組成:K1、K2、K3、K4、。其中K1的功能是模式切換鍵;K2的作用是加一;K3
15、的作用是鬧鐘使能;K4的作用是減一。</p><p> 當需要設定時間或是校正時間,即可按下模式切換鍵來進行。校正時間:按第一次K1鍵,進入小時校正狀態(tài),通過按K2、K4鍵進行小時校正,按一下K2鍵則加一,按一下K3鍵則減一;按第二次K1鍵,進入分校正狀態(tài),通過按K2、K4鍵進行分鐘校正;按第三次K1鍵,進入小時設定狀態(tài),此時若不需要設置則不操作;按下第四次K1鍵,進入分鐘設定狀態(tài),若此時不需要設置則不操作;按
16、下第五次K1鍵進入月份校正狀態(tài),通過按K2、K4鍵進行月份校正;按下第六次K1鍵,進入日校正狀態(tài),通過按K2、K4鍵進行日校正;按下第七次K1鍵進入年份校正狀態(tài),通過按K2、K4鍵來進行年份校正;校正完畢后,再按一次K1鍵,則退出時間校正狀態(tài),并顯示當前校正后的準確時間。設定時間:按第一次K1鍵進入小時校正狀態(tài),此時若不需要設置,則不操作;以此類推,到第三次按下K1鍵,進入小時設定狀態(tài),通過按K2、K4鍵進行小時設定;按下第四次K1鍵,
17、進入分鐘設定狀態(tài),通過按K2、K4鍵進行分鐘設定,設定完畢后,按一下K3鍵(鬧鐘使能);繼續(xù)按K1鍵,若不需要設置,則不操作,以此類推,到按最后一次K1鍵則退出時間設定狀態(tài)并顯示當前時間,當時間與我們設</p><p> 2.3 時間顯示模塊</p><p><b> 圖2-3顯示模塊</b></p><p> 時間顯示模塊主要由四位數(shù)
18、碼管來顯示,配合按鍵控制模塊的校正與設定時間,相應的顯示。時間正常顯示時,LED每閃動60次,分鐘自動加一;每六十分鐘小時自動加一;每24小時天自動加一。</p><p><b> 2.4鬧鐘模塊</b></p><p> 圖2-4鬧鐘音樂模塊</p><p> 鬧鐘模塊快的主要功能:鬧鈴。當設定時間與當前時間一致時,則鬧鐘自動鬧鈴進行
19、提示,同時二極管閃亮一分鐘后,自動退出響鈴狀態(tài),若按K3鍵,鬧鐘退出響鈴狀態(tài)。</p><p><b> 圖2-5系統(tǒng)原理圖</b></p><p><b> 3軟件設計</b></p><p> 3.1系統(tǒng)軟件設計思想</p><p> 本系軟件設計中,利用單片機定時器設計時間計時處理,
20、采用單片機內(nèi)部的T0定時器溢出中斷來實現(xiàn),工作在T1方式下,定時50微妙,則連續(xù)中斷20次即為一秒,得到了我們所需時間的最小單位</p><p> 該設計用C51編寫程序,由于匯編語言的移植性比較差,而C語言則比較靈活。許多子函數(shù)都可以直接移植過去。在程序中除了有主函數(shù)外還包含許多子函數(shù),如延時函數(shù)、按鍵掃描函數(shù)、初始化函數(shù)、時間顯示函數(shù)、設定鬧鐘顯示函數(shù)、設定日期顯示函數(shù)、設定年份顯示函數(shù)、月份選擇函數(shù)、年份
21、顯示輔助函數(shù)。</p><p> 3.2 系統(tǒng)主程序</p><p> 在主控程序循環(huán)中主要工作為掃描是否有按鍵,若有按健則做相應的功能處理,同時也掃描顯示器顯示時間數(shù)據(jù),并檢查所設置的時間是否到了。時間計時處理程序是等過了1s后,則更新時間數(shù)據(jù),將最新的時、分的數(shù)據(jù)轉換為數(shù)字數(shù)據(jù)并顯示在七段顯示器上。</p><p> 圖3-2主程序流程圖</p&g
22、t;<p> 3.3 中斷子程序</p><p> 中斷子程序的主要功能:提供時間基準。當連續(xù)中斷20次時,即為一秒,此時秒加一;當秒值為60時,分鐘加一,同時秒清零;當分鐘值為60時,小時加一,同時分鐘值清零;當小時為24時,天值加一,同時小時清零;由于每月天數(shù)不定,1、3、5、7、8、10、12月為31天,當計數(shù)到此類月份時,天值為32時,月值加一,同時天值為1;4、6、9、11月為30天
23、,當計數(shù)到此類月份時,天值為31時,月值加一,同時天值為1;如果是閏年,則2月為29天,當計數(shù)到此類月份時,天值為30時,月值加一,同時天值為一;如果不是閏年,則2月為28天,當計數(shù)此類月份時,天值為29時,月值加一,同時天值為一;當月值為13時,則年值加一,同時月值為一。</p><p> 圖3-3定時器中斷函數(shù)</p><p> 3.4 按鍵掃描子程序</p>&l
24、t;p> 按鍵掃描子程序是程序計中相當重要的一部分。按鍵掃描子程序的功能是:掃描是否有按鍵按下,若有鍵按下,則執(zhí)行相應功能。</p><p> 圖3-4按鍵掃描子程序</p><p><b> 3.5程序清單</b></p><p><b> 見附2。</b></p><p><
25、b> 4課程設計體會</b></p><p> 此次課程設計為期兩個多星期,我們從中獲益匪淺。本課程設計是《單片機原理與應用技術》的綜合訓練。從選題、確定方案、設計原理圖、仿真、焊接的過程中,我們學到了很多,這對我們來說是一次將課本所學知識應用到具體實踐中的一次考驗。</p><p> 雖然在這個過程中我們遇到了很多困難,編寫程序需要一步一步并認真的調試,一個小小的
26、錯誤都可導致整個程序的不可用;硬件仿真需要考慮硬件與軟件的連調,才能保證硬件與軟件協(xié)同工作。我們通過查閱資料、同學的幫助,最終基本解決這些問題,從而基本完成了課程設計的要求。在這個過程中我們學會了發(fā)現(xiàn)問題、分析問題并最終解決問題,為我們以后的工作和學習打下了一定的基礎。</p><p> 此次課程設計,也使我們發(fā)現(xiàn)了自己的缺點,課本所學知識與實踐是有一定距離的,我們不僅要學好科學文化知識,更要積極的參與實踐學習
27、,真樣才能有更大的收獲,真正學到知識,要把理論與實際相結合,從而成為真正有用的人。</p><p><b> 參考文獻:</b></p><p> 余發(fā)山 王福忠 徐州:中國礦業(yè)大學出版社2008年</p><p> [2]彭為,黃科,雷道仲.單片機典型系統(tǒng)設計實例講解.2006年</p><p> [3]何立民
28、.單片機應用技術選編.北京:北京航空航天大學出版社,2004.</p><p> [4]楊剛,周群.電子系統(tǒng)設計與實踐.北京:電子工業(yè)出版社,2004.</p><p><b> 附表:</b></p><p><b> 項目訓練評價表</b></p><p><b> 附2:源程
29、序代碼</b></p><p> #include<REG52.H></p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x
30、66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> //*************************************************************************************</p><p> sbit K1=P1^4;</p><p> sbit K2=P1^5;</p>
31、;<p> sbit K3=P1^6;</p><p> sbit K4=P1^7;</p><p> sbit sd=P3^6;</p><p> sbit BEEP=P3^7;</p><p> uchar m=0,h=12,sec=0,cnt=0,x,y,qian,bai,shi,ge;</p>&
32、lt;p> uchar set_h=12;</p><p> uchar set_m=5;</p><p> uchar month=12;</p><p> uchar day=22;</p><p> uchar th0_f;</p><p> uchar tl0_f;</p>&l
33、t;p> uint year=2010; </p><p> void delay(uchar t);//延時函數(shù)</p><p> void scankey(void);//按鍵掃描函數(shù)</p><p> void init(void); //初始化函數(shù)</p><p> void display(void);//顯示
34、函數(shù)</p><p> void set_time(void);//設定時間顯示輔助函數(shù)</p><p> void set_day(void);//設定日期顯示輔助函數(shù)</p><p> void m_choose(void); //月份選擇函數(shù)</p><p> void bianhuan(void); //年份顯示輔助函數(shù)&l
35、t;/p><p> void bianhuan1(void);//時間顯示輔助函數(shù)</p><p> changedata(uchar *song,uchar *diao,uchar *jie);//音樂符號串解釋函數(shù) </p><p> void play(uchar *songdata);//奏樂函數(shù)</p><p> uchar c
36、ode mamahao[]={ </p><p> "6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|" </p><p> "2.3_55_6_|321-|5.3_2_1_,6_1_|,5--" </p><p><b> };</b></p><
37、p> uchar code freq[36*2]={ </p><p> 0xA9,0xEF,//00220HZ ,1 //0 </p><p> 0x93,0xF0,//00233HZ ,1# </p><p> 0x73,0xF1,//00247HZ ,2 </p><p> 0x49,0xF2,//00262HZ ,2
38、# </p><p> 0x07,0xF3,//00277HZ ,3 </p><p> 0xC8,0xF3,//00294HZ ,4 </p><p> 0x73,0xF4,//00311HZ ,4# </p><p> 0x1E,0xF5,//00330HZ ,5 </p><p> 0xB6,0xF5
39、,//00349HZ ,5# </p><p> 0x4C,0xF6,//00370HZ ,6 </p><p> 0xD7,0xF6,//00392HZ ,6# </p><p> 0x5A,0xF7,//00415HZ ,7 </p><p> 0xD8,0xF7,//00440HZ 1 //12 </p&g
40、t;<p> 0x4D,0xF8,//00466HZ 1# //13 </p><p> 0xBD,0xF8,//00494HZ 2 //14 </p><p> 0x24,0xF9,//00523HZ 2# //15 </p><p> 0x87,0xF9,//00554HZ 3 //16 </p>
41、<p> 0xE4,0xF9,//00587HZ 4 //17 </p><p> 0x3D,0xFA,//00622HZ 4# //18 </p><p> 0x90,0xFA,//00659HZ 5 //19 </p><p> 0xDE,0xFA,//00698HZ 5# //20 </p>&l
42、t;p> 0x29,0xFB,//00740HZ 6 //21 </p><p> 0x6F,0xFB,//00784HZ 6# //22 </p><p> 0xB1,0xFB,//00831HZ 7 //23 </p><p> 0xEF,0xFB,//00880HZ `1 </p><p> 0x2
43、A,0xFC,//00932HZ `1# </p><p> 0x62,0xFC,//00988HZ `2 </p><p> 0x95,0xFC,//01046HZ `2# </p><p> 0xC7,0xFC,//01109HZ `3 </p><p> 0xF6,0xFC,//01175HZ `4 </p>&l
44、t;p> 0x22,0xFD,//01244HZ `4# </p><p> 0x4B,0xFD,//01318HZ `5 </p><p> 0x73,0xFD,//01397HZ `5# </p><p> 0x98,0xFD,//01480HZ `6 </p><p> 0xBB,0xFD,//01568HZ `6#
45、</p><p> 0xDC,0xFD,//01661HZ `7 //35 </p><p><b> }; </b></p><p> //****************************** </p><p> //音樂符號串解釋函數(shù)</p><p> changed
46、ata(uchar *song,uchar *diao,uchar *jie) </p><p><b> { </b></p><p> uchar i,i1,j; </p><p> char gaodi;</p><p> uchar banyin; </p><p> uchar
47、 yinchang;//Òô³¤ </p><p> uchar code jie7[8]={0,12,14,16,17,19,21,23}; </p><p> *diao=*song; </p><p> for(i=0,i1=0;;) </p><p><b> { </b
48、></p><p><b> gaodi=0; </b></p><p> banyin=0; </p><p> yinchang=4; </p><p> if((*(song+i)=='|') || (*(song+i)==' ')) i++; </p>
49、;<p> switch(*(song+i)) </p><p><b> { </b></p><p> case ',': gaodi=-12;i++;</p><p><b> break; </b></p><p> case '`&
50、#39;: gaodi=12;i++; </p><p><b> break; </b></p><p><b> } </b></p><p> if(*(song+i)==0) </p><p><b> { </b></p><p>
51、 *(diao+i1)=0; </p><p> *(jie+i1)=0; </p><p><b> return; </b></p><p><b> } </b></p><p> j=*(song+i)-0x30; i++; </p><p> j=jie7
52、[j]+gaodi; </p><p> yinc: switch(*(song+i)) </p><p><b> { </b></p><p> case '#': </p><p><b> i++;j++; </b></p><p&g
53、t; goto yinc; </p><p> case '-': </p><p> yinchang+=4; </p><p><b> i++; </b></p><p> goto yinc; </p><p> case '_': <
54、/p><p> yinchang/=2; </p><p><b> i++; </b></p><p> goto yinc; </p><p> case '.': </p><p> yinchang=yinchang+yinchang/2; </p>
55、<p><b> i++; </b></p><p> goto yinc; </p><p><b> } </b></p><p> *(diao+i1)=j; </p><p> *(jie+i1)=yinchang; </p>&l
56、t;p> i1++; </p><p><b> } </b></p><p><b> } </b></p><p> //****************************************** </p><p><b> //奏樂函數(shù) </b
57、></p><p> void play(uchar *songdata) </p><p><b> { </b></p><p> uchar i,c,j=0; </p><p><b> uint n; </b></p><p> uchar dia
58、odata[40]; </p><p> uchar jiedata[40]; </p><p> changedata(songdata,diaodata,jiedata); </p><p><b> TR1=1; </b></p><p> for(i=0;diaodata[i]!=0;i++)
59、 { </p><p> tl0_f=freq[diaodata[i]*2];</p><p> th0_f=freq[diaodata[i]*2+1]; </p><p> for(c=0;c<jiedata[i];c++) </p><p><b> { </b></p><p&g
60、t; for(n=0;n<24;n++) </p><p> {scankey(); </p><p> if(y==0) { </p><p><b> TR1=0; </b></p><p><b> return; </b></p><p&
61、gt;<b> }</b></p><p> display();</p><p><b> } </b></p><p><b> } </b></p><p><b> TR1=0; </b></p><p> fo
62、r(n=0;n<500;n++); </p><p><b> TR1=1; </b></p><p><b> } </b></p><p><b> TR1=0; </b></p><p><b> } </b></p>
63、<p> void time0(void) interrupt 1</p><p><b> {</b></p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> cnt
64、++;</b></p><p> if(y==1&&(set_h==h&&set_m==m))sd=~sd;</p><p> else sd=1;</p><p> if(cnt==20)</p><p><b> {</b></p><p>
65、<b> sec++;</b></p><p><b> cnt=0;</b></p><p> if(sec==60)</p><p><b> {</b></p><p><b> sec=0;</b></p><p>
66、;<b> m++;</b></p><p><b> if(m==60)</b></p><p><b> {</b></p><p><b> m=0;</b></p><p><b> h++;</b></p&g
67、t;<p><b> if(h==24)</b></p><p><b> {</b></p><p><b> h=0;</b></p><p><b> day++;</b></p><p> switch(month)<
68、/p><p><b> {</b></p><p> case 1:if(day==32){month++;day=1;}break;</p><p> case 2:if(year%4==0){if(day==30){month++;day=1;}}</p><p> else{if(day==29){month+
69、+;day=1;}}break;</p><p> case 3:if(day==32){month++;day=1;}break;</p><p> case 4:if(day==31){month++;day=1;}break;</p><p> case 5:if(day==32){month++;day=1;}break;</p><
70、;p> case 6:if(day==31){month++;day=1;}break;</p><p> case 7:if(day==32){month++;day=1;}break;</p><p> case 8:if(day==32){month++;day=1;}break;</p><p> case 9:if(day==31){mont
71、h++;day=1;}break;</p><p> case 10:if(day==32){month++;day=1;}break;</p><p> case 11:if(day==31){month++;day=1;}break;</p><p> case 12:if(day==32){month++;day=1;}break;</p>
72、<p><b> }</b></p><p> if(month==13)</p><p><b> {</b></p><p><b> month=1;</b></p><p><b> year++;</b></p>
73、<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(x==0)bianhuan1(); </p>
74、;<p><b> }</b></p><p><b> }</b></p><p> timer1() interrupt 3 </p><p><b> { </b></p><p> TL1=tl0_f;TH1=th0_f; //調入預定值
75、</p><p> BEEP=~BEEP; //取反音樂輸出IO</p><p><b> }</b></p><p> void main(void)</p><p><b> {</b></p><p><b> init();&l
76、t;/b></p><p><b> while(1)</b></p><p><b> {</b></p><p> display(); </p><p> scankey();</p><p> if(y==1&&(set_h==h&a
77、mp;&set_m==m))play(mamahao);</p><p> else BEEP=0;</p><p><b> }</b></p><p><b> }</b></p><p> void init(void)</p><p><b>
78、; {</b></p><p><b> BEEP=0;</b></p><p> TMOD=0x11;</p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p>&
79、lt;b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> ET1=1;</b></p><p><b> TR1=0;</b></p><p><b> EA=1;</b><
80、;/p><p><b> }</b></p><p> void display(void)</p><p><b> {</b></p><p><b> P2=0xfe;</b></p><p> P0=a[qian];</p>
81、<p> if(x%2==1&&cnt>=10)P0&=0x00;</p><p> delay(20);</p><p><b> P2=0xfd;</b></p><p> P0=a[bai];</p><p> if(x%2==1&&cnt>=
82、10)P0&=0x00;</p><p> else if(x==0&&cnt>=10)P0|=0x80;</p><p> delay(20);</p><p><b> P2=0xfb;</b></p><p> P0=a[shi];</p><p>
83、if(((x%2==0&&x!=0)||x==7)&&cnt>=10)P0&=0x00;</p><p> delay(20);</p><p><b> P2=0xf7;</b></p><p><b> P0=a[ge];</b></p><p&g
84、t; if(((x%2==0&&x!=0)||x==7)&&cnt>=10)P0&=0x00;</p><p> delay(20);</p><p><b> }</b></p><p> void m_choose(void)</p><p><b>
85、 {</b></p><p> switch(month)</p><p><b> {</b></p><p> case 1:if(day==32)day=1;else if(day==0)day=31;break;</p><p> case 2:if(year%4==0){if(day==30
86、)day=1;else if(day==0)day=29;}</p><p> else{if(day==29)day=1;else if(day==0)day=28;}break;</p><p> case 3:if(day==32)day=1;else if(day==0)day=31;break;</p><p> case 4:if(day==31)
87、day=1;else if(day==0)day=30;break;</p><p> case 5:if(day==32)day=1;else if(day==0)day=31;break;</p><p> case 6:if(day==31)day=1;else if(day==0)day=30;break;</p><p> case 7:if(day
88、==32)day=1;else if(day==0)day=31;break;</p><p> case 8:if(day==32)day=1;else if(day==0)day=31;break;</p><p> case 9:if(day==31)day=1;else if(day==0)day=30;break;</p><p> case 10:
89、if(day==32)day=1;else if(day==0)day=31;break;</p><p> case 11:if(day==31)day=1;else if(day==0)day=30;break;</p><p> case 12:if(day==32)day=1;else if(day==0)day=31;break;</p><p>&l
90、t;b> }</b></p><p><b> }</b></p><p> void set_time(void)</p><p><b> {</b></p><p> qian=set_h/10;</p><p> bai=set_h%10
91、;</p><p> shi=set_m/10;</p><p> ge=set_m%10;</p><p><b> }</b></p><p> void set_day(void)</p><p><b> {</b></p><p>
92、; qian=month/10;</p><p> bai=month%10;</p><p> shi=day/10;</p><p> ge=day%10;</p><p><b> }</b></p><p> void bianhuan(void)</p><
93、;p><b> {</b></p><p> qian=year/1000;</p><p> bai=year%1000/100;</p><p> shi=year%100/10;</p><p> ge=year%10;</p><p><b> }</b&
94、gt;</p><p> void bianhuan1(void)</p><p><b> {</b></p><p> qian=h/10;</p><p><b> bai=h%10;</b></p><p><b> shi=m/10;</b
95、></p><p><b> ge=m%10;</b></p><p><b> }</b></p><p> void scankey(void)</p><p><b> {</b></p><p><b> if(K1==
96、0)</b></p><p><b> {</b></p><p> delay(20);</p><p><b> if(K1==0)</b></p><p><b> {</b></p><p> while(K1==0);&l
97、t;/p><p><b> x++;</b></p><p> if(x==3)set_time();</p><p> else if(x==5)set_day();</p><p> else if(x==7)bianhuan();</p><p> else if(x==8){x=0;
98、bianhuan1();}</p><p><b> }</b></p><p><b> }</b></p><p><b> if(K2==0)</b></p><p><b> { </b></p><p>
99、 delay(20);</p><p><b> if(K2==0)</b></p><p><b> {</b></p><p> while(K2==0);</p><p><b> switch(x)</b></p><p><b&
100、gt; {</b></p><p> case 0:break;</p><p> case 1:h++;if(h==24)h=0;bianhuan1();break;</p><p> case 2:m++;if(m==60)m=0;bianhuan1();break;</p><p> case 3:set_h++;
101、if(set_h==24)set_h=0;set_time();break;</p><p> case 4:set_m++;if(set_m==60)set_m=0;set_time();break;</p><p> case 5:day++;m_choose();set_day();break;</p><p> case 6:month++;if(mo
102、nth==13)month=1;set_day();break;</p><p> case 7:year++;bianhuan();break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></
103、p><p><b> if(K3==0)</b></p><p><b> { </b></p><p> delay(20);</p><p><b> if(K3==0)</b></p><p><b> {</b><
104、;/p><p> while(K3==0);</p><p><b> y++;</b></p><p> if(y==2)y=0;</p><p><b> }</b></p><p><b> }</b></p><p&
105、gt;<b> if(K4==0)</b></p><p><b> { </b></p><p> delay(20);</p><p><b> if(K4==0)</b></p><p><b> {</b></p><
106、p> while(K4==0);</p><p><b> switch(x)</b></p><p><b> {</b></p><p> case 0:break;</p><p> case 1:h--;if(h==255)h=23;bianhuan1();break;<
107、;/p><p> case 2:m--;if(m==255)m=59;bianhuan1();break;</p><p> case 3:set_h--;if(set_h==255)set_h=23;set_time();break;</p><p> case 4:set_m--;if(set_m==255)set_m=59;set_time();break;
108、</p><p> case 5:day--;m_choose();set_day();break;</p><p> case 6:month--;if(month==0)month=12;set_day();break;</p><p> case 7:year--;bianhuan();break;</p><p><b&g
109、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p> void delay(uchar t) //延時0.1毫秒</p><p>
110、;<b> { </b></p><p><b> uchar i; </b></p><p><b> do </b></p><p><b> { </b></p><p> for(i=0;i<23;i++) </p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機作息時間控制器課程設計
- 單片機課程設計---單片機節(jié)日彩燈控制器
- 單片機原理及應用課程設計--- 時間控制器設計
- 單片機課間作息時間控制器課程設計
- 單片機課程設計:彩燈控制器設計
- 單片機課程設計---基于單片機控制的時鐘控制器
- 單片機課程設計--步進電機控制器
- 單片機課程設計---基于單片機的定時控制器設計
- 時鐘控制器單片機課程設計報告
- 單片機課程設計——基于單片機的步進電機控制器設計
- 單片機課程設計--步進電機控制器設計
- 單片機課程設計-- 彩燈控制器的設計
- 單片機課程設計---水溫控制器設計
- 彩燈控制器的設計 單片機課程設計
- 單片機課程設計--水溫控制器設計
- 單片機課程設計--溫度控制器的設計
- 單片機課程設計--節(jié)日彩燈控制器設計
- 單片機課程設計---用單片機設計節(jié)日彩燈控制器
- 單片機課程設計——基于單片機的步進電機控制器設計
- 彩燈控制器的設計 單片機課程設計
評論
0/150
提交評論