版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 第1章 概述2</b></p><p> 1.1 設(shè)計(jì)要求2</p><p> 1.2 設(shè)計(jì)目的2</p><p> 1.3 設(shè)計(jì)意義2</p><p> 第2章 系統(tǒng)總體方案選擇與說(shuō)
2、明3</p><p> 第3章 硬件電路設(shè)計(jì)4</p><p> 3.1 按鍵控制模塊4</p><p> 3.2 時(shí)間顯示模塊5</p><p> 3.3 打鈴模塊6</p><p> 第4章 應(yīng)用軟件設(shè)計(jì)8</p><p> 4.1系統(tǒng)軟件設(shè)計(jì)思想8</p
3、><p> 4.2 系統(tǒng)主程序8</p><p> 4.3 中斷子程序9</p><p> 4.4 按鍵掃描子程序11</p><p> 第5章 系統(tǒng)仿真調(diào)試12</p><p> 5.1 軟件簡(jiǎn)介12</p><p> 5.2軟件仿真12</p>&l
4、t;p> 第6章 硬件調(diào)試與結(jié)果分析15</p><p><b> 結(jié)束語(yǔ)17</b></p><p><b> 致謝18</b></p><p><b> 參考文獻(xiàn)19</b></p><p> 附錄A 系統(tǒng)硬件電路原理圖20</p>
5、<p> 附錄B 程序清單21</p><p><b> 評(píng)分表29</b></p><p><b> 第1章 概述</b></p><p><b> 1.1 設(shè)計(jì)要求</b></p><p> 本設(shè)計(jì)要求設(shè)計(jì)學(xué)校作息時(shí)間控制器,其設(shè)計(jì)實(shí)現(xiàn)的功能主要
6、有:使用4位七段顯示器來(lái)顯示現(xiàn)在的時(shí)間,顯示格式為“時(shí)分”,由LED閃動(dòng)作為秒計(jì)數(shù)表示,到響應(yīng)時(shí)間打鈴,可冬夏季切換??梢栽O(shè)定作息時(shí)間,并進(jìn)行到時(shí)提示。能夠根據(jù)預(yù)先設(shè)定好的作息時(shí)間表自動(dòng)啟??刂齐娐?,完成對(duì)外部設(shè)備的實(shí)時(shí)控制。</p><p><b> 1.2 設(shè)計(jì)目的</b></p><p> 增強(qiáng)對(duì)單片機(jī)的認(rèn)識(shí),與理解,提高時(shí)間能力與水平。學(xué)會(huì)使用proteu
7、s仿真軟件,充分把所學(xué)電路、模數(shù)電理論與實(shí)踐結(jié)合,了解和掌握單片機(jī)設(shè)計(jì)軟件與硬件設(shè)計(jì)結(jié)合過(guò)程、方法和實(shí)現(xiàn),以及掌握單片機(jī)的內(nèi)部模塊的應(yīng)用。</p><p><b> 1.3 設(shè)計(jì)意義</b></p><p> 用單片機(jī)及c語(yǔ)言編程模擬學(xué)校作息時(shí)間,到時(shí)打鈴,以及冬季夏季手動(dòng)切換打鈴時(shí)間。</p><p> 第2章 系統(tǒng)總體方案選擇與說(shuō)明
8、</p><p> 由按鍵控制模塊控制單片機(jī)最小系統(tǒng)的時(shí)間、月份、年以及打鈴時(shí)間,在有單片機(jī)控制數(shù)碼管顯示以及蜂鳴器。本次設(shè)計(jì)實(shí)現(xiàn)的功能主要有:使用4位七段顯示器來(lái)顯示現(xiàn)在的時(shí)間,顯示格式為“時(shí)分”,由LED小數(shù)點(diǎn)閃動(dòng)作為秒計(jì)數(shù)表示??梢栽O(shè)定作息時(shí)間,并進(jìn)行到時(shí)提示。能夠根據(jù)預(yù)先設(shè)定好的作息時(shí)間表自動(dòng)啟??刂齐娐?,完成對(duì)外部設(shè)備的實(shí)時(shí)控制。由按鍵輸入控制設(shè)置年月日以及當(dāng)前時(shí)間、并可設(shè)置鬧鐘定時(shí),時(shí)間到由蜂鳴器發(fā)
9、出響聲。</p><p><b> 圖2-1</b></p><p> 第3章 硬件電路設(shè)計(jì)</p><p> 3.1 按鍵控制模塊</p><p> 按鍵控制模塊主要有由五個(gè)按鍵組成:K1、K2、K3、K4、K5。分別接P1.3-P1.7口。</p><p> K1的功能是模式切換鍵;
10、K2的作用是加一;K3的作用是鬧鐘使能;K4的作用是減一;K5的作用是冬夏季切換。</p><p><b> 圖3-1</b></p><p> 當(dāng)需要設(shè)定時(shí)間或是校正時(shí)間,即可按下模式切換鍵來(lái)進(jìn)行。</p><p> 校正時(shí)間:按第一次K1鍵,進(jìn)入小時(shí)校正狀態(tài),通過(guò)按K2、K4鍵進(jìn)行小時(shí)校正,按一下K2鍵則加一,按一下K3鍵則減一。&l
11、t;/p><p> 按第二次K1鍵,進(jìn)入分校正狀態(tài),通過(guò)按K2、K4鍵進(jìn)行分鐘校正。</p><p> 按第三次K1鍵,進(jìn)入小時(shí)設(shè)定狀態(tài),此時(shí)若不需要設(shè)置則不操作。</p><p> 按第四次K1鍵,進(jìn)入分鐘設(shè)定狀態(tài),若此時(shí)不需要設(shè)置則不操作。</p><p> 按第五次K1鍵進(jìn)入月份校正狀態(tài),通過(guò)按K2、K4鍵進(jìn)行月份校正。</p
12、><p> 按第六次K1鍵,進(jìn)入日校正狀態(tài),通過(guò)按K2、K4鍵進(jìn)行日校正。</p><p> 按下第七次K1鍵進(jìn)入年份校正狀態(tài),通過(guò)按K2、K4鍵來(lái)進(jìn)行年份校正。</p><p> 校正完畢后,再按一次K1鍵,則退出時(shí)間校正狀態(tài),并顯示當(dāng)前校正后的準(zhǔn)確時(shí)間。</p><p> 設(shè)定時(shí)間:按第一次K1鍵進(jìn)入小時(shí)校正狀態(tài),此時(shí)若不需要設(shè)置,則
13、不操作;以此類推。</p><p> 第三次按下K1鍵,進(jìn)入小時(shí)設(shè)定狀態(tài),通過(guò)按K2、K4鍵進(jìn)行小時(shí)設(shè)定。</p><p> 按下第四次K1鍵,進(jìn)入分鐘設(shè)定狀態(tài),通過(guò)按K2、K4鍵進(jìn)行分鐘設(shè)定。</p><p> 設(shè)定完畢后,按一下K3鍵(鬧鐘使能)。</p><p> 繼續(xù)按K1鍵,若不需要設(shè)置,則不操作,以此類推,到按最后一次K1
14、鍵則退出時(shí)間設(shè)定狀態(tài)并顯示當(dāng)前時(shí)間,當(dāng)時(shí)間與我們?cè)O(shè)定的時(shí)間一致時(shí),通過(guò)鬧鐘電路響聲提示。</p><p> 若要關(guān)閉鬧鐘,此時(shí)再按一次K3鍵即可停止響聲。</p><p> 若k5=1,執(zhí)行冬季打鈴時(shí)間。</p><p> 若k5=0,則執(zhí)行夏季打鈴時(shí)間。</p><p> 3.2 時(shí)間顯示模塊</p><p>
15、; 本設(shè)計(jì)采用四位七段共陽(yáng)數(shù)碼管做顯示模塊,其中前兩位做時(shí)、月份顯示,其余兩位作為分、日顯示,選取前兩位的一個(gè)dp點(diǎn)作為秒點(diǎn)。單片機(jī)P0.0-P0.7 分別接七段數(shù)碼管的abcedfg和dp引腳。P2.0-P2.3分別作為四個(gè)七段數(shù)碼管的片選端。</p><p><b> 圖3-2</b></p><p> 時(shí)間顯示模塊主要由四位數(shù)碼管來(lái)顯示,配合按鍵控制模塊的
16、校正與設(shè)定時(shí)間,相應(yīng)的顯示。時(shí)間正常顯示時(shí),LED每閃動(dòng)60次,分鐘自動(dòng)加一;每六十分鐘小時(shí)自動(dòng)加一;每24小時(shí)天自動(dòng)加一。</p><p><b> 3.3 打鈴模塊</b></p><p> 單片機(jī)p3.7口控制蜂鳴器,若數(shù)碼管顯示時(shí)間與設(shè)定的學(xué)校作息時(shí)間相同,蜂鳴器模擬打鈴一分鐘。</p><p><b> 圖3-3<
17、;/b></p><p> 打鐘模塊快的主要功能:鬧鈴。當(dāng)設(shè)定時(shí)間與當(dāng)前時(shí)間一致時(shí),則鬧鐘自動(dòng)鬧鈴進(jìn)行提示,一分鐘后,自動(dòng)退出響鈴狀態(tài),若按K3鍵,鬧鐘退出響鈴狀態(tài)。</p><p> 第4章 應(yīng)用軟件設(shè)計(jì)</p><p> 4.1系統(tǒng)軟件設(shè)計(jì)思想</p><p> 本系軟件設(shè)計(jì)中,利用單片機(jī)定時(shí)器設(shè)計(jì)時(shí)間計(jì)時(shí)處理,采用單片
18、機(jī)內(nèi)部的T0定時(shí)器溢出中斷來(lái)實(shí)現(xiàn),工作在T1方式下,定時(shí)50微妙,則連續(xù)中斷20次即為一秒,得到了我們所需時(shí)間的最小單位。</p><p> 該設(shè)計(jì)用C51編寫程序,由于匯編語(yǔ)言的移植性比較差,而C語(yǔ)言則比較靈活。許多子函數(shù)都可以直接移植過(guò)去。</p><p> 在程序中除了有主函數(shù)外還包含許多子函數(shù),如延時(shí)函數(shù)、按鍵掃描函數(shù)、初始化函數(shù)、時(shí)間顯示函數(shù)、設(shè)定鬧鐘顯示函數(shù)、設(shè)定日期顯示函
19、數(shù)、設(shè)定年份顯示函數(shù)、月份選擇函數(shù)、年份顯示輔助函數(shù)、冬夏季作息時(shí)間切換函數(shù)。</p><p> 4.2 系統(tǒng)主程序</p><p> 在主控程序循環(huán)中主要工作為掃描是否有按鍵,若有按健則做相應(yīng)的功能處理,同時(shí)也掃描顯示器顯示時(shí)間數(shù)據(jù),并檢查所設(shè)置的時(shí)間是否到了。時(shí)間計(jì)時(shí)處理程序是等過(guò)了1s后,則更新時(shí)間數(shù)據(jù),將最新的時(shí)、分的數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)并顯示在七段顯示器上。</p>
20、;<p> 圖3-2主程序流程圖</p><p> 4.3 中斷子程序</p><p> 中斷子程序的主要功能:提供時(shí)間基準(zhǔn)。</p><p> 當(dāng)連續(xù)中斷20次時(shí),即為一秒,此時(shí)秒加一。</p><p> 當(dāng)秒值為60時(shí),分鐘加一,同時(shí)秒清零;當(dāng)分鐘值為60時(shí),小時(shí)加一,同時(shí)分鐘值清零。</p>&l
21、t;p> 當(dāng)小時(shí)為24時(shí),天值加一,同時(shí)小時(shí)清零。</p><p> 由于每月天數(shù)不定,1、3、5、7、8、10、12月為31天,當(dāng)計(jì)數(shù)到此類月份時(shí),天值為32時(shí),月值加一,同時(shí)天值為1;4、6、9、11月為30天,當(dāng)計(jì)數(shù)到此類月份時(shí),天值為31時(shí),月值加一,同時(shí)天值為1。</p><p> 如果是閏年,則2月為29天,當(dāng)計(jì)數(shù)到此類月份時(shí),天值為30時(shí),月值加一,同時(shí)天值為一。
22、</p><p> 如果不是閏年,則2月為28天,當(dāng)計(jì)數(shù)此類月份時(shí),天值為29時(shí),月值加一,同時(shí)天值為一。</p><p> 當(dāng)月值為13時(shí),則年值加一,同時(shí)月值為一。</p><p> 圖3-3定時(shí)器中斷函數(shù)</p><p> 4.4 按鍵掃描子程序</p><p> 按鍵掃描子程序是程序計(jì)中相當(dāng)重要的一
23、部分。按鍵掃描子程序的功能是:掃描是否有按鍵按下,若有鍵按下,則執(zhí)行相應(yīng)功能。</p><p> 設(shè)計(jì)中包含了防抖動(dòng)程序,延時(shí)20ms,判斷是否為抖動(dòng),若不是抖動(dòng)則執(zhí)行相應(yīng)程序功能。</p><p> 第5章 系統(tǒng)仿真調(diào)試</p><p><b> 5.1 軟件簡(jiǎn)介</b></p><p> 本次課程設(shè)計(jì)仿真主
24、要采用proteus。</p><p> Proteus與其它單片機(jī)仿真軟件不同的是,它不僅能仿真單片機(jī)CPU的工作情況,也能仿真單片機(jī)外圍電路或沒(méi)有單片機(jī)參與的其它電路的工作情況。從某種意義上講,是彌補(bǔ)了實(shí)驗(yàn)和工程應(yīng)用間脫節(jié)的矛盾和現(xiàn)象。</p><p><b> 5.2軟件仿真</b></p><p> 啟動(dòng)Proteus進(jìn)行仿真時(shí)顯
25、示的初始化時(shí)間。初始界面仿真圖如圖:</p><p><b> 圖5-1</b></p><p> 時(shí)間校正:當(dāng)我們需要正確的顯示時(shí)間即可進(jìn)行時(shí)間校正,按一下K1即進(jìn)入小時(shí)校正狀態(tài),通過(guò)K2加一或K4減一來(lái)進(jìn)行小時(shí)校正,再按一次K1鍵即可進(jìn)行分鐘校正,校正原理同小時(shí)校正相同。其仿真圖如圖5-2所示。</p><p><b> 圖
26、5-2</b></p><p> 日期校正:當(dāng)我們需要與當(dāng)前日期保持一致時(shí),則可以使用日期校正功能,連續(xù)按動(dòng)五次K1鍵,則進(jìn)入月份校正狀態(tài),通過(guò)K2加一鍵或K4減一鍵進(jìn)行校正月份,再按一次K1鍵,則可進(jìn)行日期校正,校正原理同月份校正原理相同。其仿真圖如圖5-3。</p><p><b> 圖5-3</b></p><p> 年
27、份校正:當(dāng)我們需要保持年份與當(dāng)前年份一一致時(shí),則可以進(jìn)行年份校正。連續(xù)按動(dòng)七次K1鍵,即進(jìn)入年份校正狀態(tài),通過(guò)K2加一鍵或K4減一鍵進(jìn)行校正。其仿真圖如圖5-4所示。</p><p><b> 圖5-4</b></p><p> 到時(shí)打鈴:當(dāng)單片機(jī)顯示時(shí)間與設(shè)定學(xué)校打鈴時(shí)間相同時(shí),蜂鳴器響。如圖5-5所示。</p><p><b>
28、; 圖5-5</b></p><p> 第6章 硬件調(diào)試與結(jié)果分析</p><p><b> 結(jié)束語(yǔ)</b></p><p> 此次課程設(shè)計(jì)為期兩個(gè)星期,圍繞著利用最小單片機(jī)系統(tǒng)設(shè)計(jì)模擬學(xué)校作息時(shí)間打鈴系統(tǒng),實(shí)現(xiàn)了時(shí)間計(jì)時(shí),時(shí)間調(diào)整,時(shí)間暫停,到點(diǎn)響鈴和冬夏季切換等功能。使用4位七段顯示器來(lái)顯示現(xiàn)在的時(shí)間,顯示格式為“時(shí)分
29、”,由LED小數(shù)點(diǎn)閃動(dòng)作為秒計(jì)數(shù)表示。可以設(shè)定作息時(shí)間,并進(jìn)行到時(shí)提示。能夠根據(jù)預(yù)先設(shè)定好的作息時(shí)間表自動(dòng)啟??刂齐娐?,完成對(duì)外部設(shè)備的實(shí)時(shí)控制。由按鍵輸入控制設(shè)置年、月、日以及當(dāng)前時(shí)間并可設(shè)置鬧鐘定時(shí),顯示時(shí)間與設(shè)計(jì)作息時(shí)間相同時(shí)由蜂鳴器發(fā)出響聲。</p><p> 設(shè)計(jì)之初,由于忽略了數(shù)碼管共陰與共陽(yáng)的問(wèn)題,導(dǎo)致在硬件調(diào)試的時(shí)候未能成功,修改后,導(dǎo)致秒點(diǎn)不能閃爍,一直未能找出原因,最后發(fā)現(xiàn)是忽略了與、或之間
30、沒(méi)轉(zhuǎn)換。在設(shè)計(jì)冬夏季切換時(shí),對(duì)主函數(shù)初始化問(wèn)題理解不透徹,致使一開始不能切換。在設(shè)計(jì)打鈴時(shí)間表時(shí),還可以采用查表法,此方法相比可以節(jié)約程序空間。</p><p><b> 致謝</b></p><p> 通過(guò)兩周的課程設(shè)計(jì),利用單片機(jī)把復(fù)位電路,顯示電路,電源電路,繼電器電路,電鈴電路連接起來(lái),在通過(guò)單片機(jī)的編程實(shí)現(xiàn)設(shè)計(jì)要求。單片機(jī)作息時(shí)間控制系統(tǒng)是利用定時(shí)器計(jì)時(shí)
31、處理來(lái)做秒計(jì)數(shù),當(dāng)所設(shè)置的時(shí)間到了,則發(fā)出一陣聲響,啟動(dòng)繼電器,由繼電器可以控制收音機(jī)開啟或者關(guān)閉。時(shí),分,秒數(shù)據(jù)是存在變量?jī)?nèi)并寫入七段顯示管的緩沖區(qū)內(nèi),由顯示管掃描中定時(shí)時(shí)掃描而顯示出時(shí)間。我由最初的不知所措到后來(lái)的獲益良多,覺得這兩周過(guò)得很充實(shí),也積累了一些設(shè)計(jì)的寶貴經(jīng)驗(yàn)。這些離不開我的團(tuán)隊(duì)對(duì)我的幫助,更離不開王老師的悉心指導(dǎo)。</p><p><b> 參考文獻(xiàn)</b></p&
32、gt;<p> 附錄A 系統(tǒng)硬件電路原理圖</p><p><b> 附錄B 程序清單</b></p><p> #include<REG52.H></p><p> #define uint unsigned int</p><p> #define uchar unsigned c
33、har</p><p> uchar code a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p> sbit K1=P1^4;</p><p> sbit K2=P1^5;</p><p> sbit K3=P1^6;</p><p
34、> sbit K4=P1^7;</p><p> sbit sd=P1^0;</p><p> sbit BEEP=P3^7;</p><p> uchar m=59,h=7,sec=30,cnt=0,x,y,qian,bai,shi,ge;</p><p> uchar set_h=8;</p><p&g
35、t; uchar set_m=6;</p><p> uchar month=6;</p><p> uchar day=12;</p><p> uchar th0_f;</p><p> uchar tl0_f;</p><p> uint year=2013; </p><p>
36、; void delay(uchar t);</p><p> void scankey(void);</p><p> void init(void); </p><p> void display(void);</p><p> void set_time(void);</p><p> void
37、set_day(void);</p><p> void m_choose(void); </p><p> void bianhuan(void);</p><p> void bianhuan1(void);</p><p> void time0(void) interrupt 1</p><p>&l
38、t;b> {</b></p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> cnt++;</b></p><p> if(y==1&&(set_h==h&
39、amp;&set_m==m))sd=0;</p><p> else sd=1;</p><p> if(y==1&&(h==8&&m==0))sd=0;</p><p> else sd=1;</p><p> if(cnt==20)</p><p><b>
40、 {</b></p><p><b> sec++;</b></p><p><b> cnt=0;</b></p><p> if(sec==60)</p><p><b> {</b></p><p><b> se
41、c=0;</b></p><p><b> m++;</b></p><p><b> if(m==60)</b></p><p><b> {</b></p><p><b> m=0;</b></p><p>
42、;<b> h++;</b></p><p><b> if(h==24)</b></p><p><b> {</b></p><p><b> h=0;</b></p><p><b> day++;</b></p
43、><p> switch(month)</p><p><b> {</b></p><p> case 1:if(day==32){month++;day=1;}break;</p><p> case2:if(year%4==0)</p><p> {if(day==30){month+
44、+;day=1;}}</p><p> else{if(day==29){month++;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>
45、 case 5:if(day==32){month++;day=1;}break;</p><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
46、=1;}break;</p><p> case 9:if(day==31){month++;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&g
47、t; case 12:if(day==32){month++;day=1;}break;</p><p><b> }</b></p><p> if(month==13)</p><p><b> {</b></p><p><b> month=1;</b><
48、;/p><p><b> year++;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>
49、;</p><p> if(x==0)bianhuan1(); </p><p><b> }</b></p><p><b> }</b></p><p> timer1() interrupt 3 </p><p><b> { </b&
50、gt;</p><p> BEEP=~BEEP; </p><p><b> }</b></p><p> void main(void)</p><p><b> {</b></p><p><b> init();</b></p>
51、;<p><b> while(1)</b></p><p><b> {</b></p><p> if(k5==0) </p><p><b> vary1();</b></p><p><b> if(k5==1)</b>&l
52、t;/p><p><b> vary2();</b></p><p><b> }</b></p><p><b> }</b></p><p> void vary1()</p><p><b> {</b></p&g
53、t;<p> display(); </p><p> scankey();</p><p> if(y==1&&(set_h==h&&set_m==m))BEEP=0;</p><p> else BEEP=1;</p><p> if(y==1&&(h==8&
54、;&m==0))BEEP=0;</p><p> else BEEP=1;</p><p> if(y==1&&(h==8&&m==45))BEEP=0;</p><p> else BEEP=1;</p><p><b> }</b></p><p&g
55、t; void vary2()</p><p><b> { </b></p><p><b> {</b></p><p> display(); </p><p> scankey();</p><p> if(y==1&&(set_h==h
56、&&set_m==m))BEEP=0;</p><p> else BEEP=1;</p><p> if(y==1&&(h==8&&m==2))BEEP=0;</p><p> else BEEP=1;</p><p> if(y==1&&(h==8&&
57、m==47))BEEP=0;</p><p> else BEEP=1;</p><p><b> }</b></p><p><b> }</b></p><p> void init(void)</p><p><b> {</b><
58、/p><p><b> BEEP=0;</b></p><p> TMOD=0x11;</p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> ET0=1;&l
59、t;/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></p><p>
60、<b> }</b></p><p> void display(void)</p><p><b> {</b></p><p><b> P2=0xfe;</b></p><p> P0=a[qian];</p><p> if(x%2=
61、=1&&cnt>=10)</p><p><b> P0|=0xff;</b></p><p> delay(20);</p><p><b> P2=0xfd;</b></p><p> P0=a[bai];</p><p> if(x%2=
62、=1&&cnt>=10)</p><p><b> P0|=0xff;</b></p><p> else if(x==0&&cnt>=10)</p><p><b> P0&=0x7f;</b></p><p> delay(20);&l
63、t;/p><p><b> P2=0xfb;</b></p><p> P0=a[shi];</p><p> if(((x%2==0&&x!=0)||x==7)&&cnt>=10)</p><p><b> P0|=0x7f;</b></p>
64、<p> delay(20);</p><p><b> P2=0xf7;</b></p><p><b> P0=a[ge];</b></p><p> if(((x%2==0&&x!=0)||x==7)&&cnt>=10)</p><p>
65、;<b> P0|=0x7f;</b></p><p> delay(20);</p><p><b> }</b></p><p> void m_choose(void)</p><p><b> {</b></p><p> switc
66、h(month)</p><p><b> {</b></p><p> case 1:if(day==32){month++;day=1;}break;</p><p> case2:if(year%4==0){if(day==30){month++;day=1;}}</p><p> else{if(day=
67、=29){month++;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;<
68、/p><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(da
69、y==31){month++;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;
70、</p><p><b> }</b></p><p><b> }</b></p><p> void set_time(void)</p><p><b> {</b></p><p> qian=set_h/10;</p>
71、<p> bai=set_h%10;</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&
72、gt;</p><p> 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 bianhu
73、an(void)</p><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
74、><b> }</b></p><p> void bianhuan1(void)</p><p><b> {</b></p><p> qian=h/10;</p><p><b> bai=h%10;</b></p><p><
75、;b> shi=m/10;</b></p><p><b> ge=m%10;</b></p><p><b> }</b></p><p> void scankey(void)</p><p><b> {</b></p><
76、p><b> if(K1==0)</b></p><p><b> {</b></p><p> delay(20);</p><p><b> if(K1==0)</b></p><p><b> {</b></p><
77、;p> while(K1==0);</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&
78、gt; else if(x==8){x=0;bianhuan1();}</p><p><b> }</b></p><p><b> }</b></p><p><b> if(K2==0)</b></p><p><b> { </b&g
79、t;</p><p> delay(20);</p><p><b> if(K2==0)</b></p><p><b> {</b></p><p> while(K2==0);</p><p><b> switch(x)</b><
80、/p><p><b> {</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><
81、;p> case 3:set_h++;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>
82、; case 6:month++;if(month==13)month=1;set_day();break;</p><p> case 7:year++;bianhuan();break;</p><p><b> }</b></p><p><b> }</b></p><p><
83、b> }</b></p><p><b> if(K3==0)</b></p><p><b> { </b></p><p> delay(20);</p><p><b> if(K3==0)</b></p><p>&l
84、t;b> {</b></p><p> while(K3==0);</p><p><b> y++;</b></p><p> if(y==2)y=0;</p><p><b> }</b></p><p><b> }</
85、b></p><p><b> if(K4==0)</b></p><p><b> { </b></p><p> delay(20);</p><p><b> if(K4==0)</b></p><p><b> {<
86、;/b></p><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=2
87、3;bianhuan1();break;</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
88、_m=59;set_time();break;</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;</
89、p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p> void delay(uchar t)</p&
90、gt;<p><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++)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)---單片機(jī)打鈴系統(tǒng)
- 單片機(jī)自動(dòng)打鈴課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)之自動(dòng)打鈴系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)---時(shí)鐘系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字時(shí)鐘
- 課程設(shè)計(jì)-基于單片機(jī)的自動(dòng)打鈴系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)-基于單片機(jī)的自動(dòng)打鈴系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字時(shí)鐘.doc
- 單片機(jī)課程設(shè)計(jì)--數(shù)字時(shí)鐘
- 單片機(jī)簡(jiǎn)易時(shí)鐘課程設(shè)計(jì)
- 單片機(jī)數(shù)字時(shí)鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)(數(shù)字時(shí)鐘)
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
- 課程設(shè)計(jì)-單片機(jī)基于單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)模擬電子時(shí)鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論