基于STC89C52單片機的電子時鐘設計_第1頁
基于STC89C52單片機的電子時鐘設計_第2頁
基于STC89C52單片機的電子時鐘設計_第3頁
基于STC89C52單片機的電子時鐘設計_第4頁
基于STC89C52單片機的電子時鐘設計_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、陽泉職業(yè)技術學院畢畢業(yè)業(yè)設設計計論論文文基于 51 單片機的電子時鐘設計系 部: 信息系 專 業(yè): 電氣自動化班 級: 09 級一班學生姓名: 張瑞勇 學 號: 090723012 指導教師: 耿素軍 2012 年 5 月 6 日河南機電高等??茖W校摘要隨著單片機技術的飛速發(fā)展,在其推動下,現(xiàn)代的電子產(chǎn)品幾乎滲透到了社會的各個領域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進一步提高。時間就是金錢、時間就是生命、時間就是勝利,準確的掌握時間和分配時間對人們來說至關重要,時鐘是我們生活中必不可少的工具。電子鐘的設計方法有很多種,但是基于單片機并通過 LCD 顯示

2、的電子時鐘具有編程靈活、精確度高、便于攜帶、顯示直觀等特點。 利用 STC89C52 單片機對 DS1302 時鐘芯片進行讀寫操作并通過 1602 字符液晶顯示實時時鐘信息,這樣便構成了一個單片機電子時鐘。關鍵詞:單片機,電子時鐘,STC89C52 陽泉職業(yè)技術學院畢業(yè)論文ABSTRACTWith the rapid development of microcomputer technology in its promotion, modern electronics into almost all areas of society, a strong impetus to the devel

3、opment of social productive forces and social improvement in the level of information, but also to further improve the performance of modern electronic products.Time is a money, time is life, time is victory Accurate grasp of time and allocation of time is crucial to people, The clock is necessary i

4、n our life tools . Clock Design There are many ways, however, produced by single chip electronic clock is more flexible programming, and easy expansion of electronic capabilities, high accuracy, easy to carry, display visual and so on. In this paper, through the use of STC89C52 microcontroller by DS

5、1302 clock chips for reading and writing operation and through 1602 character liquid crystal display real-time clock information so that forming a single chip electronic clock. Key Words: Microcontroller,STC89C52,Electronic clock,陽泉職業(yè)技術學院畢業(yè)論文 目錄緒論.1概述.1研究目的.1第 1 章 設計要求與方案論證.21.1 設計要求.21.2 系統(tǒng)基本方案選擇和論

6、證.21.2.1 單片機芯片的選擇方案和論證.21.2.2 顯示模塊選擇方案和論證.21.2.3 時鐘芯片的選擇方案和論證.31.3 電路設計最終方案決定.3第 2 章 主要元件介紹.42.1 STC89C52 介紹.42.1.1 STC89C52 主要功能及 PDIP 封裝.42.1.2 STC89C52 引腳介紹.42.1.3 STC89C52 最小系統(tǒng).52.2 DS1302 時鐘芯片介紹.62.2.1 DS1302 概述.62.2.2 DS1302 引腳介紹.72.2.3 DS1302 使用方法.72. 3 1602 字符液晶介紹.92.3.1 1602 液晶概述.92.3.2 160

7、2 引腳介紹.102.3.3 1602 字符液晶使用方法.10第 3 章 系統(tǒng)硬件設計.133.1 電路設計框圖.133.2 系統(tǒng)硬件概述.13第 4 章 系統(tǒng)的軟件設計.144.1 程序概述.144.2 延時函數(shù).154.3 對 DS1302 讀寫操作函數(shù).154.3.1 向 DS1302 寫數(shù)據(jù).15陽泉職業(yè)技術學院畢業(yè)論文4.3.2 從 DS1302 讀數(shù)據(jù).164.4 顯示函數(shù).174.4.1 向 1602 液晶中寫一個指令.174.4.2 向液晶寫數(shù)據(jù).174.4.3 初使化 1602 液晶.174.4.4 如何在液晶上顯示時間、日期及周.184.5 按鍵函數(shù).194.5.1 12/

8、24 小時顯示模式切換鍵.214.5.2 功能鍵函數(shù).234.5.3 調(diào)整鍵函數(shù).254.5.4 確定鍵.314.6 主函數(shù).32總結(jié).34致謝.35參考文獻.36 陽泉職業(yè)技術學院專科學校- 1 -緒論概述時間,對人們來說是非常寶貴的,準確的掌握時間和分配時間對人們來說至關重要。因此自從時鐘發(fā)明的那刻起,就成為人類的好朋友。隨著時間的流逝,科學技術的不斷發(fā)展和提高,人們對時間計量的精度要求越來越高,應用越來越廣。怎樣讓時鐘更好、更方便、更精確的顯示時間,這就要求人們不斷設計研發(fā)出新型的時鐘。高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術,因此走時精度

9、高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校。數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用 LCD 顯示器代替指針進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎。在單片機的應用系統(tǒng)中,時鐘有兩個方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時器/計數(shù)器來實現(xiàn);二是用專門的時鐘芯片實現(xiàn)。研究目的

10、通過利用 STC89C52 單片機和 DS1302 芯片以及外圍的按鍵和 LCD 顯示器等部件,設計一個基于單片機的電子時鐘。設計的電子時鐘通過液晶顯示器顯示,并能通過按鍵對時間進行設置。 陽泉職業(yè)技術學院畢業(yè)論文- 2 -第 1 章 設計要求與方案論證1.1 設計要求 具有年、月、日、星期、時、分、秒顯示功能 具備年、月、日、星期、時、分、秒校準功能 具有 12/24 小時切換顯示功能 1.2 系統(tǒng)基本方案選擇和論證 1.2.1 單片機芯片的選擇方案和論證方案一: 采用 STC89C52 芯片作為硬件核心。STC89C52 內(nèi)部具有 8KB ROM 存儲空間,512 字節(jié)數(shù)據(jù)存儲空間,帶有

11、2K 字節(jié)的 EEPROM 存儲空間,與 MCS-51 系列單片機完全兼容,STC89C52 可以通過串口下載。方案二: 采用 AT89S52。AT89S52 片內(nèi)具有 8K 字節(jié)程序存儲空間,256 字節(jié)的數(shù)據(jù)存儲空間沒有 EEPROM 存儲空間,也與 MCS-51 系列單片機完全兼容,具有在線編程可擦除技術。兩種單片機都完全能夠滿足設計需要,STC89C52 相對 ATS89C52 價格便宜,且抗干擾能力強。考慮到成本因素,因此選用 STC89C52。1.2.2 顯示模塊選擇方案和論證方案一:采用點陣式數(shù)碼管顯示。點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,可用來顯示數(shù)。但體積較大,且價格也

12、相對較高,從便攜實用的角度出發(fā),不采用此種方案。方案二:采用 LED 數(shù)碼管動態(tài)掃描。LED 數(shù)碼管價格便宜,對于顯示數(shù)字最合適,但功耗較大,且顯示容量不夠,所以也不用此種方案。方案三:采用 LCD 液晶顯示屏。液晶顯示屏的顯示功能強大,可顯示大量文字,顯示多樣,清晰可見,且價格適中,所以采用了 LCD 數(shù)碼管作為顯示。陽泉職業(yè)技術學院畢業(yè)論文- 3 -1.2.3 時鐘芯片的選擇方案和論證方案一: 直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。方案二: 采用 DS1302

13、時鐘芯片實現(xiàn)時鐘,DS1302 芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,工作電壓 2.5V5.5V 范圍內(nèi),2.5V 時耗電小于 300nA.1.3 電路設計最終方案決定綜上各方案所述,對此次作品的方案選定: 采用 STC89C52 單片機作為主控制系統(tǒng);采用 DS1302 作為時鐘芯片;采用 1602 LCD 液晶作為顯示器件。 陽泉職業(yè)技術學院畢業(yè)論文- 4 -第 2 章 主要元件介紹2.1 STC89C52 介紹2.1.1 STC89C52 主要功能及 PDIP 封裝STC89C52 是由深圳宏晶科技公司生產(chǎn)的與工業(yè)標準 MCS

14、-51 指令集和輸出管腳相兼容的單片機。STC89C52 主要功能如表 2.1 所示,其 PDIP 封裝如圖 2.1所示主要功能特性兼容 MCS51 指令系統(tǒng)8K 可反復擦寫 Flash ROM32 個雙向 I/O 口256x8bit 內(nèi)部 RAM3 個 16 位可編程定時/計數(shù)器中斷時鐘頻率 0-24MHz2 個串行中斷可編程 UART 串行通道2 個外部中斷源共 6 個中斷源2 個讀寫中斷口線3 級加密位低功耗空閑和掉電模式軟件設置睡眠和喚醒功能表 2.1 STC89C52 主要功能2.1.2 STC89C52 引腳介紹 主電源引腳(2 根)VCC(Pin40):電源輸入,接5V 電源GN

15、D(Pin20):接地線外接晶振引腳(2 根)XTAL1(Pin19):片內(nèi)振蕩電路的輸入端XTAL2(Pin20):片內(nèi)振蕩電路的輸出端控制引腳(4 根)RST/VPP(Pin9):復位引腳,引腳上出現(xiàn) 2 個機器周期的高電平將使單片機復位。ALE/PROG(Pin30):地址鎖存允許信號PSEN(Pin29):外部存儲器讀選通信號EA/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令。可編程輸入/輸出引腳(32 根)STC89C52 單片機有 4 組 8 位的可編程 I/O 口,分別位 P0、P1、P2、P3 口,每陽泉職業(yè)

16、技術學院畢業(yè)論文- 5 -個口有 8 位(8 根引腳),共 32 根。P0 口(Pin39Pin32):8 位雙向 I/O 口線,名稱為 P0.0P0.7P1 口(Pin1Pin8):8 位準雙向 I/O 口線,名稱為 P1.0P1.7 P2 口(Pin21Pin28):8 位準雙向 I/O 口線,名稱為 P2.0P2.7 P3 口(Pin10Pin17):8 位準雙向 I/O 口線,名稱為 P3.0P3.7STC89C524039383435363727282930313233232425262221P1.01232019181716151413121110987654T0/P3.4INTO

17、/P3.2RXD/P3.0RSTVccSCK/P1.7MISO/P1.6MOSI/P1.5P1.4P1.3P1.2P1.1TXD/P3.1INTI/P3.3T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GNDP0.0(AD0)PSENALE/PROGEA/VppP0.1(AD1)P0.7(AD7)P0.6(AD6)P0.5(AD5)P0.4(AD4)P0.3(AD3)P0.2(AD2)P2.7(AD15)P2.6(AD14)P2.1(AD9)P2.2(AD10)P2.3(AD11)P2.4(AD12)P2.5(AD13)P2.0(AD8)圖 2.1 STC89C52 PDIP

18、封裝圖2.1.3 STC89C52 最小系統(tǒng) 最小系統(tǒng)是指能進行正常工作的最簡單電路。STC89C52 最小應用系統(tǒng)電路如圖 2.2 所示。它包含五個電路部分:電源電路、時鐘電路、復位電路、片內(nèi)外程序存儲器選擇電路、輸入/輸出接口電路。其中電源電路、時鐘電路、復位電路是 保證單片機系統(tǒng)能夠正常工作的最基本的三部分電路,缺一不可。電源電路 芯片引腳 VCC 一般接上直流穩(wěn)壓電源+5V,引腳 GND 接電源+5V 的負極,電源電壓范圍在 45.5 之間,可保證單片機系統(tǒng)能正常工作。為提高電路的抗干擾性能,通常在引角 Vcc 與 GND 之間接上一個 10uF 的電解電容和一個 0.1uF 陶片電容

19、,這樣可抑制雜波串擾,從而有效確保電路穩(wěn)定性。時鐘電路 單片機引腳 18 和引腳 19 外接晶振及電容, STC89C52 芯片的工作頻率可在 233MHz 范圍之間選,單片機工作頻率取決于晶振 XT 的頻率,通陽泉職業(yè)技術學院畢業(yè)論文- 6 -常選用 11.0592MHz 晶振。兩個小電容通常取值 3pF,以保證振蕩器電路的穩(wěn)定性及快速性。復位電路 一般若在引腳 RST 上保持 24 個工作主頻周期的高電平,單片機就可以完成復位,但為了保證系統(tǒng)可靠地復位,復位電路應使引腳 RST 保持10ms 以上的高電平。如圖復位電路帶有上電自動復位功能,當電路上電時,由于C1 電容兩端電壓值不能突變,電

20、源+5V 會通過電容向 RST 提供充電電流,因此在 RST 引腳上產(chǎn)生一高電平,使單片機進入復位狀態(tài)。隨著電容 C1 充電,它兩端電壓上升使得 RST 電位下降,最終使單片機退出復位狀態(tài)。正常運行時,可按復位按鈕對單片機復位E A/V P31X 119X 218R ES ET9R D17W R16IN T 012IN T 113T 014T 115P10/T1P11/T2P123P134P145P156P167P178T XD11P0039R XD10P0138P0237P0336V cc40P0435A LE /P30P0534PSE N29P0633P2728P0732P2627P202

21、1P2526P2122P2425P2223P2324G ND2080 52R 120 0R 210 K位位位位C 110 uFC 230 uFC 330 uFC 410 uFC 50.1u FX TG NDG NDV CC+5VV CC+5VG ND圖 2.2 STC89C52 最小系統(tǒng)2.2 DS1302 時鐘芯片介紹2.2.1 DS1302 概述DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗、帶 RAM 的實時時鐘芯片,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為 2.5V5.5V。采用雙電源供電(主電源和備用電源),同時提供了對后背電源進行

22、涓細電流充電的能力。采用三線接口與 CPU 進行同步通信陽泉職業(yè)技術學院畢業(yè)論文- 7 -DS1302Vcc1SCLKVcc2X1X2GNDCEI/O12765438圖 2.3 DS1302 封裝圖2.2.2 DS1302 引腳介紹各引腳功能為:Vcc: 主電源;Vcc2:備用電源。當 Vcc2Vcc1+0.2V 時,由 Vcc2 向DS1302 供電;當 Vcc2Vcc1 時,由 Vcc1 向 DS1302 供電。SCLK:串行時鐘輸入端,控制數(shù)據(jù)的輸入與輸出I/O: 三線接口時的雙向數(shù)據(jù)線 CE: 輸入信號,在讀、寫數(shù)據(jù)期間必須為高2.2.3 DS1302 使用方法(1) 時鐘芯片 DS1

23、302 的工作原理: DS1302 在每次進行讀、寫程序前都必須初始化,先把 SCLK 端置 “0”,接著把 RST 端置“1”,最后才給予 SCLK 脈沖;讀/寫時序如圖 5 所示。表 2 為DS1302 的控制字,此控制字的位 7 必須置 1,若為 0 則不能把對 DS1302 進行讀寫數(shù)據(jù)。對于位 6,若對程序進行讀/寫時 RAM=1,對時間進行讀/寫時,CK=0。位 1 至位 5 指操作單元的地址。位 0 是讀/寫操作位,進行讀操作時,該位為 1;該位為 0 則表示進行的是寫操作。控制字節(jié)總是從最低位開始輸入/輸出的。表 6為 DS1302 的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標

24、志位,當該位為 1 時,時鐘振蕩器停止,DS1302 處于低功耗狀態(tài);當該位為 0 時,時鐘開始運行?!癢P”是寫保護位,在任何的對時鐘和 RAM 的寫操作之前,WP 必須為 0。當“WP”為 1 時,寫保護位防止對任一寄存器的寫操作。(2) DS1302 的控制字節(jié)DS1302 的控制字如表所示??刂谱止?jié)最高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入 DS1302 中,位 6 為 0,表示存取日歷時鐘數(shù)據(jù),為 1 表示存取 RAM 數(shù)據(jù);位 5 至位 1 指示操作單元的地址;最低有效位(位陽泉職業(yè)技術學院畢業(yè)論文- 8 -0)如為 0 表示要進行寫操作,為 1 表示進行讀

25、操作,控制字節(jié)總是從最低位開始傳輸RAMRD1CKA4A3A2A1A0WR表 2.2 DS1302 控制字(3) 數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個 SCLK 時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位 0 開始。同樣,在緊跟 8 位的控制指令字后的下一個 SCLK 脈沖的下降沿讀出 DS1302 的數(shù)據(jù),讀出數(shù)據(jù)時從低位 0 位到高位 7。其讀寫時序如圖示圖 2.4 DS1302 讀寫時序(4)DS1302 寄存器DS1302 中與時間、日期有關的寄存器共有 12 個,其中 7 個存放數(shù)據(jù)的格式為 BCD 碼格式,其讀寫地址如下表所示讀寄存器寫寄存器Bit7Bi

26、t7Bit7Bit7Bit7Bit7Bit7Bit7范圍81H80HCH10 秒秒00-5983H82H10 分分00-5912100-2385H84H240AM/PM時時1-1287H86H10 日日1-31陽泉職業(yè)技術學院畢業(yè)論文- 9 -89H88H10 月月1-128BH8AH00000周1-78DH8CH10 年年00-998FH8EHWP0000000表 2.3 DS1302 時鐘寄存器第一行秒寄存器,CH 為時鐘暫停標志位,該位為 1 時時鐘停止,該位為 0時時鐘運行第二行分寄存器,bit0bit6 表示分鐘數(shù),因采用 BCD 編碼,所以低四位最大能表示的數(shù)字為 9,計數(shù)滿向高三

27、位進 1。第三行時寄存器,12/24 用來定義 DS1302 小時的運行模式,12 小時模式下bit5 為 1 表示 PM 下午,bit5 為 0 表示 AM 上午第八行控制寄存器,bit7 是寫保護位 WP,當 WP 為 1 時,寫保護位可防止對任一寄存器的寫操作,在任何的對時鐘和 RAM 的寫操作之前,WP 位必須為 0 此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與 RAM 相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302 與 RAM 相關的寄存器分為兩類:一類是單個RAM 單元,共 31 個,每個單元組態(tài)為一個

28、 8 位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的 RAM寄存器,此方式下可一次性讀寫所有的 RAM 的 31 個字節(jié),命令控制字為FEH(寫)、FFH(讀)。2. 3 1602 字符液晶介紹2.3.1 1602 液晶概述工業(yè)字符型液晶,1602 是指顯示的內(nèi)容為 16*2,能同時顯示兩行,每行 16個字符。常見的 1602 字符液晶有兩種,一種顯示綠色背光黑色字體,另一種顯示藍色背光白色字體,目前市面上絕大多數(shù)基于 HD44780 液晶芯片控制,原理是完全相同的。本課題所用 1602 液晶模塊,顯示屏是藍色背光白色字體。如圖 2.5所示陽泉職業(yè)技

29、術學院畢業(yè)論文- 10 - 12310987654111213141516GNDVCCVOD1D0ER/WRSD2D3D4D5D6D7BLABLKLCD1602圖 2.5 1602 字符液晶2.3.2 1602 引腳介紹編號符號引腳說明編號符號引腳說明1GND電源地2VCC電源正極3VO液晶顯示對比度調(diào)節(jié)端4RS數(shù)據(jù)/命令選擇端5R/W讀寫選擇6E使能信號7D0數(shù)據(jù)口8D1數(shù)據(jù)口9D2數(shù)據(jù)口10D3數(shù)據(jù)口11D4數(shù)據(jù)口12D5數(shù)據(jù)口13D6數(shù)據(jù)口14D7數(shù)據(jù)口15BLA背光電源正16BLK背光電源負表 2.4 1602 字符液晶引腳說明各個引腳具體功能說明:第 1 腳:GND 為地電源。第 2

30、 腳:VCC 接 5V 正電源。第 3 腳:VO 為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生重影,使用一個 1K 的電位器調(diào)整對比度。第 4 腳:RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器。第 5 腳:R/W 為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。第 6 腳:E 端為使能端,當 E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第 714 腳:DB0DB7 為 8 位雙向數(shù)據(jù)線。第 1516 腳:背光燈電源。陽泉職業(yè)技術學院畢業(yè)論文- 11 -2.3.3 1602 字符液晶使用方法(1)基本操作時序操作輸入輸出

31、讀狀態(tài)RSL,RWH,EHD0D7狀態(tài)字寫指令RSL,RWL,D0D7指令碼,E高脈沖無讀數(shù)據(jù)RSH,RWH,EHD0D7數(shù)據(jù)寫數(shù)據(jù)RSH,RWL,D0D7數(shù)據(jù),E高脈沖無表 2.5 1602 字符液晶讀寫狀態(tài)表圖 2.6 1602 液晶寫時序圖圖 2.7 1602 液晶讀時序圖(2)RAM陽泉職業(yè)技術學院畢業(yè)論文- 12 -1602 液晶控制器芯片內(nèi)部帶有 80 個 8 位的 RAM 緩沖區(qū),其地址和屏幕的對應關系如圖 2.8 示圖 2.8(3)1602 字符液晶字庫 1602 液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了 160 個不同的點陣字符圖形,如下表所示,這些字符有:阿拉伯

32、數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是 01000001B(41H),顯示時模塊把地址 41H 中的點陣字符圖形顯示出來,我們就能看到字母“A” 。 高位低位0000000 00010010 00010011 10100100 00100101 10110110 00110111 11011010 01011011 11101100 01101101 11111110 01111111 1XXXX0000XXXX00000P p- -PXXXX0001XXXX0001! !1AQa aqqXXXX0010XXXX0010

33、“2BRbrXXXX0011XXXX0011# #3CScsXXXX0100XXXX0100$ $4DTdt XXXX0101XXXX0101% %5EUeuoXXXX0110XXXX0110& &6FVfvXXXX0111XXXX01117GWgwXXXX1000XXXX1000( (8HXhxfXXXXX1001XXXX1001) )9IYiy-1y yXXXX1010XXXX1010* *:JZjz千千XXXX1011XXXX1011+ +;Kk萬萬XXXX1100XXXX1100, , N n陽泉職業(yè)技術學院畢業(yè)論文- 13 -XXXX1111XXXX1111/ /?O

34、-o表 2.6 1602 字符液晶字庫表第 3 章 系統(tǒng)硬件設計3.1 電路設計框圖 STC89C52鍵盤模塊LCD顯示模塊DS1302時鐘模塊圖 3.1 硬件框圖3.2 系統(tǒng)硬件概述本電路以 STC89C52 單片機為控制核心,以 STC89C52 最小系統(tǒng)為基礎。時鐘電路由高精度低功耗的 DS1302 提供,采用三線接口與 CPU 進行同步通信,輸入部分采用四個獨立式按鍵 S1、S2、S3、S4。1602 液晶顯示部分,D0D7 口與單片機 P0 口相連。具體線路連接,詳見附錄 1陽泉職業(yè)技術學院畢業(yè)論文- 14 -第 4 章 系統(tǒng)的軟件設計4.1 程序概述DS1302 時鐘芯片具有通電自

35、動計時的功能。向 DS1302 中寫入一個初值,如寫入 20110501 00:00:00 星期日,在通電時,時間就會自動走:過60 秒分加 1;過 60 分時加 1;過 24 小時天加 1,星期日變成星期一;一周有 7天,芯片內(nèi)的周信息每 7 天一循環(huán);芯片能夠自動判斷每月有多少天,5 月有 31天,31 天后,月加 1。采用 DS1302 時鐘芯片的單片機時鐘,其實質(zhì)就是讀取時鐘芯片內(nèi)的時鐘信息并把它顯示出來。只要時間初值正確,時鐘就能一直精準的走下去。調(diào)整時間日期,實質(zhì)就是向 DS1302 時鐘芯片重新寫入初值。電子時鐘的主程序框圖如圖 10 所示陽泉職業(yè)技術學院畢業(yè)論文- 15 -開始

36、初始化LCD及DS1302判斷設置鍵是否按下讀取DS1302中時間、日期顯示時間、日期進入調(diào)節(jié)模式將時間、日期寫入DS1302Y 調(diào)時 完成N圖 4.1 主程序框圖4.2 延時函數(shù)void delay(uint z) uint x,y;for(x=z;x0;x-)for(y=110;y0;y-); 由 for 循環(huán)構成的延時函數(shù),z 的取值為這個函數(shù)的延時 ms 數(shù),如 delay(200);大約延時 200ms. delay(500);大約延時 500ms。因下文多次用到,固在此先作說明。陽泉職業(yè)技術學院畢業(yè)論文- 16 -4.3 對 DS1302 讀寫操作函數(shù)在對 DS1302 時鐘芯片操

37、作前,應對其操作時序有所了解,參看前文 DS1302介紹。DS1302 采用串行方式與單片機進行通信,一個機器周期只能讀寫一個字節(jié)的一位,因此,在單片機與 DS1302 芯片間傳輸一字節(jié)(8 位)數(shù)據(jù),要分 8次進行,且先從低位開始傳輸。4.3.1 向 DS1302 寫數(shù)據(jù)/*寫數(shù)據(jù)字節(jié)子函數(shù)*/void write_1302_byte(uchar temp)/用來發(fā)送 8 位數(shù)據(jù)信息uchar i;for(i=0;i=1;/右移一位sck=1;/在 SCK 上升沿的時候字節(jié)寫入 DS1302/*1302 寫數(shù)據(jù)子函數(shù)*/void write_1302(uchar addd,uchar dat

38、)rst=0;_nop_();sck=0;_nop_();rst=1;_nop_();write_1302_byte(addd);/發(fā)送地址write_1302_byte(dat);/發(fā)送數(shù)據(jù)rst=0;陽泉職業(yè)技術學院畢業(yè)論文- 17 -4.3.2 從 DS1302 讀數(shù)據(jù)/*讀 DS1302 數(shù)據(jù)函數(shù)*/uchar read_1302(uchar add)/輸入地址 add,返回讀取的數(shù)據(jù)uchar i,temp=0 x00;rst=0;sck=0;rst=1;write_1302_byte(add);for(i=0;i=1;/右移一位sck=1;/sck 被置高,在其下一次變?yōu)?0 時,

39、數(shù)據(jù)被寫入rst=0;/以下為 DS1302 復位的穩(wěn)定時間sck=0;sck=1;sda=0;sda=1;return(temp);/將 temp 值返回4.4 顯示函數(shù)對 1602 進行操作前要對其進行初使化,初使化完成后它才能正常顯示。如果想在 1602 液晶的某一個位置顯示一個內(nèi)容,要先對其寫入一個指令:在什么地方顯示。然后再對其寫入一個數(shù)據(jù):要顯示什么內(nèi)容。對 1602 的液晶初使化,需要用寫入指令的方式完成。陽泉職業(yè)技術學院畢業(yè)論文- 18 -4.4.1 向 1602 液晶中寫一個指令void write_com(uchar com)lcdwr=0;/lcdwr 為讀寫控制端,lc

40、dwr=0,這里可不寫lcdrs=0; /液晶 rs 接口為 0 時,寫指令,rs 為 1 時寫數(shù)據(jù)P0=com; /將要寫的指令賦給 P0 口,delay(5); /由 1602 讀寫操作時序圖,先將指令賦給 P0 口,延時后將使能lcden=1; 端 lcden 置高,再延時一段時間,然后將 lcden 置低,這樣指令delay(5); 就寫入到 LCD 了lcden=0;4.4.2 向液晶寫數(shù)據(jù)void write_data(uchar date),與寫指令類似,這里 lcdrs 設為 1lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;

41、4.4.3 初使化 1602 液晶此函數(shù)首先對液晶進行初使化,使其處于待命狀態(tài),然后將時鐘框架顯示出來:年月日之間的“” ,時分秒之間的“:” ,還有世紀年的高兩位。void init_1602()uchar num;lcdwr=0;lcden=0;write_com(0 x38);/設置 LCD 為 16*2 顯示、5*7 點陣、8 位數(shù)據(jù)接口模式陽泉職業(yè)技術學院畢業(yè)論文- 19 -write_com(0 x0c);/開顯示、不顯示光標write_com(0 x06);/寫一個字符后,地址指針加 1write_com(0 x01);/顯示清 0write_com(0 x80);/將指針指向初

42、始位置for(num=0;num14;num+)/循環(huán)函數(shù),用于將 20 - - 寫入液晶write_data(tablenum);write_com(0 x80+0 x40+4);/將指針指向 1602 液晶的第二行,第四個字段for(num=0;num8;num+)/功能與上同,用于將 : : 寫入write_data(table1num);4.4.4 如何在液晶上顯示時間、日期及周DS1302 中的時間、日期等信息是以 BCD 碼的形式存放的,要先將從 1302中讀取的數(shù)據(jù)轉(zhuǎn)化成 10 進制,然后顯示在液晶上相應的位置。/*顯示時間、日期子函數(shù)*/void write_sfm(uchar

43、 add,uchar time)/用于在 1602 上顯示年、月、日、時、分、秒。 Add 為顯示位置,time 為要顯示的內(nèi)容uchar shi,ge;shi=time/16; /將從 DS1302 中讀取的 BCD 碼數(shù)據(jù)轉(zhuǎn)化成 10 進制個位和 10 ge=time%16; 進制十位write_com(add+0 x80);/定義顯示在液晶的什么位置write_data(0 x30+shi);/由 1602 液晶字庫可知,09 的數(shù)據(jù)碼分別對應0 x300 x39write_data(0 x30+ge);/初使化中設定了寫一個字符后,地址指針加 1,因此這里 不用重新光標定位/*顯示周子

44、函數(shù)*/void write_zhou(uchar time1),用于在 1602 上顯示周信息,與顯示 時間日期子函數(shù)類似uchar ge;ge=time1%16;/一周七天,因此只需個位write_com(0 x80+13);陽泉職業(yè)技術學院畢業(yè)論文- 20 -write_data(0 x30+ge);4.5 按鍵函數(shù)此電子時鐘共有 4 個按鍵,S1、S2、S3 與調(diào)時有關圖按鍵程序如圖 11,S4為 12 小時切換鍵S1 功能鍵:在 24 小時顯示模式下,該鍵被第一次按下后進入秒調(diào)整,液晶顯示器上的時間停止走動。模式,再次按下后進入分調(diào)整模式,接著是調(diào)時模式、調(diào)年模式、調(diào)月模式、調(diào)日模式

45、、調(diào)周模式,當?shù)诎舜伟聪略撴I后退出S2 調(diào)整鍵:在調(diào)整模式下,該鍵每按一次,相應時間或日期加 1S3 確定鍵:在調(diào)整模式下,該鍵被按下后,退出調(diào)整模式,并將調(diào)整后的時間、日期寫入 DS1302S4 顯示模式調(diào)整鍵 用于對時間的 12/24 小時模式的切換陽泉職業(yè)技術學院畢業(yè)論文- 21 -S1按鍵秒閃爍S1按鍵S1按鍵S1按鍵S1按鍵S1按鍵分閃爍時閃爍秒數(shù)據(jù)寫入DS1302周閃爍日閃爍月閃爍年閃爍S1按鍵S2按鍵秒調(diào)節(jié)分數(shù)據(jù)寫入DS1302時數(shù)據(jù)寫入DS1302年數(shù)據(jù)寫入DS1302月數(shù)據(jù)寫入DS1302日數(shù)據(jù)寫入DS1302S2按鍵分調(diào)節(jié)S2按鍵時調(diào)節(jié)S2按鍵年調(diào)節(jié)S2按鍵月調(diào)節(jié)S2按鍵日

46、調(diào)節(jié)S1按鍵周數(shù)據(jù)寫入DS1302S2按鍵周調(diào)節(jié)進入主程序S3 鍵 按 下時間、日期寫入DS1302圖 4.2 按鍵程序圖陽泉職業(yè)技術學院畢業(yè)論文- 22 -4.5.1 12/24 小時顯示模式切換鍵時鐘默認在 24 小時模式下運行,定義一個標志位 flag1。第一次按下切換鍵,把瞬時時間轉(zhuǎn)化成 12 小時制,令 flag1=1。并寫入 DS1302 芯片,此后 DS1302 芯片在 12 小時模式下運行。第二次按下切換鍵,即返回 24 小時顯示模式,令flag1=0,把瞬時時間轉(zhuǎn)化成 24 小時模式并寫入 DS1302 芯片。有關 DS1302 的時間寄存器存放形式參閱前文。如 24 小時模

47、式下的 22:00,存放的形式為 00100010。12 小時模式下的 22 點,也就是 10:00PM,存放形式為10110000,在切換的一瞬間,我們只需要把小時數(shù)據(jù) 0 xb0 寫入到 DS1302,這樣就能讓時鐘芯片在 12 小時模式下運行了。需要注意的是,12 小時模式下,只用到后 5 位來表示時間,第 6 位用來表示 AM 或 PM 信息,如果真接用 24 小時模式下的顯示方法是會出錯的,這里我們需要對時進行轉(zhuǎn)化。首先提取 AM/PM 信息,讓其顯示。然后提取其后 5 位時間,顯示時間。在主函數(shù)部分如果檢測到flag1=1,就進行轉(zhuǎn)換。12 轉(zhuǎn) 24 小進模式與其類似,不再贅述。i

48、f(s1num=0&s4=0)/ 設置鍵沒被按下,且 12/24 小時模式切換鍵被按下后delay(5);if(s4=0)s2num+;while(!s4);if(s2num=1)/24 小時切換成 12 小時int ge,shi;flag1=1;hour=read_1302(0 x85);ge=hour%16;shi=hour/16;if(shi=1&ge=1&ge=3&ge=6)x2=0;陽泉職業(yè)技術學院畢業(yè)論文- 28 -miao=x1+x2*16;write_sfm(10+0 x40,miao);write_com(0 x80+0 x40+11);if(

49、s1num=2)int x3,x4;x3=fen%16;x4=fen/16;x3+;if(x3=10)x3=0;x4+;if(x4=6)x4=0;fen=x3+x4*16;write_sfm(7+0 x40,fen);write_com(0 x80+0 x40+8);if(s1num=3)int x5,x6;x5=hour%16;x6=hour/16;x5+; if(x6=2&x5=4)x5=0;x6=0;hour=0;if(x5=10)陽泉職業(yè)技術學院畢業(yè)論文- 29 -x5=0;x6+;hour=x5+x6*16;write_sfm(4+0 x40,hour);write_com(

50、0 x80+0 x40+5);if(s1num=4)int x7,x8;x7=nian%16;x8=nian/16;x7+;if(x7=10)x7=0;x8+;if(x8=8)x8=1;nian=x7+x8*16;write_sfm(3,nian);write_com(0 x80+4);if(s1num=5)int x5,x6;x5=yue%16;x6=yue/16;x5+;if(x6=1&x5=3)x5=1;x6=0;陽泉職業(yè)技術學院畢業(yè)論文- 30 -if(x5=10)x5=0;x6+;yue=x5+x6*16;write_sfm(6,yue);write_com(0 x80+7)

51、;if(s1num=6)/此條判斷每月天數(shù),包括平年閏年int x5,x6,ge2,shi2,mon,ge1,shi1,year,leap;x5=ri%16;x6=ri/16;x5+; nian=read_1302(0 x8d);/讀取年數(shù)據(jù)ge1=nian%16;shi1=nian/16;year=ge1+shi1*10;if(year%4=0)/判斷是否為閏年leap=1;else leap=0;yue=read_1302(0 x89); /讀取月數(shù)據(jù)ge2=yue%16;shi2=yue/16;mon=ge2+shi2*10; if(mon=2&leap=0)/平年 2 月,28

52、 天 if(x6=2&x5=9)x5=1;x6=0;if(x5=10)陽泉職業(yè)技術學院畢業(yè)論文- 31 -x5=0;x6+; if(mon=2&leap=1)/閏年 2 月,29 天if(x5=10)x5=0;x6+;if(x6=3)x5=1;x6=0;if(mon=4|mon=6|mon=9|mon=11)/4、6、9、11 月 30 天 if(x6=3&x5=1)x5=1;x6=0;if(x5=10)x5=0;x6+; else /1、3、5、7、8、10、12 月 31 天 if(x6=3&x5=2)x5=1;x6=0;陽泉職業(yè)技術學院畢業(yè)論文- 32 -

53、if(x5=10)x5=0;x6+; ri=x5+x6*16;write_sfm(9,ri);write_com(0 x80+10);if(s1num=7)zhou+;if(zhou=8)zhou=1;write_zhou(zhou);write_com(0 x80+13);4.5.4 確定鍵在調(diào)時模式下,按下確寫鍵后,把調(diào)好的時間寫入 DS1302 時鐘芯片并退出調(diào)整模式,時鐘顯示暫停標志位清 0,時鐘繼續(xù)計時。if(s3= =0)/如果確定鍵按下delay(5); if(s3=0) /延時并重新檢測 S3 是否按下,用于差小誤差陽泉職業(yè)技術學院畢業(yè)論文- 33 -while(!s3);/在

54、松手時將調(diào)整后的時間、日期及周信息寫入write_1302(0 x8e,0 x00);/ DS1302,退出調(diào)整模式,按鍵數(shù)清 0 write_1302(0 x80,miao); write_1302(0 x84,hour);write_1302(0 x82,fen);write_1302(0 x8a,zhou);write_1302(0 x8c,nian);/年write_1302(0 x88,yue);/月write_1302(0 x86,ri);write_1302(0 x8e,0 x80)flag=0; write_com(0 x0c);s1num=0;4.6 主函數(shù)void main() int ap;init_1602();/inital_1302();while(1)keyscan();if(flag=0)miao=read_1302(0 x81);fen=read_1302(0 x83);hour=read_1302(0 x85);if(flag1=1)/flag1=1 時 ,在 12 模式下顯

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論