




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、鄭州科技學(xué)院 帶有液晶顯示的定時鬧鐘 院(系): 電子工程系 專業(yè)班級: 11機(jī)電一體化技術(shù) 學(xué) 號: 201129012 學(xué)生姓名: 郭月華 指導(dǎo)教師: 張軍 2013年11月-2014年3月鄭州大學(xué)畢業(yè)設(shè)計(jì)(論文)開題報告課題名稱 基于單片機(jī)液晶定時鬧鐘的設(shè)計(jì)課題來源教師命題課題類型ex指導(dǎo)教師 張軍學(xué)生姓名郭月華學(xué) 號201129012專 業(yè) 電子工程開題報告內(nèi)容:(調(diào)研資料的準(zhǔn)備,設(shè)計(jì)的目的、要求、思路與預(yù)期成果;任務(wù)完成的階段內(nèi)容及時間安排;完成設(shè)計(jì)(論文)所具備的條件因素等。)一、調(diào)研資料準(zhǔn)備學(xué)習(xí)電子繪圖protel 99 se、multisim2001、keil等相關(guān)軟件通過網(wǎng)絡(luò)
2、及各種相關(guān)書籍查找相關(guān)信息二、設(shè)計(jì)目的 1了解lcd顯示器顯示的基本原理 2. 了解用lcd液晶顯示有什么好處3. 掌握并學(xué)會用單片機(jī)at89c52控制的硬件電路的設(shè)計(jì)和軟件設(shè)計(jì) 4. 能夠正確實(shí)現(xiàn)基于單片機(jī)的液晶屏顯示的定時電子鬧鐘設(shè)計(jì)功能三、設(shè)計(jì)要求1、顯示器可顯示輸出定時時間,顯示格式為“時時 分分 秒秒”2. 可顯示日期,具有萬年歷的功能,同時可修改時間 2、由lcd閃動來做秒表計(jì)數(shù)表示 3、用戶可通過按鍵調(diào)整時間,按鍵數(shù)量盡可能少四、設(shè)計(jì)思路1. 利用at89c52單片機(jī)芯片作為程序控制系統(tǒng)再加上其它外圍電路進(jìn)行輔 助,具體電路的設(shè)計(jì)包括:單片機(jī)最小系統(tǒng)、鍵盤、液晶顯示等電路。 2.
3、 按設(shè)計(jì)要求編寫程序并調(diào)試3. 輸出用液晶屏顯示五、預(yù)期成果1、設(shè)計(jì)一個基于單片機(jī)的可調(diào)節(jié)時間、可定時的液晶顯示鬧鐘 2、軟件編程及功能調(diào)試六、論文階段內(nèi)容及時間安排第1周至第2周:收集材料,撰寫開題報告第3周至第4周:撰寫文獻(xiàn)綜述和外文翻譯,設(shè)計(jì)電路總體方案第5周至第7周:進(jìn)行系統(tǒng)軟件功能分析,軟件模塊的確定,編寫軟件第8周至第9周:整體系統(tǒng)的軟硬件調(diào)試第10周至第11周:總結(jié)分析數(shù)據(jù),畢業(yè)論文的撰寫 第12周:提交畢業(yè)設(shè)計(jì)(論文)成果,準(zhǔn)備答辯六、完成設(shè)計(jì)(論文)所具備的條件因素硬件條件:單片機(jī)、lcd液晶顯示屏、萬能板、放大器、按鍵、蜂鳴器等軟件條件:電子繪圖軟件protel 99 se
4、、multisim2001、keil。方法:(1)通過網(wǎng)絡(luò)及各種相關(guān)書籍查找相關(guān)信息,確定使用的元器件。(2)以單片機(jī)at89s52為核心,開發(fā)一個完整的系統(tǒng),包括硬件設(shè)計(jì)和軟件的編程。(3)使用protel軟件,繪制原理圖、pcb,并進(jìn)行元器件安裝、焊接及調(diào)試檢測達(dá)到預(yù)期的目的。指導(dǎo)教師簽名: 日期: 鄭州大學(xué)畢業(yè)設(shè)計(jì)(論文)任務(wù)書題目 基于stc89c52 專業(yè) 電子工程 學(xué)號 201129012 姓名 郭月華 主要內(nèi)容、基本要求、主要參考資料等:一、 主要內(nèi)容采用stc89c52單片機(jī)為核心,復(fù)位電路,時鐘電路,鬧鐘指示電路,lcd顯示電路等組成,軟件選用匯編語言編程。利用單片機(jī)可將數(shù)字
5、顯示于lcd顯示屏上,并能通過按鍵來調(diào)節(jié)時間和定時。二、 基本要求1、顯示器可顯示輸出定時時間,顯示格式為“時時 分分 秒秒”。2、由lcd液晶顯來做秒表計(jì)數(shù)表示。3、用戶可通過按鍵調(diào)整時間,按鍵數(shù)量盡可能少。三、 主要參考資料1 余發(fā)山 單片機(jī)原理及應(yīng)用技術(shù) 中國礦業(yè)大學(xué)出版社2 張毅剛 單片機(jī)應(yīng)用設(shè)計(jì) 哈出爾濱工業(yè)大學(xué)版社3 李剛 51系列單片機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用技巧4 房小翠 王金鳳 單片機(jī)微型計(jì)算機(jī)與機(jī)電接口技術(shù) 北京:國防工業(yè)出版社5 李珍 單片機(jī)原理與控制技術(shù) 北京:清華大學(xué)出版社6 范立南 單片機(jī)接口與控制技術(shù) 沈陽:遼寧大學(xué)出版社7 張友德 單片機(jī)微型原理應(yīng)用與實(shí)踐 上海:復(fù)旦大學(xué)
6、出版社8 李華 mcs51系列單片機(jī)實(shí)用接口技術(shù) 北京:北京航空大學(xué)出版社 完 成 期 限: 指導(dǎo)教師簽名: 專業(yè)負(fù)責(zé)人簽名: 年 月 日郭總的沒有摘要,而且沒有英文摘要,無法插入附錄有點(diǎn)亂,圖形和和你的一樣,結(jié)束語和致謝也沒有任務(wù)書也是和你的一樣至于其他的不是什么太大的毛病,我可以幫你們改記得征文的開頭用tob 鍵,別按空格目 錄第1章 設(shè)計(jì)方案1 設(shè)計(jì)方案論證71.1 應(yīng)用71.2 方案選擇71.3 總設(shè)計(jì)框圖及分析82 硬件電路設(shè)計(jì)102.1 系統(tǒng)時鐘電路設(shè)計(jì)102.2系統(tǒng)復(fù)位電路的設(shè)計(jì)102.3鬧鐘指示電路設(shè)計(jì)102.4 電子鬧鐘的顯示電路設(shè)計(jì)102.5 仿真圖113.1 概述133.
7、2 主模塊的設(shè)計(jì)133.3 基本顯示模塊設(shè)計(jì)133.4 時間設(shè)定模塊設(shè)計(jì)143.5 鬧鈴功能的實(shí)現(xiàn)153.6程序174 設(shè)計(jì)總結(jié)38摘要單片機(jī)自20世紀(jì)70年代問世以來,以其,除了cpu外,使用lcd液晶顯示來進(jìn)行輸出顯示,使用stc89c52單片機(jī)進(jìn)行驅(qū)動。通過lcd能夠較為準(zhǔn)確地顯示時、分、秒。四個簡單的按鍵實(shí)現(xiàn)對時間的調(diào)整。軟件方面采用c語言編程。整個電子鐘系統(tǒng)能完成時間的顯示、調(diào)時、校時和三組定時鬧鐘的功能。選用單片機(jī)最小系統(tǒng)應(yīng)用程序,添加比較程序、時間調(diào)整程序及蜂鳴程序,通過時間比較程序觸發(fā)發(fā)蜂鳴,實(shí)現(xiàn)鬧鐘功能,完成設(shè)計(jì)所需求的軟件環(huán)境。介紹并使用keil單片機(jī)模擬調(diào)試軟件,測試程序
8、的可行性并用proteus進(jìn)行仿真。關(guān)鍵詞:單片機(jī),定時器,中斷,鬧鐘,lcdabstractbecause of its extremely high performance-price ratio, the single-chip computer (scc) has been paid great attention to ever since it came out in 1970s of 20th century, and has gained an extensive applicable field and fast development. among all kinds of
9、 sccs, 51 scc is the most typical and representative one.this design, adopting stc89c52 chip as the core part with some necessary peripheral circuits, is a simple electronic clock which uses 5v dc as the power supply. in hardware aspect, besides the cpu, eight seven-segment lcd digi-tubes are used f
10、or display, which work in a dynamically scanning display mode and driven by stc89c52chip. the lcds can accurately indicate hour 、 minute and second. four buttons can be used to adjust the time. while in the software aspect, the programming language is c language. the whole electronic clock system ha
11、s functions of time display, adjustment 、timing and three groups of alarm function. choose the smallest scm system applications,add comparison procedures, time to adjust procedures and faint buzzing procedures, through relatively faint buzzing trigger procedures to achieve alarm clock function, comp
12、leted the design needs of the software environment. keil introduced and the use of scm software simulation debugging, testing the feasibility and proteus by simulation.keyword: single slice machine,in fixed time machine,break off,alarm clock,lcd1 設(shè)計(jì)方案論證1.1 應(yīng)用近幾年,單片機(jī)在各個領(lǐng)域得到廣泛的應(yīng)用。從工業(yè)到人們的日常生活,大部分的科技產(chǎn)品都
13、是通過單片機(jī)來控制。在它問世之前,自動控制設(shè)備不能被廣泛的應(yīng)用,這是因?yàn)榭刂圃O(shè)備的體積龐大,耗電量大,價格昂貴。在第一臺微處理器成功研制不久,第一個單片機(jī)就問世了。因?yàn)槠湫∏傻捏w積,低功耗,以及高效的性能,單片機(jī)受到了大家的歡迎。今天,單片機(jī)成為了解決低復(fù)雜度,中等復(fù)雜度控制問題的傳統(tǒng)選擇。我們選擇的方法是單片機(jī)開發(fā)設(shè)計(jì)使用的傳統(tǒng)方法,通過本次設(shè)計(jì),可以了解整個單片機(jī)開發(fā)的流程。 利用stc89c52單片機(jī)結(jié)合七段顯示器完成的簡易的定時鬧鈴時鐘,干電路系統(tǒng)由秒信號發(fā)生器、“時、分、秒”計(jì)數(shù)器、譯碼器及顯示器、校時電路、鬧鐘電路組成。秒信號產(chǎn)生器是整個系統(tǒng)的時基信號,它直接決定計(jì)時系統(tǒng)的精度,一
14、般用石英晶體振蕩器加分頻器來實(shí)現(xiàn)。譯碼顯示電路將“時”、“分”、“秒”計(jì)數(shù)器的輸出送到七段顯示譯碼驅(qū)動器譯碼驅(qū)動,通過lcd液晶顯示屏顯示出來。鬧鐘電路是用比較器來比較計(jì)時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài),如果計(jì)時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個脈沖信號,再和一個高頻信號混合,送到放大電路驅(qū)動揚(yáng)聲器發(fā)聲,從而實(shí)現(xiàn)定時鬧響的功能。通過設(shè)置現(xiàn)在的時間及顯示鬧鈴設(shè)置時間,并在定時時間發(fā)出一陣聲響,可以進(jìn)步擴(kuò)充控制電器的啟停等。1.2 方案選擇用單片機(jī)來設(shè)計(jì)數(shù)字鐘,軟件實(shí)現(xiàn)各種功能比較方便,但因軟件的執(zhí)行需要一定的時間,所以就會出現(xiàn)誤差。因此我進(jìn)一步努力,通過對比實(shí)際的時鐘,查找出誤差的來源,并作出調(diào)
15、整,使得誤差盡可能減小,達(dá)到實(shí)際數(shù)字鐘系統(tǒng)的允許誤差范圍。在程序設(shè)計(jì)中,采用模塊化的程序設(shè)計(jì)思想,對整個設(shè)計(jì)劃分了若干個模塊,先對各個模塊分別進(jìn)行設(shè)計(jì),然后整合各個模塊,進(jìn)行仿真模擬,對出現(xiàn)的錯誤進(jìn)行分析,然后找出問題的所在,改進(jìn)程序,再仿真模擬,觀察結(jié)果、分析結(jié)果,直至最終結(jié)果滿足設(shè)置要求。電子鬧鐘應(yīng)包括秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。按鍵功能說明:k1,設(shè)置時間和鬧鐘的小時;k2,設(shè)置小時以及設(shè)置鬧鐘的開關(guān);k3,設(shè)置分鐘和鬧鐘的分鐘;k4;設(shè)置完成退出。1.3 總設(shè)計(jì)框圖及分析cpu按鈕電路復(fù)位、時鐘等電路電源系統(tǒng)鬧鈴聲指示電路液晶顯示器顯示電路
16、圖 1電子鬧鐘的主電路指的是圖中cpu線框內(nèi)部分,主要涉及到cpu電路和按鍵按鈕電路。主機(jī)的設(shè)計(jì)具體地說有:1)系統(tǒng)時鐘電路設(shè)計(jì);2)系統(tǒng)復(fù)位電路設(shè)計(jì);3)按鍵與按鈕電路設(shè)計(jì);4)鬧鈴聲指示電路設(shè)計(jì)。本設(shè)計(jì)是定時鬧鐘的設(shè)計(jì),由單片機(jī)stc89c52芯片和lcd顯示器為核心,輔以必要的電路,構(gòu)成的一個單片機(jī)電子定時鬧鐘。電子鐘設(shè)計(jì)可采用數(shù)字電路實(shí)現(xiàn),也可以采用單片機(jī)來完成。數(shù)字電子鐘是用數(shù)字集成電路構(gòu)成的,用數(shù)碼管顯示“時”,“分”,“秒”的現(xiàn)代計(jì)時裝置。若用數(shù)字電路完成,所設(shè)計(jì)的電路相當(dāng)復(fù)雜,大概需要十幾片數(shù)字集成塊,其功能也主要依賴于數(shù)字電路的各功能模塊的組合來實(shí)現(xiàn),焊接的過程比較復(fù)雜,成本
17、也非常高。若用單片機(jī)來設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過軟件編程來完成,那么就降低了硬件電路的復(fù)雜性,而且其成本也有所降低,所以在該設(shè)計(jì)中采用單片機(jī)利用stc89c52,它是低功耗、高性能的cmos型8位單片機(jī)。片內(nèi)帶有4kb的flash存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, stc89c52的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128b 的ram、32條i/o口線、2個16位定時計(jì)數(shù)器、5個中斷源、一個全雙工串行口等。stc89c52單片機(jī)結(jié)合七段顯示器設(shè)計(jì)的簡易定時鬧鈴時鐘,可以設(shè)置現(xiàn)在的時間及顯示鬧鈴設(shè)置時間,若時間到則發(fā)出一陣聲響,進(jìn)步可以擴(kuò)充控制電器的啟停。設(shè)計(jì)內(nèi)容
18、包括了秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分的設(shè)計(jì)。采用四個開關(guān)來控制定時鬧鐘的工作狀態(tài),分別為:k1、設(shè)置時間和鬧鐘的小時;k2、設(shè)置小時以及設(shè)置鬧鐘的開關(guān);k3、設(shè)置分鐘和鬧鐘的分鐘;k4、設(shè)置完成退出。設(shè)計(jì)完成的定時鬧鐘達(dá)到課程設(shè)計(jì)的要求,在到達(dá)到定時的時間時就會立即發(fā)出蜂鳴聲音,持續(xù)一分鐘。顯示采用的六位數(shù)碼管電路,如果亮度感覺不夠,可以通過提升電阻來調(diào)節(jié),控制程序中延遲時間的長短,可以獲得不同的效果。也可以改蜂鳴器為繼電器,通過控制繼電器從而進(jìn)一步擴(kuò)展的來控制一些家電開關(guān)。2 硬件電路設(shè)計(jì)2.1 系統(tǒng)時鐘電路設(shè)計(jì)對于時間要求不是很高的系統(tǒng),只要按圖進(jìn)行
19、設(shè)計(jì)就能使系統(tǒng)可靠起振并穩(wěn)定運(yùn)行。但由于原理圖中的c1、c2電容起著系統(tǒng)時鐘頻率微調(diào)和穩(wěn)定的作用,因此,在本鬧鐘系統(tǒng)的實(shí)際應(yīng)用中一定要注意正確選擇參數(shù)(30±10 pf),并保證對稱性(盡可能匹配),選用正牌廠家生產(chǎn)的瓷片或云母電容,如果可能的話,溫度系數(shù)要盡可能低。實(shí)驗(yàn)表明,這2個電容元件對鬧鐘的走時誤差有較大關(guān)系。2.2系統(tǒng)復(fù)位電路的設(shè)計(jì)智能系統(tǒng)一般應(yīng)有手動或上電復(fù)位電路。復(fù)位電路的實(shí)現(xiàn)通常有兩種方式:)rc復(fù)位電路;)專用µf監(jiān)控電路。前者實(shí)現(xiàn)簡單,成本低,但復(fù)位可靠性相對較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對于復(fù)位要求高、并對電源電壓進(jìn)行監(jiān)視的
20、場合,大多采用這種方式。2.3鬧鐘指示電路設(shè)計(jì)鬧鈴指示可以有聲或光兩種形式。本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器。蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,元件內(nèi)部已封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場上的有源蜂鳴器分為3、5、6等系列,以適應(yīng)不同的應(yīng)用需要。鬧鐘電路是用比較器來比較計(jì)時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài),如果計(jì)時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個脈沖信號,再和一個高頻信號混合,送到放大電路驅(qū)動揚(yáng)聲器發(fā)聲,從而實(shí)現(xiàn)定時鬧響的功能。其電路設(shè)計(jì)參見系統(tǒng)原理圖。2.4 電子鬧鐘的顯示電路設(shè)計(jì)本次課程設(shè)計(jì)采用了液晶顯示電路
21、。液晶顯示是一種被動式的顯示器,即液晶本身不發(fā)光,而是利用液晶處理后能夠改變光纖傳輸方向的特性,達(dá)到顯示字符或者圖形的目的。這類顯示器具有體積小、重量輕、功耗較低、顯示內(nèi)容豐富等特點(diǎn)。lcd顯示模塊把lcd顯示屏、背景光源、線路板和驅(qū)動集成電路等部件構(gòu)成一個整體,作為一個獨(dú)立部件使用,具有功能較強(qiáng)、易于控制、接口簡單等優(yōu)點(diǎn)。lcd顯示模塊按顯示功能可分為:lcd段式顯示模塊、lcd字符型顯示模塊、lcd圖形式顯示模塊三類,在本設(shè)計(jì)中將會采用字符型顯示模塊。lcd顯示器內(nèi)部共有14個引腳,包括:8個數(shù)據(jù)引腳,3個控制引腳,3個電源引腳。利用該顯示器來顯示“時”、“分”、“秒”計(jì)數(shù)器的輸出狀態(tài)。到
22、達(dá)定時電路時根據(jù)計(jì)時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實(shí)現(xiàn)鬧鈴。校時電路時用來對“時”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整的。2.5 仿真圖運(yùn)行仿真圖3 程序設(shè)計(jì)3.1 概述軟件設(shè)計(jì)的重點(diǎn)在于秒脈沖信號的產(chǎn)生、顯示的實(shí)現(xiàn)、以及按鍵的處理等方面?;谲浖拿朊}沖信號通常有延時法和定時中斷法。延時法一般采用查詢方式,在延時子程序前后必然需要查詢和處理的程序,導(dǎo)致誤差的產(chǎn)生,因此其秒脈沖的精度不高;中斷法的原理是,利用單片機(jī)內(nèi)部的定時器溢出中斷來實(shí)現(xiàn)。例如,設(shè)定某定時器每100ms中斷1次,則10次的周期為1s。這種實(shí)現(xiàn)法的特點(diǎn)是精度高,秒脈沖的發(fā)生和其他處理可以并行進(jìn)行。本系統(tǒng)中
23、所使用的晶振頻率為12mhz。3.2 主模塊的設(shè)計(jì)主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計(jì)一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構(gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。本系統(tǒng)的主模塊的程序框圖如下圖2所示:系統(tǒng)初始化定時初始化中斷初始化串口初始化顯示待機(jī)指示符設(shè)定鬧鈴時間判設(shè)置鬧鈴時間否?顯示刷新啟動走時有關(guān)變量初始化刷新顯示判時或分變化否?秒指示判秒到否?鬧鈴判是否到鬧鈴時間?延時yyyy圖 23.3 基本顯示模塊設(shè)計(jì)基本顯示模塊設(shè)計(jì)的重點(diǎn)是由顯示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,高精度的計(jì)時工具大多數(shù)都使用了石英晶體振蕩器,由
24、于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時時,譯碼代替機(jī)械式傳動,用lcd顯示器代替顯示器代替指針顯示進(jìn)而顯示時間,減小了計(jì)時誤差,這種表具有時,分,秒顯示時間的功能,還可以進(jìn)行時和分的校對,片選的靈活性好。程序流程如圖3所示將進(jìn)制時分秒數(shù)據(jù)轉(zhuǎn)化為顯示代碼 關(guān)顯示以免顯示抖動通過串口將時分秒數(shù)據(jù)傳入數(shù)碼管打開顯示圖 33.4 時間設(shè)定模塊設(shè)計(jì)時間設(shè)定模塊的設(shè)計(jì)要點(diǎn)是按鍵的去抖處理與“一鍵多態(tài)”的處理。即只涉及4個鍵完成了6位時間參數(shù)的設(shè)定。軟件法去抖動的實(shí)質(zhì)是軟件延時,即檢測到某一鍵狀態(tài)變化后延時一段時間,再檢測該按
25、鍵的狀態(tài)是否還保持著,如是則作為按鍵處理,否則,視為抖動,不予理睬。去抖中的延時時間一般參考資料多描述為10ms左右,實(shí)際應(yīng)用中,應(yīng)大于20ms,否則,會導(dǎo)致按一次作多次處理,影響程序正常執(zhí)行?!耙绘I多態(tài)”即多功能鍵的實(shí)現(xiàn)思想是,根據(jù)按鍵時刻的系統(tǒng)狀態(tài),決定按鍵采取何種動作,即何種功能。其流程圖如下圖4所示:設(shè)置鍵嗎?設(shè)置模塊初始化將在編參數(shù)送顯示緩沖區(qū)閃爍標(biāo)志為真?將當(dāng)前位的顯示代碼置暗代碼調(diào)基本顯示模塊刷新顯示設(shè)置鍵嗎?當(dāng)前編輯位下移(下一位)當(dāng)前編輯的是分各位?結(jié)束設(shè)定鍵嗎?根據(jù)當(dāng)前位的性質(zhì)分別進(jìn)行處理(含上下限判斷) 圖 43.5 鬧鈴功能的實(shí)現(xiàn)鬧鈴功能的實(shí)現(xiàn)涉及到兩個方面:鬧鈴時間設(shè)
26、定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時間設(shè)定模塊的設(shè)計(jì)可參照時間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計(jì)問題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時要進(jìn)行鬧鈴。當(dāng)時十位、時個位、分十位、分個位中任一位發(fā)生改變(進(jìn)位)時,就必須進(jìn)行鬧鈴判別。譯碼顯示電路將“時”、“分”、“秒”計(jì)數(shù)器的輸出送到七段顯示譯碼驅(qū)動器譯碼驅(qū)動,通過六個七段lcd顯示器顯示出來。鬧鈴電路根據(jù)計(jì)時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后加上一個高頻或低頻信號送到放大電路驅(qū)動蜂鳴器發(fā)聲實(shí)現(xiàn)報時。校時電路是直接加一個脈沖信號到時計(jì)數(shù)器或者分計(jì)數(shù)器或者秒計(jì)數(shù)器來對“時”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整。其流程圖如下所示:時十位、個
27、位,分十位、個位改變了設(shè)置鬧鈴標(biāo)志是否設(shè)置了鬧鈴清除鬧鈴標(biāo)志判當(dāng)前時間是設(shè)定時間中斷返回中斷返回鬧鈴判別處理圖5.1 圖5.2慮到實(shí)用性,在該電子鐘的設(shè)計(jì)中修改定時或調(diào)整時間時采用了閃爍,而且以定時20組鬧鐘。在編程上,首先進(jìn)行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲計(jì)數(shù)的秒,分,時以及定時時間的序號等。在顯示程序段中主要進(jìn)行了閃爍的處理,采用定時器中斷置標(biāo)志位,再與位選相互結(jié)合的方法來控制調(diào)時或定時中的閃爍。時,分,秒顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進(jìn)行進(jìn)制轉(zhuǎn)化。初始化之后,用中斷方式對其計(jì)數(shù),計(jì)數(shù)的同時采用了定時器比
28、較的方法,比較當(dāng)前計(jì)數(shù)時間與定時時間是否相等,若相等則將鬧鈴標(biāo)志位置數(shù)。由于定義了定時鬧鐘組,在這里采用中斷組次,每中斷一次比較一組鬧鐘,避免了一次比較中斷時間過長,影響下次中斷時間。顯示之后查詢鬧鈴標(biāo)志位是否與前面所置數(shù)相等,若相等則響鈴。為了避免響鈴影響顯示,采用了每顯示幾屏以后在顯示程序中出現(xiàn)脈沖,驅(qū)動喇叭,不會影響顯示。之后用查詢方式對按鍵進(jìn)行判斷,若有鍵按下,則進(jìn)行軟件延時消抖,避免了抖動引起的干擾,執(zhí)行相應(yīng)的定時,選時或調(diào)時程序段。對當(dāng)前時間或定時時間修改后又返回到最初的顯示程序段,如此循環(huán)下去。3.6程序*版本號01 */* 模塊構(gòu)成: */#include <reg51.
29、h>#include"hdy.h" #include"hs.c"#include"iap_ds1302.h" #include"lcd1602.h" #include"zd.h"#include"isp_52.h"/#include"szxt.h"#include"ajjc.h"#define bgsjcl 30 /背光時間#define xssjcl 100 /顯示時間#define jbjcyssj 2 /警報解除延時/定義端
30、口sbit fmqdk=p03; /鬧鐘端口sbit lcd_bg=p32; /背光/時間相關(guān)變量uchar mmzc=0; /秒暫存uchar nzsj42=0,0,0,0,0; /警戒時間bit bjsnbzw=0;char xlys_t=0;struct nzjg /定義結(jié)構(gòu)體鬧鐘數(shù)據(jù)結(jié)構(gòu) / 包含: uchar nzsj_ss; /鬧鐘時間_時 uchar nzsj_ff; /鬧鐘時間_分 uchar nzsnbz; /鬧鐘標(biāo)志 0:禁止 1:允許 uchar xlsj; /響鈴時間 ;struct nzjg nz1,nz2,nz3,nz4,nz5,nz6; /模式 菜單 相關(guān)變量 顯
31、示相關(guān)變量char msbz=0,xxbz=0; /模式標(biāo)志位,選項(xiàng)標(biāo)志位 bit xsgxbzw=0,xscshbzw=0,xssnbzw=1,bgsnbzw=1; /顯示更新標(biāo)志位,顯示初始化標(biāo)志位,char bgsj_t=bgsjcl,xssj_t=xssjcl; /顯示相關(guān) 顯示使能時間,背光使能時間/調(diào)試用變量int a_ts=50,b_ts=50,c_ts=0,d_ts=0,e_ts=0,f_ts=0;bit bzw_ts=0;/* * */* * */void csmk()/ ksdqsj(); / lcd1602xssz (2,0x1e,mm);/測試模塊/測試模塊/測試模塊/
32、測試模塊/測試模塊/測試模塊/測試模塊/測試模塊/測試模塊/* * */* * */設(shè)定基礎(chǔ)程序/功能加減設(shè)定/參數(shù)1:設(shè)定變量指針 uchar *sdbl/參數(shù)2:加上限 uchar shang/參數(shù)3:減下線 uchar xia/返回值:是否越界 char 上限越界:1 下線越界-1 否則:0uchar jjcl(uchar sdbl,uchar shang,uchar xia)char a=0; if(k1bzw=1) k1bzw=0; if(sdbl>=shang) (sdbl)+; sdbl=xia; a=1; else (sdbl)+; if(k2bzw=1) k2bzw=0
33、; if(sdbl<=xia) (sdbl)-; sdbl=shang; a=-1; else (sdbl)-; return sdbl;/時間設(shè)定void ajsd2()uchar sx,xx,*szbl; if(xxbz!=0) switch(xxbz) case 1:sx=99;xx=0;szbl=&nnn;break; case 2:sx=12;xx=1;szbl=&yyy;break; case 3:sx=31;xx=1;szbl=&rrr;break; case 4:sx=23;xx=0;szbl=&sss;break; case 5:sx=5
34、9;xx=0;szbl=&fff;break; case 6:sx=0 ;xx=0;szbl=&mmm;break; *szbl=jjcl(*szbl,sx,xx); /鬧鐘時間設(shè)定void ajsd3() / struct nzjg *nzzz; if(xxbz!=0) switch(msbz) case 2:nzzz=&nz1;break; case 3:nzzz=&nz2;break; case 4:nzzz=&nz3;break; case 5:nzzz=&nz4;break; case 6:nzzz=&nz5;break; ca
35、se 7:nzzz=&nz6;break; if(xxbz=1) nzzz->nzsj_ss=jjcl(nzzz->nzsj_ss,23,0); else if(xxbz=2) nzzz->nzsj_ff=jjcl(nzzz->nzsj_ff,59,0); else if(xxbz=3) nzzz->xlsj=jjcl(nzzz->xlsj,99,5); else if(xxbz=4) if(k2bzw=1)|(k1bzw=1) k2bzw=0; k1bzw=0; if(nzzz->nzsnbz=1) nzzz->nzsnbz=0; el
36、se nzzz->nzsnbz=1; /按鍵處理模塊void ajclmk() ajjc(); if(k0bzw=1)|(k1bzw=1)|(k2bzw=1)|(k3bzw=1) if(xssj_t=0) k0bzw=0; msbz=0; xsgxbzw=1; bgsj_t=bgsjcl; /使能顯示相關(guān)變量 xssj_t=xssjcl; if(k0bzw=1) k0bzw=0; xxbz=0; xscshbzw=0; / 標(biāo)記為未初始化 msbz+; if(msbz=8) msbz=0; if(k3bzw=1) k3bzw=0; xsgxbzw=1; xxbz+; if(msbz=1)
37、 if(xxbz=7) xxbz=0; ksxrsj(); ksdqsj(); msbz=0; xscshbzw=0; else if(msbz>1) if(xxbz=5) xxbz=0; msbz=0; xscshbzw=0; / iap_jjsjcc(); switch(msbz) case 1:ajsd2();break; /時間設(shè)定 case 2: case 3: case 4: case 5: case 6: case 7:ajsd3();break; /警戒設(shè)定 /* * */顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/
38、顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模塊/顯示模式0 時間顯示/顯示時間void xsms0() if(xscshbzw=0) xscshbzw=1; / 標(biāo)記為已初始化 lcd1602csh (); /lcd初始化 xsgxbzw=1; / 標(biāo)記為等待顯示 /顯示時間初屏 lcd1602xszfc(16,0x10," 2013-12-15 "); lcd1602xszfc(16,0x20," 18:16:20 "); if(xsgxbzw=1) xsgxbzw=0; lcd1
39、602xssz (2,0x14,nn); lcd1602xssz (2,0x17,yy); lcd1602xssz (2,0x1a,rr); lcd1602xssz (2,0x22,ss); lcd1602xssz (2,0x25,ff); lcd1602xssz (2,0x28,mm); if(nz1.nzsnbz=1)|(nz2.nzsnbz=1)|(nz3.nzsnbz=1)|(nz4.nzsnbz=1)|(nz5.nzsnbz=1)|(nz6.nzsnbz=1) lcd1602xszfc (2,0x2c,""); else lcd1602xszfc (2,0x2c,
40、" "); /顯示模式2 時間設(shè)定顯示void xsms2() if(xscshbzw=0) xscshbzw=1; / 標(biāo)記為已初始化 lcd1602csh (); /lcd初始化 xsgxbzw=1; / 標(biāo)記為等待顯示 /顯示時間初屏 lcd1602xszfc(16,0x10," 2013-12-15 "); lcd1602xszfc(16,0x20," 18:16:20 "); /載入設(shè)定值 nnn=nn;yyy=yy;rrr=rr;sss=ss;fff=ff;mmm=mm; if(xsgxbzw=1) xsgxbzw=0;
41、lcd1602xssz (2,0x14,nnn); lcd1602xssz (2,0x17,yyy); lcd1602xssz (2,0x1a,rrr); lcd1602xssz (2,0x22,sss); lcd1602xssz (2,0x25,fff); lcd1602xssz (2,0x28,mmm); switch(xxbz) case 0:lcd1602gbkz(lcd1602_ggb ,0x14);break; case 1:lcd1602gbkz(lcd1602_gbsd,0x15);break; case 2:lcd1602gbkz(lcd1602_gbsd,0x18);bre
42、ak; case 3:lcd1602gbkz(lcd1602_gbsd,0x1b);break; case 4:lcd1602gbkz(lcd1602_gbsd,0x23);break; case 5:lcd1602gbkz(lcd1602_gbsd,0x26);break; case 6:lcd1602gbkz(lcd1602_gbsd,0x29);break; /顯示模式3 鬧鐘時間設(shè)定顯示 void xsms3() struct nzjg *nzzz; uchar dz1=0; if(xscshbzw=0) xscshbzw=1; / 標(biāo)記為已初始化 lcd1602csh (); /lcd初始化 xsgxbzw=1; / 標(biāo)記為等待顯示 /鬧鐘時間設(shè)定初屏 lcd1602xszfc(16,0x20,"* 18:16 -s *"); lcd1602xszfc(16,0x10,"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 期刊發(fā)表與學(xué)術(shù)交流的技巧試題及答案
- 2025年臨床執(zhí)業(yè)醫(yī)師考試適應(yīng)性備考策略試題及答案
- 深化西醫(yī)臨床知識技能與試題及答案
- 深入理解母豬商品化過程的試題及答案
- 探討藥學(xué)專業(yè)的職業(yè)發(fā)展方向試題及答案
- 公共營養(yǎng)師考試的未來研究方向試題及答案
- 母豬護(hù)理過程中的人際溝通試題及答案
- 2025-2030中國甲基乙烯硅橡膠行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 2025-2030中國生物堿行業(yè)戰(zhàn)略規(guī)劃策略與市場深度評估研究報告
- 2025-2030中國甘氨酸市場競爭趨勢與未來發(fā)展運(yùn)行走勢分析研究報告
- 淺析新時代教育評價改革機(jī)制及實(shí)踐路徑
- 機(jī)械制圖綜合練習(xí)題
- 世界社會主義五百年
- 2019年自考《世界市場行情》模擬試題及答案
- 伊利經(jīng)銷商設(shè)立、變更、撤銷、評估管理及考核辦法
- 《中華人民共和國軍人地位和權(quán)益保障法》重點(diǎn)內(nèi)容學(xué)習(xí)PPT課件(帶內(nèi)容)
- LB/T 018-2011旅游飯店節(jié)能減排指引
- GB/T 5162-2021金屬粉末振實(shí)密度的測定
- GB/T 12755-2008建筑用壓型鋼板
- FZ/T 73020-2019針織休閑服裝
- 地測防治水各崗位工種標(biāo)準(zhǔn)化操作規(guī)范
評論
0/150
提交評論