單片機(jī)日歷和時(shí)鐘畢業(yè)設(shè)計(jì)論文_第1頁(yè)
已閱讀1頁(yè),還剩29頁(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>  目錄</b></p><p><b>  1設(shè)計(jì)方案論</b></p><p>  1.1功能要求··················&#

2、183;··································</p>

3、<p>  1.2 方案確定·································

4、83;···················</p><p>  1.2.1單片機(jī)芯片的選擇方案和論證2</p><p>  1.2.2顯示模塊選擇方案和論證2</p><p&g

5、t;  1.2.3時(shí)鐘芯片的選擇方案和論證3</p><p>  1.2.4電路設(shè)計(jì)最終方案確定3</p><p>  2主控制器和外圍器件3</p><p>  2.1AT89S52單片機(jī)3</p><p>  2.2DS1302時(shí)鐘芯片3</p><p>  2.2.1DS1302芯片介紹3</p

6、><p>  2.2.2DS1302 的應(yīng)用6</p><p>  2.3數(shù)碼管LED6</p><p>  2.4譯碼器74HC1387</p><p>  2.5鎖存器74LS2447</p><p><b>  3硬件設(shè)計(jì)8</b></p><p>  3.1電

7、路設(shè)計(jì)框圖8</p><p><b>  3.2系統(tǒng)概述8</b></p><p><b>  3.3電源設(shè)計(jì)8</b></p><p>  3.4單片機(jī)的復(fù)位電路8</p><p>  3.5單片機(jī)系統(tǒng)的晶振電路8</p><p>  3.6主電路設(shè)計(jì)9<

8、/p><p><b>  4軟件設(shè)計(jì)9</b></p><p>  4.1主程序設(shè)計(jì)10</p><p>  4.2鍵盤(pán)子程序設(shè)計(jì)10</p><p>  4.3日歷時(shí)鐘子程序設(shè)計(jì)11</p><p>  4.4顯示子程序設(shè)計(jì)12</p><p><b> 

9、 5系統(tǒng)調(diào)試12</b></p><p>  5.1軟件調(diào)試12</p><p>  5.2硬件調(diào)試13</p><p><b>  6結(jié)論14</b></p><p>  致謝錯(cuò)誤!未定義書(shū)簽。</p><p><b>  參考文獻(xiàn)15</b><

10、;/p><p><b>  附錄16</b></p><p>  附錄Ⅰ硬件電路圖16</p><p>  附錄Ⅱ主程序源代碼17</p><p><b>  -</b></p><p><b>  1概述</b></p><p&g

11、t;  在日新月異的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é)以及人民生活的各個(gè)方面,如車間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。用單片機(jī)來(lái)控制的小型家

12、電產(chǎn)品具有便攜實(shí)用,操作簡(jiǎn)單的特點(diǎn)。</p><p>  時(shí)鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時(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ù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技

13、術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替顯示器代替指針顯示進(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)振蕩

14、定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間,它通常有兩種實(shí)現(xiàn)方法:一是用軟件實(shí)現(xiàn),即用單片機(jī)內(nèi)部的可編程定時(shí)/計(jì)數(shù)器來(lái)實(shí)現(xiàn),但誤差很大,主要用在對(duì)時(shí)間精度要求不高的場(chǎng)合;二是用專門(mén)的時(shí)鐘芯片實(shí)現(xiàn),在對(duì)時(shí)間精度要求很高的情況下,通常采用這種方法,典型的時(shí)鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p>

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

16、t;</p><p><b>  2.1功能要求</b></p><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ù)</

17、p><p>  5、上電后,電子鐘顯示“2010年 1月 1日”</p><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

18、.1單片機(jī)芯片的選擇方案和論證</p><p><b>  方案一: </b></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ū)Τ绦虻男略龉δ苄枰獰?/p>

19、程序時(shí),對(duì)芯片的多次拔插會(huì)對(duì)芯片造成一定的損壞。</p><p><b>  方案二:</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ū)?/p>

20、程序的新增功能需要燒入程序時(shí),不需要對(duì)芯片多次拔插,所以不會(huì)對(duì)芯片造成損壞。</p><p>  所以選擇采用AT89S52作為主控制系統(tǒng).</p><p>  2.2.2顯示模塊選擇方案和論證</p><p><b>  方案一:</b></p><p>  采用LED液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文

21、字,圖形,顯示多樣,清晰可見(jiàn),但是價(jià)格昂貴,需要的接口線多,所以在此設(shè)計(jì)中不采用LED液晶顯示屏。</p><p><b>  方案二:</b></p><p>  采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以也不用此種作為顯示。</p><p><

22、;b>  方案三:</b></p><p>  采用LED數(shù)碼管動(dòng)態(tài)掃描,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>  方案一

23、:</b></p><p>  直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。</p><p><b>  方案二:</b></p><p>  采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)

24、鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.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),并用

25、鍵盤(pán)來(lái)完成對(duì)當(dāng)前時(shí)間的調(diào)整。</p><p>  3主控制器和外圍器件</p><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 口

26、線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p>  3.2DS1302時(shí)鐘

27、芯片</p><p>  3.2.1DS1302芯片介紹</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í)間的連續(xù)測(cè)控系統(tǒng)結(jié)果的分析以及對(duì)異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義。</p><p&

28、gt;  采用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)的時(shí)間。記錄及分析這些特殊意義的數(shù)據(jù),對(duì)測(cè)控系統(tǒng)的性能分析及正常運(yùn)行具有重要的意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔

29、時(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的性能特性</p><p>  ·實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)

30、償?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>  ·2.5V時(shí)耗電小于300nA;</p><p>  ·用于

31、時(shí)鐘或RAM數(shù)據(jù)讀/寫(xiě)的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;</p><p><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í)鐘/日歷提供秒、

32、分、時(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)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,VCC1 連接到備份

33、電源,以便在沒(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>  DS1302數(shù)據(jù)操作原理</p><p>  DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)

34、在SCLK的上升沿被輸入。無(wú)論是讀周期還是寫(xiě)周期,開(kāi)始8位指定40個(gè)寄存器中哪個(gè)被訪問(wèn)到。在開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫(xiě)操作時(shí)寫(xiě)入數(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ì)

35、終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在VCC >=2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的管腳圖如圖3-1所示,表3-2為各引腳的功能。</p><p>  表3-2 DS1302引腳功能表</p><p>  DS1302的控制字如圖3-3所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1;如果它為邏輯0

36、,則不能把數(shù)據(jù)寫(xiě)入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進(jìn)行寫(xiě)操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出。</p><p>  圖3-3 控制字節(jié)的含義</p><p>  為了提高對(duì)32個(gè)地址的尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RA

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

38、數(shù)據(jù)讀寫(xiě)程序</p><p>  DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表3-5,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作。</p><p>  表3-5 片內(nèi)時(shí)鐘數(shù)據(jù)寄存器</p><p>  3.2.2DS1302 的應(yīng)用</p><p>  實(shí)時(shí)時(shí)鐘芯片DS130

39、2采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,也可以關(guān)閉充電功能,芯片采用32768Hz晶振。要特別說(shuō)明的是,備用電源BT1可以用電池或超級(jí)電容(10萬(wàn)μF以上)。雖然DS1302在主電源掉電后耗電很小,但如果要長(zhǎng)時(shí)間保證時(shí)鐘正常,最好選用小型充電電池。如果斷電時(shí)間較短(幾小時(shí)或幾天),可以用漏電較小的普通電解電容代替(100μF就可以保證1小時(shí)的正常走時(shí))。DS1302在第一次加電后,需進(jìn)行初始化操作。初始化后就可以按正常

40、方法調(diào)整時(shí)間。DS1302的時(shí)鐘電路如圖3-6所示。</p><p>  圖3-6 DS1302時(shí)鐘電路</p><p><b>  3.3數(shù)碼管LED</b></p><p>  LED顯示器由若干個(gè)發(fā)光二極管組成,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)筆畫(huà)或一個(gè)點(diǎn)就發(fā)光??刂葡鄳?yīng)的管導(dǎo)通,就能顯示出對(duì)應(yīng)字符。各段LED顯示器需要由驅(qū)動(dòng)電路驅(qū)動(dòng)。在七

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

42、失。</p><p>  動(dòng)態(tài)顯示是指顯示器顯示某一字符時(shí),相應(yīng)段的發(fā)光二極管恒定地導(dǎo)通或截止。靜態(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)控制Y

43、0~Y7的輸出狀態(tài),其中4和5為使能地端,與8引腳共同接地,當(dāng)接高電平時(shí)Y0到Y(jié)7輸出高電平。6號(hào)腳為使能端,為高電平時(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組、每組四路輸入

44、、輸出構(gòu)成。每組有一個(gè)控制端G,由控制端的高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開(kāi)。</p><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)概述</

45、b></p><p>  本電路是由AT89S52單片機(jī)為控制核心,具有在線編程功能,低功耗,能在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的用于

46、臨時(shí)性存放數(shù)據(jù)的RAM寄存器。可產(chǎn)生年、月、日、周日、時(shí)、分、秒,具有使用壽命長(zhǎng),精度高和低功耗等特點(diǎn),同時(shí)具有掉電自動(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ì)<

47、;/b></p><p>  在這里因設(shè)計(jì)分工和側(cè)重點(diǎn)不同,電源模塊用通用的5v變壓器。</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è)

48、計(jì),在系統(tǒng)的運(yùn)行過(guò)程中需要復(fù)位時(shí),只需使開(kāi)關(guān)閉合,在RST端就會(huì)出現(xiàn)一定時(shí)間的高電平信號(hào),從而使單片機(jī)實(shí)現(xiàn)復(fù)位。</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í)鐘工作方式的電

49、路圖,這是一種常用的方式。這種方式是外界振蕩源,本設(shè)計(jì)就采用這種外接晶振的方法。電路中的兩個(gè)電容的作用有兩個(gè):一是幫助振蕩器起振(C1 C2的值大,起振的速度慢;反之,速度快。);二是對(duì)振蕩器的頻率起到微調(diào)的作用(C1 C2的值大,頻率略有減少,反之,頻率略有提高)。C1 C2的值采用30pF。</p><p>  圖4-3單片機(jī)內(nèi)部晶振電路連接圖</p><p><b>  4

50、.6主電路設(shè)計(jì)</b></p><p>  主電路的功能是完成年、月、日、星期、時(shí)、分、秒之間的轉(zhuǎn)換, 再送往LED顯示,并且接受鍵盤(pán)操作,對(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位接譯碼器的A

51、0,A1,A2端,用P3.3,P3.4,P3.5分別接譯碼器的使能端,通過(guò)控制P3口來(lái)控制LED的動(dòng)態(tài)掃描。單片機(jī)的18和19引腳接12MHZ的晶振,并接兩個(gè)22PF的電容同時(shí)接地,單片機(jī)復(fù)位端接一極性電容并連接到電源處,在極性電容的負(fù)極接一10K的電阻,并連接至地做為放電用。本設(shè)計(jì)用到四個(gè)獨(dú)立式鍵盤(pán)分別接到P1口的低4位,用P1口的P1.4,P1.5,P1.6接日歷時(shí)鐘的使能端和時(shí)鐘端及數(shù)據(jù)輸入輸出口,并在日歷時(shí)鐘上接一32.768K

52、HZ的晶振,并接兩個(gè)22PF的電容終端和地相連,各芯片的電源部分分別接到有開(kāi)關(guān)式電源產(chǎn)生的+5V電源上,芯片的接地端都接在公共地上,在這里接電源部分就不再一一詳述。</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口不足的情況

53、,當(dāng)顯示位數(shù)較多時(shí),這樣勢(shì)必增加硬件開(kāi)銷,增大成本,不利于開(kāi)闊市場(chǎng)。本設(shè)計(jì)的突出之處在于硬件電路簡(jiǎn)單,大大減少了硬件開(kāi)銷,這樣又勢(shì)必增加了軟件開(kāi)發(fā)的難度,但降低了成本有利于市場(chǎng)的開(kāi)闊。</p><p><b>  圖4-4電路原理圖</b></p><p><b>  5軟件設(shè)計(jì)</b></p><p>  軟件的設(shè)計(jì)是設(shè)

54、計(jì)控制系統(tǒng)的應(yīng)用程序。其任務(wù)是在整體設(shè)計(jì)和硬件設(shè)計(jì)的基礎(chǔ)上,確定程序結(jié)構(gòu),分配內(nèi)RAM資源,劃分功能模塊,然后進(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>  從上

55、面主程序看出,主程序的組成是通過(guò)分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先是初始化各模塊,之后調(diào)用鍵盤(pán)完成時(shí)間的調(diào)整,調(diào)用日歷子程序完成日歷時(shí)鐘的初始化和時(shí)間數(shù)據(jù)的讀寫(xiě),調(diào)用顯示子程序顯示數(shù)據(jù),最后又轉(zhuǎn)到鍵盤(pán)程序來(lái)回循環(huán)。</p><p>  初始化部分主要有初始化定時(shí)器部分和和一些寄存器、標(biāo)志位、初始化時(shí)間等。</p><p>  對(duì)定時(shí)器T0初始化時(shí),首

56、先置初值,CPU開(kāi)中斷,定時(shí)器T0開(kāi)中斷,并且開(kāi)始計(jì)數(shù),而對(duì)定時(shí)器T1初始化時(shí),首先置初值,定時(shí)器T1關(guān)中斷,并且停止計(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,即開(kāi)始時(shí)是處于顯示狀態(tài),

57、而不是調(diào)整狀態(tài),這一點(diǎn)在程序中相當(dāng)明了。</p><p>  初始化時(shí)間是開(kāi)機(jī)時(shí)顯示的時(shí)間,并通過(guò)調(diào)用日歷時(shí)鐘的寫(xiě)程序來(lái)完成時(shí)間的置初值。</p><p><b>  圖5-1程序流程圖</b></p><p>  5.2鍵盤(pán)子程序設(shè)計(jì)</p><p>  多功能鍵盤(pán)程序的設(shè)計(jì)是本設(shè)計(jì)的難點(diǎn),也是完成本設(shè)計(jì)的重點(diǎn),當(dāng)有鍵

58、按下時(shí),調(diào)用10ms延時(shí)程序,再判斷是否有鍵按下無(wú)則返回,若有先調(diào)用顯示程</p><p>  序再判斷是否松開(kāi),否則再轉(zhuǎn)到顯示程序,這樣避免了在按鍵松開(kāi)之前能正常顯示。其中K1鍵功能最多,通過(guò)判斷K1鍵按下的次數(shù)來(lái)判斷是調(diào)時(shí)間還是定時(shí),并對(duì)對(duì)應(yīng)的位置閃爍。本鍵盤(pán)深度為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í)閃爍,

59、為4時(shí)為調(diào)日狀態(tài)并日閃爍,為5時(shí)為調(diào)月?tīng)顟B(tài)并月閃爍,為6時(shí)為調(diào)年?duì)顟B(tài)并年閃爍,為7時(shí)為調(diào)星期狀態(tài)并星期閃爍。 K2為加1鍵,K3為減1鍵,K4為總返回鍵,即在調(diào)時(shí)見(jiàn)時(shí)不用只有按下K1鍵值為8才返回,而通過(guò)按下K4鍵即可返回。由于鍵盤(pán)流程圖非常復(fù)雜,在此只表示秒,如圖5-2所示,其余略。</p><p>  5.3日歷時(shí)鐘子程序設(shè)計(jì)</p><p>  DS1302與CPU的連接需要三條線,

60、即SCLK(7)、I/O(6)、RST(5)。日歷時(shí)鐘DS1302的讀寫(xiě)需要初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送是低位在先。讀寫(xiě)都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在讀寫(xiě)時(shí)要嚴(yán)格遵從其讀寫(xiě)時(shí)序,否則讀寫(xiě)將會(huì)失效。</p><p>  當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302

61、進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥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端口輸

62、出一位數(shù)據(jù),8個(gè)串行時(shí)鐘脈沖就可以輸出一字節(jié)的數(shù)據(jù)。</p><p>  顯示子程序設(shè)計(jì)電子產(chǎn)品是否實(shí)用其中顯示占了很重要的地位,很多數(shù)人都渴求用視覺(jué)效果好,范圍廣,直觀明了,LED符合以上的要求,但相應(yīng)的硬件設(shè)計(jì)相對(duì)復(fù)雜。</p><p>  5.4顯示子程序設(shè)計(jì)</p><p>  本設(shè)計(jì)的顯示部分具有消隱和閃爍功能,當(dāng)時(shí)分秒等高位為0時(shí)顯示消隱, 此時(shí)在讀時(shí)間

63、時(shí)更加明了,但低位不能顯示消隱。閃爍功能也是本設(shè)計(jì)的一個(gè)難點(diǎn),本設(shè)計(jì)采用8個(gè)位標(biāo)志位,其中一個(gè)標(biāo)志位通過(guò)用定時(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í)即秒開(kāi)閃爍,與用中斷產(chǎn)生的標(biāo)志位相結(jié)合,即在一個(gè)周期內(nèi)為0時(shí)此時(shí)消隱為1時(shí)開(kāi)顯示,這樣就使在調(diào)時(shí)間時(shí)對(duì)應(yīng)的位閃爍。</p><p>&

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

65、行成功,最后進(jìn)行實(shí)物圖的硬件組裝與調(diào)試,這樣就給開(kāi)發(fā)者在提供了方便。</p><p><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)輸入端由通用鍵盤(pán)和鼠標(biāo)設(shè)定,運(yùn)行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在指定的窗口區(qū)

66、域顯示出來(lái),以確定程序運(yùn)行有無(wú)錯(cuò)誤。</p><p>  目標(biāo)程序糾錯(cuò):該階段工作通常在目標(biāo)程序編輯時(shí)就完成。一般來(lái)說(shuō),仿真軟件能為用戶輸入的程序指令糾錯(cuò),包括書(shū)寫(xiě)格式、標(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ù)緩沖單元是否

67、發(fā)生沖突,標(biāo)志位的建立和清除在設(shè)計(jì)上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。</p><p>  經(jīng)過(guò)多次修改程序最后調(diào)試出來(lái)理想的效果,如圖6-1所示</p><p>  圖6-1 Proteus仿真</p><p>  用軟件模擬器調(diào)試不需任何在線仿真器,也不需要用戶樣機(jī),直接就可以在PC機(jī)上開(kāi)發(fā)和調(diào)試。調(diào)試和修改完畢后可以直接使用編程器將軟件固化在目標(biāo)

68、系統(tǒng)ROM中,然后投入運(yùn)行。</p><p><b>  6.2硬件調(diào)試</b></p><p>  焊接電路板如圖6-2所示</p><p>  單片機(jī)應(yīng)用系統(tǒng)的硬件調(diào)試和軟件調(diào)試是分不開(kāi)的,許多硬件故障在軟件調(diào)試時(shí)才能發(fā)現(xiàn),但通常要先排除系統(tǒng)中明顯的硬件故障。調(diào)試工作可以分為四步:</p><p>  線路檢查:根據(jù)

69、硬件邏輯設(shè)計(jì)圖,仔細(xì)檢查樣機(jī)線路是否連接正確,并核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求,必要時(shí)可用萬(wàn)用表檢測(cè)線路通斷情況。</p><p>  電源調(diào)試:樣機(jī)的第一次通電測(cè)試很重要,若樣機(jī)中存在電源故障,則加電后將造成器件損壞。調(diào)試的方法有兩種:一種是斷開(kāi)樣機(jī)穩(wěn)壓電源的輸出端,檢查空載時(shí)電源工作情況;另一種是拔下樣機(jī)上的主要集成芯片,檢查電源的負(fù)載能力(用假負(fù)載)。確保電源無(wú)故障并性能符合設(shè)計(jì)要求。</p

70、><p>  通電檢查:在確保電源良好前提下,接通電源。最好在電源與其余電路之間串接一個(gè)電流表。若接通后電流很大,必須立即切斷電源。電源大得超出正常范圍,說(shuō)明電路中有短路或故障。通電檢查的主要目的是看系統(tǒng)是否存在短路或由元器件損壞、裝配錯(cuò)誤引起的電流異常。</p><p>  如圖6-2 焊接電路板</p><p>  檢查芯片的邏輯關(guān)系是否出錯(cuò):加電后檢查各芯片插座上

71、相關(guān)引腳的電位,仔細(xì)測(cè)量相應(yīng)的輸入輸出電平是否正常。單片機(jī)系統(tǒng)大都是數(shù)字邏輯電路,使用電平檢查法可首先查出邏輯設(shè)計(jì)是否正確,選用器件和連接關(guān)系是否符合要求等。</p><p>  本設(shè)計(jì)特點(diǎn)突出,性價(jià)比高,適合于家庭掛歷,有很高應(yīng)用價(jià)值。</p><p><b>  7結(jié)論</b></p><p>  硬件系統(tǒng)關(guān)系到所要設(shè)計(jì)的電子產(chǎn)品好懷,如系

72、統(tǒng)抗干擾性等,所以要合理的安排盡量減少干擾提高性能。單片機(jī)是很容易受干擾的控制器,當(dāng)采用外部晶振時(shí),應(yīng)盡量讓其靠近單片機(jī)減少對(duì)其干擾,防止程序亂飛現(xiàn)象。同時(shí)還可以采用隔離等方式減少干擾,硬件系統(tǒng)設(shè)計(jì)的好壞很大部分來(lái)源于經(jīng)驗(yàn),所以我們要有動(dòng)手的好習(xí)慣。</p><p>  軟件設(shè)計(jì)是核心部分,具有多樣化,靈活性高,易移植等優(yōu)點(diǎn),要深深理會(huì)各指令的含義才能更加熟練應(yīng)用,中斷的合理利用可以減少CPU利用資源,具有執(zhí)行效

73、率高等優(yōu)點(diǎn),本設(shè)計(jì)用到定時(shí)器中斷以減少對(duì)CPU的占用,更好的處理其他功能。軟件的設(shè)計(jì)大部分采用模塊化設(shè)計(jì)的方法以方便調(diào)試,并使其可讀性大大增強(qiáng),方便更改和移植。</p><p>  在這次設(shè)計(jì)中我學(xué)到了很多,也發(fā)現(xiàn)了自己的不足,也難免有錯(cuò)誤之處,敬請(qǐng)?zhí)岢觯?lt;/p><p><b>  參考文獻(xiàn)</b></p><p>  [01]何宏主編.單片

74、機(jī)原理與接口技術(shù).北京:國(guó)防工業(yè)出版社.2006.07</p><p>  [02]楊西明,朱騏主編.單片機(jī)編程與應(yīng)用入門(mén).北京:機(jī)械工業(yè)出版社.2004.06</p><p>  [03]先鋒工作室編著.單片機(jī)程序設(shè)計(jì)實(shí)例.北京:清華大學(xué)出版社.2003.01</p><p>  [04]謝宜仁主編.單片機(jī)實(shí)用技術(shù)問(wèn)答.北京:人民郵電出版社.2003.02<

75、/p><p>  [05]孫江宏,李良玉等編著.Protel99電路設(shè)計(jì)與應(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]

76、何立民.單片機(jī)高級(jí)教程應(yīng)用與設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2000</p><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&

77、gt;<p>  [12]高峰.單片微型計(jì)算機(jī)原理與接口技術(shù).北京:科學(xué)出版社,2003</p><p>  [13]各種網(wǎng)絡(luò)教程及其他</p><p><b>  附錄</b></p><p><b>  附錄Ⅰ硬件電路圖</b></p><p><b>  附錄Ⅱ主程序源

78、代碼</b></p><p>  ZHUAN BIT 50H ;閃爍標(biāo)志位輔助標(biāo)志位</p><p>  ZHUAN1 BIT 51H ;年開(kāi)閃爍的標(biāo)志位</p><p>  ZHUAN2 BIT 52H ;月開(kāi)閃爍的標(biāo)志位</p><p>  ZHUAN3 BIT 53H ;日開(kāi)閃爍的標(biāo)志位</p>

79、<p>  ZHUAN4 BIT 54H ;時(shí)開(kāi)閃爍的標(biāo)志位</p><p>  ZHUAN5 BIT 55H ;分開(kāi)閃爍的標(biāo)志位</p><p>  ZHUAN6 BIT 56H ;秒開(kāi)閃爍的標(biāo)志位</p><p>  ZHUAN7 BIT 57H ;星期開(kāi)閃爍的標(biāo)志位</p><p><b>  O

80、RG 0000H</b></p><p>  LJMP START ;開(kāi)始并初始化</p><p>  ORG 000BH ;定時(shí)/計(jì)數(shù)T0中斷</p><p>  LJMP ZDUAN </p><p>  ORG 001BH ;定時(shí)/計(jì)數(shù)T1中斷</p>

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

82、 ;閃爍標(biāo)志位求反</p><p><b>  MOV R7,#3</b></p><p>  ZDUAN1:RETI ;中斷返回</p><p>  ZDUAN2:MOV TH1,#0FCH</p><p>  MOV TL1,#43H</p><p><b>

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

84、t;<p>  MOV TH0,#00H</p><p>  MOV TL0,#00H</p><p>  MOV TH1,#0FCH</p><p>  MOV TL1,#43H</p><p>  SETB EA ;開(kāi)放CPU</p><p>  SETB ET0

85、 ;開(kāi)放T0中斷</p><p>  SETB TR0 ;啟動(dòng)T0工作</p><p>  CLR ZHUAN1 ;初始化標(biāo)志位</p><p>  CLR ZHUAN2</p><p>  CLR ZHUAN3</p><p>  CLR ZHUAN4</p><

86、;p>  CLR ZHUAN5</p><p>  CLR ZHUAN6</p><p>  CLR ZHUAN7</p><p><b>  MOV R7,#3</b></p><p>  MOV 5FH,#00H ;初始化寄存器</p><p>  MOV 30H,#01H ;時(shí)

87、間賦初始值</p><p>  MOV 31H,#01H</p><p>  MOV 32H,#01H</p><p>  MOV 33H,#01H</p><p>  MOV 34H,#01H</p><p>  MOV 35H,#01H</p><p>  MOV 36H,#10H</

88、p><p>  SETB P1.4 ;啟動(dòng)設(shè)置寫(xiě)保護(hù)寄存器</p><p>  MOV A,#10001110B ;命令字節(jié),07H寄存器寫(xiě)</p><p>  ACALL WBYTE </p><p>  MOV A,#00H ;允許寫(xiě)數(shù)據(jù)字節(jié)</p><p>  ACALL WBYTE</p>

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

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

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

92、t;<p><b>  ;鍵盤(pán)程序</b></p><p>  JIAN:MOV P1,#0FFH ;初始</p><p><b>  MOV A,P1</b></p><p><b>  CPL A</b></p><p>  JNZ JI1

93、 ;判鍵按下</p><p>  LJMP JIAN4</p><p>  JI1:LCALL DELAY ;調(diào)延時(shí)</p><p><b>  CPL A</b></p><p><b>  JNZ JI2 </b></p><p>  LJMP JIAN4</

94、p><p>  JI2:JNB P1.1,JIAN3 ;判K2鍵為0轉(zhuǎn)</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,J

95、IAN1 ;判K1鍵為0轉(zhuǎn)</p><p>  LJMP JIANX</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 P

96、1.0,JIAN11 ;判鍵K1松開(kāi)</p><p>  MOV A,5FH </p><p>  ADD A,#1 ;寄存器加1</p><p><b>  MOV 5FH,A</b></p><p>  CJNE A,#8,JIANX</p><p>  LJMP JI

97、AN3</p><p>  JIANX:MOV A,5FH</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</

98、p><p>  LJMP TIAOF ;轉(zhuǎn)調(diào)分子程序</p><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>  CJN

99、E A,#4,JIA4</p><p>  LJMP TIAOR ;轉(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>

100、<p>  CJNE A,#6,JIA6</p><p>  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>

101、<p>  CLR ZHUAN2</p><p>  CLR ZHUAN3</p><p>  CLR ZHUAN4</p><p>  CLR ZHUAN5</p><p>  CLR ZHUAN6</p><p>  CLR ZHUAN7</p><p>  MOV 5FH,#

102、00H</p><p>  JIAN2:LCALL XIAN ;調(diào)顯示子程序</p><p>  MOV A,P1 </p><p><b>  CPL A</b></p><p><b>  JNZ JIAN2</b></p><p><b>

103、;  JIAN4:RET</b></p><p><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>  JN

104、B P1.2,MIAOJ ;減轉(zhuǎn)移 </p><p>  LJMP 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</

105、p><p>  JNB P1.1,MIAOZ1 ;判鍵K2松開(kāi)</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 ;送回秒寄存器

106、</p><p>  CJNE A,#60H,MIAOZ2</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>&l

107、t;p>  LJMP JIAN0</p><p>  MIAOJ1:LCALL XIAN</p><p>  JNB P1.2,MIAOJ1 ;判鍵K3松開(kāi)</p><p>  MOV A,30H ;取秒數(shù)據(jù)</p><p>  MOV B,#10H</p><p>  DIV AB

108、 ;A除以B</p><p>  MOV 61H,B ;數(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

109、減1</p><p>  MOV B,#10 </p><p><b>  DIV AB </b></p><p><b>  SWAP A</b></p><p><b>  ADD A,B</b></p><p><b>  MOV 30H

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

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

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

113、 ;啟動(dòng)寫(xiě)</p><p>  MOV A,#80H ;秒寫(xiě)命令字節(jié)</p><p>  LCALL WBYTE</p><p>  MOV A,30H ;寫(xiě)秒數(shù)據(jù)到DS1302</p><p>  LCALL WBYTE</p><p>  LCALL XIAN </p>

114、<p>  LJMP JIAN0</p><p><b>  RET</b></p><p><b>  ;調(diào)分</b></p><p>  TIAOF:CLR ZHUAN6 ;清秒標(biāo)志位</p><p>  SETB ZHUAN5 ;置分標(biāo)志位</p>&

115、lt;p>  LCALL XIAN</p><p>  JNB 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&g

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

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

118、<p>  LJMP FENZ2</p><p>  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

119、 ;判鍵K3松開(kāi)</p><p>  MOV A,31H ;取秒數(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&

120、gt;  MOV B,#10</b></p><p>  MUL AB ;A乘以B</p><p>  ADD A,62H ;不帶進(jìn)位加法</p><p>  DEC A ;A減1</p><p><b>  MOV B,#10</b></p&

121、gt;<p><b>  DIV AB</b></p><p><b>  SWAP A</b></p><p><b>  ADD A,B</b></p><p><b>  MOV 31H,A</b></p><p>  CJNE A,#

122、96H,FENZ2</p><p>  MOV 31H,#59H</p><p>  FENZ2:MOV A,31H</p><p>  ANL A,#0FH ;分離低四位</p><p>  MOV 42H,A ;存數(shù)據(jù)到寄存器</p><p><b>  MOV A,31H</b>&l

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論