實(shí)時(shí)日歷和時(shí)鐘顯示單片機(jī)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)論文/設(shè)計(jì)</b></p><p>  題 目:  _______________________________</p><p>  姓 名: _______________________________</p><p>  系 別: ____________________

2、___________</p><p>  專 業(yè): _______________________________</p><p>  班 級(jí): _______________________________</p><p>  指導(dǎo)老師: ______ ___ _ _ _____ </p><

3、;p>  日 期: _______________________________</p><p><b>  摘要</b></p><p>  本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的實(shí)時(shí)日歷和時(shí)鐘顯示設(shè)計(jì),可以顯示年月日時(shí)分秒及周信息,具有可調(diào)整日期和時(shí)間功能。在設(shè)計(jì)的同時(shí)對(duì)單片機(jī)的理論基礎(chǔ)和外圍擴(kuò)展知識(shí)進(jìn)行了比較全面準(zhǔn)備。</p>&l

4、t;p>  實(shí)時(shí)日歷和時(shí)鐘顯示的設(shè)計(jì)過(guò)程在硬件與軟件方面進(jìn)行同步設(shè)計(jì)。硬件部分主要由AT89S52單片機(jī),LED顯示電路,以及調(diào)時(shí)按鍵電路等組成,系統(tǒng)通過(guò)LED顯示數(shù)據(jù),所以具有人性化的操作和直觀的顯示效果。軟件方面主要包括時(shí)鐘程序、鍵盤程序,顯示程序等。本系統(tǒng)以單片機(jī)的匯編語(yǔ)言進(jìn)行軟件設(shè)計(jì),為了便于擴(kuò)展和更改,軟件的設(shè)計(jì)采用模塊化結(jié)構(gòu),使程序設(shè)計(jì)的邏輯關(guān)系更加簡(jiǎn)潔明了,以便更簡(jiǎn)單地實(shí)現(xiàn)調(diào)整時(shí)間及日期顯示功能。所有程序編寫完成后,

5、在wave軟件中進(jìn)行調(diào)試,確定沒有問(wèn)題后,在Proteus軟件中嵌入單片機(jī)內(nèi)進(jìn)行仿真。</p><p>  關(guān)鍵詞:AT89S52; DS1302; LED</p><p><b>  目 錄</b></p><p><b>  1.前 言1</b></p><p>  2.設(shè)計(jì)方案論證2<

6、;/p><p><b>  2.1功能要求2</b></p><p><b>  2.2方案確定2</b></p><p>  2.2.1單片機(jī)芯片的選擇方案和論證2</p><p>  2.2.2顯示模塊選擇方案和論證3</p><p>  2.2.3時(shí)鐘芯片的選擇方案

7、和論證3</p><p>  2.2.4電路設(shè)計(jì)最終方案確定3</p><p>  3.主控制器和外圍器件4</p><p>  3.1AT89S52單片機(jī)4</p><p>  3.2 DS1302時(shí)鐘芯片4</p><p>  3.2.1 DS1302芯片介紹4</p><p>

8、  3.2.2DS1302 的應(yīng)用8</p><p>  3.3數(shù)碼管LED8</p><p>  3.4譯碼器74HC1389</p><p>  3.5鎖存器74LS2449</p><p><b>  4.硬件設(shè)計(jì)10</b></p><p>  4.1電路設(shè)計(jì)框圖10</

9、p><p>  4.2系統(tǒng)概述10</p><p>  4.3電源設(shè)計(jì)10</p><p>  4.4單片機(jī)的復(fù)位電路11</p><p>  4.5單片機(jī)系統(tǒng)的晶振電路11</p><p>  4.6主電路設(shè)計(jì)12</p><p><b>  5.軟件設(shè)計(jì)13</b&g

10、t;</p><p>  5.1主程序設(shè)計(jì)13</p><p>  5.2鍵盤子程序設(shè)計(jì)14</p><p>  5.3日歷時(shí)鐘子程序設(shè)計(jì)16</p><p>  5.4顯示子程序設(shè)計(jì)18</p><p><b>  6.系統(tǒng)調(diào)試18</b></p><p>  

11、6.1軟件調(diào)試18</p><p><b>  7.結(jié)論19</b></p><p><b>  致 謝21</b></p><p><b>  參考文獻(xiàn)22</b></p><p><b>  附錄23</b></p><p

12、>  附錄Ⅰ硬件電路圖23</p><p>  附錄Ⅱ主程序源代碼24</p><p><b>  -</b></p><p><b>  1.前 言</b></p><p>  在日新月異的21世紀(jì)里,家用電子產(chǎn)品得到了迅速發(fā)展。許多家電設(shè)備都趨于人性化、智能化,這些電器設(shè)備大部分都含有

13、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é)以及人民生活的各個(gè)方面,如車間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。用單片機(jī)來(lái)控制的小型家電產(chǎn)品具有便攜實(shí)用,操作簡(jiǎn)單的特點(diǎn)。</p><p>  時(shí)鐘,自從它發(fā)明的那天起,就成為人類

14、的朋友,但隨著時(shí)間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)時(shí)間計(jì)量的精度要求越來(lái)越高,應(yīng)用越來(lái)越廣。怎樣讓時(shí)鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計(jì)出新型時(shí)鐘。</p><p>  現(xiàn)今,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示

15、器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。</p><p>  時(shí)鐘電路在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間,它

16、通常有兩種實(shí)現(xiàn)方法:一是用軟件實(shí)現(xiàn),即用單片機(jī)內(nèi)部的可編程定時(shí)/計(jì)數(shù)器來(lái)實(shí)現(xiàn),但誤差很大,主要用在對(duì)時(shí)間精度要求不高的場(chǎng)合;二是用專門的時(shí)鐘芯片實(shí)現(xiàn),在對(duì)時(shí)間精度要求很高的情況下,通常采用這種方法,典型的時(shí)鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p>  本文設(shè)計(jì)的日歷和時(shí)鐘的顯示廣泛用于小型智能家用電子產(chǎn)品,如電子鐘。利用單片機(jī)進(jìn)行控制,實(shí)時(shí)時(shí)鐘芯片DS1302進(jìn)

17、行記時(shí),外加掉電存儲(chǔ)電路和顯示電路,可實(shí)現(xiàn)時(shí)間的調(diào)整和顯示。電子鐘既可廣泛應(yīng)用于家庭,也可應(yīng)用于銀行、郵電、賓館、醫(yī)院、學(xué)校、企業(yè)、商店等相關(guān)行業(yè)的大廳,以及單位會(huì)議室、門衛(wèi)等場(chǎng)所。因而,此設(shè)計(jì)具有相當(dāng)重要的現(xiàn)實(shí)意義和實(shí)用價(jià)值。</p><p><b>  2.設(shè)計(jì)方案論證</b></p><p><b>  2.1功能要求</b></p&

18、gt;<p>  1、能顯示年、月、日、時(shí)、分、秒、星期</p><p>  2、能對(duì)時(shí)間進(jìn)行手動(dòng)修正</p><p><b>  3、采用24小時(shí)制</b></p><p>  4、使用LED顯示時(shí)間參數(shù)</p><p>  5、上電后,電子鐘顯示“2010年 1月 1日”</p>&l

19、t;p>  “1時(shí) 1分 1秒 星期1”</p><p>  對(duì)時(shí),分,秒,日,月,年高位為0時(shí)做消隱處理,只顯示單個(gè)數(shù)字以增強(qiáng)其可讀性。</p><p><b>  2.2方案確定</b></p><p>  2.2.1單片機(jī)芯片的選擇方案和論證</p><p><b>  方案一: </b

20、></p><p>  采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲(chǔ)空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備ISP在線編程技術(shù), 當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),對(duì)芯片的多次拔插會(huì)對(duì)芯片造成一定的損壞。</p><p><b>  方案

21、二:</b></p><p>  采用AT89S52,片內(nèi)ROM全都采用Flash ROM;能以3V的超底壓工作;同時(shí)也與MCS-51系列單片機(jī)完全該芯片內(nèi)部存儲(chǔ)器為8KB ROM 存儲(chǔ)空間,同樣具有89C51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),不需要對(duì)芯片多次拔插,所以不會(huì)對(duì)芯片造成損壞。</p><p>

22、;  所以選擇采用AT89S52作為主控制系統(tǒng).</p><p>  2.2.2顯示模塊選擇方案和論證</p><p><b>  方案一:</b></p><p>  采用LED液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價(jià)格昂貴,需要的接口線多,所以在此設(shè)計(jì)中不采用LED液晶顯示屏。</p>

23、;<p><b>  方案二:</b></p><p>  采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以也不用此種作為顯示。</p><p><b>  方案三:</b></p><p>  采用LED數(shù)碼管動(dòng)態(tài)掃描,

24、LED數(shù)碼管價(jià)格適中,對(duì)于顯示數(shù)字最合適,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用的單片機(jī)口線少。</p><p>  所以采用了LED數(shù)碼管作為顯示。</p><p>  2.2.3時(shí)鐘芯片的選擇方案和論證</p><p><b>  方案一:</b></p><p>  直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)

25、年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。</p><p><b>  方案二:</b></p><p>  采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2

26、.5V~5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA.</p><p>  2.2.4電路設(shè)計(jì)最終方案確定</p><p>  綜上各方案所述,對(duì)此次作品的方案選定: 以單片機(jī)AT89S52為主控制器,時(shí)間數(shù)據(jù)是通過(guò)時(shí)鐘芯片DS1302來(lái)讀取,并通過(guò)LED數(shù)碼管顯示出來(lái),并用鍵盤來(lái)完成對(duì)當(dāng)前時(shí)間的調(diào)整。</p><p>  3.主控制器和外圍器件</p>

27、<p>  3.1AT89S52單片機(jī)</p><p>  AT89S52是一種低功耗、高性能CMOS 8位微控制器,使用 ATMEL 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。并具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘

28、電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p>  3.2 DS1302時(shí)鐘芯片</p><p>  3.2.1 DS1302芯片介紹</p><

29、;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í)間的連續(xù)測(cè)控系統(tǒng)結(jié)果的分析以及對(duì)異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義。</p><p>  采用DS1302作為記錄測(cè)控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計(jì)簡(jiǎn)單,時(shí)間記錄準(zhǔn)確,既避免了連續(xù)記錄的大工

30、作量,又避免了定時(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)的時(shí)間。記錄及分析這些特殊意義的數(shù)據(jù),對(duì)測(cè)控系統(tǒng)的性能分析及正常運(yùn)行具有重要的意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時(shí)采樣或定時(shí)采樣,沒有具體的時(shí)間記錄,因此只能記錄數(shù)據(jù)而無(wú)法準(zhǔn)確記錄其出現(xiàn)的時(shí)間;若采用單片機(jī)計(jì)時(shí),一方面需要

31、采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而且某些測(cè)控系統(tǒng)可能不允許。而在系統(tǒng)中采用DS1302則能很好地解決這個(gè)問(wèn)題。</p><p>  DS1302的性能特性</p><p>  ·實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);</p><p>  ·用于高速數(shù)據(jù)暫存的31×8

32、位RAM;</p><p>  ·最少引腳的串行I/O;</p><p>  ·2.5~5.5V 電壓工作范圍;</p><p>  ·2.5V時(shí)耗電小于300nA;</p><p>  ·用于時(shí)鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;</p><p>&l

33、t;b>  ·簡(jiǎn)單的3線接口;</b></p><p>  ·可選的慢速充電(至VCC1)的能力。</p><p>  DS1302時(shí)鐘芯片包括實(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)行可以

34、采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:VCC1 在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,VCC1 連接到備份電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者供電。當(dāng)VCC2

35、大于VCC1+0.2V時(shí),VCC2給DS1302供電;當(dāng)VCC2小于VCC1時(shí),DS1302由VCC1供電。</p><p>  DS1302數(shù)據(jù)操作原理</p><p>  DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無(wú)論是讀周期還是寫周期,開始8位指定40個(gè)寄存器中哪個(gè)被訪問(wèn)到。在開始8個(gè)時(shí)鐘周期,

36、把命令字節(jié)裝入移位寄存器之后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。</p><p>  圖3-1 DS1302管腳圖</p><p>  如果在傳送過(guò)程中置RST為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在VCC >=2.5V之前,RST腳必須保持低電

37、平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的管腳圖如圖3-1所示,表3-2為各引腳的功能。</p><p>  表3-2 DS1302引腳功能表</p><p>  DS1302的控制字如圖3-3所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1;如果它為邏輯0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位5~1(A

38、4~A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進(jìn)行寫操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。</p><p>  圖3-3 控制字節(jié)的含義</p><p>  為了提高對(duì)32個(gè)地址的尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址9~

39、31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。數(shù)據(jù)讀寫程序如圖3-4所示。</p><p>  圖3-4數(shù)據(jù)讀寫程序</p><p>  DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷

40、、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表3-5,其中奇數(shù)為讀操作,偶數(shù)為寫操作。</p><p>  表3-5 片內(nèi)時(shí)鐘數(shù)據(jù)寄存器</p><p>  3.2.2DS1302 的應(yīng)用</p><p>  實(shí)時(shí)時(shí)鐘芯片DS1302采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,也可以關(guān)閉充電功能,芯片采用32768Hz晶振。要特

41、別說(shuō)明的是,備用電源BT1可以用電池或超級(jí)電容(10萬(wàn)μF以上)。雖然DS1302在主電源掉電后耗電很小,但如果要長(zhǎng)時(shí)間保證時(shí)鐘正常,最好選用小型充電電池。如果斷電時(shí)間較短(幾小時(shí)或幾天),可以用漏電較小的普通電解電容代替(100μF就可以保證1小時(shí)的正常走時(shí))。DS1302在第一次加電后,需進(jìn)行初始化操作。初始化后就可以按正常方法調(diào)整時(shí)間。DS1302的時(shí)鐘電路如圖3-6所示。</p><p>  圖3-6 D

42、S1302時(shí)鐘電路</p><p><b>  3.3數(shù)碼管LED</b></p><p>  LED顯示器由若干個(gè)發(fā)光二極管組成,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)筆畫或一個(gè)點(diǎn)就發(fā)光??刂葡鄳?yīng)的管導(dǎo)通,就能顯示出對(duì)應(yīng)字符。各段LED顯示器需要由驅(qū)動(dòng)電路驅(qū)動(dòng)。在七段LED顯示器中,通常將各段發(fā)光二極管的陰極或陽(yáng)極連在一起作為公共端。將各段發(fā)光二極管連在一起的叫共陽(yáng)極顯示器

43、,用低電平驅(qū)動(dòng);將陰極連在一起的叫共陰極顯示器,用高電平驅(qū)動(dòng)。</p><p>  靜態(tài)顯示就是每一個(gè)顯示器各筆畫段都要獨(dú)占具有一個(gè)鎖存功能的輸出口線,CPU把要顯示的字形代碼送到輸出口上,就可以使顯示器上顯示所需的數(shù)字或符號(hào),此后,即使CPU不在去訪問(wèn)它,因?yàn)楦鞴P畫段借口具有鎖存功能,顯示的內(nèi)容也不會(huì)消失。</p><p>  動(dòng)態(tài)顯示是指顯示器顯示某一字符時(shí),相應(yīng)段的發(fā)光二極管恒定地導(dǎo)

44、通或截止。靜態(tài)顯示有并行輸出和串行輸出兩種方式。在本系統(tǒng)中數(shù)碼管使用共陰極接法而且是用動(dòng)態(tài)顯示。</p><p>  3.4譯碼器74HC138</p><p>  74HC138譯碼器是通過(guò)3條線來(lái)達(dá)到控制8條線的狀態(tài),就是通過(guò)3條控制線A0、A1、A2不同的高低電平組合來(lái)控制Y0~Y7的輸出狀態(tài),其中4和5為使能地端,與8引腳共同接地,當(dāng)接高電平時(shí)Y0到Y(jié)7輸出高電平。6號(hào)腳為使能端,

45、為高電平時(shí)有效。74HC138封裝如圖3-7。當(dāng)需要級(jí)聯(lián)時(shí)只需要改變使能端信號(hào)引腳即可,連接方法簡(jiǎn)單。</p><p>  圖3-7 74HC138封裝圖</p><p>  3.5鎖存器74LS244</p><p>  74ls244由2組、每組四路輸入、輸出構(gòu)成。每組有一個(gè)控制端G,由控制端的高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開。</p><

46、;p>  圖3-8 74LS244引腳圖</p><p><b>  4.硬件設(shè)計(jì)</b></p><p><b>  4.1電路設(shè)計(jì)框圖</b></p><p><b>  4.2系統(tǒng)概述</b></p><p>  本電路是由AT89S52單片機(jī)為控制核心,具有在線編

47、程功能,低功耗,能在3V超低壓工作;時(shí)鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31*8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。可產(chǎn)生年、月、日、周日、時(shí)、分、秒,具有使用壽命長(zhǎng),精度高和低功耗等特點(diǎn),同時(shí)

48、具有掉電自動(dòng)保存功能;顯示部份由15個(gè)數(shù)碼管,74Hs138、74ls244構(gòu)成。使用動(dòng)態(tài)掃描顯示方式對(duì)數(shù)字的顯示。</p><p>  硬件的結(jié)構(gòu)和可靠性直接影響著整個(gè)系統(tǒng)的可靠性,所以合理的安排電路能提高電子產(chǎn)品的性能。</p><p><b>  4.3電源設(shè)計(jì)</b></p><p>  在這里因設(shè)計(jì)分工和側(cè)重點(diǎn)不同,電源模塊用通用的5

49、v變壓器。</p><p>  4.4單片機(jī)的復(fù)位電路</p><p>  圖4-2手動(dòng)復(fù)位電路</p><p>  在系統(tǒng)運(yùn)行的過(guò)程中,有時(shí)可能對(duì)系統(tǒng)需要進(jìn)行復(fù)位,為了避免對(duì)硬件系統(tǒng)經(jīng)常加電和斷電造成的損害,設(shè)計(jì)了手動(dòng)的復(fù)位電路。如圖4-2所示。這種電路的設(shè)計(jì),在系統(tǒng)的運(yùn)行過(guò)程中需要復(fù)位時(shí),只需使開關(guān)閉合,在RST端就會(huì)出現(xiàn)一定時(shí)間的高電平信號(hào),從而使單片機(jī)實(shí)現(xiàn)復(fù)

50、位。</p><p>  4.5單片機(jī)系統(tǒng)的晶振電路</p><p>  單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能進(jìn)行工作。MCS-51系列單片機(jī)內(nèi)部都有一個(gè)時(shí)鐘振蕩電路,只需外接晶振源,就能產(chǎn)生一定頻率的時(shí)鐘信號(hào)送到單片機(jī)的內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。圖4-3就是內(nèi)部時(shí)鐘工作方式的電路圖,這是一種常用的方式。這種方式是外界振蕩源,本設(shè)計(jì)就采用這種外接晶振的方法。電路中的兩個(gè)電容的作用有兩個(gè)

51、:一是幫助振蕩器起振(C1 C2的值大,起振的速度慢;反之,速度快。);二是對(duì)振蕩器的頻率起到微調(diào)的作用(C1 C2的值大,頻率略有減少,反之,頻率略有提高)。C1 C2的值采用30pF。</p><p>  圖4-3單片機(jī)內(nèi)部晶振電路連接圖</p><p><b>  4.6主電路設(shè)計(jì)</b></p><p>  主電路的功能是完成年、月、日

52、、星期、時(shí)、分、秒之間的轉(zhuǎn)換, 再送往LED顯示,并且接受鍵盤操作,對(duì)日期和時(shí)間進(jìn)行校正。</p><p>  電路原理圖如圖4-4所示,顯示部分用P0口做為輸出數(shù)據(jù)接到LED數(shù)碼管a到h,并接74ls244做為各段的驅(qū)動(dòng)(為了簡(jiǎn)化電路圖在此用了8個(gè)上拉電阻代替74ls244)。用P3口的低3位接譯碼器的A0,A1,A2端,用P3.3,P3.4,P3.5分別接譯碼器的使能端,通過(guò)控制P3口來(lái)控制LED的動(dòng)態(tài)掃描。

53、單片機(jī)的18和19引腳接12MHZ的晶振,并接兩個(gè)22PF的電容同時(shí)接地,單片機(jī)復(fù)位端接一極性電容并連接到電源處,在極性電容的負(fù)極接一10K的電阻,并連接至地做為放電用。本設(shè)計(jì)用到四個(gè)獨(dú)立式鍵盤分別接到P1口的低4位,用P1口的P1.4,P1.5,P1.6接日歷時(shí)鐘的使能端和時(shí)鐘端及數(shù)據(jù)輸入輸出口,并在日歷時(shí)鐘上接一32.768KHZ的晶振,并接兩個(gè)22PF的電容終端和地相連,各芯片的電源部分分別接到有開關(guān)式電源產(chǎn)生的+5V電源上,芯片

54、的接地端都接在公共地上,在這里接電源部分就不再一一詳述。</p><p>  設(shè)計(jì)采用動(dòng)態(tài)顯示,輪流掃描各個(gè)LED使之顯示相應(yīng)的數(shù)型碼,當(dāng)掃描頻率大于人眼所能識(shí)別的頻率時(shí)就看不到閃爍現(xiàn)象。動(dòng)態(tài)顯示的亮度不如靜態(tài)顯示,但靜態(tài)顯示占用的I/O口資源較多,往往用移位寄存器74LS164等來(lái)擴(kuò)充其I/O口不足的情況,當(dāng)顯示位數(shù)較多時(shí),這樣勢(shì)必增加硬件開銷,增大成本,不利于開闊市場(chǎng)。本設(shè)計(jì)的突出之處在于硬件電路簡(jiǎn)單,大大減

55、少了硬件開銷,這樣又勢(shì)必增加了軟件開發(fā)的難度,但降低了成本有利于市場(chǎng)的開闊。</p><p><b>  圖4-4電路原理圖</b></p><p><b>  5.軟件設(shè)計(jì)</b></p><p>  軟件的設(shè)計(jì)是設(shè)計(jì)控制系統(tǒng)的應(yīng)用程序。其任務(wù)是在整體設(shè)計(jì)和硬件設(shè)計(jì)的基礎(chǔ)上,確定程序結(jié)構(gòu),分配內(nèi)RAM資源,劃分功能模塊,

56、然后進(jìn)行主程序和各模塊程序的設(shè)計(jì),最后連接起來(lái)成為一個(gè)完整應(yīng)用程序,與硬件相結(jié)合完成相應(yīng)功能。</p><p><b>  5.1主程序設(shè)計(jì)</b></p><p>  主程序才用模塊化設(shè)計(jì),流程圖如圖5-1所示。</p><p>  從上面主程序看出,主程序的組成是通過(guò)分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先

57、是初始化各模塊,之后調(diào)用鍵盤完成時(shí)間的調(diào)整,調(diào)用日歷子程序完成日歷時(shí)鐘的初始化和時(shí)間數(shù)據(jù)的讀寫,調(diào)用顯示子程序顯示數(shù)據(jù),最后又轉(zhuǎn)到鍵盤程序來(lái)回循環(huán)。</p><p>  初始化部分主要有初始化定時(shí)器部分和和一些寄存器、標(biāo)志位、初始化時(shí)間等。</p><p>  對(duì)定時(shí)器T0初始化時(shí),首先置初值,CPU開中斷,定時(shí)器T0開中斷,并且開始計(jì)數(shù),而對(duì)定時(shí)器T1初始化時(shí),首先置初值,定時(shí)器T1關(guān)中

58、斷,并且停止計(jì)數(shù),只有收到命令時(shí)才能產(chǎn)生中斷。</p><p>  寄存器的初始化主要是初始化執(zhí)行程序時(shí)用到的部分RAM空間,防止程序執(zhí)行時(shí)帶來(lái)混亂。</p><p>  標(biāo)志位初始化是對(duì)時(shí)間調(diào)整時(shí)判斷是調(diào)分還是調(diào)時(shí)等而專設(shè)的位標(biāo)志,初始化過(guò)程中標(biāo)志位全部置0,即開始時(shí)是處于顯示狀態(tài),而不是調(diào)整狀態(tài),這一點(diǎn)在程序中相當(dāng)明了。</p><p>  初始化時(shí)間是開機(jī)時(shí)顯

59、示的時(shí)間,并通過(guò)調(diào)用日歷時(shí)鐘的寫程序來(lái)完成時(shí)間的置初值。</p><p><b>  圖5-1程序流程圖</b></p><p>  5.2鍵盤子程序設(shè)計(jì)</p><p>  多功能鍵盤程序的設(shè)計(jì)是本設(shè)計(jì)的難點(diǎn),也是完成本設(shè)計(jì)的重點(diǎn),當(dāng)有鍵按下時(shí),調(diào)用10ms延時(shí)程序,再判斷是否有鍵按下無(wú)則返回,若有先調(diào)用顯示程</p><

60、p>  序再判斷是否松開,否則再轉(zhuǎn)到顯示程序,這樣避免了在按鍵松開之前能正常顯示。其中K1鍵功能最多,通過(guò)判斷K1鍵按下的次數(shù)來(lái)判斷是調(diào)時(shí)間還是定時(shí),并對(duì)對(duì)應(yīng)的位置閃爍。本鍵盤深度為7級(jí),即連續(xù)按下K1鍵8次時(shí)則返回到原來(lái)界面。當(dāng)判斷鍵值為1時(shí)則為調(diào)秒狀態(tài),對(duì)應(yīng)的秒低位閃爍,為2時(shí)為調(diào)分狀態(tài)并分閃爍,為3時(shí)為調(diào)時(shí)狀態(tài)并時(shí)閃爍,為4時(shí)為調(diào)日狀態(tài)并日閃爍,為5時(shí)為調(diào)月狀態(tài)并月閃爍,為6時(shí)為調(diào)年?duì)顟B(tài)并年閃爍,為7時(shí)為調(diào)星期狀態(tài)并星期閃爍

61、。 K2為加1鍵,K3為減1鍵,K4為總返回鍵,即在調(diào)時(shí)見時(shí)不用只有按下K1鍵值為8才返回,而通過(guò)按下K4鍵即可返回。由于鍵盤流程圖非常復(fù)雜,在此只表示秒,如圖5-2所示,其余略。</p><p>  5.3日歷時(shí)鐘子程序設(shè)計(jì)</p><p>  DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。日歷時(shí)鐘DS1302的讀寫需要初始化時(shí)序、讀時(shí)序、寫時(shí)序。所

62、有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送是低位在先。讀寫都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在讀寫時(shí)要嚴(yán)格遵從其讀寫時(shí)序,否則讀寫將會(huì)失效。</p><p>  當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vc

63、c≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平,這一點(diǎn)我們要一定注意。</p><p>  當(dāng)RST置為高電平時(shí),在串行時(shí)鐘的SCLK的上升沿,DS1302從I/O端口讀入一位數(shù)據(jù),8個(gè)串行時(shí)鐘脈沖就可以讀入一字節(jié)的數(shù)據(jù)。在串行時(shí)鐘的下降沿,DS1302向I/O端口輸出一位數(shù)據(jù),8個(gè)串行時(shí)鐘脈沖就可以輸出一字節(jié)的數(shù)據(jù)。</p><p>  顯示子程

64、序設(shè)計(jì)電子產(chǎn)品是否實(shí)用其中顯示占了很重要的地位,很多數(shù)人都渴求用視覺效果好,范圍廣,直觀明了,LED符合以上的要求,但相應(yīng)的硬件設(shè)計(jì)相對(duì)復(fù)雜。</p><p>  5.4顯示子程序設(shè)計(jì)</p><p>  本設(shè)計(jì)的顯示部分具有消隱和閃爍功能,當(dāng)時(shí)分秒等高位為0時(shí)顯示消隱, 此時(shí)在讀時(shí)間時(shí)更加明了,但低位不能顯示消隱。閃爍功能也是本設(shè)計(jì)的一個(gè)難點(diǎn),本設(shè)計(jì)采用8個(gè)位標(biāo)志位,其中一個(gè)標(biāo)志位通過(guò)用

65、定時(shí)器0產(chǎn)生一個(gè)周期大約為每秒1.5次,使閃爍時(shí)效果達(dá)到最好。此時(shí)定時(shí)器采用定時(shí)中斷的工作方式,這樣可以充分利用CPU資源。另外7個(gè)標(biāo)志位是時(shí)分秒等的位標(biāo)志位,當(dāng)秒標(biāo)志位置1時(shí)即秒開閃爍,與用中斷產(chǎn)生的標(biāo)志位相結(jié)合,即在一個(gè)周期內(nèi)為0時(shí)此時(shí)消隱為1時(shí)開顯示,這樣就使在調(diào)時(shí)間時(shí)對(duì)應(yīng)的位閃爍。</p><p><b>  6.系統(tǒng)調(diào)試</b></p><p>  單片機(jī)系

66、統(tǒng)經(jīng)過(guò)總體設(shè)計(jì),完成了硬件和軟件設(shè)計(jì)開發(fā)。通過(guò)軟件和硬件相結(jié)合系統(tǒng)即可運(yùn)行。但編制好的程序或焊接好的線路不能按預(yù)計(jì)的那樣正常工作是常見的事,經(jīng)常會(huì)出現(xiàn)一些硬件、軟件上的錯(cuò)誤,這是軟件和硬件開發(fā)者經(jīng)常遇見的,這就需要通過(guò)調(diào)試來(lái)發(fā)現(xiàn)錯(cuò)誤并加以改正。調(diào)試可分為硬件調(diào)試和軟件調(diào)試。本設(shè)計(jì)系統(tǒng)的已經(jīng)在PC機(jī)上用模擬開發(fā)軟件進(jìn)行了檢測(cè)和調(diào)試,并運(yùn)行成功,最后進(jìn)行實(shí)物圖的硬件組裝與調(diào)試,這樣就給開發(fā)者在提供了方便。</p><p&

67、gt;<b>  6.1軟件調(diào)試</b></p><p>  本設(shè)計(jì)是在Proteus軟件和Wava6000軟件相結(jié)合調(diào)試的,完全用仿真軟件在PC機(jī)上對(duì)目標(biāo)電路原理圖和程序進(jìn)行檢測(cè)和調(diào)試。調(diào)試過(guò)程中單片機(jī)相應(yīng)輸入端由通用鍵盤和鼠標(biāo)設(shè)定,運(yùn)行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在指定的窗口區(qū)域顯示出來(lái),以確定程序運(yùn)行有無(wú)錯(cuò)誤。</p><p>  目標(biāo)程序糾錯(cuò):該階段工

68、作通常在目標(biāo)程序編輯時(shí)就完成。一般來(lái)說(shuō),仿真軟件能為用戶輸入的程序指令糾錯(cuò),包括書寫格式、標(biāo)號(hào)未定義或多重定義、轉(zhuǎn)移地址溢出等錯(cuò)誤。</p><p>  整體程序調(diào)試:即把各子程序整體連起來(lái)進(jìn)入到綜合電路調(diào)試,看是否能實(shí)現(xiàn)預(yù)計(jì)的功能顯示。在這階段若發(fā)生故障,可以考慮各子程序在運(yùn)行時(shí)是否破壞現(xiàn)場(chǎng),數(shù)據(jù)緩沖單元是否發(fā)生沖突,標(biāo)志位的建立和清除在設(shè)計(jì)上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。</p>

69、<p>  經(jīng)過(guò)多次修改程序最后調(diào)試出來(lái)理想的效果,如圖6-1所示</p><p>  圖6-1 Proteus仿真</p><p>  用軟件模擬器調(diào)試不需任何在線仿真器,也不需要用戶樣機(jī),直接就可以在PC機(jī)上開發(fā)和調(diào)試。調(diào)試和修改完畢后可以直接使用編程器將軟件固化在目標(biāo)系統(tǒng)ROM中,然后投入運(yùn)行。</p><p>  本設(shè)計(jì)特點(diǎn)突出,性價(jià)比高,適合

70、于家庭掛歷,有很高應(yīng)用價(jià)值。</p><p><b>  7.結(jié)論</b></p><p>  硬件系統(tǒng)關(guān)系到所要設(shè)計(jì)的電子產(chǎn)品好懷,如系統(tǒng)抗干擾性等,所以要合理的安排盡量減少干擾提高性能。單片機(jī)是很容易受干擾的控制器,當(dāng)采用外部晶振時(shí),應(yīng)盡量讓其靠近單片機(jī)減少對(duì)其干擾,防止程序亂飛現(xiàn)象。同時(shí)還可以采用隔離等方式減少干擾,硬件系統(tǒng)設(shè)計(jì)的好壞很大部分來(lái)源于經(jīng)驗(yàn),所以我們

71、要有動(dòng)手的好習(xí)慣。</p><p>  軟件設(shè)計(jì)是核心部分,具有多樣化,靈活性高,易移植等優(yōu)點(diǎn),要深深理會(huì)各指令的含義才能更加熟練應(yīng)用,中斷的合理利用可以減少CPU利用資源,具有執(zhí)行效率高等優(yōu)點(diǎn),本設(shè)計(jì)用到定時(shí)器中斷以減少對(duì)CPU的占用,更好的處理其他功能。軟件的設(shè)計(jì)大部分采用模塊化設(shè)計(jì)的方法以方便調(diào)試,并使其可讀性大大增強(qiáng),方便更改和移植。</p><p>  在這次設(shè)計(jì)中我學(xué)到了很多,

72、也發(fā)現(xiàn)了自己的不足,也難免有錯(cuò)誤之處,敬請(qǐng)?zhí)岢觯?lt;/p><p><b>  致 謝</b></p><p>  不知不覺,畢業(yè)設(shè)計(jì)結(jié)束了。我的畢業(yè)論文已整理完畢,電路調(diào)試進(jìn)展良好。畢業(yè)設(shè)計(jì)的完成意味著我的大學(xué)學(xué)習(xí)生活即將結(jié)束,從此我將進(jìn)入一個(gè)新的人生旅途、開始一段嶄新的生活——工作。在此,我衷心地感謝所有在我做畢業(yè)設(shè)計(jì)期間幫助過(guò)我的人。 </p>&l

73、t;p>  首先我要感謝ddd老師大力幫助和支持。在整個(gè)設(shè)計(jì)過(guò)程當(dāng)中,為我的畢業(yè)設(shè)計(jì)帶來(lái)了很大方便。同時(shí)在我完成畢業(yè)設(shè)計(jì)的過(guò)程中提供了很多指導(dǎo)性的意見,使我受益匪淺。在此,我衷心感謝老師們給予我的幫助和教育。</p><p>  此外,還要衷心感謝其他所有對(duì)本課題的研究和論文撰寫有過(guò)幫助的同學(xué)。</p><p>  最后,我要感謝我的母校——ddd學(xué)院,在校期間,這里給我留下了美好的

74、回憶。特別是在我即將踏上工作崗位的同時(shí),畢業(yè)設(shè)計(jì)整個(gè)過(guò)程給了我這樣一個(gè)鍛煉的機(jī)會(huì),使我加深了對(duì)以前知識(shí)的理解和鞏固,拓寬了知識(shí)面,也提高了我對(duì)所學(xué)知識(shí)的綜合應(yīng)用能力。祝愿母校的將來(lái)更美好!</p><p><b>  參考文獻(xiàn)</b></p><p>  [01]何宏主編.單片機(jī)原理與接口技術(shù).北京:國(guó)防工業(yè)出版社.2006.07</p><p&g

75、t;  [02]楊西明,朱騏主編.單片機(jī)編程與應(yīng)用入門.北京:機(jī)械工業(yè)出版社.2004.06</p><p>  [03]先鋒工作室編著.單片機(jī)程序設(shè)計(jì)實(shí)例.北京:清華大學(xué)出版社.2003.01</p><p>  [04]謝宜仁主編.單片機(jī)實(shí)用技術(shù)問(wèn)答.北京:人民郵電出版社.2003.02</p><p>  [05]孫江宏,李良玉等編著.Protel99電路設(shè)計(jì)

76、與應(yīng)用.北京:機(jī)械工業(yè)出版社.2004.07</p><p>  [06]房小翠,王金鳳編著.單片機(jī)實(shí)用系統(tǒng)設(shè)計(jì)技術(shù).北京:國(guó)防工業(yè)出版社.1999.06</p><p>  [07]秦曾煌主編.電工學(xué)(電子技術(shù)).北京:高等教育出版社,2004</p><p>  [08]何立民.單片機(jī)高級(jí)教程應(yīng)用與設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2000</p>

77、<p>  [09]劉國(guó)榮單片微型計(jì)算機(jī)技術(shù).北京:機(jī)械工業(yè)出版社,1996</p><p>  [10]王迎旭.單片機(jī)原理與應(yīng)用.北京:機(jī)械工業(yè)出版社,2004</p><p>  [11]于永權(quán).ATMEL89系列單片機(jī)應(yīng)用技術(shù).北京:北京航空航天大學(xué)出版社,2001</p><p>  [12]高峰.單片微型計(jì)算機(jī)原理與接口技術(shù).北京:科學(xué)出版社

78、,2003</p><p>  [13]各種網(wǎng)絡(luò)教程及其他</p><p><b>  附錄</b></p><p><b>  附錄Ⅰ硬件電路圖</b></p><p><b>  附錄Ⅱ主程序源代碼</b></p><p>  ZHUAN BIT 5

79、0H ;閃爍標(biāo)志位輔助標(biāo)志位</p><p>  ZHUAN1 BIT 51H ;年開閃爍的標(biāo)志位</p><p>  ZHUAN2 BIT 52H ;月開閃爍的標(biāo)志位</p><p>  ZHUAN3 BIT 53H ;日開閃爍的標(biāo)志位</p><p>  ZHUAN4 BIT 54H ;時(shí)開閃爍的標(biāo)志位</p&

80、gt;<p>  ZHUAN5 BIT 55H ;分開閃爍的標(biāo)志位</p><p>  ZHUAN6 BIT 56H ;秒開閃爍的標(biāo)志位</p><p>  ZHUAN7 BIT 57H ;星期開閃爍的標(biāo)志位</p><p><b>  ORG 0000H</b></p><p>  LJMP

81、START ;開始并初始化</p><p>  ORG 000BH ;定時(shí)/計(jì)數(shù)T0中斷</p><p>  LJMP ZDUAN </p><p>  ORG 001BH ;定時(shí)/計(jì)數(shù)T1中斷</p><p>  LJMP ZDUAN2</p><p>  

82、ZDUAN:MOV TH0,#00H ;使ZHUAN由正到負(fù)周期大約為1.5即當(dāng)開閃爍時(shí) 每秒大約閃爍1.5次環(huán)境</p><p>  MOV TL0,#00H</p><p>  DJNZ R7,ZDUAN1 ;循環(huán)指令</p><p>  CPL ZHUAN ;閃爍標(biāo)志位求反</p><p><b> 

83、 MOV R7,#3</b></p><p>  ZDUAN1:RETI ;中斷返回</p><p>  ZDUAN2:MOV TH1,#0FCH</p><p>  MOV TL1,#43H</p><p><b>  CPL P3.0</b></p><p><b

84、>  RETI</b></p><p><b>  ORG 0100H</b></p><p>  START:MOV SP,#70H ;設(shè)堆棧</p><p>  MOV TMOD,#11H ;T0,TI工作方式1</p><p>  MOV TH0,#00H</p><p&g

85、t;  MOV TL0,#00H</p><p>  MOV TH1,#0FCH</p><p>  MOV TL1,#43H</p><p>  SETB EA ;開放CPU</p><p>  SETB ET0 ;開放T0中斷</p><p>  SETB TR0

86、 ;啟動(dòng)T0工作</p><p>  CLR ZHUAN1 ;初始化標(biāo)志位</p><p>  CLR ZHUAN2</p><p>  CLR ZHUAN3</p><p>  CLR ZHUAN4</p><p>  CLR ZHUAN5</p><p>  CLR Z

87、HUAN6</p><p>  CLR ZHUAN7</p><p><b>  MOV R7,#3</b></p><p>  MOV 5FH,#00H ;初始化寄存器</p><p>  MOV 30H,#01H ;時(shí)間賦初始值</p><p>  MOV 31H,#01H</p

88、><p>  MOV 32H,#01H</p><p>  MOV 33H,#01H</p><p>  MOV 34H,#01H</p><p>  MOV 35H,#01H</p><p>  MOV 36H,#10H</p><p>  SETB P1.4 ;啟動(dòng)設(shè)置寫保護(hù)寄存器</p

89、><p>  MOV A,#10001110B ;命令字節(jié),07H寄存器寫</p><p>  ACALL WBYTE </p><p>  MOV A,#00H ;允許寫數(shù)據(jù)字節(jié)</p><p>  ACALL WBYTE</p><p>  CLR P1.4 ;RST=0,停止傳送</p>

90、;<p>  MOV R0,#30H ;數(shù)據(jù)存放首地址</p><p>  MOV R2,#8 ;寫8個(gè)字節(jié)</p><p>  SETB P1.4 ;啟動(dòng)連續(xù)寫8個(gè)字節(jié)</p><p>  MOV A,#0BEH ;設(shè)多字節(jié)寫命令字</p><p>  LCALL WBYTE</p><p

91、>  CHUSHI:MOV A,@R0 ;取數(shù)據(jù)</p><p>  LCALL WBYTE ;寫一個(gè)字節(jié)</p><p><b>  INC R0</b></p><p>  DJNZ R2,CHUSHI ;循環(huán)寫8個(gè)字節(jié)</p><p><b>  ;主程序</b></p&

92、gt;<p>  MAIN:LCALL JIAN ;調(diào)鍵盤子程序</p><p>  LCALL RILI ;調(diào)日歷時(shí)鐘程序</p><p>  LCALL XIAN ;調(diào)顯示程序</p><p>  SJMP MAIN </p><p><b>  ;鍵盤程序</b></p&

93、gt;<p>  JIAN:MOV P1,#0FFH ;初始</p><p><b>  MOV A,P1</b></p><p><b>  CPL A</b></p><p>  JNZ JI1 ;判鍵按下</p><p>  LJMP JIAN4</p&

94、gt;<p>  JI1:LCALL DELAY ;調(diào)延時(shí)</p><p><b>  CPL A</b></p><p><b>  JNZ JI2 </b></p><p>  LJMP JIAN4</p><p>  JI2:JNB P1.1,JIAN3 ;判K2鍵為0轉(zhuǎn)

95、</p><p>  JNB P1.2,JIAN3 ;判K3鍵為0轉(zhuǎn)</p><p>  JIAN0:MOV P1,#0FFH</p><p>  JNB P1.3,JIAN3 ;判K4鍵為0轉(zhuǎn)</p><p>  JNB P1.0,JIAN1 ;判K1鍵為0轉(zhuǎn)</p><p>  LJMP J

96、IANX</p><p>  JIAN1:LCALL DELAY ;調(diào)延時(shí)去抖動(dòng)</p><p>  JB P1.0,JIANX ;為1就是鍵抖動(dòng)</p><p>  JIAN11:LCALL XIAN ;調(diào)顯示</p><p>  JNB P1.0,JIAN11 ;判鍵K1松開</p><p>  MO

97、V A,5FH </p><p>  ADD A,#1 ;寄存器加1</p><p><b>  MOV 5FH,A</b></p><p>  CJNE A,#8,JIANX</p><p>  LJMP JIAN3</p><p>  JIANX:MOV A,5FH</

98、p><p>  CJNE A,# 1,JIA1 ;比較轉(zhuǎn)移指令A(yù)不等于#時(shí),轉(zhuǎn)移</p><p>  LJMP TIAOM ;轉(zhuǎn)調(diào)秒子程序</p><p>  JIA1:MOV A,5FH</p><p>  CJNE A,#2,JIA2</p><p>  LJMP TIAOF ;轉(zhuǎn)調(diào)分子程序</p&

99、gt;<p>  JIA2:MOV A,5FH</p><p>  CJNE A,#3,JIA3</p><p>  LJMP TIAOS ;轉(zhuǎn)調(diào)時(shí)子程序</p><p>  JIA3:MOV A,5FH</p><p>  CJNE A,#4,JIA4</p><p>  LJMP TIAOR

100、 ;轉(zhuǎn)調(diào)日子程序</p><p>  JIA4:MOV A,5FH</p><p>  CJNE A,#5,JIA5</p><p>  LJMP TIAOY ;轉(zhuǎn)調(diào)月子程序</p><p>  JIA5:MOV A,5FH</p><p>  CJNE A,#6,JIA6</p><p&g

101、t;  LJMP TIAON ;轉(zhuǎn)調(diào)年子程序</p><p><b>  JIA6:</b></p><p>  LJMP TIAOX ;轉(zhuǎn)調(diào)星期子程序</p><p>  JIAN3:CLR ZHUAN1 ;標(biāo)志位清0</p><p>  CLR ZHUAN2</p><p>  

102、CLR ZHUAN3</p><p>  CLR ZHUAN4</p><p>  CLR ZHUAN5</p><p>  CLR ZHUAN6</p><p>  CLR ZHUAN7</p><p>  MOV 5FH,#00H</p><p>  JIAN2:LCALL XIAN ;調(diào)

103、顯示子程序</p><p>  MOV A,P1 </p><p><b>  CPL A</b></p><p><b>  JNZ JIAN2</b></p><p><b>  JIAN4:RET</b></p><p><

104、;b>  ;調(diào)秒</b></p><p>  TIAOM:SETB ZHUAN6 ;秒閃爍標(biāo)志位置1</p><p>  LCALL XIAN</p><p>  JNB P1.1,MIAOZ ;加轉(zhuǎn)移</p><p>  JNB P1.2,MIAOJ ;減轉(zhuǎn)移 </p><p>  L

105、JMP JIAN0</p><p>  MIAOZ:LCALL DELAY ;調(diào)延時(shí)去抖動(dòng)</p><p>  JNB P1.1,MIAOZ1</p><p>  LJMP JIAN0</p><p>  MIAOZ1:LCALL XIAN</p><p>  JNB P1.1,MIAOZ1 ;判鍵K2松開<

106、/p><p>  MOV A,30H ;取秒數(shù)據(jù)</p><p>  ADD A,#1 ;加1</p><p>  DA A ;十進(jìn)制調(diào)整指令</p><p>  MOV 30H,A ;送回秒寄存器</p><p>  CJNE A,#60H,MIAOZ2</

107、p><p>  MOV 30H,#00H ;秒值過(guò)60為0</p><p>  LJMP MIAOZ2</p><p>  MIAOJ:LCALL DELAY;調(diào)延時(shí)去抖動(dòng)</p><p>  JNB P1.2,MIAOJ1</p><p>  LJMP JIAN0</p><p>  MIAO

108、J1:LCALL XIAN</p><p>  JNB P1.2,MIAOJ1 ;判鍵K3松開</p><p>  MOV A,30H ;取秒數(shù)據(jù)</p><p>  MOV B,#10H</p><p>  DIV AB ;A除以B</p><p>  MOV 61H,B

109、 ;數(shù)據(jù)個(gè)位放到61H</p><p>  MOV B,#10 </p><p>  MUL AB ;A乘以B</p><p>  ADD A,61H ;不帶進(jìn)位加法</p><p>  DEC A ;A減1</p><p>  MOV B,#10 </p>

110、<p><b>  DIV AB </b></p><p><b>  SWAP A</b></p><p><b>  ADD A,B</b></p><p><b>  MOV 30H,A</b></p><p>  CJNE A,#96H

111、,MIAOZ2</p><p>  MOV 30H,#59H</p><p>  MIAOZ2:MOV A,30H</p><p>  ANL A,#0FH ;分離低四位</p><p>  MOV 40H,A ;存數(shù)據(jù)到寄存器</p><p>  MOV A,30H </p><p

112、>  SWAP A ;半字節(jié)交換</p><p>  ANL A,#0FH</p><p>  MOV 41H,A ;存數(shù)據(jù)到寄存器</p><p>  SETB P1.4 ;啟動(dòng)設(shè)置寫保護(hù)寄存器</p><p>  MOV A,10001110B ;命令字節(jié),寄存器07H</p><p

113、>  ACALL WBYTE</p><p>  MOV A,#00H ;允許寫數(shù)據(jù)字節(jié)</p><p>  ACALL WBYTE</p><p>  CLR P1.4 ;停止傳送</p><p>  SETB P1.4 ;啟動(dòng)寫</p><p>  MOV A,#80H

114、 ;秒寫命令字節(jié)</p><p>  LCALL WBYTE</p><p>  MOV A,30H ;寫秒數(shù)據(jù)到DS1302</p><p>  LCALL WBYTE</p><p>  LCALL XIAN </p><p>  LJMP JIAN0</p><p><

115、b>  RET</b></p><p><b>  ;調(diào)分</b></p><p>  TIAOF:CLR ZHUAN6 ;清秒標(biāo)志位</p><p>  SETB ZHUAN5 ;置分標(biāo)志位</p><p>  LCALL XIAN</p><p>  JNB

116、 P1.1,FENZ ;加轉(zhuǎn)移</p><p>  JNB P1.2,FENJ ;減轉(zhuǎn)移</p><p>  LJMP JIAN0</p><p>  FENZ:LCALL DELAY ;調(diào)延時(shí)去抖動(dòng)</p><p>  JNB P1.1,FENZ1</p><p>  LJMP

117、JIAN0</p><p>  FENZ1:LCALL XIAN</p><p>  JNB P1.1,FENZ1 ;判鍵K2松開</p><p>  MOV A,31H ;取秒數(shù)據(jù)</p><p>  ADD A,#1 ;加1</p><p>  DA A

118、 ;十進(jìn)制調(diào)整指令</p><p>  MOV 31H,A ;送回分寄存器</p><p>  CJNE A,#60H,FENZ2 </p><p>  MOV 31H,#00H ;值過(guò)60為0</p><p>  LJMP FENZ2</p><p>  

119、FENJ:LCALL DELAY ;調(diào)延時(shí)去抖動(dòng)</p><p>  JNB P1.2,FENJ1</p><p>  LJMP JIAN0</p><p>  FENJ1:LCALL XIAN</p><p>  JNB P1.2,FENJ1 ;判鍵K3松開</p><p>  MOV A,31H

120、 ;取秒數(shù)據(jù)</p><p>  MOV B,#10H</p><p>  DIV AB ;A除以B</p><p>  MOV 62H,B ;數(shù)據(jù)個(gè)位放到62H</p><p><b>  MOV B,#10</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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論