畢業(yè)設(shè)計(jì)作息時(shí)間系統(tǒng)設(shè)計(jì)樣本_第1頁(yè)
畢業(yè)設(shè)計(jì)作息時(shí)間系統(tǒng)設(shè)計(jì)樣本_第2頁(yè)
畢業(yè)設(shè)計(jì)作息時(shí)間系統(tǒng)設(shè)計(jì)樣本_第3頁(yè)
畢業(yè)設(shè)計(jì)作息時(shí)間系統(tǒng)設(shè)計(jì)樣本_第4頁(yè)
畢業(yè)設(shè)計(jì)作息時(shí)間系統(tǒng)設(shè)計(jì)樣本_第5頁(yè)
已閱讀5頁(yè),還剩90頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

作息時(shí)間系統(tǒng)設(shè)計(jì)摘要本次設(shè)計(jì)作息時(shí)間系統(tǒng)除具備基本時(shí)鐘功能外,還可以實(shí)時(shí)顯示年、月、日信息,并且可以自動(dòng)辨認(rèn)閏年、閏月及每月天數(shù)。此外還可以依照學(xué)校、工廠等單位作息時(shí)間表準(zhǔn)時(shí)打鈴、播放音樂、廣播體操和其她節(jié)目等。該系統(tǒng)設(shè)有3個(gè)按鈕,可以隨時(shí)調(diào)節(jié)當(dāng)前時(shí)間,以保證時(shí)間與原則時(shí)間相吻合,且采用DS1302高性能時(shí)鐘芯片,從而保證了時(shí)鐘顯示精度和可靠性。整個(gè)系統(tǒng)采用市電通過電源適配器供電,由于DS1302時(shí)鐘芯片有備用電池供電功能,因此當(dāng)市電停電時(shí),不但整個(gè)控制系統(tǒng)所有數(shù)據(jù)不會(huì)丟失,并且可以照常運(yùn)營(yíng),這樣再次上電后就不用再調(diào)節(jié)時(shí)間了。為了使該系統(tǒng)體積盡量最小,我在設(shè)計(jì)時(shí)采用了AT89C2051單片機(jī),該單片機(jī)可直接驅(qū)動(dòng)LED數(shù)碼顯示屏??紤]到整個(gè)系統(tǒng)顯示位數(shù)較多(14位),為了保證顯示亮度,顯示某些采用了靜態(tài)顯示。尚有,為了便于使用者操作,整個(gè)系統(tǒng)采用了某些人性化設(shè)計(jì),例如批示燈添加等??v觀整個(gè)系統(tǒng),構(gòu)造簡(jiǎn)樸、體積小、可靠性高、操作簡(jiǎn)樸、擴(kuò)展性強(qiáng),并且價(jià)格低廉,非常適合學(xué)校、工廠和機(jī)關(guān)等單位使用。核心詞:作息時(shí)間單片機(jī)時(shí)鐘芯片繼電器AbstractThesystemofworkandresttimewhatIhavedesignedcandisplayareal-timeofyear,monthandday,andmayautomaticallyidentifyaleapyear,aleapmonthandthenumberofthedayspermonthinadditiontoabasicclockfunction.Thissystemmayhitthebellontimeaccordingtotheschools’orfactories’dailyschedule,playmusicandbroadcastinggymnasticsandotherprogramsandsoon.Thesystemhasthreebuttonssothatyoucanadjustthecurrenttimeatanymomenttoensurethatthecurrenttimecoincideswiththestandardtime,inadditiontousingthehigh-performanceclockchipDS1302,whichhasensuredaclockdisplayofprecisionandhighreliability.Theentiresystemusesthecityelectricitytosupplypowerthroughthepowersourceadapter.AstheDS1302clockchiphasthepowersupplyfunctionofbackupbattery,alldatasoftheentirecontrolsystemwillnotbelosedandthesystemrunasusualwhenthecityelectricitywascutsothatthesystemwillnotneedtheadjustmentoftimewhenthecityelectricitycomesnexttime.Inordertocausethissystemvolumetobeassmallestaspossible,AT89C2051SCMwasusedinthedesignwhichcandirectlydrivetheLEDdigitaldisplay.Moreoverconsideringthedisplaydigitsoftheoverallsystemaremany(14digits)andinordertoguaranteethebrightnessofshow,Ihasadoptedthestaticdemonstrationintheshowpart.Also,inordertofacilitateusers,theentiresystemhasusedsomeuser-friendlydesign,suchastheadditionofindicatinglightsetc.Thewholesystemhassimplestructure,smallsize,highreliability,simpleoperation,highexpansibilityandlowpricessothatitisidealforschools,factoriesanddepartments.Keywords:WorkandResttimeSCMClockchipRelay目錄第1章緒論 11.1課題研究目及意義 11.2國(guó)內(nèi)外研究現(xiàn)狀 11.3論文研究?jī)?nèi)容及創(chuàng)新點(diǎn) 21.3.1重要內(nèi)容 21.3.2創(chuàng)新點(diǎn) 2第2章核心芯片簡(jiǎn)介 32.1AT89C2051簡(jiǎn)介 32.1.1AT89C2051芯片引腳及特點(diǎn) 32.1.2AT89C2051重要性能參數(shù) 52.2DS1302簡(jiǎn)介 62.2.1DS1302引腳功能與內(nèi)部構(gòu)造 72.2.2DS1302控制字 82.2.3DS1302數(shù)據(jù)輸入輸出(I/O) 82.2.4DS1302內(nèi)部寄存器 82.3DS1302實(shí)時(shí)顯示時(shí)間軟硬件 112.3.1DS1302與CPU連接 112.3.2DS1302與單片機(jī)接口軟件設(shè)計(jì)及功能應(yīng)用舉例 12第3章控制任務(wù)與控制原理 193.1控制任務(wù) 193.2控制原理概述 19第4章硬件電路設(shè)計(jì) 214.1硬件構(gòu)成及操作闡明 214.1.1硬件構(gòu)成框圖 214.1.2設(shè)計(jì)電路原理圖 214.1.3操作闡明 224.2單片機(jī)與繼電器接口及工作原理 224.3單片機(jī)與顯示屏接口及工作原理 234.3.1LED顯示屏基本構(gòu)造和原理 234.3.2LED顯示 244.4電源電路設(shè)計(jì) 26第5章軟件設(shè)計(jì) 285.1繪制流程圖 285.1.1主程序設(shè)計(jì) 285.1.2控制子程序設(shè)計(jì) 295.1.3顯示子程序設(shè)計(jì) 305.1.4鍵盤掃描子程序設(shè)計(jì) 315.2作息時(shí)間系統(tǒng)軟件設(shè)計(jì)辦法。 335.2.1主程序軟件設(shè)計(jì) 335.2.2子程序軟件設(shè)計(jì) 34第6章結(jié)論與展望 426.1結(jié)論 426.2展望 42參照文獻(xiàn) 44致謝 45附錄 46附錄A作息時(shí)間控制系統(tǒng)程序清單 46附錄B英文資料 54附錄C中文翻譯 61附錄D硬件電路圖 67第1章緒論1.1課題研究目及意義學(xué)校以及某些企事業(yè)單位普通使用老式電鈴聲作為上下課、上下班作息時(shí)間信號(hào)。且不說人工打鈴繁瑣,鈴聲單調(diào)和乏味,光是那突然驟響刺耳鈴聲就經(jīng)常激起周邊居民不滿。近年來,中華人民共和國(guó)各地從大學(xué)到小學(xué)乃至幼兒園,從都市到農(nóng)村,從冬到夏,那特有鈴聲響遍了大江南北,成了學(xué)校特色和“專利”。正是這種鈴聲讓某些學(xué)生產(chǎn)生了厭煩情緒,甚至某些學(xué)生把鈴聲當(dāng)作是考試代名詞,以至于一聽到這種聲音就產(chǎn)生緊張、恐驚心理。有教誨專家建議,學(xué)校教誨理應(yīng)彰顯“人”個(gè)性,并從“小”處做起,推動(dòng)素質(zhì)教誨,于細(xì)微之處加強(qiáng)對(duì)學(xué)生人文關(guān)懷,起到潤(rùn)物無聲育人目。為此,我開發(fā)了“作息時(shí)間單片機(jī)控制系統(tǒng)”。以音樂代替鈴聲,管理學(xué)校尋常作息時(shí)間。播放自起床、早操、上下課直到晚熄燈等信號(hào)音樂,可做到自動(dòng)開機(jī)、自動(dòng)播放、自動(dòng)關(guān)機(jī)無人值守全自動(dòng)運(yùn)營(yíng),并且還可以控制電視、路燈、室內(nèi)照明等電氣設(shè)備。從此屏棄那老式鈴聲,代之以當(dāng)代化優(yōu)美、怡人環(huán)境音樂,讓學(xué)生在一次次鈴聲音樂中受到美熏陶,體驗(yàn)音樂魅力,形成愉悅心境。既激活學(xué)生藝術(shù)細(xì)胞,又達(dá)到優(yōu)化育人環(huán)境,陶冶學(xué)生情操效果。無形之中推動(dòng)了素質(zhì)教誨,營(yíng)造良好校園氛圍。1.2國(guó)內(nèi)外研究現(xiàn)狀現(xiàn)今,高精度計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因而走時(shí)精度高,穩(wěn)定性好,使用以便,不需要經(jīng)常調(diào)校。數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),LED顯示屏代替指針顯示時(shí)間,減小了計(jì)時(shí)誤差。這種電子鐘具備顯示時(shí)、分、秒功能,還可以對(duì)時(shí)、分、秒進(jìn)行校對(duì),片選靈活性好。隨著科學(xué)技術(shù)迅速發(fā)展,電子時(shí)鐘正迅速取代紙質(zhì)日歷、年歷和普通機(jī)械電子時(shí)鐘。電子時(shí)鐘走時(shí)精確、功能多樣、外觀潮流、使用以便,深受消費(fèi)者青睞且其產(chǎn)品琳瑯滿目,但它們核心某些均有兩個(gè)共同點(diǎn),一是采用高性能時(shí)鐘芯片;二是大都采用單片機(jī)控制。當(dāng)前流行串行時(shí)鐘電路諸多,如DS1302、DS1307、PCF8485等。這些電路接口簡(jiǎn)樸、價(jià)格低廉、使用以便,被廣泛地采用。1.3論文研究?jī)?nèi)容及創(chuàng)新點(diǎn)1.3.1重要內(nèi)容該論文重要研究如何依照學(xué)校、工廠等單位作息時(shí)間表而實(shí)現(xiàn)準(zhǔn)時(shí)打鈴,播放音樂和廣播體操以及其她節(jié)目等。1.3.2創(chuàng)新點(diǎn)以往作息時(shí)間控制系統(tǒng)只具備基本時(shí)鐘(顯示當(dāng)前時(shí)間小時(shí)及分鐘)功能,并且采用數(shù)字電路實(shí)現(xiàn),致使電路非常復(fù)雜,計(jì)時(shí)精度不高,且不能隨季節(jié)變化以及天氣變化而自動(dòng)調(diào)節(jié)控制,功能簡(jiǎn)樸。而我設(shè)計(jì)系統(tǒng)除了具備基本時(shí)鐘功能之外,還可以顯示年、月、日、星期等信息,并且采用單片機(jī)控制并配合時(shí)鐘芯片,既保證了系統(tǒng)構(gòu)造簡(jiǎn)樸,又保證了控制時(shí)間精度和可靠性,且通過外擴(kuò)電路還可以實(shí)現(xiàn)各種功能。一年到頭無需人工調(diào)節(jié),即可實(shí)現(xiàn)準(zhǔn)時(shí)打鈴、播放廣播、點(diǎn)亮路燈等控制。價(jià)格便宜,非常適合學(xué)校、工廠、機(jī)關(guān)等單位使用。第2章核心芯片簡(jiǎn)介2.1AT89C2051簡(jiǎn)介AT89C2051是美國(guó)ATMEL公司生產(chǎn)一種低電壓、高性能CMOS8位單片機(jī),片內(nèi)含2kbytes可重復(fù)擦寫只讀程序存儲(chǔ)器(PEROM)和128bytes隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容原則MCS-51指令系統(tǒng),片內(nèi)置通用8位中央解決器和Flash存儲(chǔ)單元,功能強(qiáng)大。2.1.1AT89C2051芯片引腳及特點(diǎn)圖2-1AT89C2051芯片引腳圖AT89C2051芯片引腳如圖2-1所示。引腳功能闡明:(1)Vcc:電源電壓(2)GND:地(3)P1口:P1口是一組8位雙向I/O口,P1.2~P1.7提供內(nèi)部上拉電阻,P1.0和P1.1內(nèi)部無上拉電阻,重要是考慮它們分別是內(nèi)部精密比較器同相輸入端(AIN0)和反相輸入端(AIN1),如果需要應(yīng)在外部接上拉電阻。P1口輸出緩沖器可吸取20mA電流并可直接驅(qū)動(dòng)LED。當(dāng)P1口引腳寫入“1”時(shí)可作輸入端,當(dāng)引腳P1.2~P1.7用作輸入并被外部拉低時(shí),它們將因內(nèi)部上拉電阻而輸出電流。P1口還在Flash閃速編程及程序校驗(yàn)時(shí)接受代碼數(shù)據(jù)。(4)P3口:P3口P3.0~P3.5、P3.7是帶有內(nèi)部上拉電阻7個(gè)雙向I/O口。P3.6沒有引出,它作為一種通用I/O口但不可訪問,但可作為固定輸入片內(nèi)比較器輸出信號(hào),P3口緩沖器可吸取20mA電流。當(dāng)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時(shí),被外部拉低P3口將用上拉電阻輸出電流。P3口還用于實(shí)現(xiàn)AT89C2051特殊功能,如表2-1所示:表2-1P3口功能特性口引腳功能特性P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外中斷0)P3.3/INT1(外中斷1)P3.4T0(定期/計(jì)數(shù)器0外部輸入)P3.5T1(定期.計(jì)數(shù)器1外部輸入)P3口還接受某些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)控制信號(hào)。(5)RST:復(fù)位輸入。RST引腳一旦變成兩個(gè)機(jī)器周期以上高電平,所有I/O都將復(fù)位到“1”(高電平)(6)XTAL1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器輸入端。(7)XTAL2:振蕩器反相放大器輸出端。(8)振蕩器特性:XTAL1、XTAL2為片內(nèi)振蕩器反相放大器輸入和輸出端,如圖2-2所示??刹捎檬⒕w或陶瓷振蕩器構(gòu)成時(shí)鐘振蕩器,如需從外部輸入時(shí)鐘信號(hào)驅(qū)動(dòng)AT89C2051,時(shí)鐘信號(hào)從XTAL1輸入,XTAL2應(yīng)懸空。由于輸入到內(nèi)部電路是通過一種2分頻觸發(fā)器,因此輸入外部時(shí)鐘信號(hào)無需特殊規(guī)定,但它必要符合電平最大和最小值及時(shí)序規(guī)范[1]。圖2-2AT89C2051內(nèi)部振蕩電路與外部時(shí)鐘驅(qū)動(dòng)電路2.1.2AT89C2051重要性能參數(shù)重要性能參數(shù):(1)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容(2)2k字節(jié)可重擦寫閃速存儲(chǔ)器(3)1000次擦寫周期(4)2.7~6V工作電壓范疇(5)全靜態(tài)操作:0Hz~24MHz(6)兩級(jí)加密程序存儲(chǔ)器(7)128*8字節(jié)內(nèi)部RAM(8)15個(gè)可編程I/O口線(9)兩個(gè)16位定期/計(jì)數(shù)器(10)6個(gè)中斷源(11)可編程串行UART通道(12)可直接驅(qū)動(dòng)LED輸出端口(13)內(nèi)置一種模仿比較器(14)低功耗空閑和掉電模式功能特性概述:AT89C2051提供如下原則功能:2k字節(jié)Flash閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,15個(gè)I/O口線,兩個(gè)16位定期/計(jì)數(shù)器,一種5向量?jī)杉?jí)中斷構(gòu)造,一種全雙工串行通信口,內(nèi)置一種精密比較器、片內(nèi)振蕩器及時(shí)鐘電路。同步,AT89C2051可降至0Hz靜態(tài)邏輯操作,并支持兩種軟件可選節(jié)電工作模式:空閑方式停止CPU工作,但容許RAM、定期/計(jì)數(shù)器、串行通信口及中斷系統(tǒng)繼續(xù)工作;掉電方式保存RAM中內(nèi)容,但振蕩器停止工作并禁止其他所有部件工作直到下一種硬件復(fù)位[2]。2.2DS1302簡(jiǎn)介DS1302是美國(guó)DALLAS公司推出一種高性能、低功耗、帶RAM涓流充電時(shí)鐘芯片,內(nèi)部具有一種實(shí)時(shí)時(shí)鐘/日歷和一種31字節(jié)用于暫時(shí)性存儲(chǔ)數(shù)據(jù)靜態(tài)RAM寄存器,通過簡(jiǎn)樸SPI串行接口與單片機(jī)進(jìn)行同步通信。實(shí)時(shí)時(shí)鐘/日歷電路可提供秒、分、時(shí)、星期、日、月、年計(jì)時(shí)信息,具備閏年補(bǔ)償功能,即每月天數(shù)和閏年天數(shù)可自動(dòng)調(diào)節(jié),時(shí)鐘操作可通過AM/PM批示決定采用24或12小時(shí)格式。DS1302與單片機(jī)之間能簡(jiǎn)樸地采用SPI同步串行方式進(jìn)行通信,僅需用到三個(gè)口線:(1)RES(復(fù)位),(2)I/O(數(shù)據(jù)線),(3)SCLK(串行時(shí)鐘)。時(shí)鐘/RAM讀/寫數(shù)據(jù)以一種字節(jié)或可采用突發(fā)方式一次傳送多達(dá)31個(gè)字節(jié)時(shí)鐘信號(hào)或RAM數(shù)據(jù)字符組方式通信。DS1302工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率不大于1mW。DS1302是DS1202升級(jí)產(chǎn)品,與DS1202兼容,增長(zhǎng)了如下特性:雙電源管腳用于主電源和備份電源供應(yīng),Vcc1為可編程后備涓細(xì)電流充電電源,附加七個(gè)字節(jié)存儲(chǔ)器。它廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電儀器儀表等產(chǎn)品領(lǐng)域。下面將重要性能指標(biāo)作一綜合:(1)實(shí)時(shí)時(shí)鐘具備能計(jì)算21之前秒、分、時(shí)、星期、日、月、年能力,尚有閏年調(diào)節(jié)能力(2)31*8位暫存數(shù)據(jù)存儲(chǔ)RAM(3)串行I/O口方式使得管腳數(shù)量至少(4)寬范疇工作電壓2.0~5.5V(5)工作電流:在低壓2.0V時(shí),不大于300nA(6)讀/寫時(shí)鐘或RAM數(shù)據(jù)時(shí),有兩種傳送方式:?jiǎn)巫止?jié)傳送和多字節(jié)傳送(字符組方式)(7)8引腳DIP封裝或可選8腳SOIC封裝(依照表面裝配)(8)簡(jiǎn)樸串行SPI三線接口方式(9)與TTL兼容(Vcc=5V)(10)可選工業(yè)級(jí)溫度范疇-40oC~+85oC(11)與DS1202兼容(12)在DS1202基本上增長(zhǎng)特性:①對(duì)Vcc1有可選涓流充電能力②雙電源管腳用于主電源和備份電源供應(yīng)③備份電源管腳可由電池或大容量電容輸入④附加7字節(jié)暫存存儲(chǔ)器[3]2.2.1DS1302引腳功能與內(nèi)部構(gòu)造DS1302引腳排列如圖2-3所示,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉狀況下,也能保持時(shí)鐘持續(xù)運(yùn)營(yíng)。DS1302由Vcc1或Vcc2兩者中較大者供電。當(dāng)Vcc2不不大于Vcc1+0.2V時(shí),Vcc2給DS1302供電;當(dāng)Vcc2不大于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有數(shù)據(jù)傳送。RST輸入有兩種功能:一方面,RST接通控制邏輯,容許地址/命令序列送入移位寄存器;另一方面,RST提供終結(jié)單字節(jié)或多字節(jié)數(shù)據(jù)傳送手段。當(dāng)RST為高電平時(shí),所有數(shù)據(jù)傳送被初始化,容許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終結(jié)本次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)營(yíng)時(shí),在Vcc≥2.5V之前,RST必要保持低電平。只有在SCLK為低電平時(shí),才干將RST置為高電平。I/O為串行數(shù)據(jù)輸入/輸出端(雙向)。SCLK始終是輸入端。管腳描述如下所示:管腳描述(1)X1,X2 32.768KHz晶振引腳(2腳,3腳)(2)GND 地(4腳)(3)RST 復(fù)位引腳(5腳)(4)I/O 數(shù)據(jù)輸入/輸出引腳(6腳)(5)SCLK 串行時(shí)鐘(7腳)(6)Vcc1,Vcc2 電源供電引腳,Vcc1可接后備電池(8腳、1腳)(7)DS1302 串行時(shí)鐘芯片,8腳DIP(8)DS1302S 串行時(shí)鐘芯片,8腳SOIC(200mil)(9)DS1302Z 串行時(shí)鐘芯片,8腳SOIC(150mil)管腳配備圖2-3DS1302時(shí)鐘芯片引腳圖2.2.2DS1302控制字DS1302控制字如圖2-4所示。控制字節(jié)最高有效位(位7)必要是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中;位6如果為0,則表達(dá)存取日歷時(shí)鐘數(shù)據(jù),為1表達(dá)存取RAM數(shù)據(jù);位5至位1批示操作單元地址;最低有效位(位0)如為0表達(dá)要進(jìn)行寫操作,為1表達(dá)要進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。11RAMA4A3A/CK/K圖2-4DS1302控制字2.2.3DS1302數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后下一種SCLK時(shí)鐘上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位控制指令字后下一種SCLK脈沖下降沿讀出DS1302數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0到高位7。2.2.4DS1302內(nèi)部寄存器DS1302由控制寄存器和年、月、日、星期、時(shí)、分、秒工作寄存器等共12個(gè)寄存器構(gòu)成,其中有7個(gè)寄存器與日歷、時(shí)鐘有關(guān),存儲(chǔ)數(shù)據(jù)為BCD碼形式。其日歷、時(shí)間寄存器及其控制字見表2-2。表2-2日歷、時(shí)間寄存器及其控制字寄存器名稱命令字取值范疇各位內(nèi)容寫操作讀操作76543210秒寄存器80H81H00~59CH10SECSEC分寄存器82H83H00~59010MINMIN時(shí)寄存器84H85H01~12或00~2312/24010HRHRA/P日寄存器86H87H01~28、29、30、310010DATEDATE月寄存器88H89H01~1200010MMONTH周寄存器8AH88H01~0700000DAY年寄存器8CH8DH00~9910YEARYEAR各寄存器最后一位指明數(shù)據(jù)讀/寫方式:為“0”時(shí)是讀狀態(tài);為“1”時(shí)是寫狀態(tài)。各寄存器地址如圖2-5所示。圖2-5各寄存器地址CH:時(shí)鐘停止位標(biāo)志CH=0 振蕩器工作容許CH=1振蕩器停止WP:寫保護(hù)位WP=0寄存器數(shù)據(jù)可以寫入WP=1寄存器數(shù)據(jù)不能寫入TCS:涓流充電選取TCS=1010使能涓流充電TCS=其他禁止涓流充電寄存器2第7位:12/24小時(shí)bit7=1,12小時(shí)模式bit7=0,24小時(shí)模式寄存器2第5位:AM/PM定義AP=0上午模式AP=1下午模式DS:二極管選取位DS=01選取一種二極管DS=10選取兩個(gè)二極管DS=00或11,雖然TCS=1010,充電功能也被禁止此外,DS1302尚有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM有關(guān)寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外所有寄存器內(nèi)容。DS1302與RAM有關(guān)寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一種8位字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下RAM寄存器,此方式下可一次性讀寫所有RAM31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)[4]。2.3DS1302實(shí)時(shí)顯示時(shí)間軟硬件2.3.1DS1302與CPU連接DS1302與CPU連接僅需要三條線,即SCLK、I/O、RST。圖2-6示出DS1302與AT89C2051連接圖。Vcc2 Vcc1X1 SCLKX2 I/OGND /RST+5VP3.5P3.7RST3.6V18PF18PF32.768KHZVcc2 Vcc1X1 SCLKX2 I/OGND /RST+5VP3.5P3.7RST3.6V18PF18PF32.768KHZ圖2-6DS1302與CPU連接電路圖2.3.2DS1302與單片機(jī)接口軟件設(shè)計(jì)及功能應(yīng)用舉例單片機(jī)對(duì)時(shí)鐘讀/寫過程,實(shí)質(zhì)上就是對(duì)DS1302各個(gè)寄存器讀/寫過程。在數(shù)據(jù)傳送之前,一方面置/RST端為高,接著發(fā)送一種帶有地址和命令信息8位命令字到寄存器,命令字節(jié)擬定所尋寄存器是讀操作還是寫操作。在一種時(shí)鐘周期內(nèi),在SCLK上升沿時(shí)數(shù)據(jù)輸入有效,輸出則在SCLK下降沿有效。如果/RST復(fù)位端輸入為低電平,則所有數(shù)據(jù)傳送終結(jié),I/O腳處在高阻狀態(tài)。DS1302讀/寫數(shù)據(jù)時(shí)序如圖2-7所示。簡(jiǎn)樸闡明如下:SCLKSCLK/RSTR//W A0 A1 A2 AI/O0123456701234567命令字?jǐn)?shù)據(jù)圖2-7DS1302讀/寫數(shù)據(jù)時(shí)序圖(1)數(shù)據(jù)輸入:在輸入寫命令字節(jié)8個(gè)SCLK周期之后,數(shù)據(jù)字節(jié)在后8個(gè)SCLK周期上升沿輸入,從低位開始輸入數(shù)據(jù)。(2)數(shù)據(jù)輸出:在輸入讀命令字節(jié)8個(gè)SCLK周期之后,數(shù)據(jù)字節(jié)在后8個(gè)SCLK周期下降沿輸入。第一種數(shù)據(jù)位在寫命令字節(jié)最后一位第一種下降沿輸出。只要/RST保持為高,在持續(xù)SCLK周期內(nèi)就繼續(xù)輸出數(shù)據(jù),從低位開始輸出數(shù)據(jù)。下面一方面給出基本接口軟件,然后舉例闡明各種功能應(yīng)用[5]。(1)寫保護(hù)寄存器操作當(dāng)寫保護(hù)寄存器最高位為0時(shí),容許數(shù)據(jù)寫入寄存器,寫保護(hù)寄存器可以通過命令字節(jié)8EH、8FH來規(guī)定禁止寫入/讀出。寫保護(hù)位不能在多字節(jié)傳送模式下寫入。Write_Enable:MOVCommand,#8Eh ;命令字節(jié)為8EhMOVByteCnt,#1 ;單字節(jié)傳送模式MOVR0,#XmtDat ;數(shù)據(jù)地址覆給R0MOVXmtDat,#00h ;數(shù)據(jù)內(nèi)容為0(寫入容許)ACALLSend_Byte ;調(diào)用寫入數(shù)據(jù)子程序RET ;返回調(diào)用本子程序處當(dāng)寫保護(hù)寄存器最高位為1時(shí),禁止數(shù)據(jù)寫入寄存器,Write_Disable:MOVCommand,#8Eh ;命令字節(jié)為8EMOVByteCnt,#1 ;單字節(jié)傳送模式MOVR0,#XmtDat ;數(shù)據(jù)地址覆給R0MOVXmtDat,#80h ;數(shù)據(jù)內(nèi)容為80h(禁止寫入)ACALLSend_Byte ;調(diào)用寫入數(shù)據(jù)子程序RET ;返回調(diào)用本子程序處以上程序調(diào)用了基本數(shù)據(jù)發(fā)送(Send_Byte)模塊及某些內(nèi)存單元定義。其源程序清單在附錄中給出。下面程序亦使用了這個(gè)模塊。(2)時(shí)鐘停止位操作當(dāng)把秒寄存器第7位(時(shí)鐘停止位)設(shè)立為0時(shí),起動(dòng)時(shí)鐘開始。Osc_Enable:MOVCommand,#80h ;命令字節(jié)為80MOVByteCnt,#1 ;單字節(jié)傳送模式MOVR0,#XmtDat ;數(shù)據(jù)地址覆給R0MOVXmtDat,#00h ;數(shù)據(jù)內(nèi)容為0(振蕩器工作容許)ACALLSend_Byte ;調(diào)用寫入數(shù)據(jù)子程序RET;返回調(diào)用本子程序處當(dāng)把秒寄存器第7位(時(shí)鐘停止位)設(shè)立為1時(shí),時(shí)鐘振蕩器停止,DS1302進(jìn)入低功耗方式。Osc_Disable:MOVCommand,#80h ;命令字節(jié)為80MOVByteCnt,#1 ;單字節(jié)傳送模式MOVR0,#XmtDat ;數(shù)據(jù)地址覆給R0MOVXmtDat,#80h ;數(shù)據(jù)內(nèi)容為80h(振蕩器停止)ACALLSend_Byte ;調(diào)用寫入數(shù)據(jù)子程序RET;返回調(diào)用本子程序處(3)單字節(jié)傳送方式例如:寫入8時(shí)(12小時(shí)模式),程序設(shè)立如下:Write_Singlebyte:MOVCommand,#84h ;命令字節(jié)為84hMOVByteCnt,#1 ;單字節(jié)傳送模式MOVR0,#XmtDat ;數(shù)據(jù)地址覆給R0MOVXmtDat,#88h ;數(shù)據(jù)內(nèi)容為88hACALLSend_Byte ;調(diào)用寫入數(shù)據(jù)子程序RET;返回調(diào)用本子程序處(4)多字節(jié)傳送方式當(dāng)命令字節(jié)為BE或BF時(shí),DS1302工作在多字節(jié)傳送模式,8個(gè)時(shí)鐘/日歷寄存器從寄存器0地址開始持續(xù)讀寫從0位開始數(shù)據(jù)。當(dāng)命令字節(jié)為FE或FF時(shí),DS1302工作在多字節(jié)RAM傳送模式,31個(gè)RAM寄存器從0地址開始持續(xù)讀寫從0位開始數(shù)據(jù)。例如:寫入、6月21日、星期三、13時(shí)、59分、59秒,程序設(shè)立如下:Write_Multiplebyte:MOVCommand,#0Beh ;命令字節(jié)為BEhMOVByteCnt,#8 ;多字節(jié)寫入模式(此模塊為8個(gè))MOVR0,#XmtDat ;數(shù)據(jù)地址覆給R0MOVXmtDat,#59h ;秒單元內(nèi)容為59hMOVXmtDat+1,#59h ;分單元內(nèi)容為59hMOVXmtDat+2,#13h ;時(shí)單元內(nèi)容為13hMOVXmtDat+3,#21h ;日期單元內(nèi)容為21hMOVXmtDat+4,#06h ;月單元內(nèi)容為06hMOVXmtDat+5,#03h ;星期單元內(nèi)容為03hMOVXmtDat+6,#0 ;年單元內(nèi)容為00hMOVXmtDat+7,#0 ;寫保護(hù)單元內(nèi)容為00hACALLSend_Byte ;調(diào)用寫入數(shù)據(jù)子程序RET ;返回調(diào)用本子程序處讀出寄存器0~7內(nèi)容,程序設(shè)立如下:Read_Multiplebyte:MOVCommand,#0BFh ;命令字節(jié)為BFhMOVByteCnt,#8 ;多字節(jié)讀出模式(此模塊為8個(gè))MOVR1,#RcvDat ;數(shù)據(jù)地址覆給R1ACALLReceive_Byte;調(diào)用讀出數(shù)據(jù)子程序RET;返回調(diào)用本子程序處以上程序調(diào)用了基本數(shù)據(jù)接受(eceive_Byte)模塊及某些內(nèi)存單元定義,其源程序清單在附錄中給出。下面程序亦使用了這個(gè)模塊。上面所列出程序模塊“Write_Enable”、“Write_Disable”、“Osc_Enable”、“Osc_Disable”與單字節(jié)寫入模塊“Write_Singlebyte”程序架構(gòu)完全相似,僅只是幾種入口參數(shù)不同,此處是為了強(qiáng)調(diào)功能使用不同才將其分為不同模塊,此外,與涓流充電有關(guān)設(shè)定也是單字節(jié)操作方式。下面模塊舉例闡明如何單字節(jié)讀出小時(shí)單元內(nèi)容。Read_Singlebyte:MOVCommand,#85h;命令字節(jié)為85hMOVByteCnt,#1 ;單字節(jié)傳送模式MOVR1,#RcvDat;數(shù)據(jù)地址覆給R1ACALLReceive_Byte;調(diào)用讀出數(shù)據(jù)子程序RET ;返回調(diào)用本子程序處附錄:數(shù)據(jù)發(fā)送與接受模塊源程序清單;CPU工作頻率最大不超過20MHz;AT89C2051主控制器發(fā)送接受數(shù)據(jù)程序;闡明:本程序是運(yùn)用ATMEL公司AT89C2051單片機(jī)(任何具備51內(nèi)核或其他適當(dāng)單片機(jī)都可在此作為主控制器)普通I/O口(如P1.2/P1.3/P1.4)實(shí)現(xiàn)總線功能,對(duì)總線上器件(本程序采用DS1302)進(jìn)行讀寫操作。命令字節(jié)在Command,傳送字節(jié)數(shù)在ByteCnt中,所發(fā)送數(shù)據(jù)在XmtDat中,所接受數(shù)據(jù)在RcvDat中。;內(nèi)存數(shù)據(jù)定義BitCntdata30h ;數(shù)據(jù)位計(jì)數(shù)器ByteCntdata31h ;數(shù)據(jù)字節(jié)計(jì)數(shù)器Command data32h ;命令字節(jié)地址RcvDat DATA40H ;接受數(shù)據(jù)緩沖區(qū)XmtDatDATA50H ;發(fā)送數(shù)據(jù)緩沖區(qū);端口位定義IO_DATAbitP1.3 ;數(shù)據(jù)傳送總線SCLK bitP1.4;時(shí)鐘控制總線RSTbitP1.2;復(fù)位總線;****************************************************************;發(fā)送數(shù)據(jù)程序;名稱:Send_Byte;描述:發(fā)送(ByteCnt)個(gè)字節(jié)給被控器DS1302;命令字節(jié)地址在Command中;所發(fā)送數(shù)據(jù)字節(jié)數(shù)在ByteCnt中,發(fā)送數(shù)據(jù)在XmtDat緩沖區(qū)中;****************************************************************Send_Byte:CLRRST;復(fù)位引腳為低電平所有數(shù)據(jù)傳送終結(jié)NOPCLRSCLK ;清時(shí)鐘總線NOPSETBRST;復(fù)位引腳為高電平邏輯控制有效NOPMOVA,Command ;準(zhǔn)備發(fā)送命令字節(jié)MOVBitCnt,#08h ;傳送位數(shù)為8S_Byte0:RRCA ;將最低位傳送給進(jìn)位位CMOVIO_DATA,C ;位傳送至數(shù)據(jù)總線NOPSETBSCLK ;時(shí)鐘上升沿發(fā)送數(shù)據(jù)有效NOPCLRSCLK ;清時(shí)鐘總線DJNZBitCnt,S_Byte0 ;位傳送未完畢則繼續(xù)S_Byte1:準(zhǔn)備發(fā)送數(shù)據(jù)MOVA,@R0 ;傳送數(shù)據(jù)過程與傳送命令相似MOVBitCnt,#08hS_Byte2:RRC AMOV IO_DATA,CNOPSETB SCLKNOPCLR SCLKDJNZ BitCnt,S_Byte2INC R0 ;發(fā)送數(shù)據(jù)內(nèi)存地址加1DJNZ ByteCnt,S_Byte1 ;字節(jié)傳送未完畢則繼續(xù)NOPCLR RST ;邏輯操作完畢清RSTRET;****************************************************************;接受數(shù)據(jù)程序;;名稱:Receive_Byte;描述:從被控器DS1302接受(ByteCnt)個(gè)字節(jié)數(shù)據(jù);命令字節(jié)地址在Command中;所接受數(shù)據(jù)字節(jié)數(shù)在ByteCnt中,接受數(shù)據(jù)在RcvDat緩沖區(qū)中;****************************************************************Receive_Byte:CLRRST ;復(fù)位引腳為低電平所有數(shù)據(jù)傳送終結(jié)NOPCLRSCLK ;清時(shí)鐘總線NOPSETBRST ;復(fù)位引腳為高電平邏輯控制有效MOVA,Command ;準(zhǔn)備發(fā)送命令字節(jié)MOVBitCnt,#08h ;傳送位數(shù)為8R_Byte0:RRCA ;將最低位傳送給進(jìn)位位CMOVIO_DATA,C ;位傳送至數(shù)據(jù)總線NOPSETBSCLK ;時(shí)鐘上升沿發(fā)送數(shù)據(jù)有效NOPCLRSCLK ;清時(shí)鐘總線DJNZBitCnt,R_Byte0 ;位傳送未完畢則繼續(xù)NOPR_Byte1:準(zhǔn)備接受數(shù)據(jù)CLRA ;清累加器CLRC ;清進(jìn)位位CMOVBitCnt,#08h ;接受位數(shù)為8R_Byte2:NOPMOVC,IO_DATA ;數(shù)據(jù)總線上數(shù)據(jù)傳送給CRRCA ;從最低位接受數(shù)據(jù)SETBSCLK ;時(shí)鐘總線置高NOPCLRSCLK ;時(shí)鐘下降沿接受數(shù)據(jù)有效DJNZBitCnt,R_Byte2 ;位接受未完畢則繼續(xù)MOV@R1,A ;接受到完整數(shù)據(jù)字節(jié)放入接受內(nèi)存;緩沖區(qū)INCR1 ;接受數(shù)據(jù)內(nèi)存地址加1DJNZByteCnt,R_Byte1 ;字節(jié)接受未完畢則繼續(xù)NOPCLRRST ;邏輯操作完畢清RSTRET=============================================================END[6]第3章控制任務(wù)與控制原理3.1控制任務(wù)(1)14個(gè)數(shù)碼管分別用來顯示年、月、日、時(shí)、分、秒,各個(gè)數(shù)碼管顯示內(nèi)容如表3-1所示。表3-1各個(gè)數(shù)碼管顯示內(nèi)容年月日LED1LED2LED3LED4LED5LED6LED7LED8時(shí)分秒LED9LED10LED11LED12LED13LED14(2)走時(shí)精確,可調(diào)節(jié)公歷年、月、日和時(shí)、分、秒。(3)第一次上電,數(shù)碼管顯示起始時(shí)間為0000月00日00時(shí)00分00秒,也就是數(shù)碼管顯示00,若需要調(diào)節(jié)時(shí)間,可按調(diào)日歷鍵、調(diào)時(shí)鍵和加一鍵調(diào)節(jié)到需要時(shí)間。調(diào)節(jié)好時(shí)間之后,該控制系統(tǒng)將從當(dāng)前設(shè)定期間開始自動(dòng)運(yùn)營(yíng),直到下次人為變化時(shí)間設(shè)立。(4)可以依照學(xué)校作息時(shí)間準(zhǔn)時(shí)打鈴,播放音樂和廣播體操和其她節(jié)目等。掉電后備用電池供電,時(shí)鐘不斷,上電后不用調(diào)節(jié)時(shí)間。(5)采用市電通過電源適配器供電,當(dāng)市電停電時(shí),不但時(shí)間控制系統(tǒng)所有數(shù)據(jù)不會(huì)丟失,且照常運(yùn)營(yíng)(有后備電池供電,可供數(shù)年)[7]。3.2控制原理概述本設(shè)計(jì)通過AT89C2051單片機(jī)與時(shí)鐘芯片DS1302配合使用來實(shí)現(xiàn)設(shè)計(jì)任務(wù)。通過時(shí)鐘芯片來實(shí)現(xiàn)全日歷計(jì)時(shí)、12/24小時(shí)轉(zhuǎn)換以及大、小月、閏年、周自動(dòng)追蹤。通過AT89C2051單片機(jī)來實(shí)現(xiàn)對(duì)時(shí)鐘芯片控制以及數(shù)碼管顯示和電鈴、廣播電路控制。把學(xué)校作息時(shí)間預(yù)先制成表格存入EPROM數(shù)據(jù)區(qū)中,運(yùn)用軟件每過1秒將當(dāng)前時(shí)間與數(shù)據(jù)區(qū)時(shí)間相比較,相等則闡明要進(jìn)行某一控制。從而可以實(shí)現(xiàn)打鈴、息鈴、播放廣播體操等節(jié)目控制[8]。數(shù)據(jù)區(qū)中每一項(xiàng)時(shí)間控制字需要占用8個(gè)存儲(chǔ)單元,示意如表3-2所示:表3-2時(shí)間控制字闡明啟動(dòng)裝置時(shí)間關(guān)閉裝置時(shí)間控制碼1時(shí)分秒控制碼2時(shí)分秒設(shè)AT89C2051單片機(jī)P1.0用作電鈴啟動(dòng)和關(guān)閉,P1.4用作廣播啟動(dòng)和關(guān)閉??刂拼a定義如表3-3所示:表3-3各控制碼定義控制碼功能相應(yīng)輸出口FEH啟動(dòng)電鈴P1.0控制電鈴EFH啟動(dòng)廣播P1.4控制廣播FFH關(guān)閉裝置P1.0、P1.4均輸出關(guān)閉信號(hào)00H數(shù)據(jù)區(qū)結(jié)束依照作息時(shí)間編制數(shù)據(jù)區(qū)如表3-4所示。表3-4作息時(shí)間數(shù)據(jù)區(qū)定義作息時(shí)間地址數(shù)據(jù)區(qū)(時(shí)間控制字)6:40起床08H~0FHFE064000FF0640156:50早操10H~17HEF065000FF0650157:15早飯8:00預(yù)備鈴18H~1FHFE080000FF0800158:10~8:55第一節(jié)課20H~27HFE081000FF08101528H~2FHFE085500FF0855159:05~9:50第二節(jié)課30H~37HFE090500FF09051538H~3FHFE095000FF0950159:55~9:59課間操40H~47HEF095500FF09590010:20~11:05第三節(jié)課48H~4FHFE10FF1050H~57HFE110500FF11051511:15~12:00第四節(jié)課58H~5FHFE111500FF11151560H~67HFE10FF1512:15~14:30午飯及午休68H~6FHFE143000FF14301514:40~15:25第五節(jié)課70H~77HFE144000FF14401578H~7FHFE152500FF15251514:35~16:20第六節(jié)課80H~87HFE143500FF143515FE16FF1616:30課外活動(dòng)88H~8FHFE163000FF16301517:00晚飯90H~97HFE170000FF17001519:30~21:30晚自習(xí)98H~9FFE193000FF193015A0H~A7HFE213000FF213015第4章硬件電路設(shè)計(jì)4.1硬件構(gòu)成及操作闡明4.1.1硬件構(gòu)成框圖硬件構(gòu)成框圖如圖4-1所示:ATAT89C2051顯示屏接口鍵盤掃描接口電鈴、喇叭驅(qū)動(dòng)電路接口圖4-1系統(tǒng)硬件構(gòu)成框圖4.1.2設(shè)計(jì)電路原理圖設(shè)計(jì)電路如圖4-2所示。該系統(tǒng)在設(shè)計(jì)時(shí)盡量使體積最小,因而選用了AT89C2051單片機(jī)(可直接驅(qū)動(dòng)LED數(shù)碼顯示屏),顯示某些采用了14個(gè)共陰極LED數(shù)碼管構(gòu)成靜態(tài)顯示電路,可實(shí)時(shí)顯示秒、分、時(shí)、星期、日、月、年信息。其中字段由串入并出移位寄存器74LS164控制,74LS164串行數(shù)據(jù)輸入端由P3.0控制,移位脈沖由P3.1提供。為了對(duì)作息時(shí)間系統(tǒng)當(dāng)前時(shí)間進(jìn)行校準(zhǔn),系統(tǒng)設(shè)立了3個(gè)功能鍵:一種用于調(diào)日歷,另一種用于調(diào)時(shí),尚有一種用于加一??刂戚敵鲇蓮V播電路和打鈴電路構(gòu)成,其中P1.0接電鈴驅(qū)動(dòng)電路,P1.4接喇叭驅(qū)動(dòng)電路。在本系統(tǒng)中,AT89C2051為主器件,DS1302為從器件,主器件在總線上產(chǎn)生時(shí)鐘脈沖、尋址信號(hào)、數(shù)據(jù)信號(hào)等,而從器件則相應(yīng)接受數(shù)據(jù)、送出數(shù)據(jù)[9]。各某些在電路中重要功能:(1)AT89C2051:重要通過對(duì)DS1302設(shè)立,完畢時(shí)鐘設(shè)立以及數(shù)據(jù)傳播。(2)DS1302:時(shí)鐘芯片,在單片機(jī)控制下實(shí)現(xiàn)時(shí)鐘數(shù)據(jù)記錄和輸出。(3)OSC2:32.768KHZ晶振,為時(shí)鐘芯片提供計(jì)時(shí)脈沖。圖4-2作息時(shí)間系統(tǒng)電路原理圖4.1.3操作闡明(1)接上5V電源即可運(yùn)營(yíng)。(2)按“調(diào)日歷”鍵,進(jìn)入調(diào)節(jié)年、月、日狀態(tài)。一方面“年”兩位數(shù)碼管閃爍顯示,表達(dá)在調(diào)節(jié)“年”狀態(tài),按“加一”鍵調(diào)節(jié)到盼望“年”,再按“調(diào)日歷”鍵則確認(rèn)“年”,同步進(jìn)入調(diào)節(jié)“月”狀態(tài),“月”兩位數(shù)碼管閃爍顯示,按“加一”鍵調(diào)節(jié)到盼望“月”,再按“調(diào)日歷”鍵則則確認(rèn)“月”,同步進(jìn)入調(diào)節(jié)“日”狀態(tài),“日”兩位數(shù)碼管閃爍顯示,按“加一”鍵調(diào)節(jié)到盼望“日”后,再按“調(diào)日歷”鍵則確認(rèn)“日”,同步調(diào)節(jié)年、月、日結(jié)束。(3)按“調(diào)時(shí)”鍵,進(jìn)入調(diào)節(jié)時(shí)、分、秒狀態(tài)。一方面“時(shí)”兩位數(shù)碼管閃爍顯示,表達(dá)在調(diào)節(jié)“時(shí)”狀態(tài),按“加一”鍵調(diào)節(jié)到盼望“時(shí)”,再按“調(diào)時(shí)”鍵則確認(rèn)“時(shí)”,同步進(jìn)入調(diào)節(jié)“分”狀態(tài),“分”兩位數(shù)碼管閃爍顯示,按“加一”鍵調(diào)節(jié)到盼望“分”,再按“調(diào)時(shí)”鍵則確認(rèn)“分”,同步進(jìn)入調(diào)節(jié)“秒”狀態(tài),“秒”兩位數(shù)碼管閃爍顯示,按“加一”鍵調(diào)節(jié)到盼望“秒”后,再按“調(diào)時(shí)”鍵則確認(rèn)“秒”,同步調(diào)節(jié)時(shí)、分、秒結(jié)束[10]。4.2單片機(jī)與繼電器接口及工作原理單片機(jī)應(yīng)用系統(tǒng)中,開關(guān)量都是通過單片機(jī)I/O口或擴(kuò)展I/O口(如8255、8155等)輸出。這些I/O口驅(qū)動(dòng)電流往往局限性以驅(qū)動(dòng)某些功率開關(guān)。對(duì)于機(jī)械繼電器,驅(qū)動(dòng)器選取要依照繼電器吸合電流而定,即驅(qū)動(dòng)器電流一定要不不大于繼電器吸合電流。圖4-3為該系統(tǒng)繼電器接口電路圖。為防止前向通道信號(hào)干擾,應(yīng)采用信號(hào)隔離,普通使用某些光電隔離器件,如圖4-3中4N25光耦。當(dāng)單片機(jī)P1.4腳輸出低電平時(shí)(指令為CLRP1.4),4N25受控端導(dǎo)通,三極管Q1飽和導(dǎo)通,繼電器吸合,負(fù)載電路接通。為防止電壓間互相干擾,繼電器工作電壓VDD普通與單片機(jī)系統(tǒng)電壓VCC不同。繼電器負(fù)載可依照實(shí)際需要選取,如外接報(bào)警裝置,也可用作交流開關(guān)。繼電器可依照負(fù)載功率大小選取,如負(fù)載功率較大,可選用吸合電流較大繼電器,同步驅(qū)動(dòng)管Q1功率也應(yīng)恰當(dāng)增大,可選用大功率驅(qū)動(dòng)管。圖4-3繼電器接口電路原理圖機(jī)械繼電器在關(guān)斷時(shí)容易產(chǎn)生干擾,為抑制干擾源,應(yīng)在繼電器線圈處增長(zhǎng)續(xù)流二極管,消除斷開線圈時(shí)產(chǎn)生反電動(dòng)勢(shì)干擾。如圖4-3二極管D2[11]。4.3單片機(jī)與顯示屏接口及工作原理4.3.1LED顯示屏基本構(gòu)造和原理LED顯示屏采用發(fā)光二極管顯示字段。單片機(jī)系統(tǒng)中經(jīng)常采用是7段顯示屏,即LED顯示屏中有8個(gè)發(fā)光二極管,代表“a.b.c.d.e.f.g.”7個(gè)字段和1個(gè)全小數(shù)點(diǎn)“dp”。它有共陰極和共陽(yáng)極兩種構(gòu)造:共陰極LED顯示屏發(fā)光二極管負(fù)極接地,當(dāng)發(fā)光二極管正極為高電平時(shí),發(fā)光二極管被點(diǎn)亮;共陽(yáng)極LED顯示 器正極相連,當(dāng)二極管負(fù)極為低電平時(shí),發(fā)光二極管被點(diǎn)亮。LED顯示屏構(gòu)造和封裝如圖4-4所示。圖4-4LED顯示屏構(gòu)造和封裝圖在一種單片機(jī)系統(tǒng)中,對(duì)共陰極LED顯示屏控制采用“接地方式”,即通過控制LEDGND引腳電平高低來達(dá)到選通目,該引腳即普通所說位選線。共陽(yáng)極LED顯示屏控制方式則相反。兩種控制方式中,共陰極LED控制方式受系統(tǒng)器件功耗限制,只能用在小尺寸LED顯示屏中,對(duì)于大尺寸LED顯示屏控制(如大屏幕計(jì)時(shí)器)普通使用共陽(yáng)極方式。使用LED顯示屏?xí)r,工作電流普通為5~10mA/段。這樣當(dāng)LED處在全亮狀態(tài)時(shí),工作電流約40~80mA左右。LED顯示屏亮度除與工作電流關(guān)于外,還與LED型號(hào)關(guān)于。依照顯示亮度不同劃分為普通亮度和高亮度LED顯示屏。高亮度LED顯示屏發(fā)光強(qiáng)度遠(yuǎn)不不大于普通亮度LED顯示屏,在一種單片機(jī)應(yīng)用系統(tǒng)中,普通將控制LED顯示字符8位數(shù)據(jù)稱之為段選碼,7段LED段選碼如表4-1所示,共陰極與共陽(yáng)極段選碼互為補(bǔ)碼,即兩數(shù)值相加等于FFH。表4-17段LED段選碼字符共陰共陽(yáng)字符共陰共陽(yáng)03FHC0H87FH80H106HF9H96FH90H25BHA4HA77H88H34FHB0HB7CH83H406H99HC39HC6H56DH92HD5EHA1H67DH82HE79H86H707HF8HF71H8EH段選碼數(shù)值大小依照LED構(gòu)造很容易得出,假設(shè)一種共陰LED要顯示數(shù)字“0”,依照?qǐng)D4-4(指LED封裝圖)則有:a=b=c=d=e=f=1,g=0,dp=0,即二進(jìn)制“00111111B”,也就是十六進(jìn)制“3FH”[12]。4.3.2LED顯示LED顯示屏有靜態(tài)和動(dòng)態(tài)兩種方式。從接口上分又有并行和串行兩種,這要視接口和驅(qū)動(dòng)芯片而定。慣用并行LED接口芯片有8155、8255以及鍵盤和顯示專用芯片8279等。與并行方式相比串行方式僅占用CPU少數(shù)幾根I/O口線便可實(shí)現(xiàn)LED顯示功能,此前51單片機(jī)系統(tǒng)經(jīng)常通過串口通信線TXD、RXD(P3.0、P3.1)加移位寄存器74LS164實(shí)現(xiàn)LED顯示功能。近年來國(guó)內(nèi)外各大廠商紛紛推出了基于串行總線方式LED顯示屏接口芯片,如MAXIN公司MAX7219,力源PS7219以及周立功zlg7289等。這些芯片與單片機(jī)接口普通采用SPI總線方式,具備占用I/O口線少,與單片機(jī)接口程序易于實(shí)現(xiàn)特點(diǎn)。有芯片如zlg7289還內(nèi)含鍵盤控制器,這樣只要一片芯片便可實(shí)現(xiàn)顯示和鍵盤功能,使用十分以便[13]。該系統(tǒng)設(shè)計(jì)時(shí)顯示某些采用靜態(tài)顯示,其電路如圖4-5所示。此電路由每片74LS164相應(yīng)輸出到一種數(shù)碼管,CPU將串行口方式設(shè)為移位寄存器方式,外接14片74LS164作為14位LED顯示屏靜態(tài)顯示接口,把CPURXD(P3.0)作為數(shù)據(jù)輸出線,TXD(P3.1)作為移位時(shí)鐘脈沖。74LS164為TTL單向8位移位寄存器,可實(shí)現(xiàn)串行輸入、并行輸出。其中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個(gè)引腳按與運(yùn)算規(guī)律輸入信號(hào),共一種輸入信號(hào)時(shí)可并接。CLK(第8腳)為時(shí)鐘輸入端,可連接到串行口TXD端。每一種時(shí)鐘信號(hào)上升沿加到CLK端時(shí),移位寄存器移一位,8個(gè)時(shí)鐘脈沖過后,8位二進(jìn)制數(shù)所有移入74LS164。Q0~Q7(第3~6和10~13引腳)并行輸出端分別接在LED顯示屏a~dp各段相應(yīng)引腳上。74LS164使用簡(jiǎn)介:所謂時(shí)鐘脈沖端,其實(shí)就是需要高、低脈沖。74LS164CLK在脈沖上升沿時(shí),如果數(shù)據(jù)輸入端(第1,2引腳)是高電平,就會(huì)有一種1進(jìn)入到74LS164內(nèi)部;如果數(shù)據(jù)輸入端是低電平,就會(huì)有一種0進(jìn)入其內(nèi)部。在給出了8個(gè)脈沖后,最先進(jìn)入74LS164第一種數(shù)據(jù)到達(dá)了最高位,然后再來一種脈沖會(huì)發(fā)生什么狀況呢?再來一種脈沖,第一種脈沖就會(huì)從最高位移出,就像車站排隊(duì)買票,欄桿就那么長(zhǎng),要從背面進(jìn)去一種人,必要有個(gè)人從前面走出去才行。在靜態(tài)顯示電路中,14片74LS164首尾相串,而時(shí)鐘端則接在一起,這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)RXD端輸出數(shù)據(jù)一方面進(jìn)入第一片74LS164中,而當(dāng)?shù)诙€(gè)8位脈沖到來后,這個(gè)數(shù)據(jù)就進(jìn)入第二片74LS164,而新數(shù)據(jù)則進(jìn)入第一片74LS164,這樣當(dāng)?shù)?4個(gè)8個(gè)脈沖完畢后,初次送出數(shù)據(jù)被送到了第十四片74LS164中,其她數(shù)據(jù)依次出當(dāng)前第十三、十二、十一、十、九、八、七、六、五、四、三、二、一片74LS164中。當(dāng)?shù)谝环N脈沖到來時(shí),除了第一片74LS164接受數(shù)據(jù)外,其她各片在做什么工作呢?它們也在接受數(shù)據(jù),由于它們時(shí)鐘端都接在了一起??墒菙?shù)據(jù)還沒有送到其她各片,它們?cè)诮邮苁裁磾?shù)據(jù)呢?其實(shí)所謂數(shù)據(jù)但是是一種說法而已,實(shí)際就是電平高低,當(dāng)?shù)谝环N脈沖到來時(shí),第一片74LS164固然是從單片機(jī)接受數(shù)據(jù)了,而其她各片也接到前一片Q7上,而Q7是一根電線,在數(shù)字電路中它只也許有兩種狀態(tài):低電平或高電平,也就是“0”和“1”。因此它下一片74LS164也相稱于是在接受數(shù)據(jù),只是接受所有是0或者1而已,這些數(shù)據(jù)作用是在CPU輸出數(shù)據(jù)結(jié)束時(shí),由74LS164并行輸出到數(shù)碼管上,點(diǎn)亮其高電平相應(yīng)筆畫段圖4-5LED數(shù)碼管接口電路4.4電源電路設(shè)計(jì)圖4-6+5V、+8V電源供電電路圖4-6所示是由正輸出三端穩(wěn)壓器7808和7805構(gòu)成電源模塊,三端集成穩(wěn)壓器只有三個(gè)引出端:輸入端、輸出端和公共端,在電路連接中比較簡(jiǎn)樸。如圖4-6所示:整流濾波后得到直流輸入電壓U1i接在7808輸入端和公共端之間,在7808輸出端即可得到+8V輸出電壓,為了改進(jìn)電壓波形,在7808和7805輸入端分別接入電容C6、C7,普通這種電容容量為0.33uF;同步在兩者輸出端接上電容可以改進(jìn)負(fù)載瞬態(tài)效應(yīng),這種電容容量普通為0.1uF;這兩種電容應(yīng)當(dāng)直接接在集成穩(wěn)壓器引腳處[15]??紤]到對(duì)于集成穩(wěn)壓管保護(hù),普通在穩(wěn)壓管輸入和輸出之間跨接一種保護(hù)二極管,其作用就是在輸入端短路時(shí),使接在輸出端電容可以通過二極管放電,從而達(dá)到保護(hù)目。其中電容參數(shù)如圖4-6所示,二極管選1N4007即可滿足設(shè)計(jì)規(guī)定。第5章軟件設(shè)計(jì)5.1繪制流程圖程序功能:(1)AT89C2051單片機(jī)控制DS1302時(shí)鐘芯片程序重要涉及兩個(gè)方面內(nèi)容:一是單片機(jī)對(duì)DS1302寄存器地址定義和控制字寫入,二時(shí)數(shù)據(jù)讀取。(2)小時(shí)寄存器第7位是12/24制選取位,為1時(shí)表達(dá)12小時(shí)模式,此時(shí),該寄存器第5位是AM/PM選取位,1為PM。(3)上電時(shí)在Vcc2電壓達(dá)到2.5V前RST腳必要保持邏輯0,且RST腳設(shè)為邏輯1前,SCLK須同樣為邏輯0[16]。(4)每次上電,必要把秒寄存器高位(第7位)清0,時(shí)鐘才干走時(shí)。(5)作息時(shí)間系統(tǒng)流程分為主程序和子程序流程。主程序流程除了數(shù)據(jù)區(qū)初始參數(shù)設(shè)立外,重要涉及鍵盤掃描子程序、顯示子程序和控制子程序三個(gè)模塊循環(huán)調(diào)用,如圖5-1所示。控制子程序判斷定期時(shí)間與否到達(dá),如定期時(shí)間到則啟動(dòng)繼電器。其流程圖如圖5-2所示;顯示子程序流程圖如圖5-3所示;鍵盤掃描子程序流程如圖5-4所示。圖5-4只繪出了設(shè)立年流程。(6)數(shù)值變化成果通過14位數(shù)碼管顯示,因而需要進(jìn)行十六進(jìn)制至十進(jìn)制BCD轉(zhuǎn)換,之后再調(diào)用顯示子程序。加一鍵按下和釋放為一種數(shù)值增長(zhǎng)過程。月、日、星期、時(shí)、分、秒設(shè)立流程與年類似,只是月滿刻度值是12,日滿刻度值是31,時(shí)滿刻度值是24,星期滿刻度值是日,分和秒滿刻度值是59[17]。5.1.1主程序設(shè)計(jì)主程序流程圖如圖5-1所示:開始開始初始化參數(shù)設(shè)立調(diào)用顯示子程序調(diào)用鍵盤掃描子程序調(diào)用控制子程序圖5-1主程序流程圖5.1.2控制子控制子程序流程圖如圖5-2所示:開始取出控制區(qū)中小時(shí)值當(dāng)前時(shí)=控制區(qū)時(shí)?當(dāng)前分=控制區(qū)別?當(dāng)前秒=控制區(qū)秒?取出控制碼控制碼送P1口返回YYYNN開始取出控制區(qū)中小時(shí)值當(dāng)前時(shí)=控制區(qū)時(shí)?當(dāng)前分=控制區(qū)別?當(dāng)前秒=控制區(qū)秒?取出控制碼控制碼送P1口返回YYYNNN圖5-2控制子程序流程圖5.1.3顯示子顯示子程序流程圖如圖5-3所示:開始開始向顯示緩沖區(qū)中放數(shù)返回Y指向顯示緩沖區(qū)首址指向字形碼表首查段碼,送出段碼指向下一種緩沖單元顯示下一位14位顯示完?N圖5-3顯示子程序流程圖5.1.4鍵盤掃描子程序流程圖如圖5-4所示:開始開始調(diào)用延時(shí)10ms子程序調(diào)日歷功能鍵按下嗎?調(diào)日歷功能鍵依然按下嗎?年緩沖單元加1加一功能鍵依然按下嗎?加一功能鍵按下嗎?調(diào)用延時(shí)10ms子程序年緩沖單元=99?年緩沖單元清0調(diào)用顯示子程序調(diào)日歷功能鍵再次按下嗎?至調(diào)月子程序YYYYYYNNNNNN圖5-4鍵盤掃描子程序流程圖5.2作息時(shí)間系統(tǒng)軟件設(shè)計(jì)辦法。5.2.1主程序軟件設(shè)計(jì)主程序設(shè)計(jì)重要包括偽指令定義、參數(shù)初始化設(shè)立、子程序調(diào)用三某些內(nèi)容。(1)偽指令定義分別定義調(diào)日歷、調(diào)時(shí)、加一三個(gè)按鍵以及時(shí)鐘、數(shù)據(jù)傳送、復(fù)位總線和數(shù)據(jù)存儲(chǔ)區(qū)等。TRL BIT P3.2 ;調(diào)日歷功能鍵JIA1 BIT P3.3 ;加一功能鍵TSH BIT P3.4 ;調(diào)時(shí)功能鍵SCLK BIT P3.5 ;時(shí)鐘控制總線IO BIT P3.7 ;數(shù)據(jù)傳送總線RST BIT RST ;復(fù)位總線YEAR DATA 66H ;年寄存器MONTH DATA 65H ;月寄存器WEEK DATA 64H ;星期寄存器DAY DATA 63H ;日寄存器HOUR DATA 62H ;時(shí)寄存器MINTUE DATA 61H ;分寄存器SECOND DATA 60H ;秒寄存器DS_ADDR DATA 67H ;此單元放置數(shù)據(jù)為地址DS_DATA DATA 68H ;此單元放置數(shù)據(jù)(2)參數(shù)初始化設(shè)立涉及數(shù)據(jù)堆棧區(qū)地址、時(shí)間和顯示數(shù)據(jù)初始參數(shù)設(shè)立。在普通狀況下,時(shí)間和顯示數(shù)據(jù)初始數(shù)值為0。堆棧區(qū)地址代碼如下:MOV SP,#70H ;堆棧區(qū)地址從70H開始 MOV R0,#14 MOV R1,#4BHLOOP: MOV @R1,#00H ;初始化顯示緩沖單元 DEC R1 DJNZ R0,LOOP LCALL DISP(3)子程序調(diào)用在主程序里循環(huán)調(diào)用鍵盤掃描子程序、顯示子程序和控制子程序,代碼如下:START0: LCALL KEY ;調(diào)用鍵盤掃描子程序 LCALL DISP ;調(diào)用顯示子程序 LCALL CONTROL ;調(diào)用控制子程序 AJMP START0 ;主程序循環(huán)調(diào)用[18]5.2.2子程序軟件設(shè)計(jì)子程序重要有鍵盤掃描、顯示和控制子程序構(gòu)成。事實(shí)上,在鍵盤掃描子程序里還包括顯示和防抖動(dòng)延時(shí)子程序,即子程序嵌套。(1)鍵盤掃描子程序在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤構(gòu)造重要有獨(dú)立式和行列式兩種,但無論硬件構(gòu)造如何,其軟件編寫辦法和過程基本上是一致,重要有如下幾種環(huán)節(jié):①判斷有無按鍵按下;②當(dāng)發(fā)既有按鍵按下時(shí),加入軟件延時(shí)以消除鍵盤抖動(dòng)影響;③依照一定鍵值編寫相應(yīng)執(zhí)行程序;判斷鍵值與否釋放,若未釋放,則等待以避免重鍵或產(chǎn)生錯(cuò)誤按鍵成果。;鍵盤掃描子程序KEY: JB TRL,MAIN2FA ;調(diào)日歷功能鍵未按下,則繼續(xù)顯示 LCALL DEL10MS ;鍵盤防抖動(dòng) JB TRL,MAIN2FA AJMP MAIN2FNMAIN2FA: JB TSH,MAIN2F ;調(diào)時(shí)功能鍵未按下,則繼續(xù)顯示 LCALL DEL10MS ;鍵盤防抖動(dòng) JB TSH,MAIN2F AJMP TIAOSHIMAIN2FN: MOV DS_ADDR,#8DH ;讀年寄存器 LCALL READ MOV R3,DS_DATA ;讀出數(shù)據(jù)地址給R3 LCALL DISP00MAIN2FN2:JB JIA1,MAIN2FN1 LCALL DEL10MS JB JIA1,MAIN2FN1 INC @R3 LCALL DISP00 MOV DS_ADDR,#8CH ;寫年寄存器 LCALL WRITE ;寫入設(shè)立年數(shù)據(jù)MAIN2FN1:JB TRL,MAIN2FN2 LCALL DEL10MS JB TRL,MAIN2FN2 MOV DS_ADDR,#89H ;讀月寄存器 LCALL READ MOV R3,DS_DATA ;讀出數(shù)據(jù)地址給R3 LCALL DISP00MAIN2FY2:JB JIA1,MAIN2FY1 LCALL DEL10MS JB JIA1,MAIN2FY1 INC @R3 LCALL DISP00 MOV DS_ADDR,#88H ;寫月寄存器 LCALL WRITE ;寫入設(shè)立月數(shù)據(jù)MAIN2FY1:JB TRL,MAIN2FN2 LCALL DEL10MS JB TRL,MAIN2FN2 MOV DS_ADDR,#87H ;讀日寄存器 LCALL READ MOV R3,DS_DATA ;讀出數(shù)據(jù)地址給R3LCALL DISP00MAIN2FR2:JB JIA1,MAIN2FR1 LCALL DEL10MS JB JIA1,MAIN2FR1 INC @R3 LCALL DISP00 MOV DS_ADDR,#86H ;寫日寄存器 LCALL WRITE ;寫入設(shè)立日數(shù)據(jù)MAIN2FR1: JB TRL,MAIN2FR2 LCALL DEL10MS JB TRL,MAIN2FR2 AJMP MAIN2FATIAOSHI: MOV DS_ADDR,#85H ;讀時(shí)寄存器 LCALL READ MOV R3,DS_DATA ;讀出數(shù)據(jù)地址給R3 LCALL DISP00TIAOSHI1: JB JIA1,TIAOSHI2 LCALL DEL10MS JB JIA1,TIAOSHI2 INC @R3 LCALL DISP00 MOV DS_ADDR,#84H ;寫時(shí)寄存器 LCALL WRITE ;寫入設(shè)立時(shí)數(shù)據(jù)TIAOSHI2: JB TSH,TIAOSHI1 LCALL DEL10MS JB TSH,TIAOSHI1 MOV DS_ADDR,#83H ;讀分寄存器 LCALL READ MOV R3,DS_DATA ;讀出數(shù)據(jù)地址給R3 LCALL DISP00TIAOSHI3: JB JIA1,TIAOSHI4 LCALL DEL10MS JB JIA1,TIAOSHI4 INC @R3 LCALL DISP00 MOV DS_ADDR,#82H ;寫分寄存器 LCALL WRITE ;寫入設(shè)立分?jǐn)?shù)據(jù)TIAOSHI4: JB TSH,TIAOSHI3 LCALL DEL10MS JB TSH,TIAOSHI3 MOV DS_ADDR,#81H ;讀秒寄存器 LCALL READ MOV R3,DS_DATA ;讀出數(shù)據(jù)地址給R3LCALL DISP00TIAOSHI5: JB JIA1,TIAOSHI6 LCALL DEL10MS JB JIA1,TIAOSHI6 INC @R3 LCALL DISP00 MOV DS_ADDR,#80H ;寫秒寄存器 LCALL WRITE ;寫入設(shè)立秒數(shù)據(jù)TIAOSHI6: JB TSH,TIAOSHI5 LCALL DEL10MS JB TSH,TIAOSHI5 AJMP MAIN2FAMAIN2: MOV P1,#0 MOV DS_ADDR,#8DH ;讀年寄存器 LCALL READ MOV YEAR,DS_DATA ;存入年緩沖單元 MOV DS_ADDR,#89H ;讀月寄存器 LCALL READ MOV MONTH,DS_DATA ;存入月緩沖單元 MOV DS_ADDR,#87H ;讀日寄存器 LCALL READ MOV DAY,DS_DATA ;存入日緩沖單元 MOV DS_ADDR,#85H ;讀小時(shí)寄存器 LCALL READ MOV HOUR,DS_DATA ;存入小時(shí)緩沖單元 MOV DS_ADDR,#83H ;讀分寄存器 LCALL READ MOV MINUTE,DS_DATA ;存入分緩沖單元 MOV DS_ADDR,#81H ;讀秒寄存器 LCALL READ MOV SECOND,DS_DATA ;存入秒緩沖單元 MOV R0,YEAR ;解決年數(shù)據(jù) LCALL DIVIDE ;分開低四位、高四位數(shù)據(jù) MOV 4AH,R1 ;將年數(shù)據(jù)低位放到顯示緩沖寄存器4AH MOV 4BH,R2 ;將年數(shù)據(jù)高位放到顯示緩沖寄存器4BH MOV R0,MONTH ;解決月數(shù)據(jù) LCALL DIVEDE MOV 48H,R1 ;將月數(shù)據(jù)低位放到顯示緩沖寄存器48H MOV 49H,R2 ;將月數(shù)據(jù)高位放到顯示緩沖寄存器49H MOV R0,DAY ;解決日數(shù)據(jù) LCALL DIVIDE MOV 46H,R1 ;將日數(shù)據(jù)低位放到顯示緩沖寄存器46H MOV 47H,R2 ;將日數(shù)據(jù)高位放到顯示緩沖寄存器47H MOV R0,HOUR ;解決時(shí)數(shù)據(jù) LCALL DIVIDE MOV 44H,R1 ;將時(shí)數(shù)據(jù)低位放到顯示緩沖寄存器44H MOV 45H,R2 ;將時(shí)數(shù)據(jù)高位放到顯示緩沖寄存器45H MOV R0,MINTUE ;解決分?jǐn)?shù)據(jù) LCALL DIVIDE MOV 42H,R1 ;將分?jǐn)?shù)據(jù)低位放到顯示緩沖寄存器42H MOV 43H,R2 ;將分?jǐn)?shù)據(jù)高位放到顯示緩沖寄存器43H MOV R0,SECOND ;解決秒數(shù)據(jù) LCALL DIVIDE MOV 40H,R1 ;將秒數(shù)據(jù)低位放到顯示緩沖寄存器40H MOV 41H,R2 ;將秒數(shù)據(jù)高位放到顯示緩沖寄存器41H LCALL DISP LCALL CONTROL RET普通狀況下,鍵盤采用機(jī)械彈性開關(guān)來反映一種電壓信號(hào)開、斷。由于機(jī)械觸點(diǎn)彈性作用,在閉合和斷開瞬間會(huì)有抖動(dòng)發(fā)生。抖動(dòng)時(shí)間長(zhǎng)短由按鍵機(jī)械特性決定,普通在5~10ms之間。為保證按鍵不產(chǎn)生誤動(dòng)作,在編寫按鍵解決程序中必要有防抖動(dòng)辦法。防抖動(dòng)辦法有硬件和軟件兩種辦法。硬件防抖動(dòng)辦法典型做法是采用RS觸發(fā)器,構(gòu)成雙穩(wěn)態(tài)消抖電路,普通用在對(duì)按鍵操作過程比較嚴(yán)格場(chǎng)合。采用硬件防抖動(dòng)電路將導(dǎo)致系統(tǒng)硬件電路設(shè)計(jì)復(fù)雜化,該設(shè)計(jì)使用軟件消抖辦法。它工作原理是:當(dāng)軟件檢測(cè)到第一種按鍵按下時(shí),執(zhí)行一種10~20ms軟件延時(shí)程序,之后再檢測(cè)該鍵電平與否仍維持在閉合狀態(tài),若依然保持,則確認(rèn)此鍵是真正按下,從而消除了抖動(dòng)影響。;10ms防抖動(dòng)延時(shí)子程序DEL10MS: MOV R7,#10S2: MOV R6,#250S1: DJNZ R6,S1 DJNZ R7,S2 RET當(dāng)晶體頻率為6MHZ時(shí),上述抖動(dòng)延時(shí)執(zhí)行時(shí)間近似等于250*10*2*2us=10000us=10ms。(2)顯示子程序顯示子程序重要是實(shí)時(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論