基于單片機設計LCD顯示電子時鐘
《基于單片機設計LCD顯示電子時鐘》由會員分享,可在線閱讀,更多相關《基于單片機設計LCD顯示電子時鐘(44頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、基于單片機設計LCD顯示電子時鐘 西安高新科技職業(yè)學院 畢 業(yè) 設 計(論文) 課題名稱 基于單片機設計LCD顯示電子時鐘 年 級 系 別 專 業(yè) 班 級 姓 名 學號 指導教師 西安高新科技職業(yè)學院畢業(yè)設計(論文)成績評議
2、 年級 08級 系別 計科系 專業(yè) 應用電子 姓名 王偉華 題目 基于單片機設計LCD顯示電子時鐘 指導教師評閱意見 成績評定: 指導教師: 年 月 日 評閱教師意見 指導教師: 年 月 日 答辯小組意見 指導教師:
3、 年 月 日 畢業(yè)設計(論文)任務書 本任務書下達給:姓名年級系專業(yè) 設計題目: 2.重點研究的問題及原始資料及依據(jù)(包括設計或論文的工作基礎、研究條件、應用環(huán)境等) 設計適用于各種辦公場合、家庭生活以及各種需要顯示時間的地方。 重點研究問題包括: 1 、對單片機外圍電路的熟悉。 2 、時間可調(diào)節(jié),并且時間精準無誤 3 、要求盡可能考慮周到,比
4、如:1602液晶的顯示,溫度范圍,受濕受潮;斷電后時間是否保持等等。 3.主要參考資料、文獻,其他要說明的問題 下達任務日期: 年 月 日 要求完成日期: 年 月 日 答辯日期: 年 月 日 指導教師:論文(設計)題目 學生姓名 專業(yè)班級 指導教師 畢業(yè)論文指
5、導記錄畢業(yè)論文答辯記錄(注明答辯過程摘要、結(jié)果及日期)中文摘要 本設計使用11.0592MHZ晶振與單片機AT89C52相連接,以AT89C52芯片為核心,采用1602的并行操作方式顯示,通過使用該單片機,實現(xiàn)把時間顯示在1602液晶上,并且按秒實時更新??梢酝ㄟ^板子上的按鍵隨時調(diào)節(jié)時鐘的年、月、日、星期、時、分、秒,按鍵設計3個有效按鍵,分別有功能選擇鍵、數(shù)數(shù)值增大鍵、數(shù)值減小鍵。在每次的按鍵按下時,蜂鳴器有“滴”的提示聲。再利用AT24C02設計實現(xiàn)斷電自動保護顯示數(shù)字的功能,當下次上電時會接著上次上電前的時間繼續(xù)運行。通過軟硬件結(jié)合達到最終目的。 關鍵詞:
6、 電子鐘 單片機 1602液晶 C語言 目 錄 第一章 引言 1 第二章 方案設計 3 第三章 硬件設計 4 (一) 89C52單片機的內(nèi)部結(jié)構 4 (二) 89C52單片機的引腳功能 5 (三) 89C52單片機的模塊設計 9 1.單片機與P0口排阻......................................................................................................9 2. USB供電電路部分........
7、............................................................................................10 3. 復位電路....................................................................................................................10 4. 顯示模塊設計....................................................
8、........................................................11 5.晶振電路部分..............................................................................................................16 6. 蜂鳴器電路..............................................................................................
9、..................17 7. 矩正鍵盤電路............................................................................................................17 第四章 系統(tǒng)軟件設計 19 (一) 軟件程序流程 19 (二) 程序設計步驟 19 (三) 程序設計的主要模塊 20 第五章 設計總結(jié) 29 參考文獻 30 致謝 31 第一章 引言 單片微型計算機簡稱單片機,是典型的嵌入式(Microcontroller
10、 Unit),常用英文字母的縮寫MCU表示單片機,它最早是被用在工業(yè)控制領域。單片機由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來。最早的設計理念是通過將大量外圍設備和CPU集成在一個芯片中,使計算機系統(tǒng)更小,更容易集成進復雜的而對體積要求嚴格的控制設備當中。INTEL的Z80是最早按照這種思想設計出的處理器,從此以后,單片機和專用處理器的發(fā)展便分道揚鑣。 早期的單片機都是8位或4位的。其中最成功的是INTEL的8031,因為簡單可靠而性能不錯獲得了很大的好評。此后在8031上發(fā)展出了MCS51系列單片機系統(tǒng)?;谶@一系統(tǒng)的單片機系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領域要求的提高,開始出現(xiàn)了
11、16位單片機,但因為性價比不理想并未得到很廣泛的應用。90年代后隨著消費電子產(chǎn)品大發(fā)展,單片機技術得到了巨大提高。隨著INTEL i960系列特別是后來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,并且進入主流市場。而傳統(tǒng)的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。目前,高端的32位單片機主頻已經(jīng)超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。當代單片機系統(tǒng)已經(jīng)不再只在裸機環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單
12、片機甚至可以直接使用專用的Windows和Linux操作系統(tǒng)。 單片機比專用處理器更適合應用于嵌入式系統(tǒng),因此它得到了最多的應用。事實上單片機是世界上數(shù)量最多的計算機?,F(xiàn)代人類生活中所用的幾乎每件電子和機械產(chǎn)品中都會集成有單片機。手機、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標等電腦配件中都配有1-2部單片機。而個人電腦中也會有為數(shù)不少的單片機在工作。汽車上一般配備40多部單片機,復雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百臺單片機在同時工作!單片機的數(shù)量不僅遠超過PC機和其他計算的總和,甚至比人類的數(shù)量還要多。 單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個
13、計算機系統(tǒng)集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結(jié)構的最佳選擇。 單片機內(nèi)部也用和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可......用它來做一些控制電器一類不是很復雜的工作足矣了。我們現(xiàn)在用的全自動滾筒洗衣機、排煙罩、VCD等等的家電里面都可以看到它的身影!......它主要是作
14、為控制部分的核心部件。 它是一種在線式實時控制計算機,在線式就是現(xiàn)場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區(qū)別。 單片機芯片 單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用美國50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結(jié)果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現(xiàn)
15、高智能,高效率,以及高可靠性! 第章方案設計 實現(xiàn)的方案較多,目前廣泛采用的是基于,本設計將介紹基于單片機實現(xiàn)的方案。 單片機系統(tǒng)方案此方案采用電路++晶振電路+復位電路+AT89C52+1602液晶 第三章 硬件設計 (一)80C52單片機的內(nèi)部結(jié)構 圖3-1為80C52單片機功能結(jié)構框圖 80C52 芯片內(nèi)部集成了 CPU、RAM、ROM、定時/計數(shù)器和I/O口等各功能部件,并由內(nèi)部總線把這些連接在一起。 80C52單片機內(nèi)部包含以下一些功能部件: 1 一個8位CPU; 2 一個片內(nèi)振蕩器和時鐘電路; 3 4KB ROM; 4
16、128B內(nèi)RAM; 5 可尋址64KB的外ROM和外RAM控制電路; 6 三個16位定時/計數(shù)器; 7 21個特許功能寄存器; 8 4個8位并行I/O口,共32條可編程I/O端線; 9 一個可編程全雙工串行口; 10 5個中斷源,可設置成2個優(yōu)先級。 外時鐘源 外部事件計 中斷 控制 并 行 口 串行通信 圖3-1 80C52單片機功能結(jié)構框
17、圖 (二) 80C52單片機的引腳功能 89C52單片機一般采用雙列直插DIP封裝,共40個引腳,圖3-2分別為引腳排列圖和邏輯符號圖。40個引腳大致可分為4類:電源、時鐘、控制和I/O引腳。 圖3-2 80C52引腳圖 1.電源 1 Vcc――芯片電源,接+5V; 2 Vss――接地端。 2.時鐘 XTAL1、XTAL2――晶體振蕩電路反相輸入端和輸出端。使用內(nèi)部振蕩電路時外接石英晶體。 3.控制線 控制線共有4根,其中3根是復用線。所謂復用線是指具有兩種功能,
18、正常使用時是一種功能,在某種條件下是另一種功能。 1 ALE/PROG――地址鎖存允許/片內(nèi)EPROM編程脈沖。 ①ALE功能:用來鎖存P0口送出的低8位地址。 80C52在并行擴展外存儲器(包括并行擴展I/O口)時,P0口用于分時傳送低8位地址和數(shù)據(jù)信號,且均為二進制數(shù)。那么如何區(qū)分是低8位地址還是8位數(shù)據(jù)信號呢?當ALE信號有效時,P0口傳送的是低8位地址信號;ALE信號無效時,P0口傳送的是8位數(shù)據(jù)信號。在ALE信號的下降沿,鎖定P0口傳送的內(nèi)容,即低8位地址信號。 需要指出的是,當CPU不執(zhí)行訪問外RAM指令(MOVX)時,ALE以時鐘振蕩頻率1 /
19、 6的固定頻率輸出,因此ALE信號也可作為外部芯片CLK時鐘或其他需要。但是,當CPU執(zhí)行MOVX指令時,ALE將跳過一個ALE脈沖。 ALE端可驅(qū)動8個LSTTL門電路。 ②PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 2 PSEN――外ROM讀選通信號。 80C51讀外ROM時,沒個機器周期內(nèi)PSEN兩次有效輸出。PSEN可作為外ROM芯片輸出允許OE的選通信號。在讀內(nèi)ROM或讀外RAM時,PSEN無效。 PSEN可驅(qū)動8個LSTTL門電路。 3 RST/Vpd――復位/備用電源。
20、 ①正常工作時,RST(Reset)端為復位信號輸入端,只要在該引腳上連續(xù)保持兩個機器周期以上高電平,80C52芯片即實現(xiàn)復位操作,復位后一切從頭開始,CPU從0000H開始執(zhí)行指令。 ②Vpd功能:在Vcc掉電情況下,該引腳可接上備用電源,由Vpd向片內(nèi)供電,以保持片內(nèi)RAM中的數(shù)據(jù)不丟失。 4 EA/Vpp ――內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 ①EA功能:正常工作時,EA為內(nèi)外ROM選擇端。80C52單片機ROM尋址范圍為64KB,其中4KB在片內(nèi),60KB在片外(80C31芯片無內(nèi)ROM,全部在片外)。當EA保持高電平時,先訪問內(nèi)ROM,但當P
21、C(程序計數(shù)器)值超過4KB(0FFFH)時,將自動轉(zhuǎn)向執(zhí)行外ROM中的程序。當EA保持低電平時,則只訪問外ROM,不管芯片內(nèi)有否內(nèi)ROM。對80C31芯片,片內(nèi)無ROM,因此EA必須接地。 ②Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳用于施加編程電源Vpp。 對4個控制引腳,應熟記起第一功能,了解其第二功能。 嚴格來講,80C52的控制線還應該包括P3口的第二功能。 4. I/O引腳 80C52共有4個8位并行I/O端口,共32個引腳 1 P0口――8位雙向I/O口。 在不并行擴展外存儲器 包括并行擴展I/O口 時,
22、P0口可用作雙向I/O口。 在并行擴展外存儲器 包括并行擴展I/O口 時, P0口可用于分時傳送低8位地址 地址總線 和8位數(shù)據(jù)信號 數(shù)據(jù)總線 。位結(jié)構如圖3-3所示。P0口能驅(qū)動8個LSTTL門。 圖3-3 P0口位結(jié)構 2 P1口――8位準雙向I/O口 “準雙向”是指該口內(nèi)部有固定的上拉電阻 。位結(jié)構如圖3-4所示。 P1口能驅(qū)動為4個LSTTL門。 圖 3-4 P1口位結(jié)構 3 P2口――8位準雙向I/O口。在不并行擴展外存儲器 包括并行擴展I/O口 時, P2口可用作雙向I/O口。在并行擴展外存儲器 包括并行擴展I/O口 時, P2口可用于傳送高8位
23、地址 屬地址總線 。P2口能驅(qū)動4個LSTTL門。P2口的位結(jié)構如圖3-5所示,引腳上拉電阻同P1口。在結(jié)構上,P2口比P1口多一個輸出控制部分。 圖 3-5 P2口位結(jié)構 4 P3口――8位準雙向I/O口。 可作一般I/O口用,同時P3口每一引腳還具有第二功能,用于特殊信號輸入輸出和控制信號 屬控制總線 。P3口驅(qū)動能力為4個LSTTL門。 圖 3-6 P3口位結(jié)構 P3口第二功能如下: P3.0――RXD:串行口輸入端; P3.1――TXD:串行口輸出端;
24、 P3.2――INT0:外部中斷0請求輸入端; P3.3――INT1:外部中斷1請求輸入端 P3.4――T0:定時/計數(shù)器0外部信號輸入端; P3.5――T1:定時/計數(shù)器1外部信號輸入端; P3.6――WR:外RAM寫選通信號輸出端; P3.7――RD:外RAM讀選通信號輸出端。 上述4個I/O口,各有各的用途。 在不并行擴展外存儲器 包括并行擴展I/O口 時, 4個I/O口都可作為雙向I/O口用。在并行擴展外存儲器 包括并行擴展I/O口 時, P0口專用于分時傳送低8位地址信號和8位數(shù)據(jù)信號,P2口專用
25、于傳送高8位地址信號。P3口根據(jù)需要常用于第二功能,真正可提供給用戶使用的I/O口是P1口和一部分未用作第二功能的P3口端線。 (三)模塊設計 1.單片機與P0口排阻 ,本設計主要的硬件80C52以及上拉電阻連接線路圖。 2.USB供電電路部分 ,從外部引入5V的直流電,按下S1可以為單片機、復位電路提供電源。 3. 復位電路 ,復位電路主要由型號為10UF/16V的電解電容,10K,1K的電阻以及按鍵S22構成,RST接芯片的相應引腳RST,構成上電復位和手動復位。上電復位是經(jīng)過電容和10K的電阻上電以后就進行復位。手動復位是當開關S22按下時給引腳RST為高電平1,
26、斷開時引腳為低電平0。 4. 顯示模塊設計 (1) LCD顯示模塊 LCD顯示器分為字段顯示和字符顯示兩種。其中字段顯示與LED顯示相似,只要送對應的信號到相應的管腳就能顯示。字符顯示是根據(jù)需要顯示基本字符。本設計采用的是字符型顯示。 系統(tǒng)中采用LCD1602作為顯示器件輸出信息與傳統(tǒng)的LED數(shù)碼管顯示器件相比,液晶示模塊具有體積小、功耗低、顯示內(nèi)容豐富等優(yōu)點,而且不需要外加驅(qū)動電路,現(xiàn)在液晶顯示模塊已經(jīng)是單片機應用設計中最常用的顯示器件了。LCD1602可以顯示2行16個漢字。 LCD1602模塊的引腳如圖所示,其引腳功能如下: RS:數(shù)據(jù)和指令選擇控制端,RS 0命令狀態(tài);
27、RS 1數(shù)據(jù) R/W:讀寫控制線,R/W 0寫操作;R/W 1讀操作 A:背光控制正電源 K:背光控制地 E:數(shù)據(jù)讀寫操作控制位,E線向LCD模塊發(fā)送一個脈沖,LCD模塊與單片機間將進行一次數(shù)據(jù)交換 DB0~DB7:數(shù)據(jù)線,可以用8位連接,也可以只用高4位連接,節(jié)約單片機資源。 VDD:電源端 VEE:亮度控制端(1-5V) VSS:接地端 圖LCD1602模塊 LCD1602的顯示操作 四種基本操作 LCD有四種基本操作具 LCD與單片機之間有四種基本操作RS R/W 操作 0 0 寫命令操作 初始化,光標定位等 0 1 讀
28、狀態(tài)操作 讀忙標志位 1 0 寫數(shù)據(jù)操作 要顯示內(nèi)容 1 1 讀數(shù)據(jù)操作 可以把顯示存儲區(qū)中的數(shù)據(jù)反讀出來 1 讀狀態(tài)字 執(zhí)行讀狀態(tài)字操作,如表3-1滿足RS 0,R/W 1。根據(jù)管腳功能,當為有效電平時,狀態(tài)命令字可從LCD模塊傳輸?shù)綌?shù)據(jù)總線。同時可以保持一段時間,從而實現(xiàn)讀狀態(tài)字的功能。讀狀態(tài)字流.1所示。 .1 讀入狀態(tài)字流程圖 2 命令字 .2所示為命令字,其主要介紹了指令名稱、控制信號及控制代碼。其指令名稱是指要實現(xiàn)的功能;控制代號是采用的十六進制的數(shù)值表示的。 1清零操作是指輸入某命令字后即能將整個屏幕顯示的內(nèi)容全部清除; 2歸home位:將光標送到初始
29、位;其中的*號為任意,高低電平均可; 3輸入方式:設光標移動方向并指定整體顯示,是否移動。I/D 0:減量方式,S 1:移位方式,S 0:不移位; 4顯示狀態(tài):D指設置整體顯示開關;C指設置光標顯示開關;B指設置光標的字符閃耀; 5光標畫面滾動:R/L指右移或左移;S/C指移動總體或光標; 6功能設置:DL接口數(shù)位,L指顯示行數(shù),F(xiàn)顯示字型;如DL 1:8位 0,4位N 1:2行 0:1行G 1:510 0:57 點陣 7CGRAM地址設制:相當于一個數(shù)據(jù)庫,可以在其中選擇所需要的符號; 8DDRAM地址設制:顯示定位; 9讀BF和AC:B為最高位忙的標志,F(xiàn)為標志位; 10
30、寫數(shù)據(jù):將數(shù)據(jù)按要求寫入到對應的單元; 11讀數(shù)據(jù):讀相應單元內(nèi)的數(shù)據(jù);.2 命令字 3 寫命令字 .2可知當RS 0,R/W 0時,才可以通過單片機或用戶指令把數(shù)據(jù)寫到LCD模塊,此時就對LCD進行調(diào)制??刹捎貌樵兎绞剑合茸x入狀態(tài)字,再判斷忙標志位,最后寫命令字。.3所示為寫命令字的流程圖。 .3 寫命令字流程圖 1定義光標位置 顯示數(shù)據(jù)的某位,就是把顯示數(shù)據(jù)寫在相應的DDRAM地址中,DDRAM地址占7位。SetDDRAM address命.4所示。光標定位,寫入一個顯示字符后,DDRAM地址會自動加1或減1,加或減由輸入方式設置。.4 Set DDRAM address命令
31、 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 第1行DDRAM地址與第2行DDRAM地址并不連.4.4 DDRAM地址 row 1 2 3 4 5 … 14 15 16 line1 80H 81H 82H 83H 84H … 8dH 8eH 8fH line2 0c0H 0c1H 0c2H 0c3H 0c4H … 0cdH 0ceH 0cfH 2LCD初始化 從通電開始延時,先經(jīng)過判忙后再進行功能設置,過一段時間后可以設制顯示狀態(tài)(如設制行、位或陣列)再經(jīng)過延時清屏后才可以設置
32、輸入方式,具體實現(xiàn)過.5所示。 .5 LCD初始化流程圖 LCD顯示程序的設計一般先要確定LCD的初始化、光標定位、確定顯示字符后,.6顯示。 .6 LCD顯示程序流程圖 單片機工作的時間基準是由時鐘電路提供的,在單片機的XTAL1和XYAL2兩個管腳接一只晶振及兩只電容就構成了單片機的時鐘電路,電路中電容器和對振蕩頻率有微調(diào)作用,通常取 3010 pF石英晶體選擇6MH或12MHMHz只是為計算串口通信的波特率精準)都可以。時鐘電路如圖所示 ,在單片機的FM管腳接
33、蜂鳴器電路,電路中 ,分別連接單片機的對應口,本設計中的時鐘調(diào)節(jié)只用到了S9,S13,S17來調(diào)節(jié)時鐘進行時鐘的調(diào)節(jié)。(注:調(diào)節(jié)時,如果調(diào)節(jié)按鍵不起作用,就是下載的USB口拔掉方可調(diào)節(jié),因為那是鍵盤接口和下載口連接電路有沖突。) 第四章 系統(tǒng)軟件設計 (一)軟件程序流程 根據(jù)需要,可將系統(tǒng)軟件按照功能劃分為4個模塊,分別是主程序模塊、液晶顯示模塊、中斷服務程序模塊,各模塊的功能關系如圖4-1所示。編寫系統(tǒng)軟件時,可首先編寫各模塊的底層驅(qū)動程序,而后是系統(tǒng)聯(lián)機調(diào)試,編寫上層主程序。 圖41 結(jié)合電路,程序的總體思路是: 1、點復位鍵后,進行
34、時間顯示,從0時0分0秒開始。 2、按下功能鍵時,進行功能選擇,此時按下時,光標閃爍,并且每次按下都伴隨著“滴”的一聲,同時按下功能鍵四次就會重新走時,下同。 3、按下增大鍵時進行增大調(diào)整,每次按下伴隨蜂鳴器響。 4、按減小鍵時進行減小調(diào)整,同樣,每次按下時也伴隨著蜂鳴器響。 (二)程序設計步驟 在程序設計過程中,我遇到了很多困難,這部分也是讓我學到很多東西的地方。 首先,我學習了定時器的相關知識,計數(shù)器的使用是很重要的組成部分,在這個設計中選擇計數(shù)器T0。T0的工作方式有: 方式0:不推薦 方式1:16位計數(shù)器,常用 方式2:自動重裝初值的8位定時/計數(shù)器 方式3:T0相
35、當于兩個獨立的8位定時/計數(shù)器 此程序采用方式1,方式1的定時時間t為t 216-M *12/fosc。其中M為定時器初值,fosc為12MHz(本設計用的11.0592MHz),若M0 t 65536*12/2*106 65.536ms。因此可取50ms為計時單位,初值M應為50*10-3*106 216-M。M 15536 1XXXXXXXXXX000 3CB0。即定時器初值為 TH0 65536-50000 /256;TL0 65536-50000 %256;定時器中斷20次為一秒,這部分在中斷程序中用到。 其次,我參看了文獻中的設計思路,做到胸有成竹后再進行具體的程序書寫工
36、作。認真學習了教科書中關于C語言編程的問題,熟悉了C語言的編程方法和語法習慣。 第三步就是進行具體的程序編寫工作。 (三)程序的主要模塊 1.延遲程序 在液晶顯示時,必然用到延遲程序,這里使用延遲50ms的程序,此程序需要反復調(diào)用。此段程序是很簡單的,但就是在這段簡單的程序上,也會出現(xiàn)問題。 void delay uint xms uint i,j; for i xms;i 0;i-- for j 110;j 0;j-- ; 2. 1602液晶讀寫程序 void write_com uchar com rs 0; lcden
37、0; P0 com; delay 5 ; lcden 1; delay 5 ; lcden 0; void write_date uchar date rs 1; lcden 0; P0 date; delay 5 ; lcden 1; delay 5 ; lcden 0; void write_shifenmiao uchar add,uchar date uchar shi,ge; shi date/10; ge date%10; write_com 0x80+0
38、x40+add ; write_date 0x30+shi ; write_date 0x30+ge ; 3. 初始化程序 void init uchar num; rd 0; dula 0; wela 0; lcden 0; shi 0; fen 0; miao 0; count 0; s1num 0; init_24c02 ; write_com 0x38 ; write_com 0x0c ; write_com 0x06 ; write_com 0x01 ; write_com 0x
39、80 ; for num 0;num 15;num++ write_date table[num] ; delay 5 ; write_com 0x80+0x40+6 ; write_date : ; delay 5 ; write_com 0x80+0x40+9 ; write_date : ; delay 5 ; shi read_add 3 ; fen read_add 2 ; miao read_add 1 ; write_shifenmiao 4,shi ; write_shif
40、enmiao 7,fen ; write_shifenmiao 10,miao ; TMOD 0x01; TH0 65536-50000 /256; TL0 65536-50000 %256; EA 1; ET0 1; TR0 1; 4.按鍵掃描程序 void keyscan if s1 0 delay 5 ; if s1 0 s1num++; while !s1 ; di ; if s1num 1
41、 TR0 0; write_com 0x80+0x40+10 ; write_com 0x0f ;//光標閃爍 if s1num 2 write_com 0x80+0x40+7 ; if s1num 3 write_com 0x80+0x40+4 ; if s1num 4 s1num 0;
42、 write_com 0x0c ; TR0 1; ///// ///////////////////////////// if s1num! 0 if s2 0 delay 5 ; if s2 0 while !s2 ; di ; if s1num 1 miao++; if miao 60 miao
43、0; write_shifenmiao 10,miao ; write_com 0x80+0x40+10 ; write_add 1,miao ; if s1num 2 fen++; if fen 60 fen 0; write_shifenmiao 7,fen ; write_com 0x80+0x40+7 ; write_add 2,fen ;
44、 if s1num 3 shi++; if shi 24 shi 0; write_shifenmiao 4,shi ;; write_com 0x80+0x40+4 ; write_add 3,shi ; //////////////////////////////////// // if s1num! 0 if s3 0
45、 delay 5 ; if s3 0 while !s3 ; di ; if s1num 1 miao--; if miao -1 miao 59; write_shifenmiao 10,miao ; write_com 0x80+0x40+10 ;
46、 write_add 1,miao ; if s1num 2 fen--; if fen -1 fen 59; write_shifenmiao 7,fen ; write_com 0x80+0x40+7 ; write_add 2,fen ; if s1num 3
47、 shi--; if shi -1 shi 23; write_shifenmiao 4,shi ; write_com 0x80+0x40+4 ; write_add 3,shi ; 5.主程序 void main init ; while 1 keyscan ; 6.定時器中斷程序
48、 void timer0 interrupt 1 TH0 65536-50000 /256; TL0 65536-50000 %256; count++; if count 20 count 0; miao++; if miao 60 miao 0; fen++; if fen 60 fen 0; shi++; if shi 24 shi 0; write_a
49、dd 3,shi ; write_shifenmiao 4,shi ; write_add 2,fen ; write_shifenmiao 7,fen ; write_add 1,miao ; write_shifenmiao 10,miao ; 7. 2c402.h的EEPROM的操作函數(shù)程序 #include"24c02.h" ////////////////////////////////////////////////
50、////////////////////////// ///////////////////////////////////////////////////////////////// bit write 0; sbit sda P2^0; sbit scl P2^1; void delay0 ;; void start sda 1; delay0 ; scl 1; delay0 ; sda 0; delay0 ; void stop sda 0; delay0 ; scl 1; delay0
51、 ; sda 1; delay0 ; void respons uchar i; scl 1; delay0 ; while sda 1 && i 250 i++; scl 0; delay0 ; void init_24c02 sda 1; delay0 ; scl 1; delay0 ; void write_byte uchar date uchar temp,i; temp date; for i 0;i 8;i++ temp temp 1
52、; scl 0; delay0 ; sda CY; delay0 ; scl 1; delay0 ; scl 0; delay0 ; sda 1; delay0 ; uchar read_byte uchar k,i; scl 0; delay0 ; sda 1; delay0 ; for i 0;i 8;i++ scl 1; delay0 ; k k 1 |sda; sc
53、l 0; delay0 ; return k; void write_add uchar adress,uchar date start ; write_byte 0xa0 ; respons ; write_byte adress ; respons ; write_byte date ; respons ; stop ; char read_add uchar adress uchar date; start ; write_byte 0x
54、a0 ; respons ; start ; write_byte adress ; respons ; start ; write_byte 0xa1 ; respons ; date read_byte ; stop ; return date ; //20C02*/ ///////////////////////////////// 第五章 設計總結(jié) 本設計能夠很準確的走時,并能夠通過硬件對時鐘進行時間調(diào)整。附件都給予明確的顯示。 功能介紹: 顯示 第一行: X(分別顯示 .星期)第二行:XX:
55、XX:XX(分別顯示 ) 2.時間可調(diào):功能鍵(S9)按下時,伴隨著蜂鳴器“滴”的響聲,當按鍵松開時蜂鳴器才不再發(fā)出聲音。增大鍵(S13)按下時,光標閃爍的位置進行增大,蜂鳴器的工作如同功能鍵的按下時的工作。繼續(xù)按下減小鍵(S17)按下時,光標閃爍的位置進行減小,蜂鳴器的工作如同功能鍵的按下時的工作。當功能鍵按下四次,返回到正常顯示狀態(tài)。 下載線和電源線插接說明:本實驗都采用兩個USB進行下載操作以及電源的供電操作,下載采用STC_ISP_V3.1軟件進行下載。 調(diào)試要點:首先確保板子上各器件的完好性,檢查無誤后插上AT89S52并燒寫本程序的“電子時鐘.hex”,根據(jù)顯示現(xiàn)象調(diào)
56、試程序直至成功。上電運行時,1602LCD液晶開始顯示00:00:00,時鐘開始走時。 制作心得:在這次課程設計的調(diào)試過程中,我遇到很多問題,但是經(jīng)過自己以及老師,朋友的幫助下調(diào)試好自己的程序。該電路缺少整點報時及鬧鐘功能,由于能力和時間問題只能到此為止,很是遺憾,但在查找資料的過程中學到了許多,同時在協(xié)作過程中增進同學間的友誼。 參考文獻(References): [1] 張毅剛.新編MCS―51單片機應用設計.哈爾濱工業(yè)大學出版社.2003 [2] 譚浩強.C程序設計 .清華大學出版社.1991 [3] 郭天祥.新概念51單片機C語言教程 .電子工業(yè)出版社.2009.1 [4]
57、 楊欣等.電子設計從零開始[M] .清華大學出版社.2005-10 [5] 邱關源.電路[M] .高等教育出版社.2003-2 致 謝 首先感謝我的論文指導老師趙鵬老師,我的論文是在他的悉心指導下完成的。趙老師嚴謹細致、一絲不茍的作風一直是我工作、學習中的榜樣,他循循善誘的教導和不拘一格的思路給予我無盡的啟迪。 其次我要感謝我的系主任白世昌老師,在我求學的三年期間,無論是在學習還是在生活上,白老師和趙老師都給了我無微不至的關心。他們正直樂觀的人格魅力一直感染著我,這必將激勵我在今后的工作和生活中不斷前進。 再次我要感謝一直陪同我走完大學三年求學之路的應用電子班所有的兄弟姐妹們,謝
58、謝他們平時對我無微不至的照顧和關心。我很高興能生活在一個互助友愛和充滿活力的集體中,從他們的身上我學到了很多,同時他們給我的大學生活留下了許多美好的回憶。 最后,我要特別感謝我的父母。在我求學的過程中他們付出的不僅僅是辛勤的勞動和汗水,而是世界上最崇高、最偉大的愛。他們所做的一切是我這一生都無法回報的。 真誠感謝給予我熱情幫助和關注的所有人。 附件1 實驗板顯示時鐘 附件2 時鐘調(diào)節(jié)顯示狀態(tài) 15
59、 16 26 振蕩器及 時序 OSC 8052CPU 程序存儲器4KB ROM 數(shù)據(jù)存儲器256B 3個16位定時器/計數(shù)器 64K總線擴展控制器 可編程I/O 可編程全雙工串行口 VCC 地址/數(shù)據(jù) 控制 鎖存器 P
60、0.X D CP Q Q MUX V1 V2 P0.X 引腳 讀鎖存器 寫鎖存器 內(nèi)部總線 讀引腳 & 1 VCC 鎖存器 P1.X D CP Q Q P1.X 引腳 讀鎖存器 寫鎖存器 內(nèi)部總線 讀引腳 內(nèi)部上拉電阻 鎖存器 P2.X D CP Q Q 讀鎖存器 寫鎖存器 內(nèi)部總線 讀引腳 VCC P2.X 引腳 內(nèi)部上拉電阻 1 地址 控制 MUX VSS VDD VO RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K LCD 模 塊 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 系統(tǒng)主程序 液晶管顯示 24C02自動保護程序護程序 中斷服務 .
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。