畢業(yè)設(shè)計(jì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用.doc

上傳人:good****022 文檔編號(hào):116532684 上傳時(shí)間:2022-07-05 格式:DOC 頁數(shù):46 大小:1.11MB
收藏 版權(quán)申訴 舉報(bào) 下載
畢業(yè)設(shè)計(jì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用.doc_第1頁
第1頁 / 共46頁
畢業(yè)設(shè)計(jì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用.doc_第2頁
第2頁 / 共46頁
畢業(yè)設(shè)計(jì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用.doc_第3頁
第3頁 / 共46頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《畢業(yè)設(shè)計(jì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計(jì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用.doc(46頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、摘 要 I 摘摘 要要 隨著科技的快速發(fā)展,時(shí)間的流逝,從觀太陽、擺鐘到現(xiàn)在電子鐘,人類 不斷研究,不斷創(chuàng)新紀(jì)錄。萬年歷具有讀取方便、顯示直觀、功能多樣、電路 簡潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場 前景。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時(shí)顯示年、月、日、 星期、時(shí)、分、秒信息,還具有時(shí)間校準(zhǔn)等功能。 本系統(tǒng)以 STC89C52RC 單片機(jī)為核心,結(jié)合液晶模塊 LCD1602、專用時(shí)鐘芯 片 DS1302 等電路構(gòu)成。時(shí)鐘由美國 DALLAS 公司推出的具有涓細(xì)電流充電能的 低功耗實(shí)時(shí)時(shí)鐘電路 DS1302 實(shí)現(xiàn),它可以對年、月、日、星期、時(shí)、分、秒進(jìn)

2、 行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且 DS1302 的使用壽命長,誤差小。用 LCD1602 液晶顯示日歷、時(shí)鐘,直觀且顯示信息豐富;用四個(gè)鍵盤實(shí)現(xiàn)時(shí)鐘正常 顯示、調(diào)時(shí)及鬧鐘時(shí)間設(shè)置。本系統(tǒng)設(shè)計(jì)大部分功能由軟件來實(shí)現(xiàn),使電路簡 單明了,系統(tǒng)穩(wěn)定性也得到大大的提高。 關(guān)鍵詞關(guān)鍵詞:電子日歷 單片機(jī) STC89C52RC DS1302 目 錄 III 目目 錄錄 摘摘 要要I 第一章第一章 緒論緒論.1 1.1 引言.1 1.2 設(shè)計(jì)的難點(diǎn)和可能出現(xiàn)的問題.1 1.2.1 設(shè)計(jì)難點(diǎn).1 1.2.2 可能出現(xiàn)的問題.1 1.3 本設(shè)計(jì)應(yīng)達(dá)到的要求1 第二章第二章 總體方案設(shè)計(jì)總體方案設(shè)計(jì).3 2

3、.1 電子日歷設(shè)計(jì)方案論證3 2.1.1 單片機(jī)芯片的選擇方案論證.3 2.1.2 顯示模塊的選擇方案和論證.3 2.1.3 時(shí)鐘芯片的選擇方案和論證.3 2.2 系統(tǒng)框圖4 第三章第三章 單元硬件設(shè)計(jì)與分析單元硬件設(shè)計(jì)與分析.5 3.1 單片機(jī)模塊設(shè)計(jì)5 3.1.1 單片機(jī)的選型.5 3.1.2 單片機(jī)最小系統(tǒng)6 3.2 日歷模塊電路設(shè)計(jì).8 3.3 顯示模塊設(shè)計(jì)10 3.3.1 顯示器的選型10 3.3.2 LCD1602 引腳10 3.3.3 LCD1602 與單片機(jī)接口電路設(shè)計(jì)11 3.4 鍵盤電路設(shè)計(jì)11 3.5 鬧鈴模塊設(shè)計(jì)12 第四章第四章 系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì).13 4.1

4、 主程序設(shè)計(jì)13 4.2 顯示程序設(shè)計(jì)13 4.3 按鍵掃描子程序設(shè)計(jì)14 4.4 DS1302 日期時(shí)間數(shù)據(jù)讀取顯示設(shè)計(jì)14 第五章第五章 軟硬件調(diào)試軟硬件調(diào)試.17 5.1 硬件測試17 5.2 軟件測試17 5.3 測試結(jié)果分析與結(jié)論17 5.3.1 測試結(jié)果分析.17 5.3.2 測試結(jié)論17 第六章第六章 總結(jié)與展望總結(jié)與展望.19 6.1 總結(jié)19 6.2 展望19 目 錄 致致 謝謝.21 參考文獻(xiàn)參考文獻(xiàn).23 附錄附錄 1 元器件明細(xì)表元器件明細(xì)表.25 附錄附錄 2 程序清單程序清單26 第一章 緒論 1 第一章第一章 緒論緒論 1.1 引言引言 隨著社會(huì)的不斷發(fā)展及人們生

5、活水平的不斷提高,單片機(jī)控制已經(jīng)越來越 普及,它已經(jīng)成為人們生活中必不可少的工具之一,它已經(jīng)普及到我們生活, 工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù), 其中電子日歷就是一 個(gè)典型的例子。 本設(shè)計(jì)采用 STC89C52RC 單片機(jī)作為電子日歷的控制模塊。單片機(jī)可把由 DS1302 中的數(shù)據(jù)利用軟件來進(jìn)行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,日歷和鬧 鈴的顯示。以 LCD 液晶顯示器為顯示模塊,把單片機(jī)傳來的的數(shù)據(jù)顯示出來, 并且顯示多樣化,在顯示電路中,主要靠鍵盤來實(shí)現(xiàn)各種顯示要求的選擇與切 換。 1.2 設(shè)計(jì)設(shè)計(jì)的的難難點(diǎn)和可能出點(diǎn)和可能出現(xiàn)現(xiàn)的的問題問題 1.2.1 設(shè)計(jì)難設(shè)計(jì)難點(diǎn)點(diǎn) (

6、1)LCD 顯示模塊的設(shè)計(jì) (2)鬧鈴設(shè)計(jì)模塊的實(shí)現(xiàn)設(shè)計(jì) (3)單片機(jī)個(gè)功能模塊的綜合設(shè)計(jì) (4)電路總體設(shè)計(jì),元器件選擇及焊接,調(diào)試 1.2.2 可能出可能出現(xiàn)現(xiàn)的的問題問題 (1)LCD 顯示模塊的功能顯示不正常 (2)鬧鈴設(shè)計(jì)與其他時(shí)間功能設(shè)計(jì)沖突 (3)軟件程序設(shè)計(jì)功能不完善,系統(tǒng)無法正常運(yùn)轉(zhuǎn) 1.3 本本設(shè)計(jì)應(yīng)設(shè)計(jì)應(yīng)達(dá)到的要求達(dá)到的要求 本課題以單片機(jī)為主控制器,采用專用日歷時(shí)鐘芯片或單片機(jī)內(nèi)部定時(shí)器 產(chǎn)生時(shí)鐘信號(hào),實(shí)現(xiàn)年、月、日、時(shí)、分、秒計(jì)數(shù),并通過適當(dāng)?shù)姆绞斤@示出 來,達(dá)到以下要求: 1能顯示實(shí)時(shí)時(shí)鐘、日歷; 2允許誤差:10 秒/天; 3可以通過按鍵設(shè)置(調(diào)整)時(shí)鐘; 4顯示

7、模式:數(shù)碼管或液晶顯示; 第二章 總體方案設(shè)計(jì) 3 第二章第二章 總體方案設(shè)計(jì)總體方案設(shè)計(jì) 2.1 電電子日子日歷設(shè)計(jì)歷設(shè)計(jì)方案方案論證論證 2.1.1 單單片機(jī)芯片的片機(jī)芯片的選擇選擇方案方案論證論證 方案一: 采用 89C51 芯片作為硬件核心,采用 Flash ROM,內(nèi)部具有 4KB ROM 存儲(chǔ) 空間,能于 3V 的超低壓工作,而且與 MCS-51 系列單片機(jī)完全兼容,但是運(yùn)用于電 路設(shè)計(jì)中時(shí)由于不具備 ISP 在線編程技術(shù), 當(dāng)在對電路進(jìn)行調(diào)試時(shí),由于程序 的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),對芯片的多次拔插會(huì)對芯片 造成一定的損壞。 方案二: 采用 STC89C52RC,

8、片內(nèi) ROM 全都采用 Flash ROM,能以 3V 的超底壓工作, 同時(shí)也與 MCS-51 系列單片機(jī)完全該芯片內(nèi)部存儲(chǔ)器為 8KB ROM 存儲(chǔ)空間,同樣 具有 89C51 的功能,且具有在線編程可擦除技術(shù),當(dāng)在對電路進(jìn)行調(diào)試時(shí),由 于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獙?dǎo)入程序時(shí),不需要對芯片多次拔 插,所以不會(huì)對芯片造成損壞,所以選擇采用 STC89C52RC 作為主控制系統(tǒng)。 2.1.2 顯顯示模示模塊塊的的選擇選擇方案和方案和論證論證 方案一: 采用 LED 數(shù)碼管動(dòng)態(tài)掃描,LED 數(shù)碼管價(jià)格適中,對于顯示數(shù)字合適,采用動(dòng) 態(tài)掃描法與單片機(jī)連接時(shí),雖然占用的單片機(jī)口線少,但連線還

9、需要花費(fèi)一點(diǎn)時(shí) 間,所以也不用此種作為顯示。 方案二: 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成, 對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對較高,所以 也不用此種作為顯示。 方案三: 采用 LCD1602 液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖 形,顯示多樣,清晰可見,與單片機(jī)連接方便,所以在此設(shè)計(jì)中采用 LCD1602 液 晶顯示屏。 2.1.3 時(shí)鐘時(shí)鐘芯片的芯片的選擇選擇方案和方案和論證論證 方案一: 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、 時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,

10、但是,實(shí)現(xiàn) 的時(shí)間誤差較大,所以不采用此方案。 方案二: 采用 DS1302 時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302 芯片是一種高性能的時(shí)鐘芯片,可 自動(dòng)對秒、分、時(shí)、日、周、月、年進(jìn)行計(jì)數(shù),而且精度高,位的 RAM 做為數(shù)據(jù) 暫存區(qū),工作電壓 2.5V5.5V 范圍內(nèi),2.5V 時(shí)耗電小于 300nA。 2.2 系系統(tǒng)統(tǒng)框框圖圖 電子日歷電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖 2-1 所示,控制電路采用單片機(jī) STC89C52RC,時(shí)鐘電路采用 DS1302,用 LCD1602 液晶顯示實(shí)現(xiàn)時(shí)鐘顯示,鬧鈴 模塊采用電磁式蜂鳴器驅(qū)動(dòng)。 單片機(jī)模塊 STC89C52RC 日歷模塊 鍵盤模塊 鬧鈴模塊 顯示模塊 圖

11、2-1 總體設(shè)計(jì)方框圖 第三章 單元硬件設(shè)計(jì)與分析 5 第三章第三章 單元硬件設(shè)計(jì)與分析單元硬件設(shè)計(jì)與分析 整個(gè)電子時(shí)鐘系統(tǒng)電路可分為五部分:單片機(jī)模塊 STC89C52RC、顯示模 塊、日歷模塊、鍵盤顯示、鬧鈴模塊。 3.1 單單片機(jī)模片機(jī)模塊設(shè)計(jì)塊設(shè)計(jì) 3.1.1 單單片機(jī)的片機(jī)的選選型型 根據(jù)第二章單片機(jī)芯片的選擇方案論證,選擇采用 STC89C52RC 作為主控 制系統(tǒng),STC89C52RC 引腳如圖 3-1 所示。 圖3-1 STC89C52RC各引腳圖 (1)VCC:STC89C52RC電源正端輸入,接 +5V。 (2)VSS:電源地端。 (3)XTAL1:單芯片系統(tǒng)時(shí)鐘的反相放大

12、器輸入端。 (4)XTAL0:系統(tǒng)時(shí)鐘的反相放大器輸出端,一般在設(shè)計(jì)上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動(dòng)作了,此外可以在 兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾 而死機(jī)。 (5)RESET:STC89C52RC 的重置引腳,高電平動(dòng)作,當(dāng)要對晶片重置時(shí), 只要對此引腳電平提升至高電平并保持兩個(gè)機(jī)器周期以上的時(shí)間, STC89C52RC 便能完成系統(tǒng)重置的各項(xiàng)動(dòng)作,使得內(nèi)部特殊功能寄存器之內(nèi)容 均被設(shè)成已知狀態(tài),并且至地址 0000H 處開始讀入程序代碼而執(zhí)行程序。 (6)EA/Vpp:“EA“為英文“External Acc

13、ess“的縮寫,表示存取外部程 序代碼之意,低電平動(dòng)作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會(huì)取用外部 的程序代碼(存于外部 EPROM 中)來執(zhí)行程序。因此在 8031 及 8032 中, EA 引腳必須接低電平,因?yàn)槠鋬?nèi)部無程序存儲(chǔ)器空間。如果是使用 8751 內(nèi)部程序空間時(shí),此引腳要接成高電平。此外,在將程序代碼燒錄至8751 內(nèi)部 EPROM 時(shí),可以利用此引腳來輸入 21V 的燒錄高壓( Vpp)。 (7)ALE/PROG:端口 3 的管腳設(shè)置: P3.0:RXD,串行通信輸入; P3.1:TXD,串行通信輸出; P3.2:INT0,外部中斷 0 輸入; P3.3:INT1,外部中斷 1

14、 輸入; P3.4:T0,計(jì)時(shí)計(jì)數(shù)器 0 輸入; P3.5:T1,計(jì)時(shí)計(jì)數(shù)器 1 輸入; P3.6:WR:外部數(shù)據(jù)存儲(chǔ)器的寫入信號(hào); P3.7:RD,外部數(shù)據(jù)存儲(chǔ)器的讀取信號(hào)。 3.1.2 單單片機(jī)最小系片機(jī)最小系統(tǒng)統(tǒng) (1)復(fù)位電路設(shè)計(jì) STC89C52RC 單片機(jī)的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳 RST 通過一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,在每個(gè) 機(jī)器周期的 S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得 到內(nèi)部復(fù)位操作所需要的信號(hào)。 上電復(fù)位:上電復(fù)位電路是種簡單的復(fù)位電路,只要在 RST 復(fù)位引腳接一 個(gè)電容到 VCC,接一個(gè)電阻到地

15、就可以了。上電復(fù)位是指在給系統(tǒng)上電時(shí),復(fù)位 電路通過電容加到 RST 復(fù)位引腳一個(gè)短暫的高電平信號(hào),這個(gè)復(fù)位信號(hào)隨著 VCC 對電容的充電過程而回落,所以 RST 引腳復(fù)位的高電平維持時(shí)間取決于電容的 充電時(shí)間。為了保證系統(tǒng)安全可靠的復(fù)位,RST 引腳的高電平信號(hào)必須維持足夠 長的時(shí)間。電路如圖 3-2 所示。 圖 3-2 上電復(fù)位電路 上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。只要 Vcc 的上升 時(shí)間不超過 1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。 第三章 單元硬件設(shè)計(jì)與分析 7 (2)時(shí)鐘電路設(shè)計(jì) 時(shí)鐘電路是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘頻率為基 準(zhǔn),有條不紊的一拍一拍地

16、工作。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí) 鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式: 一種是內(nèi)部時(shí)鐘方式,另一種為外部時(shí)鐘方式。本文用的是內(nèi)部時(shí)鐘方式。電 路如圖 3-3 所示。 圖 3-3 時(shí)鐘電路 STC89C52RC 單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高 增益反向放大器的輸入端為芯片引腳 XTAL1,輸出端為引腳 XTAL04。這兩個(gè)引 腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。 單片機(jī)的最小系統(tǒng)如圖 3-4 所示。 圖 3-4 單片機(jī)最小系統(tǒng) 3.2 日日歷歷模模塊電塊電路路設(shè)計(jì)設(shè)計(jì) 根據(jù)第二章時(shí)鐘芯片的選擇方案和論證,

17、選擇采用 DS1302 作為日歷模塊電 路設(shè)計(jì)的核心。 (1)DS1302 的引腳及功能 時(shí)鐘電路采用 DS1302,DS1302 是美國 DALLAS 公司推出的一種高性能、 低功耗、帶 RAM 的實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、星期、時(shí)、分、秒 進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償功能,工作電壓為 2.55.5V。采用三線接口與 CPU 進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)間數(shù)據(jù)或 RAM 數(shù)據(jù)。DS1302 內(nèi)部有一個(gè) 318 的用于臨時(shí)性存放數(shù)據(jù)的 RAM 存儲(chǔ)器。 DS1302 的封裝和引腳功能分別如圖 3-5 和表 3.1 所示。 圖 3-5 DS1302 的 DIP 封裝圖

18、(2)DS1302 復(fù)位和時(shí)鐘控制 DS1302 通過把 RST 輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST 輸入有 兩種功能:首先,RST 接通控制邏輯,允許地址/命令序列送入移位寄存器;其 次,RST 提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng) RST 為高電平時(shí),所有 數(shù)據(jù)傳送被初始化,允許對 DS1302 進(jìn)行操作。如果在傳送過程中置 RST 為低電 平,則會(huì)終止此數(shù)據(jù)傳送,并且 I/O 引腳變?yōu)楦咦锠顟B(tài)。上電運(yùn)行時(shí),在 VCC2.5V 之前,RST 必須保持低電平。只有在 SCLK 為低電平時(shí),才能將 RST 置為高電平。 表 3.1 DS1302 的引腳功能 (3)DS1302

19、的控制字節(jié) 管腳號(hào)管腳名稱功能 1Vcc2 主電源 2、3X1、X2 32.768HZ 4GND 地 5RST 復(fù)位/片選斷 6I/O 串行數(shù)據(jù)輸入/輸出 7SCLK 串行時(shí)鐘輸入端 8Vcc1 后備電源 第三章 單元硬件設(shè)計(jì)與分析 9 DS1302 的控制字如表 3.2 所示。控制字節(jié)的高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入 DS1302 中,位 6 如果 0,則表示存取日歷時(shí) 鐘數(shù)據(jù),為 1 表示存取 RAM 數(shù)據(jù);位 5 至位 1 指示操作單元的地址;最低有效 位(位 0)如為 0 表示要進(jìn)行寫操作,為 1 表示進(jìn)行讀操作,控制字節(jié)總是從最 低位開始輸出。DS1

20、302 的控制字格式如表 3.2 所示。 表 3.2 DS1302 的控制字格式 DS1302 有 12 個(gè)寄存器,其中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù) 位為 BCD 碼形式,其日歷、時(shí)間寄存器及其控制字如表 3.3 所示。 表 3.3 DS1302 寄存器日歷、時(shí)間寄存器及其控制字 寫寄存 器 讀寄存 器 Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0 80H81HCH 10 秒秒 82H83H 10 分分 10 84H85H12/24 10 AM/PM 時(shí)時(shí) 86H87H00 10 日日 88H89H00 10 月月 8AH8BH00000 星期 8CH8DH

21、 10 年年 8EH8FHWP0000000 (4)DS1302 的性能指標(biāo) a.實(shí)時(shí)時(shí)鐘具有能計(jì)算 2100 年之前的秒分時(shí)日日期星期月年的能力還有閏 年調(diào)整的能力; b.31 8 位暫存數(shù)據(jù)存儲(chǔ) RAM; c.串行 I/O 口方式使得管腳數(shù)量最少; d.寬范圍工作電壓 2.05.5V; e.工作電流 2.0V 時(shí),小于 300nA; f.讀/寫時(shí)鐘或 RAM 數(shù)據(jù)時(shí)有兩種傳送方式單字節(jié)傳送和多字節(jié)傳送字符組 方式; g.8 腳 DIP 封裝或可選的 8 腳 SOIC 封裝根據(jù)表面裝配; h.簡單 3 線接口; i.與 TTL 兼容 Vcc=5V; j.可選工業(yè)級溫度范圍-40 +85; 7

22、6543210 RAMRD 1 CK A4A3A2A1A0 WR k.對 Vcc1 有可選的涓流充電能力; l.雙電源管用于主電源和備份電源供應(yīng); m.備份電源管腳可由電池或大容量電容輸入; 3.3 顯顯示模示模塊設(shè)計(jì)塊設(shè)計(jì) 3.3.1 顯顯示器的示器的選選型型 顯示電路可以用數(shù)碼管或液晶顯示,顯示方便,易于讀數(shù)。本次設(shè)計(jì)采用 1602 液晶顯示器,可以較直觀的動(dòng)態(tài)顯示實(shí)時(shí)時(shí)鐘,數(shù)據(jù)顯示(誤差限制在 10 秒每天)。 3.3.2 LCD1602 引腳引腳 顯示電路采用 LCD1602 液晶顯示器,引腳排列如圖 3-6 所示,引腳功能如表 3.4 所示。 圖 3-6 1602 引腳圖 表 3.4

23、 LCD1602 引腳功能表 第三章 單元硬件設(shè)計(jì)與分析 11 3.3.3 LCD1602 與與單單片機(jī)接口片機(jī)接口電電路路設(shè)計(jì)設(shè)計(jì) 以 P0、P1 口為 1602 字符點(diǎn)陣液晶顯示模塊的接口進(jìn)行設(shè)計(jì),接口電路如 圖 3-7 所示。 引腳引腳符號(hào)符號(hào)功能說明功能說明 1VSS 一般接地 2VDD 接電源(+5V) 3V0 液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地電源時(shí)對比度 最高(對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè) 10K 的電位 器調(diào)整對比度)。 4RS RS 為寄存器選擇,高電平 1 時(shí)選擇數(shù)據(jù)寄存器、低電平 0 時(shí)選擇指令寄 存器。 5R/W R/W 為讀寫信號(hào)線,

24、高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。 6E E(或 EN)端為使能(enable)端,下降沿使能。 7DB0 底 4 位三態(tài)、 雙向數(shù)據(jù)總線 0 位(最低位) 8DB1 底 4 位三態(tài)、 雙向數(shù)據(jù)總線 1 位 9DB2 底 4 位三態(tài)、 雙向數(shù)據(jù)總線 2 位 10DB3 底 4 位三態(tài)、 雙向數(shù)據(jù)總線 3 位 11DB4 高 4 位三態(tài)、 雙向數(shù)據(jù)總線 12DB5 高 4 位三態(tài)、 雙向數(shù)據(jù)總線 5 位 13DB6 高 4 位三態(tài)、 雙向數(shù)據(jù)總線 6 位 14DB7 高 4 位三態(tài)、 雙向數(shù)據(jù)總線 7 位(最高位)(也是 busy flag) 15BLA 背光電源正極 16BL

25、K 背光 電源負(fù)極 圖 3-7 LCD1602 與單片機(jī)連接電路 3.4 鍵盤電鍵盤電路路設(shè)計(jì)設(shè)計(jì) 鍵盤的開關(guān)狀態(tài)通過一定的電路轉(zhuǎn)換為高、低電平狀態(tài)。鍵盤閉合過程在 相應(yīng)的 I/O 端口形成一個(gè)負(fù)脈沖。閉合和釋放過程都要經(jīng)過一定的過程才能達(dá) 到穩(wěn)定,這一過程是處于高、低電平之間的一種不穩(wěn)定狀態(tài),稱為抖動(dòng)。抖動(dòng) 持續(xù)時(shí)間的常長短與開關(guān)的機(jī)械特性有關(guān),一般在 5-10ms 之間。為了避免 CPU 多次處理鍵盤的一次閉合,應(yīng)采用措施消除抖動(dòng)。本設(shè)計(jì)采用的是獨(dú)立式按鍵, 如直接用 I/O 口線構(gòu)成單個(gè)按鍵電路,每個(gè)按鍵占用一條 I/O 口線,每個(gè)按鍵 的工作狀態(tài)不會(huì)產(chǎn)生互相影響。如圖 3-8 所示為

26、4 個(gè)鍵盤的獨(dú)立式按鍵接口電 路。 第三章 單元硬件設(shè)計(jì)與分析 13 圖 3-8 獨(dú)立式鍵盤接口電路結(jié)構(gòu)圖 SB0 表示功能移位鍵,按鍵選擇要調(diào)整的時(shí)十位、時(shí)個(gè)位、分十位或分個(gè)位。 SB1 表示數(shù)字“+“鍵,按一下則對應(yīng)的數(shù)字加 1。 SB2 口表示數(shù)字“-”鍵,按一下則對應(yīng)的數(shù)字減 1。 SB3 口表示時(shí)間表的切換,程序默認(rèn)為日常時(shí)間表,當(dāng)按下該開關(guān),使輸入 為低電平時(shí),表示當(dāng)前執(zhí)行的是考試時(shí)間表,并有綠發(fā)光二極管顯示。再按鍵, 使鍵抬起,輸入維高電平時(shí),表示當(dāng)前執(zhí)行的是日常作息時(shí)間表,用紅發(fā)光二 級管顯示。 3.5 鬧鈴鬧鈴模模塊設(shè)計(jì)塊設(shè)計(jì) 鬧鈴電路采用電磁式蜂鳴器驅(qū)動(dòng),蜂鳴器發(fā)聲原理是電

27、流通過電磁線圈, 使電磁線圈產(chǎn)生磁場來驅(qū)動(dòng)振動(dòng)膜發(fā)聲的,因此需要一定的電流才能驅(qū)動(dòng)它, 單片機(jī) IO 引腳輸出的電流較小,單片機(jī)輸出的 TTL 電平基本上驅(qū)動(dòng)不了蜂鳴器, 因此需要增加一個(gè)電流放大的電路。S51 增強(qiáng)型單片機(jī)實(shí)驗(yàn)板通過一個(gè)三極管 C8550 來放大驅(qū)動(dòng)蜂鳴器,電磁式蜂鳴器驅(qū)動(dòng)電路如圖 3-9 所示。 圖 3-9 電磁式蜂鳴器驅(qū)動(dòng)電路 蜂鳴器的正極接到 VCC(5V)電源上面,蜂鳴器的負(fù)極接到三極管的發(fā)射 極 E,三極管的基級 B 經(jīng)過限流電阻 R1 后由單片機(jī)的 P3.7 引腳控制,當(dāng) P3.7 輸出高電平時(shí),三極管 T1 截止,沒有電流流過線圈,蜂鳴器不發(fā)聲;當(dāng) P3.7 輸

28、出低電平時(shí),三極管導(dǎo)通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。 第四章 系統(tǒng)軟件設(shè)計(jì) 15 第四章第四章 系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì) 系統(tǒng)程序主要包括主程序、讀出時(shí)鐘子程序、1602 液晶顯示程序、DS1302 時(shí)鐘部分子程序等。 4.1 主程序主程序設(shè)計(jì)設(shè)計(jì) 系統(tǒng)進(jìn)行過相關(guān)的初始化指令之后即開始執(zhí)行萬年歷部分的程序:讀取 DS1302 的日期時(shí)間數(shù)據(jù)信息、查詢有無功能鍵按下。若有,則根據(jù)相應(yīng)的按鍵 進(jìn)行對應(yīng)的處理;若無,則顯示。主程序框圖如圖 4-1 所示。程序清單見附錄 二。 開始 初始化 是否有按鍵按下? 讀取時(shí)間數(shù)據(jù)并轉(zhuǎn)換成液晶字符 讀取日期數(shù)據(jù)并轉(zhuǎn)化成液晶字符 通過液晶顯示時(shí)間、日期、星

29、期 Y N 進(jìn)入時(shí)間調(diào)整 模式 圖 4-1 主程序流程圖 4.2 顯顯示程序示程序設(shè)計(jì)設(shè)計(jì) 顯示程序主要將時(shí)鐘芯片產(chǎn)生的日歷信息顯示出來,主要包含 LCD1602 的 初始化、在指定位置顯示信息,其流程圖如圖 4-2 所示。 LCD1602 初始 化 設(shè)定數(shù)據(jù)位置 輸入顯示數(shù)據(jù) 開始 結(jié)束 圖 4-2 顯示程序流程圖 4.3 按按鍵掃鍵掃描子程序描子程序設(shè)計(jì)設(shè)計(jì) 調(diào)整時(shí)間用 4 個(gè)調(diào)整按鈕,1 個(gè)作為移位、控制用,另外 3 個(gè)分別作為加調(diào) 整、減調(diào)整和復(fù)位用。在調(diào)整時(shí)間過程中,要調(diào)整的位與其他位應(yīng)該有區(qū)別, 所以增加了閃爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位示值給該位。 時(shí)間調(diào)整程序流程

30、圖 4-3 所示。 N Y N Y 開始 計(jì)時(shí)停止 對應(yīng)位閃爍 加鍵按下減鍵按下 對應(yīng)位時(shí)間加 1對應(yīng)位時(shí)間減 1 顯示子程序 返回,進(jìn)入主循 環(huán) 是否按鍵 盤 0次數(shù)7 次 圖 4-3 時(shí)間調(diào)整程序流程圖 4.4 DS1302 日期日期時(shí)間時(shí)間數(shù)據(jù)數(shù)據(jù)讀讀取取顯顯示示設(shè)計(jì)設(shè)計(jì) 對于時(shí)鐘芯片 DS1302,公歷日期時(shí)間顯示只需從 DS1302 各寄存器讀出年、 月、日、時(shí)、分、秒、星期,再加處理即可。在首次對 DS1302 進(jìn)行操作之前, 必須進(jìn)行初始化,然后從中讀出數(shù)據(jù),經(jīng)過處理后,送給顯示緩沖單元。其程 序框圖如圖 4-4 示。 第四章 系統(tǒng)軟件設(shè)計(jì) 17 DS1302 開始振蕩 從 DS

31、1302 中讀出電子日歷 初始化 DS1302 讀出的數(shù)據(jù)都為 BCD 碼,將 其高低位分離,送顯示緩沖單 元 開始 圖 4-4 時(shí)間讀取程序框 第五章 軟硬件調(diào)試 19 第五章第五章 軟硬件調(diào)試軟硬件調(diào)試 5.1 硬件硬件測試測試 電子萬年歷的電路系統(tǒng)較大,對于焊接方面更是不可輕視,龐大的電路系 統(tǒng)中只要出于一處的錯(cuò)誤,則會(huì)對檢測造成很大的不便,而且電路的交線較多, 對于各種鋒利的引腳要注意處理,否則會(huì)刺被帶有包皮的導(dǎo)線,則會(huì)對電路造 成短路現(xiàn)象。 在本成電子萬年歷的設(shè)計(jì)調(diào)試中遇到了很多的問題?;叵脒@些問題只要認(rèn) 真多思考都是可以避免的,以下為主要的問題: (1)串口下載芯片 232 發(fā)燙,

32、單片機(jī)晶振不起振 (2)LCD1602 在顯示時(shí)間時(shí)出現(xiàn)黑格子,遮擋了時(shí)間 (3)對萬年歷修改時(shí)間或日期時(shí),有時(shí)時(shí)間改變 2 次。 解決:根據(jù)儀器的測試,發(fā)現(xiàn)電路引腳有接錯(cuò)的現(xiàn)象,重新焊接后晶振, 復(fù)位正常,程序能夠下載。LCD1602 出現(xiàn)黑格子是由于在其第三引腳沒加電阻分 壓導(dǎo)致,加上 5K 電阻后正常。鍵盤延時(shí)較短致使按鍵次數(shù)多加。 5.2 軟軟件件測試測試 電子成年歷是多功能的數(shù)字型,可以看當(dāng)前日期、時(shí)間。電子成年歷功能 很多,所以對于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時(shí)出現(xiàn)了相對較多 的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟 件。在軟件的調(diào)試過程中主

33、要遇到的問題如下: (1)LCD1602 顯示的時(shí)間不完整,最后在液晶初始化程序中給加上該顯示 的數(shù)字即可。 (2)在調(diào)整時(shí)間時(shí)光標(biāo)閃爍不規(guī)律,原因的由于錯(cuò)用 DS1302 停振指令所 致,最后加上一個(gè)變量進(jìn)行控制即可。 5.3 測試結(jié)測試結(jié)果分析與果分析與結(jié)論結(jié)論 5.3.1 測試結(jié)測試結(jié)果分析果分析 (1)在測試中遇到單片機(jī)晶振不起振、232 芯片發(fā)燙,首先使用試測儀對電 路進(jìn)行測試,觀察是否存在漏焊,虛焊,或者元件損壞. (2)LCD1602 液晶有黑色背景出現(xiàn),首先使用試測儀對電路進(jìn)行測試,觀察 電路是否存在短路現(xiàn)象。查看燒寫的程序是否正確無誤,對程序進(jìn)行認(rèn)真修改。 5.3.2 測試結(jié)

34、論測試結(jié)論 經(jīng)過多次的反復(fù)測試與分析,可以對電路的原理及功能更加熟悉,同時(shí)提高 了設(shè)計(jì)能力與及對電路的分析能力.同時(shí)在軟件的編程方面得到更到的提高,對 編程能力得到加強(qiáng).同時(shí)對所學(xué)的知識(shí)得到很大的提高與鞏固. 第六章 總結(jié)與展望 21 第六章第六章 總結(jié)與展望總結(jié)與展望 6.1 總結(jié)總結(jié) 本項(xiàng)目已經(jīng)經(jīng)過調(diào)試運(yùn)行最終實(shí)現(xiàn)了功能要求,通過多次測試表明,電子 日歷的各項(xiàng)性能完全達(dá)到設(shè)計(jì)要求。對電子日歷的發(fā)展具有實(shí)際推廣價(jià)值。在 未來的幾年中電子日歷裝置一定會(huì)被廣泛的應(yīng)用各種場所,人們對這種電子日 歷系統(tǒng)一定會(huì)倍加青睞。 電子日歷制造成本低,環(huán)保,方便,省電,安全。總控制單元的硬件電路 中多采用簡易芯

35、片,簡化了電路設(shè)計(jì),系統(tǒng)開發(fā)容易,在日常生活中都具有很 強(qiáng)的適用性,具有實(shí)際推廣價(jià)值;采用模塊化設(shè)計(jì),易于維護(hù)。 6.2 展望展望 本項(xiàng)目研究的 51 單片機(jī)電子日歷設(shè)計(jì)功能還較簡單,還可以進(jìn)行功能的擴(kuò) 展,具體如下: (1)可以用聲控控制,如果沒人可以自動(dòng)關(guān)斷,目前還不能實(shí)現(xiàn)這一功能。 (2)可以測量房間的溫度,溫度低于一定的數(shù)值可以自動(dòng)打開空調(diào),溫度 高于一定的數(shù)值可以自動(dòng)關(guān)閉空調(diào)。 (3)可以測量房間的濕度參數(shù)。 (4)本次做的項(xiàng)目主要是控制數(shù)字量,還可以對模擬量進(jìn)行控制。 致 謝 23 致致 謝謝 在論文完成之際,我首先向關(guān)心幫助和指導(dǎo)我的指導(dǎo)老師馮成龍表示衷心 的感謝并致以崇高的敬意

36、! 在論文工作中,遇到了不少困難,一直得到馮成龍老師的親切關(guān)懷和悉心 指導(dǎo),使我學(xué)到了許多平時(shí)學(xué)不到的知識(shí),讓我明白了理論聯(lián)系實(shí)際,不能好 高騖遠(yuǎn)。馮成龍老師以其淵博的學(xué)識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、求實(shí)的工作作風(fēng)和他 敏捷的思維給我留下了深刻的印象,我將終生難忘老師對我的教導(dǎo)。再一次向 他表示衷心的感謝,感謝他為學(xué)生營造的濃郁學(xué)術(shù)氛圍,以及學(xué)習(xí)、生活上的 無私幫助! 值此論文完成之際,謹(jǐn)向馮成龍老師致以最崇高的謝意! 在學(xué)校的學(xué)習(xí)生活即將結(jié)束,回顧兩年多來的學(xué)習(xí)經(jīng)歷,面對現(xiàn)在的收獲, 我感到無限欣慰。為此,我向熱心幫助過我的所有老師和同學(xué)表示由衷的感謝! 特別感謝我的師兄,以及師姐,老師,及班主任,對

37、我的學(xué)習(xí)和生活所提 供的大力支持和關(guān)心!還要感謝一直關(guān)心幫助我成長的室友! 在我即將完成學(xué)業(yè)之際,我深深地感謝我的家人給予我的全力支持! 最后,衷心地感謝在百忙之中評閱論文和參加答辯的各位專家、教授! 致 謝 參考文獻(xiàn) 25 參考文獻(xiàn)參考文獻(xiàn) 1謝自美.電子線路設(shè)計(jì)、實(shí)驗(yàn)、測試M.武漢:華中理工大學(xué)出版社,2000 2何書森,何華斌.實(shí)用數(shù)字電路原理與設(shè)計(jì)速成M.福州:福建科學(xué)技術(shù)出版 社,2000.6 3白駒衍.單片計(jì)算機(jī)及應(yīng)用M.北京:電子工業(yè)出版社, 1999.2 4王洪君.單片機(jī)原理及應(yīng)用M.濟(jì)南:山東大學(xué)出版社, 2009.2 5閻 石 .數(shù)字電子技術(shù)基礎(chǔ)M.第五版,北京:高等教育出

38、版社,2008.12 6李朝青.單片機(jī)原理及接口技術(shù)(簡明修訂版).杭州:北京航空航天大學(xué)出 版社,1998 7李廣弟.單片機(jī)基礎(chǔ)M.北京:北京航空航天大學(xué)出版社,1994 8謝嘉奎.電子線路(線形部分) ,第四版.北京:高等教育出版社,1999. 9. 童詩白,華成英. 模擬電子技術(shù)基礎(chǔ)M. 北京:北京高等教育出社.2001 10. 何立民.MCS-51 系列單片機(jī)應(yīng)用系列設(shè)計(jì)M.航空航天大學(xué)出版社,2004 參考文獻(xiàn) 附錄 27 附錄附錄 1 1 元器件明細(xì)表元器件明細(xì)表 元器件名稱參數(shù)備注 單片機(jī)STC89C52RC(12MHZ)1 晶體DRYSTAL 12MHZ1 晶體DRYSTAL

39、32.768MHZ1 時(shí)鐘模塊DS13021 存儲(chǔ)器模塊AT24C021 LCD 顯示模塊LCD16021 三極管PNP90121 鬧鈴1 電容47F1 電容22pF2 電容10F1 按鍵BUTTON7 電阻(上拉電阻)10K15 電阻1K15 滑動(dòng)變阻器47K2 限流電阻0.1K8 排阻RESPACK-8/10K1 發(fā)光二極管(紅/綠) 10 電源接口 1 開關(guān) 5 附錄 附錄附錄 2 2 程序清單程序清單 軟件總程序: #include #include #include “LCD1602.h“ #include “DS1302.h“ #define uint unsigned int #

40、define uchar unsigned char sbit DS1302_CLK = P17; /實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 sbit DS1302_IO = P16; /實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 sbit DS1302_RST = P15; /實(shí)時(shí)時(shí)鐘復(fù)位線引腳 sbit wireless_1 = P30; sbit wireless_2 = P31; sbit wireless_3 = P32; sbit wireless_4 = P33; sbit ACC0 = ACC0; sbit ACC7 = ACC7; char hide_sec,hide_min,hide_hour,hide_day,hi

41、de_week,hide_month,hide_year; /秒,分,時(shí)到日,月,年位閃的計(jì)數(shù) sbit Set = P20; /模式切換鍵 sbit Up = P21; /加法按鈕 sbit Down = P22; /減法按鈕 sbit out = P23; /立刻跳出調(diào)整模式按鈕 char done,count,temp,flag,up_flag,down_flag; uchar TempBuffer5,week_value2; void show_time(); /液晶顯示程序 /*1602 液晶顯示部分子程序*PortDefinitions* sbit LcdRs = P25; sbi

42、t LcdRw = P26; sbit LcdEn = P27; sfr DBPort=0 x80;/P0=0 x80,P1=0 x90,P2=0 xA0,P3=0 xB0.數(shù)據(jù)端口內(nèi)部等待函 數(shù) unsigned char LCD_Wait(void) LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_(); LcdEn=0;return DBPort; 附錄 29 /*向 LCD 寫入命令或數(shù)據(jù)* #define LCD_COMMAND0 / Command #define LCD_DATA1 / Data #define LCD_CLEAR_SCREEN 0 x0

43、1 / 清屏 #define LCD_HOMING 0 x02 / 光標(biāo)返回原點(diǎn) void LCD_Write(bit style, unsigned char input) LcdEn=0; LcdRs=style;LcdRw=0; _nop_(); DBPort=input; _nop_();/注意順序 LcdEn=1;_nop_();/注意順序 LcdEn=0;_nop_();LCD_Wait(); /*設(shè)置顯示模式* #define LCD_SHOW0 x04 /顯示開 #define LCD_HIDE0 x00 /顯示關(guān) #define LCD_CURSOR0 x02 /顯示光標(biāo) #

44、define LCD_NO_CURSOR0 x00 /無光標(biāo) #define LCD_FLASH0 x01 /光標(biāo)閃動(dòng) #define LCD_NO_FLASH0 x00 /光標(biāo)不閃動(dòng) void LCD_SetDisplay(unsigned char DisplayMode) LCD_Write(LCD_COMMAND, 0 x08|DisplayMode); /*設(shè)置輸入模式* #define LCD_AC_UP0 x02 #define LCD_AC_DOWN0 x00 / default #define LCD_MOVE0 x01 / 畫面可平移 #define LCD_NO_MOVE

45、0 x00 /default void LCD_SetInput(unsigned char InputMode) LCD_Write(LCD_COMMAND, 0 x04|InputMode); /*初始話 LCD* void LCD_Initial() LcdEn=0; LCD_Write(LCD_COMMAND,0 x38); /8 位數(shù)據(jù)端口,2 行顯示,5*7 點(diǎn) 陣 LCD_Write(LCD_COMMAND,0 x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /開啟顯示, 無光標(biāo) LCD_Write(LCD_COMMAND,LCD_CL

46、EAR_SCREEN); /清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC 遞增, 畫面不動(dòng) /*液晶字符輸入的位置* 附錄 void GotoXY(unsigned char x, unsigned char y) if(y=0) LCD_Write(LCD_COMMAND,0 x80|x); if(y=1) LCD_Write(LCD_COMMAND,0 x80|(x-0 x40); /將字符輸出到液晶顯示 void Print(unsigned char *str) while(*str!=0) LCD_Write(LCD_DATA,*str);

47、str+; /*DS1302 時(shí)鐘部分子程序*/ typedef struct _SYSTEMTIME_ unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString11; unsigned char TimeString9; SYSTEMTIME;/定義的時(shí)間類型 SYSTEMTIME CurrentTime; #def

48、ine AM(X) X #define PM(X) (X+12) / 轉(zhuǎn)成 24 小時(shí)制 #define DS1302_SECOND0 x80 /時(shí)鐘芯片的寄存器位置,存放時(shí)間 #define DS1302_MINUTE0 x82 #define DS1302_HOUR0 x84 #define DS1302_WEEK0 x8A #define DS1302_DAY0 x86 #define DS1302_MONTH 0 x88 #define DS1302_YEAR0 x8C void DS1302InputByte(unsigned char d) /實(shí)時(shí)時(shí)鐘寫入一字節(jié)(內(nèi)部函數(shù)) uns

49、igned char i; ACC = d; for(i=8; i0; i-) DS1302_IO = ACC0; /相當(dāng)于匯編中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; 附錄 31 unsigned char DS1302OutputByte(void) /實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù)) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相當(dāng)于匯編中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); v

50、oid Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr: DS1302 地址, ucData: 要寫的數(shù)據(jù) DS1302_RST = 0;/ Write1302(0 x8e,0 x00); DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 寫 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; unsigned char Read1302(unsigned char

51、ucAddr) /讀取 DS1302 某地址的數(shù) 據(jù) unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0 x01); / 地址,命令 ucData = DS1302OutputByte(); / 讀 1Byte 數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; return(ucData); void DS1302_GetTime(SYSTEMTIME *Time) /獲取時(shí)鐘芯片的時(shí)鐘數(shù)據(jù)到自定 義的結(jié)構(gòu)型數(shù)組 unsigned cha

52、r ReadValue; ReadValue = Read1302(DS1302_SECOND); Time-Second = (ReadValue /高 三位取出讀出乘 ReadValue = Read1302(DS1302_MINUTE); Time-Minute = (ReadValue ReadValue = Read1302(DS1302_HOUR); Time-Hour = (ReadValue 附錄 ReadValue = Read1302(DS1302_DAY); Time-Day = (ReadValue ReadValue = Read1302(DS1302_WEEK);

53、Time-Week = (ReadValue ReadValue = Read1302(DS1302_MONTH); Time-Month = (ReadValue ReadValue = Read1302(DS1302_YEAR); Time-Year = (ReadValue void DateToStr(SYSTEMTIME *Time) /將時(shí)間年,月,日,星期數(shù)據(jù)轉(zhuǎn)換成液晶 顯示字符串,放到數(shù)組里 DateString if(hide_year2 就不顯示,輸出字符串為 2007/07/22 Time-DateString0 = 2; Time-DateString1 = 0; Ti

54、me-DateString2 = Time-Year/10 + 0; Time-DateString3 = Time-Year%10 + 0; else Time-DateString0 = ; Time-DateString1 = ; Time-DateString2 = ; Time-DateString3 = ; Time-DateString4 = /; if(hide_monthDateString5 = Time-Month/10 + 0; Time-DateString6 = Time-Month%10 + 0; else Time-DateString5 = ; Time-Da

55、teString6 = ; Time-DateString7 = /; if(hide_dayDateString8 = Time-Day/10 + 0; 附錄 33 Time-DateString9 = Time-Day%10 + 0; else Time-DateString8 = ; Time-DateString9 = ; if(hide_weekWeek%10 + 0; /星期的數(shù)據(jù)另外放到 week_value數(shù)組里,跟年,月,日的分開存放,因?yàn)榈纫幌乱谧詈箫@示 else week_value0 = ; week_value1 = 0; Time-DateString10 = 0

56、; /字符串末尾加 0 ,判斷結(jié)束字符 void TimeToStr(SYSTEMTIME *Time) /將時(shí),分,秒數(shù)據(jù)轉(zhuǎn)換成液晶顯示字符 放到數(shù)組 TimeString; if(hide_hourTimeString0 = Time-Hour/10 + 0; Time-TimeString1 = Time-Hour%10 + 0; else Time-TimeString0 = ; Time-TimeString1 = ; Time-TimeString2 = :; if(hide_minTimeString3 = Time-Minute/10 + 0; Time-TimeString4

57、 = Time-Minute%10 + 0; else Time-TimeString3 = ; Time-TimeString4 = ; Time-TimeString5 = :; 附錄 if(hide_secTimeString6 = Time-Second/10 + 0; Time-TimeString7 = Time-Second%10 + 0; else Time-TimeString6 = ; Time-TimeString7 = ; Time-DateString8 = 0; void Initial_DS1302(void) /時(shí)鐘芯片初始化 unsigned char Sec

58、ond=Read1302(DS1302_SECOND); if(Second /寫入允許 Write1302(0 x8c,0 x07); /以下寫入初始化時(shí)間 日期:07/07/25.星 期: 3. 時(shí)間: 23:59:55 Write1302(0 x88,0 x07); Write1302(0 x86,0 x25); Write1302(0 x8a,0 x07); Write1302(0 x84,0 x23); Write1302(0 x82,0 x59); Write1302(0 x80,0 x55); Write1302(0 x8e,0 x80); /禁止寫入 void Delay1ms

59、(unsigned int count) unsigned int i,j; for(i=0;i0;delay-) for(i=0;i0 x59)/超過 59 秒,清零 temp=0; break; case 2:temp=Read1302(DS1302_MINUTE)/讀取分?jǐn)?shù) temp=temp+1; /分?jǐn)?shù)加 1 up_flag=1; if(temp0 x59) /超過 59 分,清零 temp=0;break; case 3:temp=Read1302(DS1302_HOUR);/讀取小時(shí)數(shù) temp=temp+1; /小時(shí)數(shù)加 1 up_flag=1; if(temp0 x23)/超

60、過 23 小時(shí),清零 temp=0;break; case 4:temp=Read1302(DS1302_WEEK);/讀取星期 數(shù) temp=temp+1; /星期數(shù)加 1 附錄 up_flag=1; if(temp0 x7) temp=1; break; case 5:temp=Read1302(DS1302_DAY);/讀取日數(shù) temp=temp+1; /日數(shù)加 1 up_flag=1; if(temp0 x31) temp=1; break; case 6:temp=Read1302(DS1302_MONTH);/讀取月 數(shù) temp=temp+1; /月數(shù)加 1 up_flag=1

61、; if(temp0 x12) temp=1; break; case 7:temp=Read1302(DS1302_YEAR); /讀取年 數(shù) temp=temp+1; /年數(shù)加 1 up_flag=1; if(temp0 x85) temp=0;break; default:break; while(Up=0); while(wireless_2=1); void Downkey()/降序按鍵 Down=1; if(Down=0|wireless_3=1) mdelay(8); switch(count) case1:temp=Read1302(DS1302_SECOND);/讀取秒數(shù) t

62、emp=temp-1; /秒數(shù)減 1 down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp=0 x7f)/小于 0 秒,返回 59 秒 temp=0 x59;break; case 2:temp=Read1302(DS1302_MINUTE); /讀取分 附錄 37 數(shù) temp=temp-1; /分?jǐn)?shù)減 1 down_flag=1; if(temp=-1) temp=0 x59; /小于 0 秒,返回 59 秒 break; case 3:temp=Read1302(DS1302_HOUR) /讀取小時(shí)數(shù) temp=temp-1; /小時(shí)數(shù)減 1 down_flag=1; if(t

63、emp=-1) temp=0 x23;break; case 4:temp=Read1302(DS1302_WEEK); /讀取星期 數(shù) temp=temp-1; /星期數(shù)減 1 down_flag=1; if(temp=0) temp=0 x7;break; case 5:temp=Read1302(DS1302_DAY); /讀取日數(shù) temp=temp-1; /日數(shù)減 1 down_flag=1; if(temp=0) temp=31;break; case 6:temp=Read1302(DS1302_MONTH); /讀取月數(shù) temp=temp-1; /月數(shù)減 1 down_flag=1; if(temp=0) temp=12; break; case 7:temp=Read1302(DS1302_YEAR);/讀取年數(shù) temp=temp-1; /年數(shù)減 1 down_flag=1; if(temp=-1) temp=0 x85; break; default:break; while(Down=0);while(wireless_3=1); 附錄 void Setkey()/模式選擇按鍵 Set=1; if(Set=0|wireless_4=1) mdelay(8); count=count+1; /Setkey

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!