版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 電子萬(wàn)年歷設(shè)計(jì)</b></p><p> 摘 要:隨著當(dāng)今世界經(jīng)濟(jì)的快速發(fā)展和信息化時(shí)代的來(lái)臨,各種各樣的小型智能家電產(chǎn)品陸續(xù)出現(xiàn)在我們的生活中。日歷是人們不可或缺的日常用品。但一般日歷都為紙制用品,使用不便,壽命不長(zhǎng)。電子萬(wàn)年歷采用智能電子控制和顯示技術(shù),改善了紙制日歷的缺陷。本設(shè)計(jì)以AT89S52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路,結(jié)合DS1302時(shí)鐘芯片和
2、24C02FLASH存儲(chǔ)器,完成時(shí)間的自動(dòng)調(diào)整和掉電保護(hù),全部信息用液晶顯示。時(shí)間、日期調(diào)整由三個(gè)按鍵來(lái)實(shí)現(xiàn),并可對(duì)鬧鈴開(kāi)關(guān)進(jìn)行設(shè)置。日歷能顯示陽(yáng)歷和陰歷年、月、日以及星期、時(shí)、分、秒。在顯示陰歷月份時(shí),能標(biāo)明是否閏月。</p><p> 關(guān)鍵詞:電子萬(wàn)年歷 52系列單片機(jī) 時(shí)鐘芯片 FLASH存儲(chǔ)器 液晶顯示</p><p> The Design of Electronic Ca
3、lendar</p><p> Abstract: With the rapid development of world economy and the forthcoming of information era, many kinds of mini-type intelligent domestic electric appliances appear in our life one after ano
4、ther. Calendars are necessary daily goods in people’s life. But they are generally paper goods with inconvenient use and short life. Electronic calendar adopts the technology of intelligent electronic control and display
5、, and then improves the deficiency of paper calendars. The design adopts the core of AT89</p><p> Keywords: electronic calendar 52 series single chip microcomputer clock chip flash memory LCD</p>
6、<p><b> 1 引言</b></p><p> 在日新月異的21世紀(jì)里,家用電子產(chǎn)品得到了迅速發(fā)展。許多家電設(shè)備都趨于人性化、智能化,這些電器設(shè)備大部分都含有CPU控制器或者是單片機(jī)。單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng)、通訊設(shè)備、日常消費(fèi)類產(chǎn)品和玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民
7、生活的各個(gè)方面,如車間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。用單片機(jī)來(lái)控制的小型家電產(chǎn)品具有便攜實(shí)用,操作簡(jiǎn)單的特點(diǎn)。</p><p> 本文設(shè)計(jì)的電子萬(wàn)年歷屬于小型智能家用電子產(chǎn)品。利用單片機(jī)進(jìn)行控制,實(shí)時(shí)時(shí)鐘芯片進(jìn)行記時(shí),外加掉電存儲(chǔ)電路和顯示電路,可實(shí)現(xiàn)時(shí)間的調(diào)整和顯示。電子萬(wàn)年歷既可廣泛應(yīng)用于家庭,也可應(yīng)用于銀行、郵電、賓館、醫(yī)院、學(xué)校、企業(yè)、商店等相關(guān)行業(yè)的大廳,以及單位會(huì)議
8、室、門衛(wèi)等場(chǎng)所。因而,此設(shè)計(jì)具有相當(dāng)重要的現(xiàn)實(shí)意義和實(shí)用價(jià)值。</p><p><b> 2 系統(tǒng)概述</b></p><p> 本設(shè)計(jì)以AT89S52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路,結(jié)合DS1302時(shí)鐘芯片和24C02FLASH存儲(chǔ)器,顯示陽(yáng)歷年、月、日、星期、時(shí)、分、秒和陰歷年、月、日,在顯示陰歷時(shí)間時(shí),能標(biāo)明是否閏月,同時(shí)完成對(duì)它們的自動(dòng)調(diào)整和掉電保護(hù),全
9、部信息用液晶顯示。人機(jī)接口由三個(gè)按鍵來(lái)實(shí)現(xiàn),用這三個(gè)按鍵對(duì)時(shí)間、日期可調(diào),并可對(duì)鬧鈴開(kāi)關(guān)進(jìn)行設(shè)置。軟件控制程序?qū)崿F(xiàn)所有的功能。整機(jī)電路使用+5V穩(wěn)壓電源,可穩(wěn)定工作。系統(tǒng)框圖如圖2-1所示,其軟硬件設(shè)計(jì)簡(jiǎn)單,時(shí)間記錄準(zhǔn)確,可廣泛應(yīng)用于長(zhǎng)時(shí)間連續(xù)顯示的系統(tǒng)中。</p><p><b> 圖2-1 系統(tǒng)框圖</b></p><p><b> 3 方案選擇&l
10、t;/b></p><p> 由于電子萬(wàn)年歷的種類比較多,因此方案選擇在設(shè)計(jì)中是至關(guān)重要的。正確地選擇方案可以減小開(kāi)發(fā)難度,縮短開(kāi)發(fā)周期,降低成本,更快地將產(chǎn)品推向市場(chǎng)。</p><p> 3.1 方案1——基于AT89S52單片機(jī)的電子萬(wàn)年歷設(shè)計(jì)</p><p> 不使用時(shí)鐘芯片,而直接用AT89S52單片機(jī)來(lái)實(shí)現(xiàn)電子萬(wàn)年歷設(shè)計(jì)。AT89S52是一種帶
11、8K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS 8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦寫1000余次。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89S52是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><p> 若采用單片機(jī)計(jì)時(shí),利用它的一個(gè)16位定時(shí)器/計(jì)數(shù)器每50ms產(chǎn)生一個(gè)中斷信號(hào),中斷20次后產(chǎn)生一個(gè)秒信號(hào),然
12、后根據(jù)時(shí)間進(jìn)制關(guān)系依次向分、時(shí)、日、星期、月、年進(jìn)位。這樣就實(shí)現(xiàn)了直接用單片機(jī)來(lái)實(shí)現(xiàn)電子萬(wàn)年歷設(shè)計(jì)。</p><p> 用單片機(jī)來(lái)實(shí)現(xiàn)電子萬(wàn)年歷設(shè)計(jì),無(wú)須外接其他芯片,充分利用了單片機(jī)的資源。但是精度不夠高,誤差較大,掉電后丟失所有數(shù)據(jù),軟件編程較復(fù)雜。</p><p> 3.2 方案2——基于DS1302的電子萬(wàn)年歷設(shè)計(jì)</p><p> 在以單片機(jī)為核心構(gòu)
13、成的裝置中,經(jīng)常需要一個(gè)實(shí)時(shí)的時(shí)鐘和日歷,以便對(duì)一些實(shí)時(shí)發(fā)生事件記錄時(shí)給予時(shí)標(biāo),實(shí)時(shí)時(shí)鐘芯片便可起到這一作用。過(guò)去多用并行接口的時(shí)鐘芯片,如MC146818,DS12887等。它們已能完全滿足單片機(jī)系統(tǒng)對(duì)實(shí)時(shí)時(shí)鐘的要求,但是這些芯片與單片機(jī)接口復(fù)雜、占用地址, 數(shù)據(jù)總線接線多、芯片體積大占用空間多、近年來(lái)串行接口的各種芯片在單片機(jī)系統(tǒng)中應(yīng)用愈來(lái)愈多,串行接口的實(shí)時(shí)時(shí)鐘芯片也出現(xiàn)了不少,DS1302是一個(gè)綜合性能較好且價(jià)格便宜的串行接口實(shí)
14、時(shí)時(shí)鐘芯片。</p><p> 利用單片機(jī)進(jìn)行控制,采用DS1302作為實(shí)時(shí)時(shí)鐘芯片,其三線接口SCLK、I/O、/RST與單片機(jī)進(jìn)行同步通信,外加掉電存儲(chǔ)電路、顯示電路、鍵盤電路,即構(gòu)成一個(gè)基本的電子萬(wàn)年歷系統(tǒng),若還要添加其他功能,在這基礎(chǔ)上外擴(kuò)電路即可。</p><p> 由于在系統(tǒng)設(shè)計(jì)時(shí),需要考慮以下幾點(diǎn)因素:功耗低、精確度高、軟件編程較簡(jiǎn)單,芯片的體積小、芯片成本低等,而DS1
15、302芯片有上面所述的諸多優(yōu)點(diǎn),所以本設(shè)計(jì)采用方案2。</p><p> 4 系統(tǒng)硬件電路的設(shè)計(jì)</p><p> 按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定設(shè)計(jì)系統(tǒng)由主控模塊、時(shí)鐘模塊、存儲(chǔ)模塊、鍵盤接口模塊、顯示模塊和鬧鈴模塊共6個(gè)模塊組成,電路系統(tǒng)構(gòu)成框圖如圖4-1所示。主控芯片使用52系列AT89S52單片機(jī),時(shí)鐘芯片使用美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯
16、片DS1302,存儲(chǔ)模塊采用美國(guó)ATMEL公司生產(chǎn)的低功耗CMOS串行EEPROM存儲(chǔ)芯片AT24C02。DS1302作為主要計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備 (2.5~5.5V電源,在2.5V時(shí)耗電小于300nA)下繼續(xù)計(jì)時(shí),并可編程選擇多種充電電流來(lái)對(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。</p><p> 圖4-1 電子萬(wàn)年歷電路系統(tǒng)構(gòu)成框圖</p
17、><p> 4.1 系統(tǒng)核心部分——閃電存儲(chǔ)型器件AT89S52</p><p> 4.1.1 AT89S52具有下列主要性能[5]: </p><p> ·8KB可改編程序Flash存儲(chǔ)器(可經(jīng)受1000次的寫入/擦除周期) </p><p> ·全靜態(tài)工作:0Hz~24MHz</p>
18、<p> ·三級(jí)程序存儲(chǔ)器保密</p><p> ·128×8字節(jié)內(nèi)部RAM</p><p> ·32條可編程I/O線</p><p> ·2個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b> ·6個(gè)中斷源</b></p><
19、;p><b> ·可編程串行通道</b></p><p><b> ·片內(nèi)時(shí)鐘振蕩器</b></p><p> 4.1.2 AT89S52的引腳及功能</p><p> AT89S52單片機(jī)的管腳說(shuō)明如圖4-2所示。</p><p> 圖4-2 AT89S52的管
20、腳</p><p> (1) 主要電源引腳</p><p><b> ?、賄CC 電源端</b></p><p><b> ?、贕ND 接地端</b></p><p> (2) 外接晶體引腳XTAL1和XTAL2</p><p> ?、賆TAL1 接外部晶體的一個(gè)引
21、腳。在單片機(jī)內(nèi)部,它是構(gòu)成片內(nèi)振蕩器的反相放大器的輸入端。當(dāng)采用外部振蕩器時(shí),該引腳接收振蕩器的信號(hào),既把此信號(hào)直接接到內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> ?、赬TAL2 接外部晶體的另一個(gè)引腳。在單片機(jī)內(nèi)部,它是上述振蕩器的反相放大器的輸出端。采用外部振蕩器時(shí),此引腳應(yīng)懸浮不連接。</p><p> (3) 控制或與其它電源復(fù)用引腳RST、ALE//PROG、/PSEN和/E
22、A/VPP</p><p> ?、賀ST 復(fù)位輸入端。 當(dāng)振蕩器運(yùn)行時(shí),在該引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。</p><p> ?、贏LE//PROG 當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE端仍以不變的頻率(此頻率為振蕩器頻率的1/6)周期性地出現(xiàn)正脈沖信號(hào)。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。然而要
23、注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。在對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(/PROG)[6]。</p><p> ③/PSEN 程序存儲(chǔ)允許(/PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào)。當(dāng)AT89S52/LV52由外部程序存儲(chǔ)器取指令(或常數(shù))時(shí),每個(gè)機(jī)器周期兩次/PSEN有效(既輸出2個(gè)脈沖)。但在此期間內(nèi),每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出
24、現(xiàn)。</p><p> ?、?EA/VPP 外部訪問(wèn)允許端。要使CPU只訪問(wèn)外部程序存儲(chǔ)器(地址為0000H~FFFFH),則/EA端必須保持低電平(接到GND端)。當(dāng)/EA端保持高電平(接VSS端)時(shí),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的程序。</p><p> (4) 輸入/輸出引腳 P0.0~ P0.7、P1.0~P1.7、P2.0~ P2.7 和P3.0~P3.7</p>
25、<p> ①P0端口(P0.0~ P0.7) P0是一個(gè)8位漏極開(kāi)路型雙向I/O端口。作為輸出口用時(shí),每位能以吸收電流的方式驅(qū)動(dòng)8個(gè)TTL輸入,對(duì)端口寫1時(shí),又可作高阻抗輸入端用。</p><p> ②P1端口(P1.0~ P1.7) P1是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O端口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)
26、可用作輸入口。作輸入口時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。</p><p> ?、跴2端口 (P2.0~P2.7) P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P2作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。</p
27、><p> ?、躊3端口(P3.0~P3.7) P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。</p><p> P3口也可作為AT89S52的一些特殊功能,這些特殊功能見(jiàn)表4-1[7]。</p><p> 表
28、4-1 P3端口的特殊功能</p><p> 4.2 DS1302時(shí)鐘電路</p><p> 4.2.1 DS1302芯片介紹</p><p> 低功耗時(shí)鐘芯片DS1302可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。DS1302用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄。這種記錄對(duì)長(zhǎng)時(shí)間的連
29、續(xù)測(cè)控系統(tǒng)結(jié)果的分析以及對(duì)異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義[8]。</p><p> 采用DS1302作為記錄測(cè)控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計(jì)簡(jiǎn)單,時(shí)間記錄準(zhǔn)確,既避免了連續(xù)記錄的大工作量,又避免了定時(shí)記錄的盲目性,給連續(xù)長(zhǎng)時(shí)間的測(cè)量、控制系統(tǒng)的正常運(yùn)行及檢查都來(lái)了很大的方便,可廣泛應(yīng)用于長(zhǎng)時(shí)間連續(xù)的測(cè)控系統(tǒng)中。在測(cè)量控制系統(tǒng)中,特別是長(zhǎng)時(shí)間無(wú)人職守的測(cè)控系統(tǒng)中,經(jīng)常需要記錄某些具有特殊意義的數(shù)據(jù)及其出現(xiàn)的
30、時(shí)間。記錄及分析這些特殊意義的數(shù)據(jù),對(duì)測(cè)控系統(tǒng)的性能分析及正常運(yùn)行具有重要的意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時(shí)采樣或定時(shí)采樣,沒(méi)有具體的時(shí)間記錄,因此只能記錄數(shù)據(jù)而無(wú)法準(zhǔn)確記錄其出現(xiàn)的時(shí)間;若采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而且某些測(cè)控系統(tǒng)可能不允許。而在系統(tǒng)中采用DS1302則能很好地解決這個(gè)問(wèn)題。</p><p> DS1302的性能特性&
31、lt;/p><p> ·實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);</p><p> ·用于高速數(shù)據(jù)暫存的31×8位RAM;</p><p> ·最少引腳的串行I/O;</p><p> ·2.5~5.5V 電壓工作范圍;</p><p>
32、·2.5V時(shí)耗電小于300nA;</p><p> ·用于時(shí)鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;</p><p><b> ·簡(jiǎn)單的3線接口;</b></p><p> ·可選的慢速充電(至VCC1)的能力。</p><p> DS1302時(shí)鐘芯片
33、包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于31天的月和月末的日期自動(dòng)進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:VCC1 在單電源與電池供電的系統(tǒng)中提供
34、低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,VCC1 連接到備份電源,以便在沒(méi)有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者供電。當(dāng)VCC2大于VCC1+0.2V時(shí),VCC2給DS1302供電;當(dāng)VCC2小于VCC1時(shí),DS1302由VCC1供電。</p><p> (2) DS1302數(shù)據(jù)操作原理</p><p>
35、; DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無(wú)論是讀周期還是寫周期,開(kāi)始8位指定40個(gè)寄存器中哪個(gè)被訪問(wèn)到。在開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。</p><p>
36、圖4-3 DS1302管腳圖</p><p> 如果在傳送過(guò)程中置RST為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在VCC >=2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的管腳圖如圖4-3所示,內(nèi)部結(jié)構(gòu)圖如圖4-4所示,表4-2為各引腳的功能。</p><p> 圖4-4 DS1302內(nèi)部結(jié)構(gòu)圖
37、</p><p> 表4-2 DS1302引腳功能表</p><p> DS1302的控制字如圖4-5所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1;如果它為邏輯0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進(jìn)行寫操作;為1表示進(jìn)行讀操作。控制字節(jié)總是從最低位
38、開(kāi)始輸入/輸出。</p><p> 圖4-5 控制字節(jié)的含義</p><p> 為了提高對(duì)32個(gè)地址的尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)憽T跁r(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?/p>
39、8個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。數(shù)據(jù)讀寫程序如圖4-6所示。</p><p> 圖4-6 數(shù)據(jù)讀寫程序</p><p> DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表4-3,其中奇數(shù)為讀操作,偶數(shù)為寫操作。
40、</p><p> 表4-3 DS1302的日歷、時(shí)鐘寄存器及其控制字</p><p> 時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式。通常在對(duì)DS1302進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開(kāi)始啟動(dòng)。</p><p> AM-PM/12-24[小]時(shí)方式:[小]時(shí)寄存器的位7定義
41、為12或24[小]時(shí)方式選擇位。它為高電平時(shí),選擇12[小]時(shí)方式。在此方式下,位5是AM/PM位,此位是高電平時(shí)表示PM,低電平表示AM,在24[小]時(shí)方式下,位5為第二個(gè)10[小]時(shí)位(20~23h)。</p><p> 4.2.2 DS1302 的應(yīng)用</p><p> 實(shí)時(shí)時(shí)鐘芯片DS1302采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,也可以關(guān)閉充電功能,芯片采用3
42、2768Hz晶振。要特別說(shuō)明的是,備用電源BT1可以用電池或超級(jí)電容(10萬(wàn)μF以上)。雖然DS1302在主電源掉電后耗電很小,但如果要長(zhǎng)時(shí)間保證時(shí)鐘正常,最好選用小型充電電池。如果斷電時(shí)間較短(幾小時(shí)或幾天),可以用漏電較小的普通電解電容代替(100μF就可以保證1小時(shí)的正常走時(shí))[9]。DS1302在第一次加電后,需進(jìn)行初始化操作。初始化后就可以按正常方法調(diào)整時(shí)間及鬧鈴。DS1302的時(shí)鐘電路如圖4-3所示。</p>
43、<p> 圖4-7 DS1302時(shí)鐘電路</p><p><b> 4.3 存儲(chǔ)電路</b></p><p> 4.3.1 AT24C02管腳介紹</p><p> AT24C02[10]是美國(guó)ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含256×8位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5V)、擦寫次數(shù)多
44、(大于10000次)、寫入速度快(小于10ms)等特點(diǎn)。 AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。第8腳和第4腳分別為正、負(fù)電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過(guò)這條雙向I2C總線串行傳送。第6腳SCL為串行時(shí)鐘輸入線。SDA和SCL都需要和正電源間各接一個(gè)4.7K的電阻上拉。</p><p> I2C總線是一種用于I2C器件之間連接的二線制總線。
45、它通過(guò)SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識(shí)別每個(gè)器件:不管是單片機(jī)、存儲(chǔ)器、LCD驅(qū)動(dòng)器還是鍵盤接口。</p><p> 4.3.2 AT24C02的特性</p><p> (1) I2C總線的基本結(jié)構(gòu)</p><p> 采用I2C總線標(biāo)準(zhǔn)的單片機(jī)或I2C器件,其內(nèi)部不僅有I2C接口電路,而且將內(nèi)部各單元
46、電路按功能劃分為若干相對(duì)獨(dú)立的模塊,通過(guò)軟件尋址實(shí)現(xiàn)片選,減少了器件片選線的連接。CPU不僅能通過(guò)指令將某個(gè)功能單元電路掛靠或摘離總線,還可對(duì)該單元的工作狀況進(jìn)行檢測(cè),從而實(shí)現(xiàn)對(duì)硬件系統(tǒng)的既簡(jiǎn)單又靈活的擴(kuò)展與控制。</p><p> (2) 雙向傳輸?shù)慕涌谔匦浴?lt;/p><p> 傳統(tǒng)的單片機(jī)串行接口的發(fā)送和接收一般都各用一條線,而I2C總線則根據(jù)器件的功能通過(guò)軟件程序使其可工作于發(fā)送
47、或接收方式。當(dāng)某個(gè)器件向總線上發(fā)送信息時(shí),它就是發(fā)送器(也叫主器件),而當(dāng)其從總線上接收信息時(shí),又成為接收器(也叫從器件)。主器件用于啟動(dòng)總線上傳送數(shù)據(jù)并產(chǎn)生時(shí)鐘以開(kāi)放傳送的器件,此時(shí)任何被尋址的器件均被認(rèn)為是從器件。I2C總線的控制完全由掛接在總線上的主器件送出的地址和數(shù)據(jù)決定?! 】偩€上主和從(即發(fā)送和接收)的關(guān)系不是一成不變的,而是取決于此時(shí)數(shù)據(jù)傳送的方向。SDA和SCL均為雙向I/O線,通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根
48、線都是高電平。連接總線的器件的輸出級(jí)必須是集電極或漏極開(kāi)路,以具有線“與”功能。I2C總線的數(shù)據(jù)傳送速率在標(biāo)準(zhǔn)工作方式下為100kbit/s,在快速方式下,最高傳送速率可達(dá)400kbit/s。(3) I2C總線上的時(shí)鐘信號(hào) </p><p> 在I2C總線上傳送信息時(shí)的時(shí)鐘同步信號(hào)是由掛接在SCL時(shí)鐘線上的所有器件的邏輯“與”完成的。SCL線上由高電平到低電平的跳變將影響到這些器件,一旦某個(gè)器件的時(shí)鐘信號(hào)下跳
49、為低電平,將使SCL線一直保持低電平,使SCL線上的所有器件開(kāi)始低電平期。此時(shí),低電平周期短的器件的時(shí)鐘由低至高的跳變并不能影響SCL線的狀態(tài),于是這些器件將進(jìn)入高電平等待的狀態(tài)?! ‘?dāng)所有器件的時(shí)鐘信號(hào)都上跳為高電平時(shí),低電平期結(jié)束,SCL線被釋放返回高電平,即所有的器件都同時(shí)開(kāi)始它們的高電平期。其后,第一個(gè)結(jié)束高電平期的器件又將SCL線拉成低電平。這樣就在SCL線上產(chǎn)生一個(gè)同步時(shí)鐘??梢?jiàn),時(shí)鐘低電平時(shí)間由時(shí)鐘低電平期最長(zhǎng)的器件確定
50、,而時(shí)鐘高電平時(shí)間由時(shí)鐘高電平期最短的器件確定。(4) 數(shù)據(jù)的傳送 </p><p> 在數(shù)據(jù)傳送過(guò)程中,必須確認(rèn)數(shù)據(jù)傳送的開(kāi)始和結(jié)束。當(dāng)時(shí)鐘線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖蕉x為“開(kāi)始”信號(hào);當(dāng)SCL線為高電平時(shí),SDA線發(fā)生低電平到高電平的跳變?yōu)椤敖Y(jié)束”信號(hào)。開(kāi)始和結(jié)束信號(hào)都是由主器件產(chǎn)生。在開(kāi)始信號(hào)以后,總線即被認(rèn)為處于忙狀態(tài);在結(jié)束信號(hào)以后的一段時(shí)間內(nèi),總線被認(rèn)為是空閑的。
51、 I2C總線的數(shù)據(jù)傳送格式是:在I2C總線開(kāi)始信號(hào)后,送出的第一個(gè)字節(jié)數(shù)據(jù)是用來(lái)選擇從器件地址的,其中前7位為地址碼,第8位為方向位(R/W)。方向位為“0”表示發(fā)送,即主器件把信息寫到所選擇的從器件;方向位為“1”表示主器件將從從器件讀信息。開(kāi)始信號(hào)后,系統(tǒng)中的各個(gè)器件將自己的地址和主器件送到總線上的地址進(jìn)行比較,如果與主器件發(fā)送到總線上的地址一致,則該器件即為被主器件尋址的器件,其接收信息還是發(fā)送信息則由第8位(R/W)確定?! ?/p>
52、在I2C總線上每次傳送的數(shù)據(jù)字節(jié)數(shù)不限,但每一個(gè)字節(jié)必須為8位,而且每個(gè)傳送的字節(jié)后面必須跟一個(gè)認(rèn)可位(第9位),也叫應(yīng)答位(ACK)。每次都是先傳最高位,通常從器件在接收到每個(gè)字節(jié)后都會(huì)做出響應(yīng),即釋放SCL線返回高電平,準(zhǔn)備接收下一</p><p> 總線上可能掛接有多個(gè)器件,有時(shí)會(huì)發(fā)生兩個(gè)或多個(gè)主器件同時(shí)想占用總線的情況。例如,多單片機(jī)系統(tǒng)中,可能在某一時(shí)刻有兩個(gè)單片機(jī)要同時(shí)向總線發(fā)送數(shù)據(jù),這種情況叫做總
53、線競(jìng)爭(zhēng)。I2C總線具有多主控能力,可以對(duì)發(fā)生在SDA線上的總線競(jìng)爭(zhēng)進(jìn)行仲裁,其仲裁原則是這樣的:當(dāng)多個(gè)主器件同時(shí)想占用總線時(shí),如果某個(gè)主器件發(fā)送高電平,而另一個(gè)主器件發(fā)送低電平,則發(fā)送電平與此時(shí)SDA總線電平不符的那個(gè)器件將自動(dòng)關(guān)閉其輸出級(jí)??偩€競(jìng)爭(zhēng)的仲裁是在兩個(gè)層次上進(jìn)行的。首先是地址位的比較,如果主器件尋址同一個(gè)從器件,則進(jìn)入數(shù)據(jù)位的比較,從而確保了競(jìng)爭(zhēng)仲裁的可靠性。由于是利用I2C總線上的信息進(jìn)行仲裁,因此不會(huì)造成信息的丟失。&l
54、t;/p><p> 24C02與單片機(jī)的接口非常簡(jiǎn)單,如圖4-8所示。A0,A1,A2為器件地址線,WP為寫保護(hù)引腳,SCL,SDA為二線串行接口,符合I2C總線協(xié)議。</p><p> 圖4-8 24C02存儲(chǔ)電路</p><p> 4.4 液晶顯示電路</p><p> 顯示器部分是由HD61202液晶顯示控制驅(qū)動(dòng)器和HY12864液
55、晶顯示器組成的,下面我們對(duì)其分別進(jìn)行介紹。</p><p> 4.4.1 液晶顯示控制驅(qū)動(dòng)器HD61202的特點(diǎn)</p><p> HD61202液晶顯示控制驅(qū)動(dòng)器是一種帶有驅(qū)動(dòng)輸出的圖形液晶顯示控制器,它可直接與8位微處理器相連,它可與HD61203配合對(duì)液晶屏進(jìn)行行、列驅(qū)動(dòng)。HD61202是一種帶有列驅(qū)動(dòng)輸出的液晶顯示控制器,它可與行驅(qū)動(dòng)器HD61203配合使用,組成液晶顯示驅(qū)動(dòng)控
56、制系統(tǒng)[12]。</p><p> (1) 內(nèi)藏64×64=4096位顯示RAM,RAM中每位數(shù)據(jù)對(duì)應(yīng)LCD屏上一個(gè)點(diǎn)的亮、暗狀態(tài);</p><p> (2) HD61202是列驅(qū)動(dòng)器,具有64路列驅(qū)動(dòng)輸出;</p><p> (3) HD61202讀、寫操作時(shí)序與68系列微處理器相符,因此它可直接與68系列微處理器接口相連;</p>
57、<p> (4) HD61202的占空比為1/32~1/64。</p><p> 4.4.2 液晶顯示控制驅(qū)動(dòng)器HD61202的引腳功能</p><p> HD61202的引腳功能如下表4-4所示。</p><p> 表4-4 HD61202的引腳功能</p><p> 4.4.3 液晶顯示控制驅(qū)動(dòng)器HD61202的指令
58、系統(tǒng)</p><p> HD61202的指令系統(tǒng)比較簡(jiǎn)單,總共只有七種。現(xiàn)分別介紹如下。 </p><p> (1) 顯示開(kāi)/關(guān)指令</p><p> 當(dāng)DBO=1時(shí),LCD顯示RAM中的內(nèi)容;DBO=0時(shí),關(guān)閉顯示。</p><p> (2) 顯示起始行(
59、ROW)設(shè)置指令</p><p> 該指令設(shè)置了對(duì)應(yīng)液晶屏最上一行的顯示RAM的行號(hào),有規(guī)律的改變顯示起始行,可以使LCD實(shí)現(xiàn)顯示滾屏的效果。</p><p> (3) 頁(yè)(PAGE)置指令</p><p> 顯示RAM共64行,分8頁(yè),每頁(yè)8行。</p><p> (4) 列地址(Y Address)設(shè)置指令</p>
60、<p> 設(shè)置了頁(yè)地址和列地址,就唯一確定了顯示RAM中的一個(gè)單元,這樣MPU就可以用讀、寫指令讀出該單元中的內(nèi)容或向該單元寫進(jìn)一個(gè)字節(jié)數(shù)據(jù)。</p><p><b> (5) 讀狀態(tài)指令</b></p><p> 該指令用來(lái)查詢HD61202的狀態(tài),各參量含義如下:</p><p> BUSY: 1-內(nèi)部在工作 0-正常
61、狀態(tài)</p><p> ON/OFF:1-顯示關(guān)閉 0-顯示打開(kāi)</p><p> REST: 1-復(fù)位狀態(tài) 0-正常狀態(tài)</p><p> 在BUSY和REST狀態(tài)時(shí),除讀狀態(tài)指令外,其它指令均不對(duì)HD61202產(chǎn)生作用。在對(duì)HD61202操作之前要查詢BUSY狀態(tài),以確定是否可以對(duì)HD61202進(jìn)行操作。</p><p
62、><b> (6) 寫數(shù)據(jù)指令</b></p><p><b> (7) 讀數(shù)據(jù)指令</b></p><p> 讀、寫數(shù)據(jù)指令每執(zhí)行完一次讀、寫操作,列地址就自動(dòng)增一,必須注意的是,進(jìn)行讀操作之前,必須有一次空讀操作,緊接著再讀才會(huì)讀出所要讀的單元中的數(shù)據(jù)。</p><p> 4.4.4 HY-12864的電
63、路結(jié)構(gòu)特點(diǎn)</p><p> HY-12864是使用HD61202作為列驅(qū)動(dòng)器,同時(shí)使用HD61203作為行驅(qū)動(dòng)器的液晶模塊。由于HD61203不與MPU發(fā)生聯(lián)系,只要提供電源就能產(chǎn)生行驅(qū)動(dòng)信號(hào)和各種同步信號(hào),比較簡(jiǎn)單,因此這就不做介紹了。</p><p> 下面主要介紹以下HY-12864這個(gè)模塊的邏輯電路圖。HY-12864共有兩片HD61202和一片HD61203,如下圖4-9所
64、示。</p><p> 圖4-9 HY-12864的邏輯電路圖</p><p> 在HY-12864中,兩片HD61202的ADC均接高電平,RST也接高電平,這樣在使用HY-12864時(shí)就不必再考慮這兩個(gè)引腳的作用。/CSA跟HD61202(1)的/CS1相連;/CSB跟HD61202(2)的CS1相連,因此/CSA、/CSB選通組合信號(hào)為/CSA,/CSB=01選通(1),/CSA
65、,/CSB=10選通(2)。對(duì)于HY-12864,只要供給VDD、VSS和V0即可,HD61202和HD61203所需的電源將由模塊內(nèi)部電路在VDD和V0、VSS的作用下產(chǎn)生。</p><p> 4.4.5 HY-12864的應(yīng)用</p><p> 以下內(nèi)容為以單片機(jī)8031為例機(jī)的接口電路,電路原理圖如圖4-10所示??刂齐娐窞橹苯釉L問(wèn)方式的接口電路。</p><
66、p> 圖4-10 8031與液晶的接口電路</p><p> 根據(jù)以上電路原理圖中液晶的各引腳與單片機(jī)的接法,可得本設(shè)計(jì)的液晶模塊電路如圖4-11所示。VSS接地;數(shù)字電源VDD接+5V;對(duì)比度控制電壓V0接電位器,可通過(guò)調(diào)節(jié)電位器調(diào)整液晶亮度;數(shù)據(jù)、指令選擇信號(hào)RS接單片機(jī)P2.0口;讀寫選擇信號(hào)R/W接單片機(jī)P2.1口;單片機(jī)讀、寫選通信號(hào)/RD、/WR通過(guò)與非門接液晶的讀寫使能信號(hào)E;DB0~D
67、B7分別接單片機(jī)的P0.0~P0.7口;芯片1、芯片2的片選分別接單片機(jī)的P2.2、P2.3口;復(fù)位端RST、背光正電源LEDA接+5V;液晶驅(qū)動(dòng)電壓VEE、背光負(fù)電源LEDK接地。</p><p> 圖4-11 液晶模塊電路</p><p><b> 4.5 鍵盤電路</b></p><p> 本設(shè)計(jì)共采用按鍵3個(gè),分別與單片機(jī)的P1
68、.7、P1.6、P1.5口相連,分別對(duì)應(yīng)光標(biāo)移動(dòng),時(shí)間、日期調(diào)整,退出、鬧鈴開(kāi)關(guān)鍵的功能。與單片機(jī)的接法可參照附錄1——電子萬(wàn)年歷設(shè)計(jì)電路原理圖。</p><p><b> 4.6 鬧鈴電路</b></p><p> 當(dāng)鬧鈴顯示“關(guān)”時(shí),鬧鈴不起作用;當(dāng)鬧鈴顯示“開(kāi)”時(shí),設(shè)定鬧鈴時(shí)間,鬧鈴時(shí)間只可設(shè)定時(shí)和分,當(dāng)前時(shí)間不斷與設(shè)定的鬧鈴時(shí)間比較,不相等時(shí)不產(chǎn)生任何現(xiàn)象
69、,一旦相等,P3.5輸出一個(gè)高電平使三極管導(dǎo)通,從而使蜂鳴器工作,鬧鈴起作用。鬧鈴電路如圖4-12所示。</p><p> 圖4-12 鬧鈴電路</p><p><b> 5 系統(tǒng)程序的設(shè)計(jì)</b></p><p> 5.1 陽(yáng)歷程序的設(shè)計(jì)</p><p> 因?yàn)槭褂昧藭r(shí)鐘芯片DS1302,陽(yáng)歷程序只需從DS1
70、302各寄存器中讀出年、周、月、日、[?。輹r(shí)、分、秒等數(shù)據(jù),再處理即可。在首次對(duì)DS1302進(jìn)行操作之前,必須對(duì)它進(jìn)行初始化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過(guò)處理后,送給顯示緩沖單元。陽(yáng)歷程序流程圖見(jiàn)圖5-1所示。 </p><p> 圖5-1 陽(yáng)歷程序流程圖</p><p> 5.2 時(shí)間調(diào)整程序設(shè)計(jì)</p><p> 調(diào)整時(shí)間用三個(gè)調(diào)整按鈕,一個(gè)作為移
71、位、控制用,一個(gè)作為加用,一個(gè)作為退出調(diào)整和鬧鈴開(kāi)關(guān)用。分別定義為控制按鈕、加按鈕、退出按鈕。在調(diào)整時(shí)間過(guò)程中,要調(diào)整的位與別的位應(yīng)該有區(qū)別,所以增加了閃爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位。閃爍原理就是,讓要調(diào)整的一位每隔一定的時(shí)間熄滅一次,例如間隔時(shí)間為50ms。利用定時(shí)器計(jì)時(shí),當(dāng)達(dá)到50ms溢出時(shí),就送給該位熄滅符,在下一次溢出時(shí),再送正常顯示的值,不斷交替,直到調(diào)整該位結(jié)束。此時(shí)送正常顯示值給該位,再進(jìn)入下一位調(diào)整閃爍程
72、序。時(shí)間調(diào)整程序流程圖如圖5-2所示。</p><p> 圖5-2 時(shí)間調(diào)整程序流程圖</p><p> 5.3 陰歷程序設(shè)計(jì)</p><p> 陰歷程序的實(shí)現(xiàn)是要靠陽(yáng)歷日期來(lái)推算的。要根據(jù)陽(yáng)歷來(lái)推算陰歷日期,首先要設(shè)計(jì)算法。推算方法是,根據(jù)陽(yáng)歷當(dāng)前日期在一年中的天數(shù)來(lái)計(jì)算陰歷日期。陽(yáng)歷一個(gè)月不是30天就是31天(2月除外,閏年2月為29天,平年2月為28天)
73、。陰歷一年有12個(gè)月或13個(gè)月(含閏月),一個(gè)月為30天或29天。如果把一個(gè)只有29天的月稱為小月,用1為標(biāo)志,把30天的月稱為大月,用0為標(biāo)志,那么12位二進(jìn)制就能表示一年12個(gè)月的大小。如果有閏月,則把閏月的月份作為一個(gè)字節(jié)的高4位,低4位表示閏月大小,大月為0,小月為1,這樣一個(gè)字節(jié)就包括了所有閏月的信息。陰歷春節(jié)和陽(yáng)歷元旦相差的天數(shù)也用一個(gè)字節(jié)表示??偣灿?字節(jié)就可以存儲(chǔ)一年中任何一天陽(yáng)歷和陰歷的對(duì)應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004
74、年的陰歷和陽(yáng)歷對(duì)應(yīng)關(guān)系如表5-1所示。</p><p> 表5-1 2004年的陰歷和陽(yáng)歷對(duì)應(yīng)關(guān)系表</p><p> 2004年的春節(jié)和元旦差21天,這樣2004年的信息表示為:21,42H,52H,21H。其中表示12個(gè)月大小信息的字節(jié),第4位和第7位不用,第1個(gè)字節(jié)為十進(jìn)制,其它的都為十六進(jìn)制。按此方法,50年的陽(yáng)歷和陰歷對(duì)應(yīng)關(guān)系表總共使用200字節(jié)。</p>&
75、lt;p> 有了算法和數(shù)據(jù)以后,就可以設(shè)計(jì)軟件了。先要根據(jù)當(dāng)前陽(yáng)歷的日期,算出陽(yáng)歷為該年中的第幾天。圖5-3為計(jì)算陽(yáng)歷中任何一天在該年中為第幾天的程序流程圖。</p><p> 圖5-3 計(jì)算陽(yáng)歷天數(shù)程序流程圖</p><p> 計(jì)算出當(dāng)前陽(yáng)歷日期為該年中的第幾天后,再減去陽(yáng)歷該年春節(jié)和元旦的日差,如果夠減,則相減的結(jié)果就是陰歷在該年中的總第幾天了。根據(jù)該數(shù)據(jù)就可以推算出具體的
76、當(dāng)前陰歷日期;如果不夠減,則表示當(dāng)前陰歷年為陽(yáng)歷年的前一年。這種情況下,根據(jù)實(shí)際,當(dāng)前陰歷日期會(huì)處于陰歷11月或12月,此時(shí)春節(jié)和元旦的日差減去前面計(jì)算出的當(dāng)前陽(yáng)歷日期在陽(yáng)歷年為第幾天的數(shù)據(jù),其結(jié)果表示當(dāng)前陰歷日期離春節(jié)的天數(shù)。計(jì)算出的陽(yáng)歷天數(shù)為該年的第幾天,存放在寄存器R2和R3中。計(jì)算出天數(shù)后,如果大于#FFH,則把#FFH存放在R2中,余值存放在R3中。也就是說(shuō)在用寄存器R2和R3表示的天數(shù)信息中,R2充當(dāng)主寄存器,數(shù)據(jù)先存滿R2
77、,再存R3。在整個(gè)轉(zhuǎn)換程序中,這里面的數(shù)據(jù)不能被覆蓋。</p><p> 計(jì)算出陽(yáng)歷總天數(shù)后,就可以根據(jù)它來(lái)推算陰歷日期。推算方法是,先用總天數(shù)減去春節(jié)和元旦的日差,如果結(jié)果為1,則該天正好是春節(jié)(因?yàn)榇汗?jié)在元旦之后,在計(jì)算春節(jié)和元旦的日差時(shí),假設(shè)元旦為0天,春節(jié)為n天,則日差為n。而前面計(jì)算的陽(yáng)歷總天數(shù)是該天在該年中的第幾天,是以元旦為1而得到的,與計(jì)算春節(jié)和元旦日差的這樣方法相比,其數(shù)值少了1,所以要在原來(lái)
78、本應(yīng)該以0作為該天就是春節(jié)的依據(jù)的基礎(chǔ)上加1,所以以1作為該天是春節(jié)的標(biāo)志);如果結(jié)果小于1,則陰歷應(yīng)該是陽(yáng)歷的前一年;如果結(jié)果大于1,說(shuō)明陽(yáng)歷和陰歷為同一年。再根據(jù)查表所得的該年的陰歷的閏年和大小月的信息,就可以推算出該天的陰歷日期了。圖5-4為由總天數(shù)推算出陰歷日期的程序流程圖。</p><p> 圖5-4 推算陰歷日期的程序流程圖</p><p><b> 6 測(cè)試結(jié)果
79、</b></p><p> 設(shè)計(jì)完成后,給系統(tǒng)上電,液晶顯示屏顯示結(jié)果如圖6-1所示。</p><p> 圖6-1 液晶顯示屏的顯示結(jié)果</p><p> 調(diào)節(jié)10K電位器R4可調(diào)整液晶顯示屏的亮度。調(diào)整到合適亮度后,按控制按鈕,光標(biāo)會(huì)從陽(yáng)歷年位開(kāi)始閃爍,進(jìn)入設(shè)定調(diào)整狀態(tài)。此時(shí)按加按鈕,當(dāng)前數(shù)字就可改變。按一次,數(shù)字加1;若長(zhǎng)按,則數(shù)字連續(xù)加。此時(shí)
80、,調(diào)整的位一直在閃爍,直到再次按光標(biāo)移動(dòng)控制位,光標(biāo)跳到下一位閃爍。調(diào)整順序依次為:陽(yáng)歷年、月、日,陰歷年、月、日,時(shí)、分、秒,鬧鈴時(shí)、分。當(dāng)全部參數(shù)調(diào)整完畢后,按退出按鈕,光標(biāo)停止閃爍,退出設(shè)定調(diào)整狀態(tài);當(dāng)再次按下此按鈕,鬧鈴顯示“開(kāi)”;當(dāng)?shù)谌伟聪麓随I,鬧鈴顯示“關(guān)”。若當(dāng)前月為閏月,則屏幕左下角會(huì)顯示“閏月”;若不是閏月,則無(wú)顯示。</p><p> 調(diào)試分為硬件調(diào)試和軟件調(diào)試。硬件調(diào)試主要是檢測(cè)硬件電路
81、是否有短路、斷路、虛焊等。DS1302的硬件電路很簡(jiǎn)單,只通過(guò)3根線與單片機(jī)相連,很容易檢測(cè),主要是檢查其引腳,如晶振和電源等是否接好。另外可以通過(guò)軟件來(lái)調(diào)試硬件,如為了測(cè)試顯示電路連接是否正確,可以編寫一個(gè)簡(jiǎn)單的顯示程序來(lái)測(cè)試它。接下來(lái)可進(jìn)行軟件調(diào)試,可以編寫只含DS1302的計(jì)時(shí)和讀寫程序、顯示程序,測(cè)試DS1302是否正常工作。最后調(diào)試時(shí)間調(diào)整程序和陰歷推算程序。</p><p> 計(jì)時(shí)器最關(guān)鍵的是計(jì)時(shí)的
82、精度。電子萬(wàn)年歷中DS1302電路使用專用的晶振,經(jīng)測(cè)試制作的電子萬(wàn)年歷,一星期快了3s左右,誤差較大,實(shí)驗(yàn)設(shè)計(jì)中可換用標(biāo)準(zhǔn)晶振或用軟件進(jìn)行修正。</p><p><b> 7 結(jié)論</b></p><p> 本設(shè)計(jì)硬件電路較簡(jiǎn)單,所用器件較少,電路中使用了AT89S52單片機(jī)、DS1302時(shí)鐘芯片、24C02FLASH存儲(chǔ)器和HY-12864液晶顯示器等主要芯片
83、,實(shí)現(xiàn)了預(yù)計(jì)功能。</p><p> 在對(duì)芯片的管腳功能和用法有充分的了解后,根據(jù)設(shè)計(jì)要求設(shè)計(jì)硬件電路,包括單片機(jī)控制電路、時(shí)鐘電路、存儲(chǔ)電路、鍵盤掃描電路、顯示電路和鬧鈴電路。然后通過(guò)軟件編程,實(shí)現(xiàn)了對(duì)年、月、日、時(shí)、分、秒、星期、閏年和陰歷的自動(dòng)調(diào)整,用按鍵進(jìn)行控制,用液晶模塊進(jìn)行顯示,并具有鬧鈴功能。</p><p> 電子萬(wàn)年歷可以正常顯示時(shí)間并進(jìn)行時(shí)間調(diào)整,基本完成了預(yù)期要實(shí)
84、現(xiàn)的目標(biāo)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 吳金戌,沈慶陽(yáng).8051單片機(jī)實(shí)踐與應(yīng)用,北京:清華大學(xué)出版社,2003.12,26-38.</p><p> [2] 何立民.單片機(jī)應(yīng)用文集,北京:北京航空航天大學(xué)出版社,1991,53-72.</p><p> [3] 公茂法.
85、單片機(jī)人機(jī)接口實(shí)例集,北京:北京航空航天大學(xué)出版社,1998.2,32-59.</p><p> [4] 何立明.單片機(jī)高級(jí)教程——應(yīng)用與設(shè)計(jì),北京:北京航天航空大學(xué)出版社,2000.4,149-173.</p><p> [5] 李廣弟,朱月秀.單片機(jī)基礎(chǔ),北京:北京航空航天大學(xué)出版社,2001.8,36-85.</p><p> [6] 樓然苗,李光飛.M
86、CS-51系列單片機(jī)設(shè)計(jì)實(shí)例,北京:北京航天航空大學(xué)出版社,2001.3,75-83.</p><p> [7] 李華.單片機(jī)原理與接口技術(shù),北京:清華大學(xué)出版社,33-80.</p><p> [8] 王偉.高性能、低功耗帶RAM實(shí)時(shí)時(shí)鐘芯片DS1302(上),電子世界:第一期,</p><p> 1995,26-35.</p><p&g
87、t; [9] 王偉.高性能、低功耗帶RAM實(shí)時(shí)時(shí)鐘芯片DS1302(下),電子世界:第四期,1995,32-41.</p><p> [10] 劉光潭.中外集成電路簡(jiǎn)明速察手冊(cè),上海:電子工業(yè)出版社,1991.</p><p> [11] 一九九九年產(chǎn)品目錄(第一期),武漢力源股份有限公司,1999.</p><p> [12] 劉利.液晶顯示原理,上海:電
88、子工業(yè)出版社,2002.5,52-70.</p><p> [13] 李宏,張家田.液晶顯示器件應(yīng)用技術(shù),北京:機(jī)械工業(yè)出版社,2004,156-183.</p><p> [14] 沈慶陽(yáng).漢字顯示應(yīng)用技術(shù),上海:電子工業(yè)出版社,2002.3,128-139.</p><p> [15] MAXIM.NEW RELEASES DATA BOOK (VOLUM
89、E V),AMERICA,1996.</p><p><b> 致 謝</b></p><p> 不知不覺(jué),十二周的畢業(yè)設(shè)計(jì)結(jié)束了。我的畢業(yè)論文已整理完畢,電路調(diào)試進(jìn)展良好。畢業(yè)設(shè)計(jì)的完成意味著我的大學(xué)學(xué)習(xí)生活即將結(jié)束,從此我將進(jìn)入一個(gè)新的人生旅途、開(kāi)始一段嶄新的生活——工作。在此,我衷心地感謝所有在我做畢業(yè)設(shè)計(jì)期間幫助過(guò)我的人。 </p><
90、p> 首先我要感謝我的指導(dǎo)老師李杰的大力幫助和支持。在整個(gè)設(shè)計(jì)過(guò)程當(dāng)中,李老師在大局上指導(dǎo)我畢業(yè)設(shè)計(jì)的每一進(jìn)程,還在百忙中抽空為我答疑解難,幫我分析講解畢業(yè)設(shè)計(jì)中所遇到的問(wèn)題。不僅如此,李老師還無(wú)私的給我提供了豐富的學(xué)習(xí)資源和良好的學(xué)習(xí)環(huán)境,為我的畢業(yè)設(shè)計(jì)帶來(lái)了很大方便。同時(shí)在我完成畢業(yè)設(shè)計(jì)的過(guò)程中提供了很多指導(dǎo)性的意見(jiàn),使我受益匪淺。另外,李老師淵博的學(xué)識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和為人給了我很大的教育,這些將使我終身受益。在此,我衷心
91、感謝李老師給予我的幫助和教育。</p><p> 此外,我還要感謝胡建明老師和陳海山同學(xué)給予我的無(wú)私的幫助,他們?cè)诔绦蚓帉懞驼{(diào)試過(guò)程中給予了我莫大的幫助。在此,我真誠(chéng)地感謝他們。</p><p> 最后,我要感謝我的母校——天津工程師范學(xué)院,在校期間,這里給我留下了美好的回憶。特別是在我即將踏上工作崗位的同時(shí),畢業(yè)設(shè)計(jì)整個(gè)過(guò)程給了我這樣一個(gè)鍛煉的機(jī)會(huì),使我加深了對(duì)以前知識(shí)的理解和鞏固,
92、拓寬了知識(shí)面,也提高了我對(duì)所學(xué)知識(shí)的綜合應(yīng)用能力。我要對(duì)母校說(shuō):母校有我三五載,我愛(ài)母校一萬(wàn)年。祝愿母校的將來(lái)更美好!</p><p> 附錄1:電子萬(wàn)年歷設(shè)計(jì)電路原理圖</p><p><b> 附錄2 主程序</b></p><p> MAIN: MOV SP,#70H</p><p> LCALL DE
93、LAY</p><p> ;LCALL DELAY</p><p> ;LCALL DELAY</p><p> MOV 59H,#00H ;判斷調(diào)整地址</p><p> CLR 22H ;停止周期第三位閃爍</p><p> CLR 23
94、H ;判斷是否開(kāi)鬧鈴</p><p><b> CLR P3.5</b></p><p> MOV IE,#00H ;關(guān)所有中斷</p><p> MOV TMOD,#10H</p><p> MOV TL1,#0F0H</p>
95、<p> MOV TH1,#00H</p><p> ;MOV IP,#01H</p><p> ;SETB EX0 ;開(kāi)外中斷</p><p> SETB EA ;開(kāi)總中斷允許</p><p> LCALL VIICREAD ;將EEPROM中
96、原頻率數(shù)據(jù)調(diào)入內(nèi)存</p><p> ;MOV 65H,#00H</p><p> ;MOV 66H,#00H</p><p> ;MOV 67H,#00H</p><p> ;MOV 68H,#00H</p><p> LCALL INT</p><p> LCALL CL
97、EAR</p><p> LCALL INTSHI</p><p> LCALL DDD ;靜態(tài)字顯示</p><p><b> ;以下字為動(dòng)態(tài)顯示</b></p><p> DONGXIAN:MOV DPTR,#CCTAB</p><p> MOV
98、 ZIDI,DPL</p><p> MOV ZIGAO,DPH</p><p> MOV DONGXH, #1CH</p><p> DXH1: MOV PAGER, #00H ;16X16點(diǎn)陣字體,第2頁(yè)</p><p> MOV COLUMN,#00H ;起始列為第0
99、列</p><p> MOV CODER,#00H ;字符代碼</p><p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#10H</p><p> MOV CODER,#01H</
100、p><p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#20H</p><p> MOV CODER,#02H</p><p> LCALL CCW_PR</p><p> MOV
101、 PAGER, #00H ;16X16點(diǎn)陣字體,第2頁(yè)</p><p> MOV COLUMN,#30H ;起始列為第0列</p><p> MOV CODER,#03H ;字符代碼</p><p> LCALL CCW_PR</p><p> MOV
102、 PAGER,#00H</p><p> MOV COLUMN,#40H</p><p> MOV CODER,#04H</p><p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#50H</p
103、><p> MOV CODER,#05H</p><p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#60H</p><p> MOV CODER,#06H</p><p> L
104、CALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#70H</p><p> MOV CODER,#07H</p><p> LCALL CCW_PR</p><p> LCALL DELAY</p>
105、<p> CLR C ; 動(dòng)態(tài)顯示循環(huán)程序控制</p><p> MOV A,ZIDI</p><p> ADD A,#20H</p><p> MOV ZIDI,A</p><p> MOV A,ZIGAO</p>&l
106、t;p> ADDC A,#00H</p><p> MOV ZIGAO,A</p><p> L1: MOV 3CH,#0F7H ;開(kāi)始鍵掃描</p><p> MOV 3DH,#00H</p><p> L2: MOV A,3CH</p><p
107、><b> MOV P1,A</b></p><p><b> MOV A,P1</b></p><p><b> MOV 3EH,A</b></p><p><b> SETB C</b></p><p> MOV 3FH,#04H<
108、;/p><p> L3: RLC A</p><p> JNC MNJIXU</p><p><b> INC 3DH</b></p><p> DJNZ 3FH,L3</p><p> LCALL DISP1</p><p><b> MOV A,
109、3CH</b></p><p><b> SETB C</b></p><p><b> RRC A</b></p><p><b> MOV 3CH,A</b></p><p><b> JC L2</b></p>&l
110、t;p><b> JMP MNMN</b></p><p> MNJIXU:MOV A,P1</p><p><b> XRL A,3EH</b></p><p><b> JNZ DF3</b></p><p> AJMP DF3
111、 ; MNJIXU</p><p> DF3: CLR C</p><p><b> MOV A,3DH</b></p><p><b> RLC A</b></p><p> MOV DPTR,#TABLE</p><p> JMP @A+DPTR&
112、lt;/p><p> AJMP DONGXIAN</p><p> TABLE: AJMP MN0 ;鍵盤入口地址</p><p><b> AJMP MN1</b></p><p><b> AJMP MN2</b></p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子萬(wàn)年歷
- 萬(wàn)年歷課程設(shè)計(jì)--萬(wàn)年歷電子時(shí)鐘
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 電子萬(wàn)年歷外文翻譯
- 電子萬(wàn)年歷設(shè)計(jì)與制作
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬(wàn)年歷設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告--電子萬(wàn)年歷
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)稿
- 畢業(yè)論文——電子萬(wàn)年歷設(shè)計(jì)
- 電子萬(wàn)年歷設(shè)計(jì)-畢業(yè)論文
- 電子萬(wàn)年歷課程設(shè)計(jì) (2)
- 電子萬(wàn)年歷的設(shè)計(jì)與仿真
- 電子萬(wàn)年歷設(shè)計(jì)報(bào)告書(shū)
- proteus課程設(shè)計(jì)--電子萬(wàn)年歷
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)2
- 電子萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- 畢業(yè)論文——電子萬(wàn)年歷設(shè)計(jì)
- 電子萬(wàn)年歷畢業(yè)論文
評(píng)論
0/150
提交評(píng)論