版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1 引言1</b></p><p><b> 1.2方案選擇1</b></p><p> 1.2.1 方案1——基于AT89S52單片機(jī)的電子萬年歷設(shè)計(jì)1</p><p> 1.2.2方案2
2、——基于AT89S52單片機(jī)和DS1302的電子萬年歷設(shè)計(jì)2</p><p><b> 2 系統(tǒng)概述3</b></p><p> 3 系統(tǒng)硬件電路的設(shè)計(jì)4</p><p> 3.1 系統(tǒng)核心部分——單片機(jī) AT89S524</p><p> 3.1.1 AT89S52具有下列主要性能4</p>
3、;<p> 3.1.2 AT89S52的引腳及功能5</p><p> 3.2 DS1302時(shí)鐘電路7</p><p> 3.2.1 DS1302芯片介紹7</p><p> 3.2.2 DS1302 的應(yīng)用11</p><p> 3.3 存儲(chǔ)電路11</p><p> 3.3.1
4、AT24C02管腳介紹11</p><p> 3.3.2 AT24C02的特性12</p><p> 3.4 液晶顯示電路14</p><p> 3.4.1 液晶顯示控制驅(qū)動(dòng)器HD61202的特點(diǎn)14</p><p> 3.4.2 液晶顯示控制驅(qū)動(dòng)器HD61202的引腳功能14</p><p> 3
5、.4.3 液晶顯示控制驅(qū)動(dòng)器HD61202的指令系統(tǒng)15</p><p> 3.4.4 HY-12864的電路結(jié)構(gòu)特點(diǎn)17</p><p> 3.4.5 HY-12864的應(yīng)用17</p><p> 3.5 鍵盤電路19</p><p> 3.6 鬧鈴電路19</p><p> 4 系統(tǒng)程序的設(shè)計(jì)
6、20</p><p> 4.1 陽歷程序的設(shè)計(jì)20</p><p> 4.2 時(shí)間調(diào)整程序設(shè)計(jì)20</p><p> 4.3 陰歷程序設(shè)計(jì)22</p><p><b> 5 測試結(jié)果25</b></p><p><b> 6 結(jié)論26</b></p&
7、gt;<p><b> 參考文獻(xiàn)27</b></p><p> 附錄1:電子萬年歷設(shè)計(jì)電路原理圖28</p><p> 附錄2 主程序29</p><p><b> 致 謝43</b></p><p><b> 1 引言</b></p&g
8、t;<p> 隨著科技的不斷進(jìn)步和發(fā)展,單片機(jī)的使用已經(jīng)滲透到我們?nèi)粘I町?dāng)中的各個(gè)領(lǐng)域,幾乎很難找到有哪個(gè)領(lǐng)域沒有使用單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄相機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了
9、。 </p><p> 本文設(shè)計(jì)的電子萬年歷屬于小型智能家用電子產(chǎn)品。利用單片機(jī)進(jìn)行控制,實(shí)時(shí)時(shí)鐘芯片進(jìn)行記時(shí),外加掉電存儲(chǔ)電路和顯示電路,可實(shí)現(xiàn)時(shí)間的調(diào)整和顯示。電子萬年歷既可廣泛應(yīng)用于家庭,也可應(yīng)用于銀行、郵電、賓館、飯店、醫(yī)院、學(xué)校、企業(yè)、商店等相關(guān)行業(yè)的大廳,以及單位會(huì)議室、門衛(wèi)等場所。因而,此設(shè)計(jì)具有相當(dāng)重要的現(xiàn)實(shí)意義和實(shí)用價(jià)值。</p><p><b> 1.2方
10、案選擇</b></p><p> 由于現(xiàn)在市面上的電子萬年歷的種類比較多,因此到底選擇什么樣的方案在設(shè)計(jì)中是至關(guān)重要的。正確地選擇方案就可以使產(chǎn)品更加人性化,并且可以減小開發(fā)的難度,縮短開發(fā)的周期,降低產(chǎn)品的成本等等,因此就會(huì)被人們普遍接受,并且能夠更快地將產(chǎn)品推向市場實(shí)現(xiàn)其自身的價(jià)值。下面我們就擬訂了兩種方案,希望能夠選擇一種性價(jià)比高的方案。</p><p> 1.2.1
11、 方案1——基于AT89S52單片機(jī)的電子萬年歷設(shè)計(jì)</p><p> 不使用時(shí)鐘芯片,而直接用AT89S52單片機(jī)來實(shí)現(xiàn)電子萬年歷設(shè)計(jì)。AT89S52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS 8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦寫1000余次。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89S52是一種高效微控制器,為很多嵌入式控制系統(tǒng)
12、提供了一種靈活性高且價(jià)廉的方案。</p><p> 若采用單片機(jī)計(jì)時(shí),利用它的一個(gè)16位定時(shí)器/計(jì)數(shù)器每50ms產(chǎn)生一個(gè)中斷信號,中斷20次后產(chǎn)生一個(gè)秒信號,然后根據(jù)時(shí)間進(jìn)制關(guān)系依次向分、時(shí)、日、星期、月、年進(jìn)位。這樣就實(shí)現(xiàn)了直接用單片機(jī)來實(shí)現(xiàn)電子萬年歷設(shè)計(jì)。</p><p> 用單片機(jī)來實(shí)現(xiàn)電子萬年歷設(shè)計(jì),無須外接其他芯片,充分利用了單片機(jī)的資源。但是精度不夠高,誤差較大,掉電后丟失
13、所有數(shù)據(jù),軟件編程較復(fù)雜。</p><p> 2.2 方案2——基于AT89S52單片機(jī)和DS1302的電子萬年歷設(shè)計(jì)</p><p> 在以單片機(jī)為核心構(gòu)成的裝置中,經(jīng)常需要一個(gè)實(shí)時(shí)的時(shí)鐘和日歷,以便對一些實(shí)時(shí)發(fā)生事件記錄時(shí)給予時(shí)標(biāo),實(shí)時(shí)時(shí)鐘芯片便可起到這一作用。過去多用并行接口的時(shí)鐘芯片,如MC146818,DS12887等。它們已能完全滿足單片機(jī)系統(tǒng)對實(shí)時(shí)時(shí)鐘的要求,但是這些芯片
14、與單片機(jī)接口復(fù)雜、占用地址, 數(shù)據(jù)總線接線多、芯片體積大占用空間多、近年來串行接口的各種芯片在單片機(jī)系統(tǒng)中應(yīng)用愈來愈多,串行接口的實(shí)時(shí)時(shí)鐘芯片也出現(xiàn)了不少,DS1302是一個(gè)綜合性能較好且價(jià)格便宜的串行接口實(shí)時(shí)時(shí)鐘芯片。</p><p> 利用單片機(jī)進(jìn)行控制,采用DS1302作為實(shí)時(shí)時(shí)鐘芯片,其三線接口 SCLK、I/O、與單片機(jī)進(jìn)行同步通信,外加掉電存儲(chǔ)電路、顯示電路、鍵盤電路和鬧鈴電路,即構(gòu)成一個(gè)基本的電子
15、萬年歷系統(tǒng),若還要添加其他功能,在這基礎(chǔ)上外擴(kuò)電路即可。</p><p> 由于在系統(tǒng)設(shè)計(jì)時(shí),需要考慮以下幾點(diǎn)因素:功耗低、精確度高、軟件編程較簡單,芯片的體積小、芯片成本低等,而DS1302芯片有上面所述的諸多優(yōu)點(diǎn),所以本設(shè)計(jì)采用方案2——基于DS1302的電子萬年歷設(shè)計(jì)。</p><p><b> ,</b></p><p><b
16、> 2 系統(tǒng)概述</b></p><p> 本設(shè)計(jì)以AT89S52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路,結(jié)合DS1302時(shí)鐘芯片和24C02 FLASH存儲(chǔ)器,顯示陽歷的年、月、日、星期、時(shí)、分、秒和陰歷的年、月、日,在顯示陰歷時(shí)間時(shí),能標(biāo)明是否閏月,同時(shí)完成對它們的自動(dòng)調(diào)整和掉電保護(hù),全部信息用液晶顯示出來。輸入接口由三個(gè)按鍵來實(shí)現(xiàn),用這三個(gè)按鍵可以對日期和時(shí)間進(jìn)行調(diào)整,并可以對鬧鈴的開關(guān)和鬧
17、鈴的時(shí)間進(jìn)行設(shè)置。鬧鈴功能通過蜂鳴器來實(shí)現(xiàn)。軟件控制程序?qū)崿F(xiàn)所有的功能。整機(jī)電路使用+5V穩(wěn)壓電源,可穩(wěn)定工作。系統(tǒng)框圖如圖2-1所示,其軟硬件設(shè)計(jì)簡單,時(shí)間記錄準(zhǔn)確,可廣泛應(yīng)用于長時(shí)間連續(xù)顯示的系統(tǒng)中。</p><p><b> 圖2-1 系統(tǒng)框圖</b></p><p> 3 系統(tǒng)硬件電路的設(shè)計(jì)</p><p> 按照系統(tǒng)設(shè)計(jì)功能的要
18、求,初步確定設(shè)計(jì)系統(tǒng)由主控模塊、時(shí)鐘模塊、存儲(chǔ)模塊、鍵盤接口模塊、顯示模塊和鬧鈴模塊共6個(gè)模塊組成,電路系統(tǒng)構(gòu)成框圖如圖3-1所示。主控芯片使用52系列AT89S52單片機(jī),時(shí)鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片DS1302,存儲(chǔ)模塊采用美國ATMEL公司生產(chǎn)的低功耗CMOS串行EEPROM存儲(chǔ)芯片AT24C02。DS1302作為主要計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小
19、電流的后備 (2.5~5.5V電源,在2.5V時(shí)耗電小于300nA)下繼續(xù)計(jì)時(shí),并可編程選擇多種充電電流來對后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。</p><p> 圖3-1 電子萬年歷電路系統(tǒng)構(gòu)成框圖</p><p> 3.1 系統(tǒng)核心部分——單片機(jī) AT89S52</p><p> AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含
20、8k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。</p><p> 3.1.1 AT89S
21、52具有下列主要性能 </p><p> ·8KB可改編程序Flash存儲(chǔ)器(可經(jīng)受1000次的寫入/擦除周期) </p><p> ·全靜態(tài)工作:0Hz~24MHz</p><p> ·三級程序存儲(chǔ)器保密</p><p> ·128×8字節(jié)內(nèi)部RAM</p><
22、;p> ·32條可編程I/O線</p><p> ·2個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b> ·6個(gè)中斷源</b></p><p><b> ·可編程串行通道</b></p><p><b> ·片內(nèi)時(shí)鐘振蕩器&l
23、t;/b></p><p> 3.1.2 AT89S52的引腳及功能</p><p> AT89S52單片機(jī)的管腳說明如圖3-2所示。</p><p> 圖3-2 AT89S52的管腳</p><p> (1) 主要電源引腳</p><p><b> ?、賄CC 電源端</b>&l
24、t;/p><p><b> ?、贕ND 接地端</b></p><p> (2) 外接晶體引腳XTAL1和XTAL2</p><p> ?、賆TAL1 接外部晶體的一個(gè)引腳。在單片機(jī)內(nèi)部,它是構(gòu)成片內(nèi)振蕩器的反相放大器的輸入端。當(dāng)采用外部振蕩器時(shí),該引腳接收振蕩器的信號,既把此信號直接接到內(nèi)部時(shí)發(fā)生器的輸入端。</p><
25、p> ②XTAL2 接外部晶體的另一個(gè)引腳。在單片機(jī)內(nèi)部,它是上述振蕩器的反相放大器的輸出端。采用外部振蕩器時(shí),此引腳應(yīng)懸浮不連接。</p><p> (3) 控制或與其它電源復(fù)用引腳RST、ALE/、和/VPP</p><p> ?、購?fù)位輸入端。當(dāng)振蕩器運(yùn)行時(shí),在該引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。</p><p> ?、贏LE/當(dāng)訪問外部
26、存儲(chǔ)器時(shí),ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE端仍以不變的頻率(此頻率為振蕩器頻率的1/6)周期性地出現(xiàn)正脈沖信號。因此,它可用作對外輸出的時(shí)鐘,或用于定時(shí)目的。然而要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。在對Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖()[6]。</p><p> ?、?程序存儲(chǔ)允許()輸出是外部程序存儲(chǔ)器的讀選通信號。當(dāng)
27、AT89S52/LV52由外部程序存儲(chǔ)器取指令(或常數(shù))時(shí),每個(gè)機(jī)器周期兩次有效(既輸出2個(gè)脈沖)。但在此期間內(nèi),每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的信號將不出現(xiàn)。</p><p> ?、?VPP 外部訪問允許端。要使CPU只訪問外部程序存儲(chǔ)器(地址為0000H~FFFFH),則端必須保持低電平(接到GND端)。當(dāng)端保持高電平(接VSS端)時(shí),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的程序。</p><
28、;p> (4) 輸入/輸出引腳 P0.0~ P0.7、P1.0~P1.7、P2.0~ P2.7 和P3.0~P3.7</p><p> ?、貾0端口(P0.0~ P0.7) P0是一個(gè)8位漏極開路型雙向I/O端口。作為輸出口用時(shí),每位能以吸收電流的方式驅(qū)動(dòng)8個(gè)TTL輸入,對端口寫1時(shí),又可作高阻抗輸入端用。</p><p> ②P1端口(P1.0~ P1.7) P1是一個(gè)帶有內(nèi)部
29、上拉電阻的8位雙向I/O端口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對端口寫1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。作輸入口時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號拉低的引腳會(huì)輸出一個(gè)電流。</p><p> ?、跴2端口 (P2.0~P2.7) P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對端口寫1時(shí),通過
30、內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P2作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號拉低的引腳會(huì)輸出一個(gè)電流。</p><p> ④P3端口(P3.0~P3.7) P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。P3口也可作為AT89S
31、52的一些特殊功能,這些特殊功能見表3-1[7]。</p><p> 表3-1 P3端口的特殊功能</p><p> 3.2 DS1302時(shí)鐘電路</p><p> 3.2.1 DS1302芯片介紹</p><p> 低功耗時(shí)鐘芯片DS1302可以對年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。DS1302用于數(shù)據(jù)記錄,特
32、別是對某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄。這種記錄對長時(shí)間的連續(xù)測控系統(tǒng)結(jié)果的分析以及對異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義[8]。</p><p> 采用DS1302作為記錄測控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計(jì)簡單,時(shí)間記錄準(zhǔn)確,既避免了連續(xù)記錄的大工作量,又避免了定時(shí)記錄的盲目性,給連續(xù)長時(shí)間的測量、控制系統(tǒng)的正常運(yùn)行及檢查都來了很大的方便,可廣泛應(yīng)用于長時(shí)間連續(xù)的測控系統(tǒng)中
33、。在測量控制系統(tǒng)中,特別是長時(shí)間無人職守的測控系統(tǒng)中,經(jīng)常需要記錄某些具有特殊意義的數(shù)據(jù)及其出現(xiàn)的時(shí)間。記錄及分析這些特殊意義的數(shù)據(jù),對測控系統(tǒng)的性能分析及正常運(yùn)行具有重要的意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時(shí)采樣或定時(shí)采樣,沒有具體的時(shí)間記錄,因此只能記錄數(shù)據(jù)而無法準(zhǔn)確記錄其出現(xiàn)的時(shí)間;若采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而且某些測控系統(tǒng)可能不允許。而在系統(tǒng)中采用DS13
34、02則能很好地解決這個(gè)問題。</p><p> DS1302的性能特性</p><p> ·實(shí)時(shí)時(shí)鐘,可對秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);</p><p> ·用于高速數(shù)據(jù)暫存的31×8位RAM;</p><p> ·最少引腳的串行I/O;</p><p&g
35、t; ·2.5~5.5V 電壓工作范圍;</p><p> ·2.5V時(shí)耗電小于300nA;</p><p> ·用于時(shí)鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;</p><p><b> ·簡單的3線接口;</b></p><p> ·可選
36、的慢速充電(至VCC1)的能力。</p><p> DS1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個(gè)簡單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對于小于31天的月和月末的日期自動(dòng)進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信
37、號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:VCC1 在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,VCC1 連接到備份電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者供電。當(dāng)VCC2大于VCC1+0.2V時(shí),VCC2給DS1302供電;當(dāng)VCC2小于VCC1時(shí),DS1302由VCC1供電。</p>
38、<p> (2) DS1302數(shù)據(jù)操作原理</p><p> DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個(gè)寄存器中哪個(gè)被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8加8
39、,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。</p><p> 圖3-3 DS1302管腳圖</p><p> 如果在傳送過程中置RST為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在VCC 大于等于2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將置為高電平。DS1302的管腳圖如圖3-3所示,內(nèi)部結(jié)構(gòu)圖如圖3-4所示,表3-2為各
40、引腳的功能。</p><p> 圖3-4 DS1302內(nèi)部結(jié)構(gòu)圖</p><p> 表3-2 DS1302引腳功能表</p><p> DS1302的控制字節(jié)的最高有效位(位7)必須是邏輯1;如果它為邏輯0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0
41、)如為0,表示要進(jìn)行寫操作;為1表示進(jìn)行讀操作。控制字節(jié)總是從最低位開始輸入/輸出。</p><p> 為了提高對32個(gè)地址的尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?
42、個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。數(shù)據(jù)讀寫程序如圖3-5所示。</p><p> 圖3-5 數(shù)據(jù)讀寫程序</p><p> DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表3-3所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作
43、。</p><p> 表3-3 DS1302的日歷、時(shí)鐘寄存器及其控制字</p><p> AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5是AM/PM位,此位是高電平時(shí)表示PM,低電平表示AM,在24小時(shí)方式下,位5為第二個(gè)10小時(shí)位(20~23h)。</p><p> 時(shí)鐘暫停
44、:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式。通常在對DS1302進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開始啟動(dòng)。</p><p> 3.2.2 DS1302 的應(yīng)用</p><p> 實(shí)時(shí)時(shí)鐘芯片DS1302采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,也可以關(guān)閉充電功能,芯片采用32768Hz晶振。要特
45、別說明的是,備用電源BT1可以用電池或超級電容(10萬μF以上)。雖然DS1302在主電源掉電后耗電很小,但如果要長時(shí)間保證時(shí)鐘正常,最好選用小型充電電池。如果斷電時(shí)間較短(幾小時(shí)或幾天),可以用漏電較小的普通電解電容代替(100μF就可以保證1小時(shí)的正常走時(shí))[9]。DS1302在第一次加電后,需進(jìn)行初始化操作。初始化后就可以按正常方法調(diào)整時(shí)間及鬧鈴。DS1302時(shí)鐘及備用電源充電電路如圖3-6所示。</p><p
46、> 圖3-6 DS1302時(shí)鐘及備用電源充電電路</p><p><b> 3.3 存儲(chǔ)電路</b></p><p> 3.3.1 AT24C02管腳介紹</p><p> AT24C02[10]是美國ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含256×8位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5V)、擦寫次
47、數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點(diǎn)。 AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。第8腳和第4腳分別為正、負(fù)電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送。第6腳SCL為串行時(shí)鐘輸入線。SDA和SCL都需要和正電源間各接一個(gè)4.7K的電阻上拉。</p><p> I2C總線是一種用于I2C器件之間連接的二線制總線。它通過SDA(串
48、行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個(gè)器件:不管是單片機(jī)、存儲(chǔ)器、LCD驅(qū)動(dòng)器還是鍵盤接口。</p><p> 3.3.2 AT24C02的特性</p><p> (1) I2C總線的基本結(jié)構(gòu)</p><p> 采用I2C總線標(biāo)準(zhǔn)的單片機(jī)或I2C器件,其內(nèi)部不僅有I2C接口電路,而且將內(nèi)部各單元電路按功能劃分為
49、若干相對獨(dú)立的模塊,通過軟件尋址實(shí)現(xiàn)片選,減少了器件片選線的連接。CPU不僅能通過指令將某個(gè)功能單元電路掛靠或摘離總線,還可對該單元的工作狀況進(jìn)行檢測,從而實(shí)現(xiàn)對硬件系統(tǒng)的既簡單又靈活的擴(kuò)展與控制。</p><p> (2) 雙向傳輸?shù)慕涌谔匦浴?lt;/p><p> 傳統(tǒng)的單片機(jī)串行接口的發(fā)送和接收一般都各用一條線,而I2C總線則根據(jù)器件的功能通過軟件程序使其可工作于發(fā)送或接收方式。當(dāng)某
50、個(gè)器件向總線上發(fā)送信息時(shí),它就是發(fā)送器(也叫主器件),而當(dāng)其從總線上接收信息時(shí),又成為接收器(也叫從器件)。主器件用于啟動(dòng)總線上傳送數(shù)據(jù)并產(chǎn)生時(shí)鐘以開放傳送的器件,此時(shí)任何被尋址的器件均被認(rèn)為是從器件。I2C總線的控制完全由掛接在總線上的主器件送出的地址和數(shù)據(jù)決定?! 】偩€上主和從(即發(fā)送和接收)的關(guān)系不是一成不變的,而是取決于此時(shí)數(shù)據(jù)傳送的方向。SDA和SCL均為雙向I/O線,通過上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線都是高電平。連
51、接總線的器件的輸出級必須是集電極或漏極開路,以具有線“與”功能。I2C總線的數(shù)據(jù)傳送速率在標(biāo)準(zhǔn)工作方式下為100kbit/s,在快速方式下,最高傳送速率可達(dá)400kbit/s。(3) I2C總線上的時(shí)鐘信號 </p><p> 在I2C總線上傳送信息時(shí)的時(shí)鐘同步信號是由掛接在SCL時(shí)鐘線上的所有器件的邏輯“與”完成的。SCL線上由高電平到低電平的跳變將影響到這些器件,一旦某個(gè)器件的時(shí)鐘信號下跳為低電平,將使S
52、CL線一直保持低電平,使SCL線上的所有器件開始低電平期。此時(shí),低電平周期短的器件的時(shí)鐘由低至高的跳變并不能影響SCL線的狀態(tài),于是這些器件將進(jìn)入高電平等待的狀態(tài)?! ‘?dāng)所有器件的時(shí)鐘信號都上跳為高電平時(shí),低電平期結(jié)束,SCL線被釋放返回高電平,即所有的器件都同時(shí)開始它們的高電平期。其后,第一個(gè)結(jié)束高電平期的器件又將SCL線拉成低電平。這樣就在SCL線上產(chǎn)生一個(gè)同步時(shí)鐘??梢?,時(shí)鐘低電平時(shí)間由時(shí)鐘低電平期最長的器件確定,而時(shí)鐘高電平時(shí)
53、間由時(shí)鐘高電平期最短的器件確定。(4) 數(shù)據(jù)的傳送 </p><p> 在數(shù)據(jù)傳送過程中,必須確認(rèn)數(shù)據(jù)傳送的開始和結(jié)束。當(dāng)時(shí)鐘線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖蕉x為“開始”信號;當(dāng)SCL線為高電平時(shí),SDA線發(fā)生低電平到高電平的跳變?yōu)椤敖Y(jié)束”信號。開始和結(jié)束信號都是由主器件產(chǎn)生。在開始信號以后,總線即被認(rèn)為處于忙狀態(tài);在結(jié)束信號以后的一段時(shí)間內(nèi),總線被認(rèn)為是空閑的。 I2C總線的數(shù)
54、據(jù)傳送格式是:在I2C總線開始信號后,送出的第一個(gè)字節(jié)數(shù)據(jù)是用來選擇從器件地址的,其中前7位為地址碼,第8位為方向位(R/W)。方向位為“0”表示發(fā)送,即主器件把信息寫到所選擇的從器件;方向位為“1”表示主器件將從從器件讀信息。開始信號后,系統(tǒng)中的各個(gè)器件將自己的地址和主器件送到總線上的地址進(jìn)行比較,如果與主器件發(fā)送到總線上的地址一致,則該器件即為被主器件尋址的器件,其接收信息還是發(fā)送信息則由第8位(R/W)確定?! ≡贗2C總線上每
55、次傳送的數(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ù),這種情況叫做總線競爭。I2C總
56、線具有多主控能力,可以對發(fā)生在SDA線上的總線競爭進(jìn)行仲裁,其仲裁原則是這樣的:當(dāng)多個(gè)主器件同時(shí)想占用總線時(shí),如果某個(gè)主器件發(fā)送高電平,而另一個(gè)主器件發(fā)送低電平,則發(fā)送電平與此時(shí)SDA總線電平不符的那個(gè)器件將自動(dòng)關(guān)閉其輸出級??偩€競爭的仲裁是在兩個(gè)層次上進(jìn)行的。首先是地址位的比較,如果主器件尋址同一個(gè)從器件,則進(jìn)入數(shù)據(jù)位的比較,從而確保了競爭仲裁的可靠性。由于是利用I2C總線上的信息進(jìn)行仲裁,因此不會(huì)造成信息的丟失。</p>
57、<p> 24C02與單片機(jī)的接口非常簡單,如圖3-7所示。A0,A1,A2為器件地址線,WP為寫保護(hù)引腳,SCL,SDA為二線串行接口,符合I2C總線協(xié)議。</p><p> 圖3-7 24C02存儲(chǔ)電路</p><p> 3.4 液晶顯示電路</p><p> 顯示器部分是由HD61202液晶顯示控制驅(qū)動(dòng)器和HY12864液晶顯示器組成的,
58、下面我們對其分別進(jìn)行介紹。</p><p> 3.4.1 液晶顯示控制驅(qū)動(dòng)器HD61202的特點(diǎn)</p><p> HD61202液晶顯示控制驅(qū)動(dòng)器是一種帶有驅(qū)動(dòng)輸出的圖形液晶顯示控制器,它可直接與8位微處理器相連,它可與HD61203配合對液晶屏進(jìn)行行、列驅(qū)動(dòng)。HD61202是一種帶有列驅(qū)動(dòng)輸出的液晶顯示控制器,它可與行驅(qū)動(dòng)器HD61203配合使用,組成液晶顯示驅(qū)動(dòng)控制系統(tǒng)[12]。
59、</p><p> (1) 內(nèi)藏64×64=4096位顯示RAM,RAM中每位數(shù)據(jù)對應(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><p>
60、; (4) HD61202的占空比為1/32~1/64。</p><p> 3.4.2 液晶顯示控制驅(qū)動(dòng)器HD61202的引腳功能</p><p> 引腳CS1,CS2,CS3 為芯片的片選端;引腳 E 為讀寫使能信號,它是在下降沿時(shí)數(shù)據(jù)被鎖存入HD61202的;在E 高電平期間,數(shù)據(jù)被讀出;R/W 為讀寫選擇信號,當(dāng)它為一時(shí)為讀選通,為零時(shí)為寫選通;DB0-DB7為數(shù)據(jù)總線RST
61、為復(fù)位信號復(fù)位信號有效時(shí),關(guān)閉液晶顯示,使顯示起始行為0,RST可跟MCU相連,由MCU控制;也可直接接VDD,使之不起作用HD61202的引腳功能如下表3-4所示。</p><p> 表3-4 HD61202的引腳功能</p><p> 3.4.3 液晶顯示控制驅(qū)動(dòng)器HD61202的指令系統(tǒng)</p><p> HD61202的指令系統(tǒng)比較簡單,總共只有七種
62、?,F(xiàn)分別介紹如下。 </p><p> (1) 顯示開/關(guān)指令</p><p> 當(dāng)DBO=1時(shí),LCD顯示RAM中的內(nèi)容;DBO=0時(shí),關(guān)閉顯示。</p><p> (2) 顯示起始行(ROW)設(shè)置指令</p><p> 該指令設(shè)置了對應(yīng)液晶屏最上一行的顯
63、示RAM的行號,有規(guī)律的改變顯示起始行,可以使LCD實(shí)現(xiàn)顯示滾屏的效果。</p><p> (3) 頁(PAGE)置指令</p><p> 顯示RAM共64行,分8頁,每頁8行。</p><p> (4) 列地址(Y Address)設(shè)置指令</p><p> 設(shè)置了頁地址和列地址,就唯一確定了顯示RAM中的一個(gè)單元,這樣MCU就可以
64、用讀、寫指令讀出該單元中的內(nèi)容或向該單元寫進(jìn)一個(gè)字節(jié)數(shù)據(jù)。</p><p><b> (5) 讀狀態(tài)指令</b></p><p> 該指令用來查詢HD61202的狀態(tài),各參量含義如下:</p><p> BUSY: 1-內(nèi)部在工作 0-正常狀態(tài)</p><p> ON/OFF:1-顯示關(guān)閉 0-顯示打
65、開</p><p> REST: 1-復(fù)位狀態(tài) 0-正常狀態(tài)</p><p> 在BUSY和REST狀態(tài)時(shí),除讀狀態(tài)指令外,其它指令均不對HD61202產(chǎn)生作用。在對HD61202操作之前要查詢BUSY狀態(tài),以確定是否可以對HD61202進(jìn)行操作。</p><p><b> (6) 寫數(shù)據(jù)指令</b></p>&l
66、t;p> 讀、寫數(shù)據(jù)指令每執(zhí)行完一次讀、寫操作,列地址就自動(dòng)增一,必須注意的是,進(jìn)行讀操作之前,必須有一次空讀操作,緊接著再讀才會(huì)讀出所要讀的單元中的數(shù)據(jù)。</p><p><b> (7) 讀數(shù)據(jù)指令</b></p><p> 3.4.4 HY-12864的電路結(jié)構(gòu)特點(diǎn)</p><p> HY-12864是使用HD61202作為
67、列驅(qū)動(dòng)器,同時(shí)使用HD61203作為行驅(qū)動(dòng)器的液晶模塊。由于HD61203不與MPU發(fā)生聯(lián)系,只要提供電源就能產(chǎn)生行驅(qū)動(dòng)信號和各種同步信號,比較簡單,因此這就不做介紹了。</p><p> 下面主要介紹以下HY-12864這個(gè)模塊的邏輯電路圖。HY-12864共有兩片HD61202和一片HD61203,如下圖3-8所示</p><p> 圖3-8 HY-12864的邏輯電路圖</
68、p><p> 在HY-12864中,兩片HD61202的ADC均接高電平,RST也接高電平,這樣在使用HY-12864時(shí)就不必再考慮這兩個(gè)引腳的作用。跟HD61202(1)的相連;跟HD61202(2)的CS1相連,因此、選通組合信號為/CSA,=01選通(1),,=10選通(2)。對于HY-12864,只要供給VDD、VSS和V0即可,HD61202和HD61203所需的電源將由模塊內(nèi)部電路在VDD和V0、VSS
69、的作用下產(chǎn)生。</p><p> 3.4.5 HY-12864的應(yīng)用</p><p> 以下內(nèi)容為以單片機(jī)89S52為例機(jī)的接口電路,電路原理圖如圖3-9所示??刂齐娐窞橹苯釉L問方式的接口電路。</p><p> 圖3-9 AT89S52 與液晶的接口電路</p><p> 根據(jù)以上電路原理圖中液晶的各引腳與單片機(jī)的接法,可得本設(shè)計(jì)
70、的液晶模塊電路如圖3-10所示。</p><p> 圖3-10 液晶模塊電路</p><p> 由圖3-10可以看出:VSS接地;數(shù)字電源VDD接+5V;對比度控制電壓V0接電位器,可通過調(diào)節(jié)電位器調(diào)整液晶亮度;數(shù)據(jù)、指令選擇信號RS接單片機(jī)P2.0口;讀寫選擇信號R/W接單片機(jī)P2.1口;單片機(jī)讀、寫選通信號、通過與非門接液晶的讀寫使能信號E;DB0~DB7分別接單片機(jī)的P0.0~
71、P0.7口;芯片1、芯片2的片選分別接單片機(jī)的P2.2、P2.3口;復(fù)位端RST、背光正電源LEDA接+5V;液晶驅(qū)動(dòng)電壓VEE、背光負(fù)電源LEDK接地。</p><p><b> 3.5 鍵盤電路</b></p><p> 本設(shè)計(jì)共采用按鍵3個(gè),分別與單片機(jī)的 P1.5、P1.6、P1.7口相連,分別對應(yīng)光標(biāo)移動(dòng),時(shí)間、日期調(diào)整,退出、鬧鈴開關(guān)鍵的功能。<
72、/p><p><b> 3.6 鬧鈴電路</b></p><p> 當(dāng)鬧鈴顯示“關(guān)”時(shí),鬧鈴不起作用;當(dāng)鬧鈴顯示“開”時(shí),設(shè)定鬧鈴時(shí)間,鬧鈴時(shí)間只可設(shè)定時(shí)和分,當(dāng)前時(shí)間不斷與設(shè)定的鬧鈴時(shí)間比較,不相等時(shí)不產(chǎn)生任何現(xiàn)象,一旦相等,P3.5輸出一個(gè)低電平使三極管導(dǎo)通,從而使蜂鳴器工作,鬧鈴起作用。鬧鈴電路如圖3-11所示。</p><p><
73、b> 圖3-11鬧鈴電路</b></p><p><b> 4 系統(tǒng)程序的設(shè)計(jì)</b></p><p> 4.1 陽歷程序的設(shè)計(jì)</p><p> 因?yàn)槭褂昧藭r(shí)鐘芯片DS1302,陽歷程序只需從DS1302各寄存器中讀出年、周、月、日、[?。輹r(shí)、分、秒等數(shù)據(jù),再處理即可。在首次對DS1302進(jìn)行操作之前,必須對它進(jìn)行初
74、始化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過處理后,送給顯示緩沖單元。陽歷程序流程圖見圖4-1所示。</p><p> 圖4-1 陽歷程序流程圖</p><p> 4.2 時(shí)間調(diào)整程序設(shè)計(jì)</p><p> 調(diào)整時(shí)間用三個(gè)調(diào)整按鈕,一個(gè)作為移位、控制用,一個(gè)作為加用,一個(gè)作為退出調(diào)整和鬧鈴開關(guān)用。分別定義為控制按鈕、加按鈕、退出按鈕。在調(diào)整時(shí)間過程中,要調(diào)整的位
75、與別的位應(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)整閃爍程序。時(shí)間調(diào)整程序流程圖如圖4-2所示。</p><p> 圖4-2 時(shí)間調(diào)整程序流程圖</
76、p><p> 4.3 陰歷程序設(shè)計(jì)</p><p> 陰歷程序的實(shí)現(xiàn)是要靠陽歷日期來推算的。要根據(jù)陽歷來推算陰歷日期,首先要設(shè)計(jì)算法。推算方法是,根據(jù)陽歷當(dāng)前日期在一年中的天數(shù)來計(jì)算陰歷日期。陽歷一個(gè)月不是30天就是31天(2月除外,閏年2月為29天,平年2月為28天)。陰歷一年有12個(gè)月或13個(gè)月(含閏月),一個(gè)月為30天或29天。如果把一個(gè)只有29天的月稱為小月,用1為標(biāo)志,把30天的
77、月稱為大月,用0為標(biāo)志,那么12位二進(jìn)制就能表示一年12個(gè)月的大小。如果有閏月,則把閏月的月份作為一個(gè)字節(jié)的高4位,低4位表示閏月大小,大月為0,小月為1,這樣一個(gè)字節(jié)就包括了所有閏月的信息。陰歷春節(jié)和陽歷元旦相差的天數(shù)也用一個(gè)字節(jié)表示??偣灿?字節(jié)就可以存儲(chǔ)一年中任何一天陽歷和陰歷的對應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004年的陰歷和陽歷對應(yīng)關(guān)系如表4-1所示。</p><p> 表4-1 2004年的陰歷和陽歷對應(yīng)
78、關(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)關(guān)系表總共使用200字節(jié)。</p><p> 有了算法和數(shù)據(jù)以后,就可以設(shè)計(jì)軟件了。先要根據(jù)當(dāng)前陽歷的日期,算出陽歷為該年中的第幾天。圖4-3為計(jì)算
79、陽歷中任何一天在該年中為第幾天的程序流程圖。</p><p> 計(jì)算出當(dāng)前陽歷日期為該年中的第幾天后,再減去陽歷該年春節(jié)和元旦的日差,如果夠減,則相減的結(jié)果就是陰歷在該年中的總第幾天了。根據(jù)該數(shù)據(jù)就可以推算出具體的當(dāng)前陰歷日期;如果不夠減,則表示當(dāng)前陰歷年為陽歷年的前一年。這種情況下,根據(jù)實(shí)際,當(dāng)前陰歷日期會(huì)處于陰歷11月或12月,此時(shí)春節(jié)和元旦的日差減去前面計(jì)算出的當(dāng)前陽歷日期在陽歷年為第幾天的數(shù)據(jù),其結(jié)果表
80、示當(dāng)前陰歷日期離春節(jié)的天數(shù)。計(jì)算出的陽歷天數(shù)為該年的第幾天,存放在寄存器R2和R3中。計(jì)算出天數(shù)后,如果大于#FFH,則把#FFH存放在R2中,余值存放在R3中。也就是說在用寄存器R2和R3表示的天數(shù)信息中,R2充當(dāng)主寄存器,數(shù)據(jù)先存滿R2,再存R3。在整個(gè)轉(zhuǎn)換程序中,這里面的數(shù)據(jù)不能被覆蓋。</p><p> 圖4-3 計(jì)算陽歷天數(shù)程序流程圖</p><p> 計(jì)算出陽歷總天數(shù)后,就
81、可以根據(jù)它來推算陰歷日期。推算方法是,先用總天數(shù)減去春節(jié)和元旦的日差,如果結(jié)果為1,則該天正好是春節(jié)(因?yàn)榇汗?jié)在元旦之后,在計(jì)算春節(jié)和元旦的日差時(shí),假設(shè)元旦為0天,春節(jié)為n天,則日差為n。而前面計(jì)算的陽歷總天數(shù)是該天在該年中的第幾天,是以元旦為1而得到的,與計(jì)算春節(jié)和元旦日差的這樣方法相比,其數(shù)值少了1,所以要在原來本應(yīng)該以0作為該天就是春節(jié)的依據(jù)的基礎(chǔ)上加1,所以以1作為該天是春節(jié)的標(biāo)志);如果結(jié)果小于1,則陰歷應(yīng)該是陽歷的前一年;如
82、果結(jié)果大于1,說明陽歷和陰歷為同一年。再根據(jù)查表所得的該年的陰歷的閏年和大小月的信息,就可以推算出該天的陰歷日期了。</p><p> 下圖4-4為由總天數(shù)推算出陰歷日期的程序流程圖。</p><p> 4-4 推算陰歷日期的程序流程圖</p><p><b> 5 測試結(jié)果</b></p><p> 設(shè)計(jì)完成后
83、,給系統(tǒng)上電,液晶顯示屏顯示結(jié)果如圖5-1所示。</p><p> 圖5-1 液晶顯示屏的顯示結(jié)果</p><p> 調(diào)節(jié)10K電位器R4可調(diào)整液晶顯示屏的亮度。調(diào)整到合適亮度后,按控制按鈕,光標(biāo)會(huì)從陽歷年位開始閃爍,進(jìn)入設(shè)定調(diào)整狀態(tài)。此時(shí)按加按鈕,當(dāng)前數(shù)字就可改變。按一次,數(shù)字加1;若長按,則數(shù)字連續(xù)加。此時(shí),調(diào)整的位一直在閃爍,直到再次按光標(biāo)移動(dòng)控制位,光標(biāo)跳到下一位閃爍。調(diào)整順序
84、依次為:陽歷年、月、日,陰歷年、月、日,時(shí)、分、秒,鬧鈴時(shí)、分。當(dāng)全部參數(shù)調(diào)整完畢后,按退出按鈕,光標(biāo)停止閃爍,退出設(shè)定調(diào)整狀態(tài);當(dāng)再次按下此按鈕,鬧鈴顯示“開”;當(dāng)?shù)谌伟聪麓随I,鬧鈴顯示“關(guān)”。若當(dāng)前月為閏月,則屏幕左下角會(huì)顯示“閏月”;若不是閏月,則無顯示。</p><p> 調(diào)試分為硬件調(diào)試和軟件調(diào)試。硬件調(diào)試主要是檢測硬件電路是否有短路、斷路、虛焊等。DS1302的硬件電路很簡單,只通過3根線與單片機(jī)
85、相連,很容易檢測,主要是檢查其引腳,如晶振和電源等是否接好。另外可以通過軟件來調(diào)試硬件,如為了測試顯示電路連接是否正確,可以編寫一個(gè)簡單的顯示程序來測試它。接下來可進(jìn)行軟件調(diào)試,可以編寫只含DS1302的計(jì)時(shí)和讀寫程序、顯示程序,測試DS1302是否正常工作。最后調(diào)試時(shí)間調(diào)整程序和陰歷推算程序。</p><p> 計(jì)時(shí)器最關(guān)鍵的是計(jì)時(shí)的精度。電子萬年歷中DS1302電路使用專用的晶振,經(jīng)測試制作的電子萬年歷,一
86、星期快了3s左右,誤差較大,實(shí)驗(yàn)設(shè)計(jì)中可換用標(biāo)準(zhǔn)晶振或用軟件進(jìn)行修正。</p><p><b> 7 結(jié) 論</b></p><p> 本設(shè)計(jì)硬件電路的使用比較簡單,所用元器件較少,電路中使用了AT89S52單片機(jī)、DS1302時(shí)鐘芯片、24C02 FLASH存儲(chǔ)器和HY-12864液晶顯示器等主要芯片,實(shí)現(xiàn)了預(yù)計(jì)的功能。在對芯片的管腳功能和用法有了充分的了解后
87、,根據(jù)原先的選擇好的設(shè)計(jì)要求設(shè)計(jì)硬件電路,包括單片機(jī)控制電路、時(shí)鐘電路、存儲(chǔ)電路、鍵盤接口電路、顯示電路和鬧鈴電路。然后通過軟件編程,實(shí)現(xiàn)了對年、月、日、時(shí)、分、秒、星期、閏年和陰歷的自動(dòng)調(diào)整,用按鍵進(jìn)行控制,用液晶模塊進(jìn)行顯示,并具有鬧鈴功能。電子萬年歷可以正常顯示時(shí)間并進(jìn)行時(shí)間調(diào)整,基本完成了預(yù)期要實(shí)現(xiàn)的目標(biāo)。</p><p><b> 參考文獻(xiàn)</b></p><
88、p> [1] 吳金戌,沈慶陽.8051單片機(jī)實(shí)踐與應(yīng)用,北京:清華大學(xué)出版社,2003.12,26-38.</p><p> [2] 何立民.單片機(jī)應(yīng)用文集,北京:北京航空航天大學(xué)出版社,1991,53-72.</p><p> [3] 公茂法.單片機(jī)人機(jī)接口實(shí)例集,北京:北京航空航天大學(xué)出版社,1998.2,32-59.</p><p> [4] 何
89、立明.單片機(jī)高級教程——應(yīng)用與設(shè)計(jì),北京:北京航天航空大學(xué)出版社,2000.4,149-173.</p><p> [5] 李廣弟,朱月秀.單片機(jī)基礎(chǔ),北京:北京航空航天大學(xué)出版社,2001.8,36-85.</p><p> [6] 樓然苗,李光飛.MCS-51系列單片機(jī)設(shè)計(jì)實(shí)例,北京:北京航天航空大學(xué)出版社,2001.3,75-83.</p><p> [
90、7] 李華.單片機(jī)原理與接口技術(shù),北京:清華大學(xué)出版社,33-80.</p><p> [8] 王偉.高性能、低功耗帶RAM實(shí)時(shí)時(shí)鐘芯片DS1302(上),電子世界:第一期,</p><p> 1995,26-35.</p><p> [9] 王偉.高性能、低功耗帶RAM實(shí)時(shí)時(shí)鐘芯片DS1302(下),電子世界:第四期,1995,32-41.</p>
91、;<p> [10] 劉光潭.中外集成電路簡明速察手冊,上海:電子工業(yè)出版社,1991.</p><p> [11] 一九九九年產(chǎn)品目錄(第一期),武漢力源股份有限公司,1999.</p><p> [12] 劉利.液晶顯示原理,上海:電子工業(yè)出版社,2002.5,52-70.</p><p> [13] 李宏,張家田.液晶顯示器件應(yīng)用技術(shù),北
92、京:機(jī)械工業(yè)出版社,2004,156-183.</p><p> [14] 沈慶陽.漢字顯示應(yīng)用技術(shù),上海:電子工業(yè)出版社,2002.3,128-139.</p><p> [15] MAXIM.NEW RELEASES DATA BOOK (VOLUME V),AMERICA,1996.</p><p> 附錄1:電子萬年歷設(shè)計(jì)電路原理圖</p>
93、<p><b> 附錄2: 主程序</b></p><p> MAIN: MOV SP,#70H</p><p> LCALL DELAY</p><p> ;LCALL DELAY</p><p> ;LCALL DELAY</p><p> MOV 59H,#00
94、H ;判斷調(diào)整地址</p><p> CLR 22H ;停止周期第三位閃爍</p><p> CLR 23H ;判斷是否開鬧鈴</p><p><b> CLR P3.5</b></p><p> MOV
95、 IE,#00H ;關(guān)所有中斷</p><p> MOV TMOD,#10H</p><p> MOV TL1,#0F0H</p><p> MOV TH1,#00H</p><p> ;MOV IP,#01H</p><p> ;SETB EX0
96、;開外中斷</p><p> SETB EA ;開總中斷允許</p><p> LCALL VIICREAD ;將EEPROM中原頻率數(shù)據(jù)調(diào)入內(nèi)存</p><p> ;MOV 65H,#00H</p><p> ;MOV 66H,#00H</p><p> ;MO
97、V 67H,#00H</p><p> ;MOV 68H,#00H</p><p> LCALL INT</p><p> LCALL CLEAR</p><p> LCALL INTSHI</p><p> LCALL DDD ;靜態(tài)字顯示</p><
98、;p><b> ;以下字為動(dòng)態(tài)顯示</b></p><p> DONGXIAN:MOV DPTR,#CCTAB</p><p> MOV ZIDI,DPL</p><p> MOV ZIGAO,DPH</p><p> MOV DONGXH, #1CH</p>
99、<p> DXH1: MOV PAGER, #00H ;16X16點(diǎn)陣字體,第2頁</p><p> MOV COLUMN,#00H ;起始列為第0列</p><p> MOV CODER,#00H ;字符代碼</p><p> LCALL CCW_PR</p><
100、p> MOV PAGER,#00H</p><p> MOV COLUMN,#10H</p><p> MOV CODER,#01H</p><p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COL
101、UMN,#20H</p><p> MOV CODER,#02H</p><p> LCALL CCW_PR</p><p> MOV PAGER, #00H ;16X16點(diǎn)陣字體,第2頁</p><p> MOV COLUMN,#30H ;起始列為第0列</p>
102、<p> MOV CODER,#03H ;字符代碼</p><p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#40H</p><p> MOV CODER,#04H</p>&
103、lt;p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#50H</p><p> MOV CODER,#05H</p><p> LCALL CCW_PR</p><p> MOV PAGE
104、R,#00H</p><p> MOV COLUMN,#60H</p><p> MOV CODER,#06H</p><p> LCALL CCW_PR</p><p> MOV PAGER,#00H</p><p> MOV COLUMN,#70H</p>
105、<p> MOV CODER,#07H</p><p> LCALL CCW_PR</p><p> LCALL DELAY</p><p> CLR C ; 動(dòng)態(tài)顯示循環(huán)程序控制</p><p> MOV A,ZIDI</p>&
106、lt;p> ADD A,#20H</p><p> MOV ZIDI,A</p><p> MOV A,ZIGAO</p><p> ADDC A,#00H</p><p> MOV ZIGAO,A</p><p> L1: MOV 3CH,#0F7H
107、 ;開始鍵掃描</p><p> MOV 3DH,#00H</p><p> L2: MOV A,3CH</p><p><b> MOV P2,A</b></p><p><b> MOV A,P2</b></p><p><
108、;b> MOV 3EH,A</b></p><p><b> SETB C</b></p><p> MOV 3FH,#04H</p><p> L3: RLC A</p><p> JNC MNJIXU</p><p><b> INC 3DH<
109、;/b></p><p> DJNZ 3FH,L3</p><p> LCALL DISP1</p><p><b> MOV A,3CH</b></p><p><b> SETB C</b></p><p><b> RRC A</b>
110、;</p><p><b> MOV 3CH,A</b></p><p><b> JC L2</b></p><p><b> JMP MNMN</b></p><p> MNJIXU:MOV A,P2</p><p><b> X
111、RL A,3EH</b></p><p><b> JNZ DF3</b></p><p> AJMP DF3 ; MNJIXU</p><p> DF3: CLR C</p><p><b> MOV A,3DH</b></p&
112、gt;<p><b> RLC A</b></p><p> MOV DPTR,#TABLE</p><p> JMP @A+DPTR</p><p> AJMP DONGXIAN</p><p> TABLE: AJMP MN0 ;鍵盤入口地址</p&
113、gt;<p><b> AJMP MN1</b></p><p><b> AJMP MN2</b></p><p><b> AJMP MN3</b></p><p><b> AJMP MN4</b></p><p><b&
114、gt; AJMP MN5</b></p><p><b> AJMP MN6</b></p><p><b> AJMP MN7</b></p><p><b> AJMP MN8</b></p><p><b> AJMP MN9</b&
115、gt;</p><p><b> AJMP MN10</b></p><p><b> AJMP MN11</b></p><p><b> AJMP MN12</b></p><p><b> AJMP MN13</b></p>&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)稿
- 畢業(yè)設(shè)計(jì)----電子萬年歷論文設(shè)計(jì)
- 電子萬年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷的設(shè)計(jì)
- 電子萬年歷
- 電子鐘萬年歷畢業(yè)設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)--萬年歷電子時(shí)鐘
- 數(shù)字萬年歷畢業(yè)設(shè)計(jì)
- 萬年歷電子時(shí)鐘溫度畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)論文
- 畢業(yè)論文——電子萬年歷設(shè)計(jì)
- 電子萬年歷設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文——電子萬年歷設(shè)計(jì)
- 電子萬年歷課程設(shè)計(jì) (2)
- 萬年歷畢業(yè)設(shè)計(jì)---基于stc89c52萬年歷的設(shè)計(jì)
評論
0/150
提交評論