版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> (20 屆)</b></p><p><b> 單片機(jī)日歷時(shí)鐘開發(fā)</b></p><p><b> 目 錄</b></p><p><b> 摘要1</b></p&
2、gt;<p><b> 前言3</b></p><p><b> 第一章 概述4</b></p><p><b> 1.1 簡(jiǎn)介4</b></p><p> 1.2 單片機(jī)的發(fā)展史4</p><p> 1.3 時(shí)鐘日歷的特征4</
3、p><p> 第二章 系統(tǒng)原理和硬件設(shè)計(jì)6</p><p> 2.1 硬件的選擇6</p><p> 2.2 AT89C51單片機(jī)介紹7</p><p> 2.3 時(shí)鐘芯片介紹13</p><p> 2.4 LED介紹18</p><p> 2.5 74LS154介
4、紹20</p><p> 2.6 ULN2003介紹20</p><p> 第三章 軟件設(shè)計(jì)22</p><p> 3.1 主程序22</p><p> 3.2 讀取時(shí)間的所有子程序22</p><p> 3.3 顯示刷新的子程序23</p><p> 第四章
5、 調(diào)試過(guò)程以及數(shù)據(jù)分析24</p><p> 4.1 調(diào)試硬件24</p><p> 4.2 調(diào)試軟件24</p><p> 4.3 調(diào)試KeiL24</p><p> 4.4 調(diào)試試驗(yàn)箱25</p><p> 第五章 結(jié)論26</p><p><b>
6、 參考文獻(xiàn)27</b></p><p><b> 致謝28</b></p><p><b> 附圖29</b></p><p><b> 程序清單30</b></p><p><b> 單片機(jī)日歷時(shí)鐘開發(fā)</b></p&
7、gt;<p><b> 摘 要</b></p><p> 本次設(shè)計(jì)采用了時(shí)鐘日歷芯片DS12887,這芯片具備年、月、日、時(shí)、分、秒計(jì)時(shí)功能及多點(diǎn)定的時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新在于計(jì)算機(jī)匯編語(yǔ)言的驅(qū)動(dòng)下每一秒自動(dòng)進(jìn)行一次,但是不需程序干預(yù)他的輸出狀態(tài)。此外,這芯片帶有鋰電池做備用電源,具備永久的計(jì)時(shí)功能和可編程方波輸出功能,可用作實(shí)時(shí)測(cè)控系統(tǒng)的采樣信號(hào)等。這種時(shí)鐘芯片中還帶有
8、非易失性RAM,可存放需長(zhǎng)期保存但有可能需變更的數(shù)據(jù)。本次設(shè)計(jì)的LED數(shù)碼管電子時(shí)鐘電路采用24小時(shí)制記時(shí)方式,日期及時(shí)間用16位數(shù)碼管顯示。設(shè)計(jì)采用AT98C51單片機(jī),使用5V電源供電,并且在按鍵的作用下可以進(jìn)入省電及正常顯示兩種狀態(tài)。</p><p> 本次設(shè)計(jì)采用AT89C51單片機(jī)的擴(kuò)展芯片和UNL2003芯片做為驅(qū)動(dòng),由多塊LED數(shù)碼管組成的顯示系統(tǒng),和傳統(tǒng)8/16位普通單片機(jī)的LED顯示系統(tǒng)相比較
9、,本系統(tǒng)在不顯著地增加成本的情況下,可帶動(dòng)更多的LED數(shù)碼管穩(wěn)定的顯示。</p><p> 關(guān)鍵詞:芯片;計(jì)時(shí);驅(qū)動(dòng)</p><p> SCM Calendar Clock Development</p><p><b> Abstract</b></p><p> This design uses a cloc
10、k, this chip DS12887 calendar chips with date and time, minutes and seconds timing function and much of DianDing when the update data, timer function of the computer assembly language is driven by automatically once ever
11、y second, but does not need to program intervention his output state. In addition, the chip with lithium batteries do standby power, and have permanent timer function and programmable square wave output function, can be
12、used for real-time sampling signal me</p><p> This design uses AT89C51 extension chip and UNL2003 chip as drive by chunks, LED digital display system, composed of tube and traditional 8/16 ordinary MCU LED
13、display system, this system in compared to increase cost is not apparent, can bring more stable LED digital display of tube. </p><p> Keywords: chip,timing,driver </p><p><b> 前 言</b
14、></p><p> 單片機(jī)的芯片就像是一臺(tái)計(jì)算機(jī),由于單片機(jī)的集成度較高、體積微小、可靠性強(qiáng)、控制功能良好、低電壓、功耗低等特點(diǎn)使其廣泛應(yīng)用于各種智能儀器儀表、機(jī)電一體化、實(shí)時(shí)程控、人們的生活中。除此之外還也廣泛應(yīng)用辦公自動(dòng)化、商業(yè)營(yíng)銷、汽車和通信系統(tǒng)、計(jì)算機(jī)外部設(shè)備等等,且單片機(jī)已經(jīng)成為計(jì)算機(jī)發(fā)展及其應(yīng)用很重要的一面??梢娏己谜莆諉纹瑱C(jī)的使用方法及利用單片機(jī)來(lái)解決實(shí)際問(wèn)題具有重要意義。</p&g
15、t;<p> 本設(shè)計(jì)是用AT89C51單片機(jī)系統(tǒng)擴(kuò)展的基本原理及方法再結(jié)合本設(shè)計(jì)的題目進(jìn)行系統(tǒng)開發(fā),通過(guò)單片機(jī)來(lái)驅(qū)動(dòng)芯片DS12887進(jìn)行年、月、日、時(shí)、分、秒顯示,最后使用74LS154譯碼和ULN2003驅(qū)動(dòng)LED動(dòng)態(tài)顯示的方式來(lái)完成設(shè)計(jì)目標(biāo),文中帶有電路圖、程序清單以及數(shù)據(jù)儲(chǔ)蓄單元的所處地址和輸入輸出口對(duì)應(yīng)表格。</p><p><b> 第一章 概述</b><
16、;/p><p><b> 1.1 簡(jiǎn)介</b></p><p> 隨著電子技術(shù)飛速的發(fā)展,尤其是隨著大規(guī)模的集成電路產(chǎn)生而出現(xiàn)的微型計(jì)算機(jī),給人們的生活帶來(lái)了極大的方便。走入家庭,從電視機(jī)、洗衣機(jī)到微波爐、汽車,到處都可以見到單片機(jī)的蹤影。如果說(shuō)微型計(jì)算機(jī)的出現(xiàn)促使現(xiàn)代科學(xué)研究得到了質(zhì)的飛躍,那么就可以毫不夸張的說(shuō):“單片機(jī)的出現(xiàn)則是給現(xiàn)代工業(yè)測(cè)控領(lǐng)域帶來(lái)了一次新工
17、業(yè)革命”?,F(xiàn)在的單片機(jī)以其可靠性高和智能性強(qiáng)等特點(diǎn)被廣泛使用到工業(yè)控制、數(shù)據(jù)采集、智能化儀器儀表、辦公自動(dòng)化等領(lǐng)域中,并且已進(jìn)入家庭,所以,單片機(jī)的開發(fā)和應(yīng)用水平逐步成為一個(gè)國(guó)家自動(dòng)化發(fā)展水平重要的標(biāo)志之一。</p><p> 1.2 單片機(jī)的發(fā)展史</p><p> 單片機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是一種非常活躍和頗具生命力的機(jī)種,特別適用于工業(yè)控制領(lǐng)域。1971年微處理器研制
18、成功不久,就出現(xiàn)了單片機(jī),但最早的單片機(jī)是1位的,處理能力有限。</p><p> 單片機(jī)的發(fā)展共分四個(gè)階段:第一階段是初級(jí)階段,功能非常簡(jiǎn)單;第二階段是低性能階段,以INTEL公司制造的MSC-48系列單片機(jī)為代表。第三階段為高性能單片機(jī)階段,這個(gè)階段推出的單片機(jī)普遍帶有穿行接口,多級(jí)中斷系統(tǒng),16位定時(shí)器/計(jì)數(shù)器,片內(nèi)ROM、RAM容量加大,直到現(xiàn)在仍被廣泛應(yīng)用,是目前應(yīng)用數(shù)量較多的單片機(jī)。第四階段是8位單
19、片機(jī)鞏固發(fā)展以及16位單片機(jī)、32位單片機(jī)推出階段,以滿足不同的用戶需要??v觀單片機(jī)幾十年的發(fā)展歷程,單片機(jī)的今后發(fā)展方向?qū)⑾蚨喙δ堋⒏咝阅?、高速度、低功耗、低價(jià)格、外圍電路內(nèi)裝化以及內(nèi)存儲(chǔ)器容量增加和FLASH存儲(chǔ)器化方向發(fā)展。 </p><p> 1.3 時(shí)鐘日歷的特征</p><p> DS12887 時(shí)鐘芯片(RTC)可提供一個(gè)實(shí)時(shí)時(shí)鐘、日歷、三個(gè)可屏蔽中斷(共用一個(gè)中斷輸出
20、)、可編程方波輸出和114 字節(jié)的電池備份靜態(tài)RAM。DS12887 在24 引腳模塊DIP 封裝內(nèi)集成了晶體和鋰電池。DS12887在地址32h 內(nèi)增加了世紀(jì)字節(jié)。對(duì)于少于31 天的月份,所有器件的日期能夠在月末自動(dòng)調(diào)整,帶有閏年補(bǔ)償。該器件可配置為24小時(shí)或12 小時(shí)格式,帶AM/PM 指示。精確的溫度補(bǔ)償電路用于監(jiān)視的VCC 狀態(tài)。一旦檢測(cè)到主電源失效,器件可自動(dòng)切換到備用電源,在主電源掉電時(shí)還可以保持有效的時(shí)間和日期。該器件通過(guò)
21、一個(gè)復(fù)用的字節(jié)寬度接口訪問(wèn),支持Intel 和Motorola 模式,具有以下特點(diǎn):</p><p> 直接替代IBM AT 計(jì)算機(jī)時(shí)鐘/日歷;</p><p> RTC可顯示秒、分、時(shí)、日、月、年信息,具有潤(rùn)年補(bǔ)償,有效期2099年;</p><p><b> 清除RAM 功能;</b></p><p> 具有
22、AM、PM 標(biāo)示的12 小時(shí)模式或24 小時(shí)模式;</p><p> 周期可設(shè)置在122µs 至500ms;</p><p> 可選擇Motorola 或Intel 總線時(shí)序;</p><p> 接口配合軟件可尋址128 RAM;</p><p> 14 字節(jié)時(shí)鐘與控制寄存器;</p><p> 1
23、14 字節(jié)通用、電池備份RAM (DS12C887和DS12C887A為113字節(jié));</p><p> 用二進(jìn)制或BCD 表示時(shí)間;</p><p> 總線兼容的中斷請(qǐng)求;</p><p> 三路中斷可分別通過(guò)軟件屏蔽與檢測(cè);</p><p> 可選擇28 引腳PLCC 表面貼裝封裝;</p><p> 時(shí)
24、鐘終止刷新周期標(biāo)志;</p><p><b> 夏時(shí)制選擇;</b></p><p> 可編程的方波輸出信號(hào);</p><p> 第二章 系統(tǒng)原理和硬件設(shè)計(jì)</p><p> 本次的設(shè)計(jì)題目是電子萬(wàn)年歷設(shè)計(jì),要求實(shí)現(xiàn)年、月、日、時(shí)、分、秒的正常顯示,需要硬件和軟件的結(jié)合來(lái)實(shí)現(xiàn)。本次設(shè)計(jì)利用時(shí)鐘日歷芯片DS128
25、87的特性和AT89C51單片機(jī)的功能利用實(shí)現(xiàn)的。時(shí)鐘芯片在電源的作用下向通過(guò)P2口向AT89C51單片機(jī)輸入時(shí)間信號(hào),AT89C51單片機(jī)在接受到時(shí)間信號(hào)后通過(guò)P0將信號(hào)送到單片機(jī)另一擴(kuò)展芯片ULN2003,驅(qū)動(dòng)LED數(shù)碼管顯示,同時(shí)將信號(hào)通過(guò)P1口送往單片機(jī)的擴(kuò)展芯片74LS154,當(dāng)送出第一個(gè)段碼時(shí),單片機(jī)輸出的位碼是0001,而經(jīng)過(guò)4-16譯碼器74LS154后就是1111 1111 1111 1110,這時(shí)就選中了第一個(gè)數(shù)碼管
26、顯示;……當(dāng)送出第十六個(gè)段碼時(shí),單片機(jī)輸出的位碼是1111,4-16譯碼器輸出0111 1111 1111 1111,這時(shí)就選中了第十六個(gè)數(shù)碼管顯示,從而74LS154將接收到的地址信號(hào)譯碼后動(dòng)態(tài)驅(qū)動(dòng)相應(yīng)的LED,由于LED數(shù)碼管的公共端由74LS154分時(shí)選通,這樣,這樣任何一個(gè)時(shí)刻,都只有一位LED在點(diǎn)亮,也即動(dòng)態(tài)掃描顯示方式。根據(jù)設(shè)計(jì)的要求萬(wàn)年歷要顯示年、月、日、時(shí)、分、秒的顯示就需要16個(gè)顯示數(shù)碼管。根據(jù)設(shè)計(jì)要求</p&g
27、t;<p> 在明確本次設(shè)計(jì)思路之后,畫出設(shè)計(jì)框圖,總體框圖如圖2.1所示。</p><p> 圖2.1 設(shè)計(jì)總體框圖</p><p> 2.1 硬件的選擇</p><p> 時(shí)鐘芯片選擇 選用DS12887時(shí)鐘芯片;</p><p> 單片機(jī)的選擇 選用AT89C51單片機(jī),并配備11.0592MHz
28、晶振,復(fù)位電路采用上電復(fù)位;</p><p> 顯示電路選擇 采用軟件譯碼動(dòng)態(tài)顯示,P3.0-P3.3作數(shù)碼管的位選口。P1.0-P1.6作數(shù)碼管的段選口??紤]直接用單片機(jī)I/O口作位選時(shí)驅(qū)動(dòng)功率不夠,因此采用UNL2003作驅(qū)動(dòng),共陰極數(shù)碼管顯示;</p><p> 電源選擇 采用直流5V電源供電;</p><p> 選擇器的選擇
29、采用4線——16線譯碼器74LS154;</p><p> 2.2 AT89C51單片機(jī)介紹</p><p> ?。‵PEROM—Flash Programmable and Erasable Read Only Memory)的8位COMS微控制器。使用高密度,非易失存儲(chǔ)技術(shù)制造,并且與AT89C51引腳和指令系統(tǒng)完全兼容。芯片上的FPEROM允許在線編程或采用通用的非易失存儲(chǔ)編程器
30、對(duì)存儲(chǔ)器重復(fù)編程。</p><p> AT89C51單片機(jī)帶有2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī),其內(nèi)部的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51單片機(jī)是一種高效微控制器,也為嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案,這就顯示
31、出了AT89C51單片機(jī)的優(yōu)越性。</p><p> 單片機(jī)的構(gòu)成AT89C51單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多種功能的I/O線等一臺(tái)計(jì)算機(jī)所需要的基本功能部件,AT89C51單片機(jī)單片機(jī)內(nèi)包含下列幾個(gè)部件:</p><p><b> 一個(gè)8位CPU;</b></p><p> 一個(gè)片內(nèi)振蕩器及時(shí)鐘電路
32、;</p><p> 4K字節(jié)ROM程序存儲(chǔ)器;</p><p> 128字節(jié)RAM數(shù)據(jù)存儲(chǔ)器;</p><p> 兩個(gè)16位定時(shí)器/計(jì)數(shù)器;</p><p> 可尋址64K外部數(shù)據(jù)存儲(chǔ)器和64K外部程序存儲(chǔ)器空間的控制電路;</p><p> 32條可編程的I/O線(四個(gè)8位并行I/O端口);</p&
33、gt;<p> 一個(gè)可編程全雙工串行口;</p><p> 具有五個(gè)中斷源、兩個(gè)優(yōu)先級(jí)嵌套中斷結(jié)構(gòu);</p><p> 其內(nèi)部機(jī)構(gòu)框圖如圖2.2所示: </p><p> 2.2 MCS-51單片機(jī)內(nèi)部機(jī)構(gòu)框圖</p><p> AT89C51單片機(jī)性能及特點(diǎn):</p><p>
34、 與MCS-51微控制器產(chǎn)品系列兼容;</p><p> 片內(nèi)有4KB可在線重復(fù)編程的快閃擦寫存儲(chǔ)器(Flash Memory);</p><p> 存儲(chǔ)器可循環(huán)寫入/擦除1000次;</p><p> 全靜態(tài)工作:可從0HZ到16MHZ;</p><p> 工作電壓范圍:VCC可為2.7V~6V;</p><p&
35、gt; 存儲(chǔ)數(shù)據(jù)保存時(shí)間為10年;</p><p> 程序存儲(chǔ)器具有3級(jí)加密保護(hù);</p><p> 128﹡8位內(nèi)部RAM;</p><p> 可編程全雙工串行通道;</p><p> 兩個(gè)16位定時(shí)器/計(jì)數(shù)器;</p><p> 中斷結(jié)構(gòu)具有5個(gè)中斷源和2個(gè)優(yōu)先級(jí);</p><p&g
36、t; 32條可編程I/O線;</p><p> 空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲(chǔ)內(nèi)容;</p><p> 振蕩器特性XTAL1和XTAL2分別為反向放大器的輸入和輸出,該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用,如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。由于輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求
37、的寬度。</p><p> 芯片擦除整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。</p><p> 此外,AT89C51單片機(jī)設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作,但
38、RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。</p><p> 為了滿足一些應(yīng)用系統(tǒng)的特殊要求,有時(shí)要進(jìn)行一些系統(tǒng)的擴(kuò)展設(shè)計(jì)以彌補(bǔ)單片機(jī)內(nèi)部資源的不足。單片機(jī)的擴(kuò)展系統(tǒng)通過(guò)并行I/O接口或串行I/O接口做總線,在外部擴(kuò)展程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器或輸入/輸出接口及其他功能部件以滿足一些控制系統(tǒng)的特殊要求,AT89C51單
39、片機(jī)的擴(kuò)展系統(tǒng)結(jié)構(gòu)如圖2.3所示。</p><p> 圖2.3 AT89C51單片機(jī)擴(kuò)展系統(tǒng)結(jié)構(gòu) </p><p> AT89C51單片機(jī)的引腳說(shuō)明,其采用40條引腳雙列直插式器件,引腳除5V( 40腳)和電源地( 20腳)外,其功能分為時(shí)鐘電路、控制信號(hào)、輸入/輸出三大部分,邏輯框圖及引腳圖分別如圖2.4(a)(b)所示</p><p> (a)
40、 (b) </p><p> 圖2.4 AT89C51單片機(jī)邏輯圖與引腳圖</p><p> AT89C51單片機(jī)硬件結(jié)構(gòu)中除了程序存儲(chǔ)器由FPEROM代替了87C51單片機(jī)的EPROM外,余下部分完全相同,其管腳具體說(shuō)明如下:</p><p><b> GND:接地;</b>
41、</p><p><b> VCC:供電電壓;</b></p><p><b> 時(shí)鐘電路;</b></p><p> XTAL1(19腳)——芯片內(nèi)部振蕩電路(單級(jí)反相放大器)輸入端;</p><p> XTAL2(18腳)——芯片內(nèi)部振蕩電路(單級(jí)反相放大器)輸出端; </p>
42、;<p><b> 控制信號(hào);</b></p><p> RST(9腳)復(fù)位信號(hào):時(shí)鐘電路工作后,在此引腳上將出現(xiàn)兩個(gè)機(jī)器周期的高電平,芯片內(nèi)部進(jìn)行初始復(fù)位,P0口~P3口輸出高電平,將初值07H寫入堆棧指針;</p><p> ALE(30腳)地址鎖存信號(hào):當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),P0口輸出的低8位地址由ALE輸出的控制信號(hào)鎖存到片外地址鎖存器,P0
43、口輸出地址低8位后,又能與片外存儲(chǔ)器之間傳送信息。另外,ALE可驅(qū)動(dòng)4個(gè)TTL門;</p><p> PSEN(29腳)片外程序存儲(chǔ)器讀選通:低電平有效,作為程序存儲(chǔ)器的讀信號(hào),輸出負(fù)脈沖,將相應(yīng)的存儲(chǔ)單元的指令讀出并送到P0口,可驅(qū)動(dòng)8個(gè)TTL門;</p><p> EA/Vpp(30腳):當(dāng)為高電平且PC值小于0FFFH時(shí),CPU執(zhí)行內(nèi)部程序存儲(chǔ)器程序;當(dāng)為低電平時(shí),CPU僅執(zhí)行外
44、部程序存儲(chǔ)器程序;</p><p> P0口(P0.0~P0.7,39~32腳)三態(tài)雙向口:P0口結(jié)構(gòu)包括一個(gè)輸出鎖存器、兩個(gè)三態(tài)緩沖器、一個(gè)輸出驅(qū)動(dòng)電路和一個(gè)輸出控制端。P0口做地址/數(shù)據(jù)復(fù)用總線使用。若從P0口輸出地址數(shù)據(jù)信息,此時(shí)控制端為高電平,若從P0口輸入數(shù)據(jù)指令信息時(shí),引腳信號(hào)應(yīng)從輸入三態(tài)緩沖器進(jìn)入地址總線,它可驅(qū)動(dòng)8個(gè)TTL門。P0~P3口上的“讀-修改-寫”功能,其操作為:先將字節(jié)的全部8位數(shù)讀
45、入,再通過(guò)指令修改某些位,然后將新的數(shù)據(jù)寫回到口鎖存器中。</p><p> P1口(P1.0~P1.7,1~8腳)準(zhǔn)雙向口:P1口做通用I/O接口使用,P1口的每一位口線能獨(dú)立地作用于輸入線,P1口可驅(qū)動(dòng)4個(gè)TTL門。</p><p> P2口(P2.0~P2.7,21~28腳)通用I/O接口:它做通用I/O接口使用時(shí),是一個(gè)準(zhǔn)雙向口,此時(shí)轉(zhuǎn)換開關(guān)MUX倒向左邊,輸出極與鎖存器相連,
46、引腳可作為用戶I/O口線使用,輸入/輸出操作與P1口完全相同,P2口做地址總線使用。當(dāng)系統(tǒng)中接有外部存儲(chǔ)器時(shí),P2口用于輸出高8位地址A8~A15,這時(shí)在CPU控制下,轉(zhuǎn)換開關(guān)MUX倒向右邊,接通內(nèi)部地址總線。P2口的口線狀態(tài)取決于片內(nèi)輸出的地址信息,這些信息來(lái)源于DPTR和PC等。在外接程序存儲(chǔ)器中,由于訪問(wèn)外部存儲(chǔ)器操作連續(xù)不斷,P2口不斷送出地址高8位。AT89C51單片機(jī)的 P2口一般只做地址總線使用,不做I/O接口直接連外部
47、設(shè)備使用。</p><p> P3口(P3.0~P3.7,10~17腳)雙功能口:P3口做通用I/O接口使用,輸出功能控制線為高電平,與非門的輸出取決于鎖存器的狀態(tài),此時(shí)鎖存器Q端的狀態(tài)與其引腳狀態(tài)是一致的。在這種情況下,P3口的結(jié)構(gòu)和操作與P1口相同。P3口第二功能是可作為系統(tǒng)具有控制功能的控制線,另外P3口可驅(qū)動(dòng)4個(gè)LSTTL門電路。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL
48、門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。</p><p> P3口也可作為AT89C51的一些特殊功能口使用如下:</p><p> P3.0 RXD(串行輸入口);</p><p> P3.1 TXD(串行輸出口);</p><p> P3.2 /
49、INT0(外部中斷0);</p><p> P3.3 /INT1(外部中斷1);</p><p> P3.4 T0(記時(shí)器0外部輸入);</p><p> P3.5 T1(記時(shí)器1外部輸入);</p><p> P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通);</p><p> P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選
50、通);</p><p> 存儲(chǔ)器在單片機(jī)存儲(chǔ)器的設(shè)計(jì)上,其共同特點(diǎn)是將程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器分開,它們有各自的尋址方式。AT89C51單片機(jī)片內(nèi)具有數(shù)據(jù)存儲(chǔ)器,同時(shí)還具有強(qiáng)大的外部存儲(chǔ)器擴(kuò)展能力,存儲(chǔ)器是單片機(jī)系統(tǒng)中的重要組成部分。在一片芯片內(nèi)除了許多基本的記憶單元構(gòu)成的存儲(chǔ)矩陣外,還包括譯讀寫電路,碼驅(qū)動(dòng)電路等。圖2.5為半導(dǎo)體存儲(chǔ)器芯片的基本結(jié)構(gòu)框圖。</p><p> 圖2.5半
51、導(dǎo)體存儲(chǔ)器芯片的基本結(jié)構(gòu)框圖</p><p> 單片機(jī)存儲(chǔ)器分類:MCS-51系列單片機(jī)的存儲(chǔ)器可分五類:程序存儲(chǔ)器、內(nèi)部數(shù)據(jù)存儲(chǔ)器、特殊功能寄存器、位尋址區(qū)、外部數(shù)據(jù)存儲(chǔ)器I/O接口。</p><p> 程序存儲(chǔ)器:存放程序的存儲(chǔ)器稱為程序存儲(chǔ)器。程序存儲(chǔ)器是以程序計(jì)數(shù)器PC做地址指針的,MCS-51單片機(jī)的程序計(jì)數(shù)器為16位,因此可尋址的空間為64KB。AT89C51系統(tǒng)中沒有片內(nèi)
52、程序存儲(chǔ)器,0000H~0FFFH都是外部程序存儲(chǔ)器空間。</p><p> 內(nèi)部數(shù)據(jù)存儲(chǔ)器:MCS-51單片機(jī)內(nèi)部有128B的數(shù)據(jù)存儲(chǔ)器RAM,內(nèi)部數(shù)據(jù)存儲(chǔ)器的編址為00H~7FH。不同的地址區(qū)域內(nèi)功能也不完全相同。單片機(jī)結(jié)構(gòu)的特點(diǎn)之一是工作寄存器與數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址。MCS-51內(nèi)部RAM的00H~1FH為工作寄存器區(qū),共分4個(gè)區(qū),每區(qū)有8個(gè)寄存器。當(dāng)前程序使用的工作寄存器區(qū),是由狀態(tài)字PSW的第3、4位指
53、示的,PSW的狀態(tài)和工作寄存器區(qū)的關(guān)系如表2.1所示:</p><p> 表2.1 PSW的狀態(tài)和工作寄存器區(qū)的關(guān)系</p><p> 特殊功能寄存器:AT89C51內(nèi)的I/O鎖存器、定時(shí)器、串行接口數(shù)據(jù)緩沖器以及各種控制狀態(tài)寄存器和狀態(tài)寄存器都是以特殊功能寄存器的形式出現(xiàn)的,它們零散地分布于80H~FFH的地址空間范圍內(nèi),特殊功能寄存器具有各自的地址空間映像。</p>
54、<p> MCS-51的位尋址空間為00H~7FH,為內(nèi)部RAM中20H~2FH的16個(gè)單元的128位,凡是字節(jié)地址能被8整除的特殊功能寄存器都具有位地址的,它們零散地分布在80H~FFH的空間內(nèi)。</p><p> 外部數(shù)據(jù)存儲(chǔ)器I/O接口AT89C51提供了擴(kuò)展64KB的外部數(shù)據(jù)存儲(chǔ)器和輸入/輸出口的能力,具有十分廣泛的應(yīng)用。</p><p> 2.3 時(shí)鐘芯片介紹
55、</p><p> DS12887 芯片是時(shí)鐘芯片中功能較強(qiáng)的一種,它將晶體振蕩電路、充電電路和可充電鋰電池等一起封裝在芯片的上方,組成一個(gè)加厚的集成電路模塊。電路通電時(shí),其充電電路便自動(dòng)對(duì)可充電電池充電,其內(nèi)部包含非易失時(shí)鐘、警報(bào)器、百年歷、可編程中斷、方波發(fā)生器和 114 個(gè)字的非易失靜態(tài) RAM。DS12887具有日歷、時(shí)鐘、低功耗靜態(tài)RAM、輸出方波信號(hào)等功能,石英晶振和寫保護(hù)電路也封裝在內(nèi),在斷電情況
56、下仍能保持時(shí)間和內(nèi)存。DS12887可以方便地與單片機(jī)接口,并由單片機(jī)系統(tǒng)對(duì)其進(jìn)行操作得到日歷、時(shí)鐘信息,輸出方波信號(hào)用于秒信號(hào)的顯示。其封裝方式為 24 腳雙排直列,如圖2.6所示。</p><p> 圖2.6 DS12887的封裝形式</p><p> DS12887主要功能介紹:</p><p> 內(nèi)含一個(gè)鋰電池,斷電后運(yùn)行十年以上不丟失數(shù)據(jù);</
57、p><p> 計(jì)秒,分,時(shí),天,星期,日,月,年,并有閏年補(bǔ)嘗功能;</p><p> 二進(jìn)制數(shù)碼或BCD碼表示時(shí)間,日歷和定鬧;</p><p> 12小時(shí)或24小時(shí)制,12小時(shí)時(shí)鐘模式帶有PM和AM指示,有夏令時(shí)功能;</p><p> Motorola和Intel總線時(shí)序選擇,可編程方波信號(hào)輸出;</p><p&
58、gt; 有128個(gè)字節(jié)RAM單元與軟件接口,其中14個(gè)字節(jié)作為時(shí)鐘和控制寄存;</p><p> 114字節(jié)為通用RAM,所有RAM單元數(shù)據(jù)都具有掉電保護(hù)功能;</p><p> 由軟件屏蔽,也可以分別進(jìn)行測(cè)試;</p><p> 工作電壓:+4.5~5.5V;</p><p> 工作溫度的范圍:0~70℃;</p>
59、<p> DS12887內(nèi)部由振蕩電路,分頻電路,周期中斷/方波選擇電路,14字節(jié)時(shí)鐘和控制單元,114字節(jié)用戶非易失RAM,十進(jìn)制/二進(jìn)制累加器,總線接口電路,電源開關(guān)寫保護(hù)單元和內(nèi)部鋰電池等部分組成。DS12887引腳分配如圖2.6所示,各管腳說(shuō)明如下:</p><p> VCC:直流電源+5V電壓。當(dāng)5V電壓在正常范圍內(nèi)時(shí),數(shù)據(jù)可讀寫;當(dāng)VCC低于4.25V,讀寫被禁止,計(jì)時(shí)功能仍繼續(xù);當(dāng)VC
60、C下降到3V以下時(shí),RAM和計(jì)時(shí)器供電被切換到內(nèi)部鋰電池;</p><p> MOT(模式選擇):MOT引腳接到VCC時(shí),選擇MOTOROLA時(shí)序,當(dāng)接到GND時(shí),選擇Intel時(shí)序;</p><p> SQW(方波信號(hào)輸出):SQW引腳能從實(shí)時(shí)鐘內(nèi)部15級(jí)分頻器的13個(gè)抽頭中選擇一個(gè)作為輸出信號(hào),其輸出頻率可通過(guò)對(duì)寄存器A編程改變。</p><p> AD0
61、-AD7(雙向地址/數(shù)據(jù)復(fù)用線):總線接口,可與Motorola微機(jī)系列和Intel微機(jī)系列接口;</p><p> AS(地址選通輸入):用于實(shí)現(xiàn)信號(hào)分離,在AD/ALE的下降沿把地址鎖入DS12887;</p><p> DS(數(shù)據(jù)選通或讀輸入):DS/RD引腳有兩種操作模式,取決于MOT引腳的電平,當(dāng)使用Motorola時(shí)序時(shí),DS是一正脈沖,出現(xiàn)在總線周期后段,稱為數(shù)據(jù)選通;在
62、讀周期,DS指示DS12887驅(qū)動(dòng)雙向總線的時(shí)刻,在寫周期,DS的后沿使DS12887鎖存寫數(shù)據(jù)。選擇Intel時(shí)序時(shí),DS稱作(RD),RD與典型存貯器的允許信號(hào)(OE)的定義相同;</p><p> R/W(讀/寫輸入):R/W引腳也有兩種操作模式。選Motorola時(shí)序時(shí),R/W是低電平信號(hào)時(shí),指示當(dāng)前周期是讀或?qū)懼芷冢珼S為高電平時(shí),R/W高電平指示讀周期,R/W信號(hào)一低電平信號(hào),稱為WR。在此模式下,
63、R/W引腳與通用RAM的寫允許信號(hào)(WE)的含義相同;</p><p> CS(片選輸入):在訪問(wèn)DS12887的總線周期內(nèi),片選信號(hào)須保持為低;</p><p> IRQ(中斷申請(qǐng)輸入):低電平有效,可作微處理的中斷輸入。沒有中斷的條件滿足時(shí),IRQ處于高阻態(tài)。IRQ線是漏極開路輸入,要求外接上接電阻;</p><p> RESET(復(fù)位輸出):當(dāng)該腳保持低
64、電平時(shí)間大于200ms,DS12887有效復(fù)位。時(shí)間和日歷信息通過(guò)讀相應(yīng)的內(nèi)存字節(jié)來(lái)獲取,時(shí)間和日歷通過(guò)寫相應(yīng)的內(nèi)存字節(jié)設(shè)置或初始化,其字節(jié)內(nèi)容可以是二進(jìn)制或BCD形式。時(shí)間可選擇12小時(shí)制或24小時(shí)制,當(dāng)選擇12小時(shí)制時(shí),小時(shí)字節(jié)的高門為邏輯“1”代表PM。時(shí)間和日歷字節(jié)是雙緩沖的,總是可訪問(wèn)的;</p><p> 在DS1288中,114字節(jié)通用非易失RAM不專用一任何特殊功能,它們可被處理器程序用作非易失
65、內(nèi)存,在更新周期也可訪問(wèn)。</p><p> 中斷RTC實(shí)時(shí)時(shí)鐘加RAM向處理器提供三個(gè)獨(dú)立的,自動(dòng)的中斷源。定鬧中斷的發(fā)生率可編程,從每秒一次到每天一次,周期性中斷的發(fā)生率可從500ms到122s選擇。更新結(jié)束中斷用于向程序指示一個(gè)更新周期完成。中斷控制和狀態(tài)位在寄存器B和C中,本文的其它部分將詳細(xì)描述每個(gè)中斷發(fā)生的條件。</p><p> 晶振控制位DS12887出廠時(shí),其內(nèi)部晶振
66、會(huì)被關(guān)掉,以防止鋰電池在芯片裝入系統(tǒng)前被消耗,寄存器A的BIT4-BIT6的其它組合都是使用晶振關(guān)閉。</p><p> DS12887每一秒執(zhí)行一次更新周期,保證時(shí)間、日歷的準(zhǔn)確。DS12887內(nèi)部RAM專用寄存器地址功能 ,DS12887的地址由114字節(jié)的用戶RAM存放。10字節(jié)的存放實(shí)時(shí)時(shí)鐘時(shí)間,日歷和控制和狀態(tài)的4字節(jié)特殊寄存器組成,幾乎所有的128個(gè)字節(jié)直接讀寫。表2.2為DS12887內(nèi)部RAM和
67、各專用寄存器地址分布表,其中,地址00H~03H單元的取值范圍是00H~3BH(10進(jìn)制為0~59);04H~05H單元按12小時(shí)制取值范圍是上午(AM)01H~0CH(1~12),下午(PM)81H~8CH(81~92)按24小時(shí)制取值范圍是00H~17H(1~23);06H單元取值范圍是00H~07H(0~7);07H單元取值范圍01H~1FH(1~31);08H單元取值范圍是01H~0CH(1~12);09H單元的取值范圍是00H
68、~63H(0~99)。DS12887的RAM和各專用寄存器的訪問(wèn)如下實(shí)現(xiàn),若片選地址DS=#0DDXXH,則芯片內(nèi)部RAM 和寄存器和地址為#0DD00H~#0DD7FH。應(yīng)指出的是,盡管DS12887的專用時(shí)標(biāo)年寄存器只有一個(gè),但是通過(guò)軟件編程可利用其內(nèi)部的不掉電的</p><p> 表2.2 DS12C887內(nèi)部RAM和各專用寄存器地址</p><p> 寄存器A各位不受復(fù)位的影響
69、,UIP位為只讀位,其它各位均為可讀寫,寄存器的控制。 </p><p> UIP位:更新周期標(biāo)志位。該位為“1”時(shí),表示芯片正處于或?qū)㈤_始更新周期,此時(shí)程序不準(zhǔn)讀寫時(shí)標(biāo)寄存器;該位為“0”時(shí),表示至少在244us后才開始更新周期,此時(shí)程序可讀芯片內(nèi)時(shí)標(biāo)寄存器,是只讀位。 </p><p> DV0、DV1、DV2:芯片內(nèi)部振蕩器RTC控制位。當(dāng)芯片解除復(fù)位狀態(tài),并將010寫入DV0、
70、DV1、DV2后,另一個(gè)更新周期會(huì)在500ms后開始。因此,在程序初始化時(shí)可用這三位精確地使芯片在設(shè)定的時(shí)間開始工作。這與MC146818是不同的,DS12887是固定使用32 768Hz的內(nèi)部晶體,所以,DV0=“0”,DV1=“1”,DV2=“0”,即只有一種010的組合選擇時(shí)可啟動(dòng)RTC。 </p><p> RS3、RS2、RS1、RS0:周期中斷可編程方波輸出速率選擇位。各種不同的組合可以產(chǎn)生不同的輸
71、出。程序可以通過(guò)設(shè)置寄存器B的SQWF和PIE位控制是否允許周期中斷方波輸出,其寄存器A輸出速率選擇位如表2.4所示。 </p><p> 表2.4 DS12887控制寄存器A輸出速率選擇位定義</p><p> DS12887處于正常工作狀態(tài)時(shí),每秒鐘將產(chǎn)生一個(gè)更新周期,芯片處于更新周期的標(biāo)志是寄存器A中的UIP位為“1”。在更新周期內(nèi),芯片內(nèi)部時(shí)標(biāo)寄存器數(shù)據(jù)處于更新階段,故在該周
72、期內(nèi),微處理器不能讀芯片時(shí)標(biāo)寄存器的內(nèi)容,否則將得到不確定數(shù)據(jù)。更新周期的基本功能主要是刷新各個(gè)時(shí)標(biāo)寄存器內(nèi)容,同時(shí)秒時(shí)標(biāo)寄存器內(nèi)容加1,并檢查其他時(shí)標(biāo)寄存器內(nèi)容是否溢出,如果有溢出則相應(yīng)進(jìn)位日、月、年。</p><p> 為了采樣時(shí)標(biāo)寄存器中的數(shù)據(jù),DS12887提供兩種避開更新周期內(nèi)訪問(wèn)時(shí)標(biāo)寄存器的方案:第一種是利用更新周期結(jié)束發(fā)出的中斷。它可以編程允許在每次更新周期結(jié)束后發(fā)生中斷申請(qǐng),提醒CPU將有998
73、ms左右的時(shí)間去獲取有效數(shù)據(jù),在中斷之后的998ms時(shí)間內(nèi),程序可先將時(shí)標(biāo)數(shù)據(jù)讀支芯片內(nèi)部的不掉電靜態(tài)RAM中。因?yàn)樾酒瑑?nèi)部的靜態(tài)RAM和狀態(tài)寄存器是隨時(shí)可讀寫的,在離開中斷服務(wù)子程序前應(yīng)清除寄存器C中的IRQF位。另一種是:利用寄存器A中的UIP位來(lái)指示芯片是否處于更新周期。在UIP位從低變高244us后,芯片將開始其更新周期,所以檢測(cè)到UIP位為低電平時(shí),則利用224us的間隔時(shí)間去讀取時(shí)標(biāo)信息。如檢測(cè)到UIP位為“1”,則可暫緩讀
74、數(shù)據(jù),等到UIP變?yōu)榈碗娖皆偃プx數(shù)據(jù)。 </p><p> DS12887采取連續(xù)工作制,一般無(wú)須每次都需初始化,即使是系統(tǒng)復(fù)位時(shí)也如此。但初始化時(shí),首先應(yīng)禁止芯片內(nèi)部的更新周期操作,所以先將DS12887狀態(tài)寄存器B中的SET位置“1”,然后初始化00H~09H時(shí)標(biāo)參數(shù)寄存器和狀態(tài)寄存器A,此后再通過(guò)讀狀態(tài)寄存器C,清除寄存器C中的周期中斷標(biāo)志位PF,報(bào)警中斷標(biāo)志位AF,更新周期結(jié)束中斷標(biāo)志位UF。通過(guò)讀寄存
75、器口D中的VRT位,讀狀態(tài)寄存器口后VRT位將自動(dòng)置“1”,最后將狀態(tài)寄存器B中的SET位置“0”,芯片即開始計(jì)時(shí)工作。 </p><p> 2.4 LED介紹</p><p> LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽(yáng)兩類,了解LED的這些特性,對(duì)編程很重要,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也不同。圖2.7
76、(a)是共陰和共陽(yáng)極數(shù)碼管的內(nèi)部電路圖,它們的發(fā)光原理是一樣的,只是電源極性不同而已。</p><p> 將多只LED的陰極連在一起即為共陰式,而將多只LED的陽(yáng)極連在一起即為共陽(yáng)式。以共陰式為例,如把陰極接地,在相應(yīng)段的陽(yáng)極連接上正電源,該段即會(huì)發(fā)光。當(dāng)然,LED的電流通常較小,一般均需在回路中接上限流電阻。假如我們將"b"和"c"段連接上正電源,其它端接地或懸空,那么
77、"b"和"c"段發(fā)光,此時(shí),數(shù)碼管將顯示數(shù)字“1”。而將"a"、"b"、"d"、"e"和"g"段都連接上正電源,其它引腳懸空,此時(shí)數(shù)碼管將顯示“2”。其它數(shù)字的顯示原理與此類同。</p><p> LED的7段數(shù)碼管利用單只LED組合排列成“8”字型的數(shù)碼管,分別引出它們的
78、電極,點(diǎn)亮相應(yīng)的點(diǎn)劃來(lái)顯示出數(shù)字0-9。在這次的設(shè)計(jì)中采用的均為共陰極的LED顯示,當(dāng)I/O口輸出為高電平的時(shí)候,對(duì)應(yīng)段就會(huì)被點(diǎn)亮。LED數(shù)碼管的結(jié)構(gòu)圖如圖2.7(b)所示。</p><p><b> ?。╝)</b></p><p><b> (b)</b></p><p> 圖2.7 LED分類結(jié)構(gòu)圖和結(jié)構(gòu)圖<
79、;/p><p> 這次設(shè)計(jì)的顯示部分采用AT89C51單片機(jī)動(dòng)態(tài)掃描完成, 在多數(shù)的應(yīng)用場(chǎng)合中,我們并不希望使用多I/O端口的單片機(jī),原則上是使用盡量少引腳的器件。在沒有富余端口的情況下,應(yīng)通過(guò)優(yōu)化設(shè)計(jì)程序和擴(kuò)展電路達(dá)到預(yù)期目的。動(dòng)態(tài)掃描的頻率有一定的要求,頻率太低,LED會(huì)出現(xiàn)閃爍現(xiàn)象。如頻率太高,由于每個(gè)LED點(diǎn)亮的時(shí)間太短,LED的亮度太低,肉眼無(wú)法看清,所以一般均取幾個(gè)ms左右為宜,這就要求在編寫
80、程序時(shí),選某一位LED使其點(diǎn)亮并保持一定的時(shí)間,程序上常采用的是調(diào)用延時(shí)子程序。</p><p> LDE顯示器工作在靜態(tài)顯示時(shí),其公共陽(yáng)極(或陰極) 接VCC(或GND) ,一直處于顯示有效狀態(tài),所以每一位的顯示內(nèi)容必須由鎖存器加以鎖存,顯示各位間相互獨(dú)立。</p><p> 將所有位的段選線的同名端聯(lián)在一起,由一個(gè)8位I/O口控制,形成段選線的多位復(fù)用。而各位的公共陽(yáng)極或公共陰極則
81、分別由相應(yīng)的I/O口線控制,實(shí)現(xiàn)各位的分時(shí)選通,即同一時(shí)刻只有被選通位是能夠顯示相應(yīng)的字符,而其他所有位都是熄滅的。由于人眼有視覺暫留現(xiàn)象,只要每位顯示間隔足夠短,則會(huì)造成多位同時(shí)點(diǎn)亮的假象。這就需要單片機(jī)不斷地對(duì)顯示進(jìn)行控制,CPU需要不斷地進(jìn)行顯示刷新,動(dòng)態(tài)顯示電路參見圖2.8,圖2.8中是擴(kuò)展了五位的LED數(shù)碼管顯示,用一個(gè)74LS154作為五個(gè)LED的段選輸入,采用動(dòng)態(tài)顯示方式連接的。類似地,16位的LED數(shù)碼管的顯示也可以用這
82、種方法來(lái)實(shí)現(xiàn)。 </p><p> 圖2.8 五位LED數(shù)碼管的動(dòng)態(tài)顯示</p><p> 2.5 74LS154介紹</p><p> 譯碼器用于將數(shù)字儀表、計(jì)算機(jī)、和其它數(shù)字系統(tǒng)中的測(cè)量數(shù)據(jù)、運(yùn)算結(jié)果譯成十進(jìn)制數(shù)顯示出來(lái)。本設(shè)計(jì)要共用到16個(gè)七段數(shù)碼管,單片機(jī)的P0端口只有8根線,根本不夠用,故而須用74LS154來(lái)擴(kuò)展,74LS154是4-16譯碼器
83、,只用單片機(jī)的四根線就可以接16個(gè)數(shù)碼管的位碼端,該設(shè)計(jì)中用了74LS154的全部端口。74LS154的管腳圖和值表如圖2.9所示。 </p><p> 2.9 74LS154的管腳圖和值表</p><p> 2.6 ULN2003介紹 </p><p> 該設(shè)計(jì)用74LS154的16個(gè)端口,數(shù)碼管采用共陰極,因?yàn)橛?6個(gè)
84、數(shù)碼管顯示,電流量不大,所以只用一個(gè)ULN3003即可驅(qū)動(dòng)整個(gè)電路。</p><p> ULN2003A由美國(guó)Texas Instruments 公司、美國(guó)Sprague公司生產(chǎn)、由7組達(dá)林頓晶體管陣列和相應(yīng)的電阻網(wǎng)絡(luò)以及鉗位二極管網(wǎng)絡(luò)構(gòu)成,可以同時(shí)驅(qū)動(dòng)7組負(fù)載的,為單片雙極型大功率高速集成電路。ULN2003的管腳圖和內(nèi)部原理圖如圖2.10(a)(b)所示, </p><p> (a
85、) (b)</p><p> 2.10 ULN2003的管腳圖和內(nèi)部原理圖</p><p> UNL2003的主要特性如表2.5所示</p><p> 表2.5 UNL2003的主要特性表</p><p> (a)
86、(b)</p><p> 圖2.10 ULN2003的管腳圖和內(nèi)部原理圖</p><p><b> 第三章 軟件設(shè)計(jì)</b></p><p> 本次設(shè)計(jì)采用匯編語(yǔ)言編程,主程序主要實(shí)現(xiàn)顯示的是初始化和調(diào)用各子程序工作的功能,讀取時(shí)間的子程序主要實(shí)現(xiàn)初始化,時(shí)間信息的采集和顯示段碼的存取。在顯示刷新子程序中采用動(dòng)態(tài)顯示方式,每次從顯示緩沖區(qū)
87、中取出一個(gè)段碼由譯碼器送出,相應(yīng)位碼由ULN2003送出,輪流顯示。</p><p><b> 3.1 主程序</b></p><p> 程序功能:設(shè)定數(shù)碼管的初始狀態(tài)、不停地調(diào)用子程序,使系統(tǒng)循環(huán)工作。并判斷按鍵的狀態(tài)。</p><p> 主程序框圖如圖3.1所示:</p><p><b> 圖3.
88、1主程序框圖</b></p><p> 3.2 讀取時(shí)間的所有子程序</p><p> 程序功能:從日歷芯片12C887A中讀取時(shí)間(年、月、日、時(shí)、分、秒存入以開頭的一段數(shù)據(jù)區(qū)中)。</p><p> 入口參數(shù):DPTR——時(shí)間緩沖區(qū)指針,R3——顯示緩沖區(qū)首址。</p><p> 圖3.2讀取時(shí)間子程序框圖</
89、p><p> 3.3 顯示刷新的子程序</p><p> 程序功能:動(dòng)態(tài)的顯示從時(shí)間緩沖區(qū)取出連續(xù)的2個(gè)單元(分鐘、小時(shí))轉(zhuǎn)化為四位BCD碼存入顯示緩沖區(qū)以供顯示。</p><p> 入口參數(shù):DPTR——時(shí)間緩沖區(qū)首地址指針。R3——顯示緩沖區(qū)首地址。</p><p> 程序框圖如圖3.3所示:</p><p>
90、; 圖3.3 顯示刷新程序框圖</p><p> 第四章 調(diào)試過(guò)程以及數(shù)據(jù)分析</p><p><b> 4.1 調(diào)試硬件</b></p><p> 硬件的調(diào)試比較困難。因?yàn)槭钦{(diào)試所以不能對(duì)元件進(jìn)行焊接,只可以把各個(gè)元件用導(dǎo)線連接起來(lái)。調(diào)試的整體過(guò)程為:各個(gè)系統(tǒng)逐個(gè)調(diào)試,各部分調(diào)試成功后再進(jìn)行組裝后的整體調(diào)試。</p>
91、<p> 顯示部分的調(diào)試,問(wèn)題:數(shù)碼管的顯示不穩(wěn)定,不停的閃爍。</p><p> 分析:沒有考慮到干擾及環(huán)境的制約問(wèn)題。于是我們把在面包板上連接好的電路焊接在印刷板上,并采用電容濾波盡可能去除掉紋波和干擾。</p><p> 控制部分的調(diào)試問(wèn)題:按下按鍵后數(shù)據(jù)有時(shí)正常有時(shí)又不正常,數(shù)據(jù)的加減不夠穩(wěn)定。</p><p> 分析:根據(jù)分析有兩個(gè)問(wèn)題可
92、以導(dǎo)致此種現(xiàn)象,一是按鍵接觸不良可能有短路情況,二是程序部分有問(wèn)題。用萬(wàn)用表測(cè)量后發(fā)現(xiàn)按鍵按下后不穩(wěn)定,更換質(zhì)量更好的按鍵排除了障礙。</p><p> 4.2 調(diào)試軟件 </p><p> 程序的調(diào)試分為幾個(gè)步驟,首先要在WAVE6000軟件中編譯通過(guò),然后通過(guò)Keil軟件把程序下載到單片機(jī)中最終調(diào)試出滿意的效果才算成功。</p><p> 首先,啟動(dòng)WA
93、VE6000新建一個(gè)項(xiàng)目,輸入一個(gè)名字保存,然后打開“真器設(shè)置”,在“語(yǔ)言”選項(xiàng)中選擇“偉福匯編器”,“缺省顯示格式”選擇“混合十、十六進(jìn)制”?!胺抡嫫鳌边x項(xiàng)下選擇“使用偉福軟件模擬器”?!巴ㄐ旁O(shè)置”選項(xiàng)下選擇“使用偉福軟件模擬器”。</p><p> 打開已經(jīng)寫好的程序,選擇“項(xiàng)目”菜單下的“編譯”命令,根據(jù)Message窗口的編譯信息修改程序中錯(cuò)誤的地方。直到Message窗口中不再出現(xiàn)錯(cuò)誤符號(hào),全部顯示正
94、確符號(hào)為止。</p><p> 雖然程序在WAVE6000中編譯通過(guò)了,但并不代表程序就沒有錯(cuò)誤,只有最終出現(xiàn)效果才能說(shuō)明沒問(wèn)題。</p><p> 4.3 調(diào)試KeiL </p><p> 在WAVE6000軟件中調(diào)試過(guò)的程序在KEIL中還有可能有一些毛病,只有通過(guò)KEIL的編譯才能下載到試驗(yàn)箱上。</p><p> 啟動(dòng)Keil
95、軟件,選擇“Project”菜單下的“New Project”命令,輸入項(xiàng)目的文件名,選擇存儲(chǔ)路徑,最后點(diǎn)擊“保存”按鈕。</p><p> 在“Select Device”窗口中選擇“Atmel”下的“AT89C51” 芯片,單擊“確定”按鈕。展開“Project Workspace”窗口中的“Target 1”, 右擊 “Target 1”,選擇“Options for Target ’Target 1’
96、”,選擇“Target”選項(xiàng)在Keil (MHZ)右邊輸入“11.0592”。選擇“Debug”選項(xiàng),選擇“Use Keil Monitor-51 Driver”。單擊“Settings”按鈕,串口選擇“COM1”,波特率選擇為“38400”,單擊“OK”按鈕。</p><p> 右擊“Source Group 1”,選擇“Add files to Group ‘Source Group 1’,在文件類型中選
97、擇“Asm Source file”,找到將要編譯的程序,單擊 “ADD”按鈕,然后再單擊“CLOSE”按鈕。單擊“Rebuild all target files”,在“Build”窗口中觀察編譯的結(jié)果,根據(jù)提示修改程序,直到?jīng)]有錯(cuò)誤出現(xiàn)為止。</p><p> 4.4 調(diào)試試驗(yàn)箱</p><p> 根據(jù)程序的設(shè)計(jì)在試驗(yàn)箱上分別將各個(gè)端口的連接線連接好,用串口線把試驗(yàn)箱和計(jì)算機(jī)的仿
98、真頭連接好,將試驗(yàn)箱打開。</p><p> 單擊Keil軟件上的“Start/Stop Debug Session”按鈕,再單擊按鈕“RUN”,運(yùn)行程序。觀察試驗(yàn)箱上出現(xiàn)的效果,分析程序的對(duì)錯(cuò),直到調(diào)試出正確的結(jié)果。</p><p> 第五章 結(jié) 論</p><p> 經(jīng)過(guò)十幾周的努力,順利完成了基于89C51單片機(jī)控制的電子時(shí)鐘日歷LED顯示系統(tǒng)的設(shè)
99、計(jì),所完成的工作主要包括以下幾個(gè)方面:</p><p> 準(zhǔn)備階段的工作主要包括:查閱國(guó)內(nèi)外相關(guān)文獻(xiàn),了解單片機(jī)微控制器的主要作用,發(fā)展過(guò)程及發(fā)展趨勢(shì)和使用方法,了解用LED數(shù)碼管顯示電子時(shí)鐘日歷的工作原理、分析LED顯示系統(tǒng)。詳細(xì)了解了AT89C51 單片機(jī)應(yīng)用中的數(shù)據(jù)轉(zhuǎn)換顯示、數(shù)碼管顯示原理、動(dòng)態(tài)掃描顯示原理。</p><p> 本次的設(shè)計(jì)基于AT89C51單片機(jī)的LED顯示系統(tǒng)主
100、要由89C51單片機(jī)處理器控制、位掃描控制電路、端碼顯示驅(qū)動(dòng)電路及與計(jì)算機(jī)的接口電路組成。此外還包括一些基本的電路如電源電路,晶振電路,及接口電路。由于DS12887為一款優(yōu)秀的時(shí)鐘芯片,因此本次設(shè)計(jì)使用了動(dòng)態(tài)掃描方式進(jìn)行LED顯示,在顯示驅(qū)動(dòng)電路中用4線——16線的譯碼器74LS154進(jìn)行顯示譯碼,在行掃描驅(qū)動(dòng)電路中用反相驅(qū)動(dòng)器ULN2003對(duì)電路實(shí)現(xiàn)信號(hào)輪流選通的功能。</p><p> 根據(jù)LED顯示管控
101、制器的功能和系統(tǒng)硬件電路,進(jìn)行系統(tǒng)軟件設(shè)計(jì)。本系統(tǒng)軟件設(shè)計(jì)采用模塊化設(shè)計(jì),即控制系統(tǒng)中的各個(gè)功能塊都按照模塊化方式進(jìn)行程序設(shè)計(jì)。軟件由讀取時(shí)間的子程序和顯示刷新子程序兩部分組成,讀取時(shí)間的子程序完成初始化工作,同時(shí)負(fù)責(zé)進(jìn)行顯示,按要求讀出顯示數(shù)據(jù),顯示刷新子程序?qū)r(shí)間信號(hào)(年、月、日、時(shí)、分、秒)轉(zhuǎn)化為BCD碼存入顯示緩沖區(qū)以供顯示。</p><p><b> 參考文獻(xiàn)</b></p
102、><p> [1]付家才.單片機(jī)控制工程實(shí)踐技術(shù)[M]. 北京:化學(xué)工業(yè)出版社,2004.5</p><p> [2]楊文龍.單片機(jī)原理及應(yīng)用[M].陜西: 西安電子科技大學(xué)出版社,1999</p><p> [3]梅麗鳳.王艷秋.單片機(jī)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,2005</p><p> [4]王幸芝.鐘愛琴,王閃.A
103、T89系列單片機(jī)原理與接口技術(shù).北京:北京航空航天大學(xué)出版社,2004</p><p> [5]潘新民.微型計(jì)算機(jī)控制技術(shù) [M].北京:人民郵電出版社,1999.9</p><p> [6]胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社, 1995</p><p> [7]徐維祥.劉旭敏.單片微型機(jī)原理與應(yīng)用[M].遼寧:大連理工大學(xué)出版社,20
104、03</p><p> [8] 張康,郭育華,湯堅(jiān),等.基于DS12887的功率補(bǔ)償控制器設(shè)計(jì)[J].電子設(shè)計(jì)工程,2007(11)</p><p> [9] 李根岱.可校準(zhǔn)實(shí)時(shí)時(shí)鐘芯片的研究和設(shè)計(jì)[D].武漢:華中科技大學(xué),2007.[10] 姜書政, 王桂海. 基于AT89S52單片機(jī)的電機(jī)控制系統(tǒng)設(shè)計(jì)[J]. 現(xiàn)代電子技術(shù),2010,33(7):</p><
105、p><b> 致 謝</b></p><p> 首先,我謹(jǐn)向工學(xué)部的全體老師和各位領(lǐng)導(dǎo),致以最誠(chéng)摯的問(wèn)候,祝愿各位老師及領(lǐng)導(dǎo)在以后的日子中,工作順心,身體健康!</p><p> 作為一名大四的學(xué)生,此時(shí)此刻的心情十分復(fù)雜,我們將要離開奮斗了四年的大學(xué)校園,將要懷著一種很復(fù)雜的感情,迎接下一段人生。在大學(xué)的生活中,老師及領(lǐng)導(dǎo)們對(duì)我的關(guān)懷,以不能一一的列
106、舉了,在離別之際我很想向每位幫助我的老師說(shuō)句謝謝,深深的鞠一躬。</p><p> 從這次做畢業(yè)設(shè)計(jì)來(lái),我不僅從學(xué)到許許多多的專業(yè)知識(shí),更重要的是學(xué)會(huì)了一些科研的學(xué)術(shù)方法,所有的一切都將是我以后人生中的重大財(cái)富,在此特向?qū)煴硎局孕牡母兄x和崇高的敬意。同時(shí)還要向幫助我的同學(xué)們表示感謝,感謝他們?cè)谶@次畢業(yè)設(shè)計(jì)的過(guò)程中給予了我的幫助,開拓進(jìn)取的精神和高度的責(zé)任心都將使學(xué)生受益終生!</p><p
107、><b> 附 圖</b></p><p> 單片機(jī)日歷時(shí)鐘系統(tǒng)開發(fā)圖</p><p><b> 程序清單</b></p><p><b> 程序清單一</b></p><p> ORG 0000H</p><p>
108、 LJMP START</p><p> ORG 0030H</p><p> START:MOV 30H, #0</p><p> SETB P1.1 </p><p> SECOND EQU 2000
109、H ;Timer Registers</p><p> MINUNTE EQU 2002H ; 時(shí)鐘芯片寄存器</p><p> HOUR EQU 2004H </p><p> WEEK EQU 2006H ; 它
110、們代表秒、分鐘、時(shí)、日期</p><p> DATE EQU 2007H ;年、月 </p><p> MONTH EQU 2008H </p><p> YEAR EQU 2009H ; 可以改變實(shí)際連線,地址也相應(yīng)改變</p>
111、<p> TREGA EQU 200AH ; 四個(gè)控制寄存器</p><p> TREGB EQU 200BH</p><p> TREGC EQU 200CH </p><p> TREGD EQU 200DH
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)日歷時(shí)鐘開發(fā)
- 單片機(jī)日歷時(shí)鐘開發(fā)定稿.doc
- 單片機(jī)日歷時(shí)鐘開發(fā)初稿.doc
- 畢業(yè)論文-單片機(jī)開發(fā)板設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)【精校排版】
- 單片機(jī)日歷時(shí)鐘開發(fā)二稿.doc
- 單片機(jī)日歷時(shí)鐘開發(fā)【電子信息科學(xué)與技術(shù)畢業(yè)論文】
- 畢業(yè)論文-基于單片機(jī)倒車系統(tǒng)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的電子門鈴設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字秒表設(shè)計(jì)【精校排版】
- 畢業(yè)論文-智能單片機(jī)照明控制裝置設(shè)計(jì)【精校排版】
- 單片機(jī)日歷和時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文-基于單片機(jī)的數(shù)字鐘設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的密碼鎖設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字電子鐘【精校排版】
- 畢業(yè)論文-基于單片機(jī)的音樂流水燈設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的溫度計(jì)的設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的多功能電子跑表設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于stc單片機(jī)的人體感應(yīng)臺(tái)燈設(shè)計(jì)【精校排版】
評(píng)論
0/150
提交評(píng)論