蘇州科技學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)可編程作息時(shí)間控制器程序的設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)
蘇州科技學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)可編程作息時(shí)間控制器程序的設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)
蘇州科技學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)可編程作息時(shí)間控制器程序的設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)
蘇州科技學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)可編程作息時(shí)間控制器程序的設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)
蘇州科技學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)可編程作息時(shí)間控制器程序的設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

/XX科技學(xué)院天平學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告作息時(shí)間控制器設(shè)計(jì)姓名:王亞明學(xué)號(hào):0930117114專(zhuān)業(yè)班級(jí):電氣0921指導(dǎo)老師:徐樹(shù)梅2012年目錄1概述31.1課程設(shè)計(jì)的目的和意義31.2單片機(jī)課程設(shè)計(jì)的要求31.3作息時(shí)間控制器的設(shè)計(jì)要求32系統(tǒng)總體方案及硬件設(shè)計(jì)32.1系統(tǒng)總體設(shè)計(jì)32.2系統(tǒng)各個(gè)部分的電路設(shè)計(jì)43軟件的設(shè)計(jì)63.1概述63.2主模塊的設(shè)計(jì)63.3顯示模塊設(shè)計(jì)73.4時(shí)間設(shè)定模塊設(shè)計(jì)73.5聲光顯示功能的實(shí)現(xiàn)84Proteus軟件仿真84.1仿真結(jié)果84.2性能及誤差分析95課程設(shè)計(jì)體會(huì)10參考文獻(xiàn)10附1程序源代碼10附2原理圖15第一部分概述1.1課程設(shè)計(jì)的目的和意義:綜合利用所學(xué)單片機(jī)知識(shí)完成一個(gè)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)并仿真、由硬件實(shí)現(xiàn),從而加深對(duì)單片機(jī)軟硬知識(shí)的理解,獲得初步的應(yīng)用經(jīng)驗(yàn),為走出校門(mén)從事單片機(jī)應(yīng)用的相關(guān)工作打下良好基礎(chǔ)。1.2單片機(jī)課程設(shè)計(jì)的要求:1、進(jìn)一步熟悉和掌握單片機(jī)的內(nèi)部結(jié)構(gòu)和工作原理,了解單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的基本方法和步驟;2、掌握單片機(jī)仿真軟件Proteus的使用方法;3、掌握鍵盤(pán)和顯示器在的單片機(jī)控制系統(tǒng)中的應(yīng)用。4、掌握撰寫(xiě)課程設(shè)計(jì)報(bào)告的方法。1.3作息時(shí)間控制器的設(shè)計(jì)要求:1、設(shè)計(jì)制作一個(gè)單片機(jī)數(shù)字鐘及控制電路。2、使用LED顯示器來(lái)顯示現(xiàn)在的時(shí)間。顯示格式為"時(shí)-分-秒",由LED閃動(dòng)作為秒計(jì)數(shù)表示。3、可以設(shè)定作息時(shí)間,并進(jìn)行到時(shí)提示。4、能夠根據(jù)預(yù)先設(shè)定好的作息時(shí)間表自動(dòng)啟??刂齐娐?完成對(duì)外部設(shè)備的實(shí)時(shí)控制。5、可以設(shè)置現(xiàn)在的時(shí)間及顯示定時(shí)設(shè)置時(shí)間。第二部分系統(tǒng)總體方案及硬件設(shè)計(jì)2.1系統(tǒng)總體設(shè)計(jì):1、方案設(shè)計(jì):用單片機(jī)來(lái)設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,那么就降低了硬件電路的復(fù)雜性,而且其成本也有所降低,2、單片機(jī)的選型:AT89C52是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫(xiě)或用編程器編程。另外,AT89C51的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128B的RAM、32條I/O口線、2個(gè)16位定時(shí)計(jì)數(shù)器、5個(gè)中斷源、一個(gè)全雙工串行口等?;谝陨蟽?yōu)點(diǎn),本設(shè)計(jì)采用AT89C52單片機(jī)。3、總體電路的設(shè)計(jì):時(shí)間作息控制的主體電路應(yīng)包括秒信號(hào)發(fā)生器、時(shí)間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。按鍵功能說(shuō)明:K1設(shè)置時(shí)間;K2加一;K3,減一;K4;聲光控制開(kāi)關(guān)。時(shí)間作息控制的系統(tǒng)框圖1如下所示:ATAT89C52復(fù)位、時(shí)鐘等電路按鈕電路LED顯示電路聲光指示電路電源供電電路圖12.2系統(tǒng)各個(gè)部分的電路設(shè)計(jì):1、系統(tǒng)復(fù)位電路的設(shè)計(jì):?jiǎn)纹瑱C(jī)系統(tǒng)一般應(yīng)有手動(dòng)或上電復(fù)位電路。復(fù)位電路的實(shí)現(xiàn)通常有兩種方式:1RC復(fù)位電路;2專(zhuān)用μP監(jiān)控電路。前者實(shí)現(xiàn)簡(jiǎn)單,成本低,但復(fù)位可靠性相對(duì)較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對(duì)于復(fù)位要求高、并對(duì)電源電壓進(jìn)行監(jiān)視的場(chǎng)合,大多采用這種方式。復(fù)位電路主要用來(lái)在單片機(jī)的程序進(jìn)入死循環(huán)后,能使單片機(jī)重新從頭執(zhí)行程序而不會(huì)無(wú)休止的執(zhí)行程序。本設(shè)計(jì)采用了上電按鈕電平復(fù)位電路,如圖2圖22、系統(tǒng)時(shí)鐘電路設(shè)計(jì):對(duì)于時(shí)間要求不是很高的系統(tǒng),只要按圖進(jìn)行設(shè)計(jì)就能使系統(tǒng)可靠起振并穩(wěn)定運(yùn)行。但由于實(shí)際工作過(guò)程中的C1、C2電容起著系統(tǒng)時(shí)鐘頻率微調(diào)和穩(wěn)定的作用,因此,在實(shí)際應(yīng)用中一定要注意正確選擇參數(shù)〔30±10PF,并保證對(duì)稱(chēng)性〔盡可能匹配,這兩個(gè)電容元件對(duì)鬧鐘的走時(shí)誤差有很大關(guān)系,并且選用正規(guī)的瓷片或云母電容,如果可能的話,溫度系數(shù)要盡可能低。另外,瓷片電容的實(shí)際焊接距離不應(yīng)該離單片機(jī)太遠(yuǎn)否則誤差較大。具體的時(shí)鐘電路如圖三所示:圖33、聲光指示電路設(shè)計(jì):聲光指示可以有聲或光兩種形式。本系統(tǒng)采用聲音和光混合指示。關(guān)鍵元件是蜂鳴器和發(fā)光二極管。鬧鐘電路是用比較器來(lái)比較計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài),如果計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個(gè)脈沖信號(hào),再和一個(gè)高頻信號(hào)混合,送到放大電路驅(qū)動(dòng)揚(yáng)聲器發(fā)聲,從而實(shí)現(xiàn)定時(shí)鬧響的功能。其電路設(shè)計(jì)參見(jiàn)系統(tǒng)原理圖。4、顯示電路的設(shè)計(jì):本設(shè)計(jì)采用了4位數(shù)碼管顯示電路。在4位LED顯示時(shí),為了簡(jiǎn)化電路,降低成本,采用動(dòng)態(tài)顯示的方式,4個(gè)LED顯示器共用一個(gè)8位的I/O,4位LED數(shù)碼管的位選線分別由相應(yīng)的P2.2~P2.5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個(gè)8位的I/O口控制,即P0口。由于采用了四位數(shù)碼管,所以數(shù)碼管顯示"時(shí)"、"分";秒的顯示選用了一個(gè)發(fā)光二極管,兩滅周期為兩秒,即點(diǎn)亮和熄滅時(shí)間均為一秒。到達(dá)定時(shí)時(shí)間時(shí),由計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號(hào),然后去觸發(fā)蜂鳴器實(shí)現(xiàn)鬧鈴。校時(shí)電路是用來(lái)對(duì)"時(shí)"、"分"、"秒"顯示數(shù)字進(jìn)行校對(duì)調(diào)整的。具體的電路設(shè)計(jì)如圖4示:圖45、定時(shí)和調(diào)時(shí)電路的設(shè)計(jì):本設(shè)計(jì)因?yàn)槭褂玫降逆I數(shù)目比較少,不宜采用矩陣式鍵盤(pán),采用了功能直觀簡(jiǎn)潔方便的獨(dú)立式鍵盤(pán),而且考慮了鍵盤(pán)的消抖問(wèn)題。比較容易理解。每個(gè)鍵的具體功能如下:K1設(shè)置時(shí)間;K2加一;K3,減一;K4;聲光控制開(kāi)關(guān)。按鍵定義如圖5所示:圖5第三部分軟件的設(shè)計(jì)3.1概述:軟件設(shè)計(jì)的重點(diǎn)在于秒脈沖信號(hào)的產(chǎn)生、顯示的實(shí)現(xiàn)、以及按鍵的處理等方面?;谲浖拿朊}沖信號(hào)通常有延時(shí)法和定時(shí)中斷法。延時(shí)法一般采用查詢方式,在延時(shí)子程序前后必然需要查詢和處理的程序,導(dǎo)致誤差的產(chǎn)生,因此其秒脈沖的精度不高;中斷法的原理是,利用單片機(jī)內(nèi)部的定時(shí)器溢出中斷來(lái)實(shí)現(xiàn)。本設(shè)計(jì)使定時(shí)器每50ms中斷1次,則20次的周期為1s。這種實(shí)現(xiàn)法的特點(diǎn)是精度高,秒脈沖的發(fā)生和其他處理可以并行進(jìn)行。本系統(tǒng)中所使用的晶振頻率為12MHZ。3.2主模塊的設(shè)計(jì):主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計(jì)一般有"自上而下"和"自下而上"兩種方式,"自上而下"法的核心就是主框架的構(gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。本系統(tǒng)的主模塊的程序框圖如下圖6所示:?jiǎn)纹瑱C(jī)系統(tǒng)初始化單片機(jī)系統(tǒng)初始化定時(shí)初始化中斷初始化串口初始化顯示待機(jī)指示符設(shè)定鬧鈴時(shí)間判設(shè)置鬧鈴時(shí)間否?顯示刷新啟動(dòng)走時(shí)有關(guān)變量初始化刷新顯示判時(shí)或分變化否?秒指示判1秒到否?鬧鈴判是否到鬧鈴時(shí)間?延時(shí)YYYY圖63.3顯示模塊設(shè)計(jì):顯示是由顯示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,用LED顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。程序流程如圖7所示。圖七3.4時(shí)間設(shè)定模塊設(shè)計(jì):時(shí)間設(shè)定模塊的設(shè)計(jì)要點(diǎn)是按鍵的去抖處理與多種狀態(tài)公用一個(gè)鍵的處理問(wèn)題。即只涉及4個(gè)鍵完成了4位時(shí)間參數(shù)的設(shè)定。軟件法去抖動(dòng)的實(shí)質(zhì)是用延時(shí),即檢測(cè)到某一鍵狀態(tài)變化后延時(shí)一段時(shí)間,再檢測(cè)該按鍵的狀態(tài)是否還保持著,如是則作為按鍵處理,否則,視為抖動(dòng),不予理睬。去抖中的延時(shí)時(shí)間一般參考資料多描述為10ms左右,實(shí)際應(yīng)用中,應(yīng)大于20ms,否則,會(huì)導(dǎo)致按一次作多次處理,影響程序正常執(zhí)行。 按鍵消抖流程圖原理如圖8所示:圖83.5聲光功能的實(shí)現(xiàn):鬧鈴功能的實(shí)現(xiàn)涉及到兩個(gè)方面:鬧鈴時(shí)間設(shè)定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時(shí)間設(shè)定模塊的設(shè)計(jì)可參照時(shí)間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計(jì)問(wèn)題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時(shí)要進(jìn)行鬧鈴。在每次循環(huán)掃描的過(guò)程中,判斷現(xiàn)在的時(shí)間和定時(shí)的時(shí)間是否一致。一致的話,鬧鈴電路根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號(hào),然后加上一個(gè)高頻或低頻信號(hào)送到放大電路驅(qū)動(dòng)蜂鳴器發(fā)聲實(shí)現(xiàn)報(bào)時(shí)。時(shí)間調(diào)節(jié)電路根據(jù)不同狀態(tài)下的具體按鍵意義將相對(duì)應(yīng)的計(jì)數(shù)器加以改變,并通過(guò)數(shù)碼管顯示出來(lái)。第四部分Proteus軟件仿真本次課程設(shè)計(jì)所采用的程序調(diào)試軟件為wave6000集成調(diào)試軟件,所采用的仿真軟件為proteusprofessional軟件。本設(shè)計(jì)在Proteus軟件上進(jìn)行了仿真,實(shí)現(xiàn)了設(shè)計(jì)所要求的具體內(nèi)容。4.1仿真結(jié)果:1、啟動(dòng)初值〔如圖9圖92、聲光控制報(bào)警〔如圖10圖103、定時(shí)響鈴功能〔如圖11圖114.2性能及誤差分析:該作息時(shí)間控制器有四個(gè)按鍵:K1,K2,K3和K4。初始加電時(shí)數(shù)碼管顯示時(shí)鐘計(jì)數(shù)初值并運(yùn)行。按K1鍵進(jìn)行校時(shí),可以分別按K2和K3鍵進(jìn)行對(duì)時(shí)及分進(jìn)行單獨(dú)校時(shí),使其校正到標(biāo)準(zhǔn)時(shí)間;并按K4鍵退出。時(shí)鐘正常顯示運(yùn)行狀態(tài)時(shí),按K2鍵顯示閃爍并進(jìn)行定時(shí)時(shí)間設(shè)置,按K1鍵和K3進(jìn)行分和時(shí)的定時(shí)時(shí)間設(shè)定;并按K4鍵退出。該電路顯示的誤差主要由晶振自身的誤差所造成,晶振的誤差約為0.0001~0.000001。在軟件的編程過(guò)程中所產(chǎn)生的誤差比較小,另外在中斷的過(guò)程中,只會(huì)在第一次計(jì)時(shí)時(shí)產(chǎn)生時(shí)間的偏移,而它所產(chǎn)生累計(jì)誤差很小,可以忽略。綜合以上分析,本次設(shè)計(jì)時(shí)鐘誤差較小,能得到比較理想結(jié)果,性能穩(wěn)定。第五部分課程設(shè)計(jì)體會(huì)在整個(gè)設(shè)計(jì)過(guò)程中,充分發(fā)揮人的主觀能動(dòng)性,自主學(xué)習(xí),學(xué)到了許多沒(méi)學(xué)到的知識(shí)。這次畢業(yè)論文的制作過(guò)程是我的一次再學(xué)習(xí),再提高的過(guò)程。在論文中我充分地運(yùn)用了大學(xué)期間所學(xué)到的知識(shí)。我從資料的收集中,掌握了很多單片機(jī)、LED顯示屏的知識(shí),讓我對(duì)我所學(xué)過(guò)的知識(shí)有所鞏固和提高,并且讓我對(duì)當(dāng)今單片機(jī)、LED顯示屏的最新發(fā)展技術(shù)有所了解。在整個(gè)過(guò)程中,我學(xué)到了新知識(shí),增長(zhǎng)了見(jiàn)識(shí)。在今后的日子里,我仍然要不斷地充實(shí)自己,爭(zhēng)取在所學(xué)領(lǐng)域有所作為。腳踏實(shí)地,認(rèn)真嚴(yán)謹(jǐn),實(shí)事求是的學(xué)習(xí)態(tài)度,不怕困難、堅(jiān)持不懈、吃苦耐勞的精神是我在這次設(shè)計(jì)中最大的收益。我想這是一次意志的磨練,是對(duì)我實(shí)際能力的一次提升,也會(huì)對(duì)我未來(lái)的學(xué)習(xí)和工作有很大的幫助。在此次設(shè)計(jì)中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我們的耐心,做什么事都在有耐心。此次論文中學(xué)了很多很多東西,這是最重要的。我認(rèn)為這個(gè)收獲應(yīng)該說(shuō)是相當(dāng)大的。一開(kāi)始我們從參考書(shū)上找來(lái)了課題,但是畢竟是參考書(shū),做到后來(lái)發(fā)現(xiàn)很多程序都是不完整的,這讓我們傷透了腦筋??粗鴦e的小組都弄得有模有樣了,可是我們連一個(gè)課題都還沒(méi)有定好。好不容易又找到了課題,可是結(jié)果還是很不盡人意。程序接線什么的都弄好了,調(diào)試也沒(méi)有問(wèn)題,可是就是無(wú)法達(dá)到預(yù)期想要的結(jié)果。參考書(shū)畢竟只是一個(gè)參考,設(shè)計(jì)這種東西最后還是要靠自己動(dòng)腦筋。然后我們大家一起齊心協(xié)力,從平時(shí)做的實(shí)驗(yàn)﹑老師上課的舉例﹑書(shū)本上的知識(shí)和其他同學(xué)的幫助下終于完成了。應(yīng)該說(shuō)這是通過(guò)我們小組成員的共同努力和動(dòng)腦完成的,雖然內(nèi)容并不是很復(fù)雜,但是我們覺(jué)得設(shè)計(jì)的過(guò)程相當(dāng)重要,學(xué)到了很多,收獲了很多。我覺(jué)得課程設(shè)計(jì)反映的是一個(gè)從理論到實(shí)際應(yīng)用的過(guò)程,但是更遠(yuǎn)一點(diǎn)可以聯(lián)系到以后畢業(yè)之后從學(xué)校轉(zhuǎn)到踏上社會(huì)的一個(gè)過(guò)程。小組人員的配合﹑相處,以及自身的動(dòng)腦和努力,都是以后工作中需要的。參考文獻(xiàn):[1]余發(fā)山,王福忠編著.單片機(jī)原理及應(yīng)用技術(shù).XX:中國(guó)礦業(yè)大學(xué)出版社,2008.[2]陳奧初,竇振中等編著.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)踐.北京:北京航空航天大學(xué)出版社,1991.[3]陳偉人編著.MCS-51系列單片機(jī)實(shí)用子程序集錦[M].北京:清華大學(xué)出版社.1993.附錄附錄一:程序源代碼#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitE=P3^4;sbitRS=P3^5;sbitkey1=P2^4;sbitkey2=P2^5;sbitkey3=P2^6;sbitkey4=P2^7;sbitmbkey=P2^2;sbitbeep=P2^3;ucharcount,shi=1,fen=59,miao=58,key1num,flag,flag1,xqnum;//flag鬧鐘ucharkey2num,jinzhi=3,naonum=1,ms,mbmiao,mbfen,mbkeynum,num; //ms秒表進(jìn)數(shù),mbmiao.mbfen秒表的秒.分 key2num是key5的計(jì)數(shù)jinzhi進(jìn)制轉(zhuǎn)換參數(shù)uintnian=2009,yue=11,ri=19,count2;ucharcodetable[]="2012-6-06WED";ucharcodetable1[]="24d01:59:58ON";ucharcodetable2[]="MON,TUE,WED,THU,FRI,SAT,SUN";ucharcodetable3[]="am,pm,24d";ucharcodetable4[]="ON,OFF";ucharcodetable5[]="00:00:00mb";voiddelay<uintz>{ uintx,y; for<x=z;x>0;x--> for<y=110;y>0;y-->;}voiddi<uintx>//蜂鳴器發(fā)聲函數(shù){ beep=0; delay<x>; beep=1;}voidwrite_com<ucharcom>//給寫(xiě)液晶命令{ RS=0; P0=com; delay<5>; E=1; delay<5>; E=0;}voidwrite_date<uchardate>//給液晶寫(xiě)數(shù)據(jù){ RS=1; P0=date; delay<5>; E=1; delay<5>; E=0;}voidinit<>//初始化函數(shù){ ucharnum; E=0; write_com<0x38>; write_com<0x0c>; write_com<0x06>; write_com<0x01>;//清零 write_com<0x80>; for<num=0;num<16;num++> { write_date<table[num]>; delay<20>; } write_com<0x80+0x40>; //第二行 for<num=0;num<16;num++> { write_date<table1[num]>; delay<20>; } TMOD=0X01; TH0=<65536-50000>/256; TL0=<65536-50000>%256; EA=1; ET0=1; TR0=1; TH1=<65536-10000>/256; TL1=<65536-10000>%256; ET1=0; TR1=0; }voidwrite_nian<ucharadd,uintdate>//年顯示函數(shù){ucharqian,bai,shi,ge; qian=date/1000; bai=<date-1000*qian>/100; shi=<date-qian*1000-bai*100>/10; ge=date%10; write_com<0x80+add>; write_date<0x30+qian>; write_date<0x30+bai>; write_date<0x30+shi>; write_date<0x30+ge>;}voidwrite_yue<ucharadd,uchardate> //月顯示函數(shù){ucharshi,ge; shi=date/10; ge=date%10; write_com<0x80+add>; write_date<0x30+shi>; write_date<0x30+ge>;}voidwrite_ri<ucharadd,uchardate> //日顯示函數(shù){ucharshi,ge; shi=date/10; ge=date%10; write_com<0x80+add>; write_date<0x30+shi>; write_date<0x30+ge>;}voidwrite_sfm<ucharadd,uchardate> //秒顯示函數(shù){ ucharshi,ge; shi=date/10; ge=date%10; write_com<0x80+0x40+add>; write_date<0x30+shi>; write_date<0x30+ge>;}voidwrite_week<ucharweek> //星期顯示函數(shù){ ucharweek_num; week_num=week; switch<week_num> { case1: write_com<0x80+13>; write_date<table2[0]>; write_date<table2[1]>; write_date<table2[2]>; write_com<0x80+13>; break; case2: write_com<0x80+13>; write_date<table2[4]>; write_date<table2[5]>; write_date<table2[6]>; write_com<0x80+13>; break; case3: write_com<0x80+13>; write_date<table2[8]>; write_date<table2[9]>; write_date<table2[10]>; write_com<0x80+13>; break; case4: write_com<0x80+13>; write_date<table2[12]>; write_date<table2[13]>; write_date<table2[14]>; write_com<0x80+13>; break; case5: write_com<0x80+13>; write_date<table2[16]>; write_date<table2[17]>; write_date<table2[18]>; write_com<0x80+13>; break; case6: write_com<0x80+13>; write_date<table2[20]>; write_date<table2[21]>; write_date<table2[22]>; write_com<0x80+13>; break; case7: write_com<0x80+13>; write_date<table2[24]>; write_date<table2[25]>; write_date<table2[26]>; write_com<0x80+13>; break; }}voidwrite_jinzhi<ucharjinzhi> //jinzhi進(jìn)制顯示函數(shù){ ucharjznum; jznum=jinzhi; switch<jznum> { case1: write_com<0x80+0x40+0>; write_date<table3[0]>; write_date<table3[1]>; write_date<table3[2]>; write_com<0x80+0x40+0>; break; case2: write_com<0x80+0x40+0>; write_date<table3[4]>; write_date<table3[5]>; write_date<table3[6]>; write_com<0x80+0x40+0>; break; case3: write_com<0x80+0x40+0>; write_date<table3[8]>; write_date<table3[9]>; write_date<table3[10]>; write_com<0x80+0x40+0>; break; }}voidwrite_nao<ucharnao> //鬧鐘開(kāi)關(guān)顯示函數(shù){ ucharnaonum; naonum=nao; switch<naonum> { case1: write_com<0x80+0x40+13>; write_date<table4[0]>; write_date<table4[1]>; write_date<table4[2]>; write_com<0x80+0x40+13>; break; case2: write_com<0x80+0x40+13>; write_date<table4[4]>; write_date<table4[5]>; write_date<table4[6]>; write_com<0x80+0x40+13>; break; }}voidkeyboard<>//按鍵掃描函數(shù){ if<flag==1> { //鬧鐘暫停函數(shù) if<key4==0> { delay<5>; if<key4==0> { while<!key4>; beep=1; flag=0; } } } if<key1==0> { delay<5>;//消斗 if<key1==0> { key1num++; while<!key1>; // di<1>; if<key1num==1> { TR0=0; write_com<0x80+0x40+10>; write_com<0x0f>;//光標(biāo)閃爍 } if<key1num==2> { write_com<0x80+0x40+7>; } if<key1num==3> { write_com<0x80+0x40+4>; } if<key1num==4> { write_com<0x80+0x40>; } if<key1num==5> { write_com<0x80+2>; } if<key1num==6> { write_com<0x80+7>; } if<key1num==7> { write_com<0x80+10>; } if<key1num==8> { write_com<0x80+13>; } if<key1num==9> { write_com<0x80+0x40+13>; } if<key1num==10> { key1num=0; write_com<0x0c>;//光標(biāo)停止閃爍 TR0=1;//打開(kāi)定時(shí)器 } } } if<key1num!=0> { if<key2==0> { delay<5>; if<key2==0> { while<!key2>;//等待松手 di<100>; if<key1num==1> { miao++; if<miao==60> miao=0; write_sfm<10,miao>; write_com<0x80+0x40+10>; } if<key1num==2> { fen++; if<fen==60> fen=0; write_sfm<7,fen>; write_com<0x80+0x40+7>; } if<key1num==3> { shi++; if<jinzhi==3> { if<shi==24> shi=0; } else { if<shi>12> shi=shi-12; } write_sfm<4,shi>; write_com<0x80+0x40+4>; } if<key1num==4> { jinzhi++; if<jinzhi==4> jinzhi=1; write_jinzhi<jinzhi>; } if<key1num==5> { nian++; write_nian<2,nian>; write_com<0x80+2>; } if<key1num==6> { yue++; if<yue==13> yue=1; write_yue<7,yue>; write_com<0x80+7>; } if<key1num==7> { ri++; if<ri==32> ri=1; write_ri<10,ri>; write_com<0x80+10>; } if<key1num==8> { xqnum++; if<xqnum==8> xqnum=1; write_week<xqnum>; } if<key1num==9> { naonum++; if<naonum==3> naonum=1; write_nao<naonum>; } if<key1num==10> { key1num=0; write_com<0x0c>;//光標(biāo)停止閃爍 TR0=1;//打開(kāi)定時(shí)器 } } } if<key3==0> { delay<5>; if<key3==0> { while<!key3>; di<100>; if<key1num==1> { miao--; if<miao==-1> miao=59; write_sfm<10,miao>; write_com<0x80+0x40+10>; } if<key1num==2> { fen--; if<fen==-1> fen=59; write_sfm<7,fen>; write_com<0x80+0x40+7>; } if<key1num==3> { shi--;/* if<shi==-1> shi=23;*/ if<jinzhi==3> { if<shi==-1> shi=23; } else { if<shi<1> shi=shi+12; } write_sfm<4,shi>; write_com<0x80+0x40+4>; } if<key1num==4> { jinzhi--; if<jinzhi==0> jinzhi=3; write_jinzhi<jinzhi>; } if<key1num==5> { nian--; write_nian<2,nian>; write_com<0x80+4>; } if<key1num==6> { yue--; if<yue==0> yue=12; write_yue<7,yue>; write_com<0x80+7>; } if<key1num==7> { ri--; if<ri==0> ri=31; write_ri<10,ri>; write_com<0x80+13>;/* if<key1num==8> { xqnum--; if<xqnum==0> xqnum=7; write_week<xqnum>; write_com<0x80+10>; } if<key1num==9> { naonum--; if<naonum==0> naonum=2; write_nao<naonum>; write_com<0x80+0X40+13>; }*/ } } }}}voidmbiao<> //秒表函數(shù){if<mbkey==0>{ mbkeynum++; while<!mbkey>; if<mbkeynum==1> //關(guān)閉時(shí)鐘定時(shí)器 { TR0=0; ET0=0; write_com<0x80+0x40>; for<num=0;num<16;num++> write_date<table5[num]>; ms=0; mbmiao=0; mbfen=0; TR1=0; ET1=0; } if<mbkeynum==2> //打開(kāi)秒表定時(shí)器關(guān)閉時(shí)鐘定時(shí)器 { TR1=1; ET1=1; TR0=0; ET0=0; } if<mbkeynum==3> //關(guān)閉秒表定時(shí)器 { TR1=0; ET1=0; TR0=0; ET0=0; } if<mbkeynum==4> //顯示時(shí)鐘狀態(tài)打開(kāi)時(shí)鐘定時(shí)器 { TR0=1; ET0=1; TR1=0; ET1=0; write_sfm<10,miao>; write_sfm<7,fen>; write_sfm<4,shi>; write_jinzhi<jinzhi>; write_com<0x80+0x

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論