萬年歷單片機(jī)課程設(shè)計(jì)報(bào)告書_第1頁
萬年歷單片機(jī)課程設(shè)計(jì)報(bào)告書_第2頁
萬年歷單片機(jī)課程設(shè)計(jì)報(bào)告書_第3頁
萬年歷單片機(jī)課程設(shè)計(jì)報(bào)告書_第4頁
萬年歷單片機(jī)課程設(shè)計(jì)報(bào)告書_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)系統(tǒng)課程設(shè)計(jì)成績評定表設(shè)計(jì)課題:萬年歷 學(xué)院名稱: 電氣工程學(xué)院專業(yè)班級:學(xué)生:學(xué)號:指導(dǎo)教師:設(shè)計(jì)地點(diǎn) :設(shè)計(jì)時間 :指導(dǎo)教師意見:成績: 簽名: 年 月 日28 / 33單片機(jī)系統(tǒng)課程設(shè)計(jì)課程設(shè)計(jì)名稱: 萬年歷 專業(yè)班級:學(xué)生姓名:學(xué)號:指導(dǎo)教師:課程設(shè)計(jì)地點(diǎn):課程設(shè)計(jì)時間: 單片機(jī)系統(tǒng) 課程設(shè)計(jì)任務(wù)書學(xué)生專業(yè)班級學(xué)號題目課題性質(zhì)工程設(shè)計(jì)課題來源選題指導(dǎo)教師主要容(參數(shù))1、 顯示陽歷年、月、日、時、分、秒、星期2、 可用按鍵對時間、日期進(jìn)行調(diào)整任務(wù)要求(進(jìn)度)第1-2天:熟悉課程設(shè)計(jì)任務(wù)與要求,查閱技術(shù)資料,確定設(shè)計(jì)方案。第3-4天:按照確定的方案設(shè)計(jì)單元電路。要求畫出單元電路圖,

2、元件與元件參數(shù)選擇要有依據(jù),各單元電路的設(shè)計(jì)要有詳細(xì)論述。第5-6天:軟件設(shè)計(jì),編寫程序。第7-8天:實(shí)驗(yàn)室調(diào)試。第9-10天:撰寫課程設(shè)計(jì)報(bào)告。要求容完整、圖表清晰、文理流暢、格式規(guī)、方案合理、設(shè)計(jì)正確,篇幅合理。主要參考資料1 迎新單片微型計(jì)算機(jī)原理、應(yīng)用與接口技術(shù)(第2版)M:國防工業(yè),20042偉福LAB6000系列單片機(jī)仿真實(shí)驗(yàn)系統(tǒng)使用說明書3 閻石數(shù)字電路技術(shù)基礎(chǔ)(第五版):高等教育,2006審查意見系(教研室)主任簽字: 年 月 日 摘 要:隨著當(dāng)今世界經(jīng)濟(jì)的快速發(fā)展和信息化時代的來臨,各種各樣的小型智能家電產(chǎn)品陸續(xù)出現(xiàn)在我們的生活中。日歷是人們不可或缺的日常用品。但一般日歷都為

3、紙制用品,使用不便,壽命不長。電子萬年歷采用智能電子控制和顯示技術(shù),改善了紙制日歷的缺陷。本設(shè)計(jì)以AT89C52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路,結(jié)合DS1302時鐘芯片,完成時間的調(diào)整和掉電保護(hù),全部信息用LED數(shù)碼管顯示。時間、日期調(diào)整由按鍵來實(shí)現(xiàn)。日歷能顯示陽歷和時、分、秒。關(guān)鍵詞:萬年歷;52系列單片機(jī);時鐘芯片目錄1 概述12 總體方案設(shè)計(jì)12.1 方案1基于AT89C52單片機(jī)的萬年歷設(shè)計(jì)12.2 方案2基于AT89C52單片機(jī)和DS1302的萬年歷設(shè)計(jì)22.3 總體方案23 硬件電路設(shè)計(jì)33.1 主控器 AT89C5233.1.1 AT89C52的主要性能43.1.2 AT89C

4、52的引腳與其功能43.2 時鐘電路的設(shè)計(jì)73.2.1 DS1302的性能特性73.3.2 DS1302數(shù)據(jù)操作原理83.3 顯示電路的設(shè)計(jì)103.4 鍵盤接口的設(shè)計(jì)124 系統(tǒng)軟件設(shè)計(jì)124.1 主程序設(shè)計(jì)134.2 中斷服務(wù)程序設(shè)計(jì)134.3 子程序設(shè)計(jì)144.3.1 延時子程序144.3.2 數(shù)碼管動態(tài)掃描子程序144.3.3 定時器初始化子程序154.3.4 鍵盤掃描子程序154.3.5 顯示子程序165 系統(tǒng)調(diào)試與總結(jié)16參考文獻(xiàn)19附錄A 源程序20附錄B 系統(tǒng)原理圖291 概述在日新月異的21世紀(jì)里,家用電子產(chǎn)品得到了迅速發(fā)展。許多家電設(shè)備都趨于人性化、智能化,這些電器設(shè)備大部分

5、都含有CPU控制器或者是單片機(jī)。單片機(jī)以其高可靠性、高性價比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng)、通訊設(shè)備、日常消費(fèi)類產(chǎn)品和玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個環(huán)節(jié)以與人民生活的各個方面,如車間流水線控制、自動化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。用單片機(jī)來控制的小型家電產(chǎn)品具有便攜實(shí)用,操作簡單的特點(diǎn)。本文設(shè)計(jì)的電子萬年歷屬于小型智能家用電子產(chǎn)品。利用單片機(jī)進(jìn)行控制,實(shí)時時鐘芯片進(jìn)行記時,外加掉電存儲電路和顯示電路,可實(shí)現(xiàn)時間的調(diào)整和顯示。電子萬年歷既可廣泛應(yīng)用于家庭,也可應(yīng)用于銀行、郵電、賓館、醫(yī)院、學(xué)校、企業(yè)、商店等相關(guān)行業(yè)的大廳,

6、以與單位會議室、門衛(wèi)等場所。因而,此設(shè)計(jì)具有相當(dāng)重要的現(xiàn)實(shí)意義和實(shí)用價值。2 總體方案設(shè)計(jì)由于現(xiàn)在市面上的電子萬年歷的種類比較多,因此到底選擇什么樣的方案在設(shè)計(jì)中是至關(guān)重要的。正確地選擇方案就可以使產(chǎn)品更加人性化,并且可以減小開發(fā)的難度,縮短開發(fā)的周期,降低產(chǎn)品的成本等等,因此就會被人們普遍接受,并且能夠更快地將產(chǎn)品推向市場實(shí)現(xiàn)其自身的價值。下面我們就擬訂了兩種方案,希望能夠選擇一種性價比高的方案。2.1 方案1基于AT89C52單片機(jī)的萬年歷設(shè)計(jì)不使用時鐘芯片,而直接用AT89C52單片機(jī)來實(shí)現(xiàn)電子萬年歷設(shè)計(jì)。AT89C52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS

7、8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦寫1000余次。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C52是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。若采用單片機(jī)計(jì)時,利用它的一個16位定時器/計(jì)數(shù)器每50ms產(chǎn)生一個中斷信號,中斷20次后產(chǎn)生一個秒信號,然后根據(jù)時間進(jìn)制關(guān)系依次向分、時、日、星期、月、年進(jìn)位。這樣就實(shí)現(xiàn)了直接用單片機(jī)來實(shí)現(xiàn)電子萬年歷設(shè)計(jì)。用單片機(jī)來實(shí)現(xiàn)電子萬年歷設(shè)計(jì),無須外接其他芯片,充分利用了單片機(jī)的資源。但是精度不夠高,誤差較大,掉電后丟失所有數(shù)據(jù),軟件編程較復(fù)雜。2.2方案2基于AT89C52單

8、片機(jī)和DS1302的萬年歷設(shè)計(jì)在以單片機(jī)為核心構(gòu)成的裝置中,經(jīng)常需要一個實(shí)時的時鐘和日歷,以便對一些實(shí)時發(fā)生事件記錄時給予時標(biāo),實(shí)時時鐘芯片便可起到這一作用。過去多用并行接口的時鐘芯片,如MC146818,DS12887等。它們已能完全滿足單片機(jī)系統(tǒng)對實(shí)時時鐘的要求,但是這些芯片與單片機(jī)接口復(fù)雜、占用地址, 數(shù)據(jù)總線接線多、芯片體積大占用空間多、近年來串行接口的各種芯片在單片機(jī)系統(tǒng)中應(yīng)用愈來愈多,串行接口的實(shí)時時鐘芯片也出現(xiàn)了不少,DS1302是一個綜合性能較好且價格便宜的串行接口實(shí)時時鐘芯片。利用單片機(jī)進(jìn)行控制,采用DS1302作為實(shí)時時鐘芯片,其三線接口 SCLK、I/O、 與單片機(jī)進(jìn)行同

9、步通信,外加掉電存儲電路、顯示電路、鍵盤電路,即構(gòu)成一個基本的電子萬年歷系統(tǒng),若還要添加其他功能,在這基礎(chǔ)上外擴(kuò)電路即可。由于在系統(tǒng)設(shè)計(jì)時,需要考慮以下幾點(diǎn)因素:功耗低、精確度高、軟件編程較簡單,芯片的體積小、芯片成本低等,而DS1302芯片有上面所述的諸多優(yōu)點(diǎn),所以本設(shè)計(jì)采用方案2基于DS1302的電子萬年歷設(shè)計(jì)。2.3總體方案本設(shè)計(jì)以AT89C52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路,結(jié)合DS1302時鐘芯片,顯示陽歷的年、月、日、星期、時、分、秒同時完成對它們的手動調(diào)整和掉電保護(hù),全部信息用8位八段數(shù)碼管顯示出來。輸入接口由按鍵來實(shí)現(xiàn),用按鍵可以對日期和時間進(jìn)行調(diào)整。整機(jī)電路使用+5V穩(wěn)壓電

10、源,可穩(wěn)定工作。其軟硬件設(shè)計(jì)簡單,時間記錄準(zhǔn)確,可廣泛應(yīng)用于長時間連續(xù)顯示的系統(tǒng)中。按照系統(tǒng)設(shè)計(jì)功能的要求,確定硬件系統(tǒng)由主控制器、時鐘模塊、顯示模塊、鍵盤接口共4個模塊組成,總體系統(tǒng)構(gòu)成框圖如圖2-1所示。圖2-1 電子萬年歷系統(tǒng)構(gòu)成框圖3 硬件電路設(shè)計(jì)電子萬年歷電路原理圖見附錄B,系統(tǒng)由主控制器AT89C52、時鐘芯片DS1302、顯示電路與鍵盤掃描電路組成。按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定設(shè)計(jì)系統(tǒng)由主控模塊、時鐘模塊、顯示模塊、鍵盤接口模塊組成。主控芯片使用52系列AT89C52單片機(jī),時鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時時鐘芯片DS1302, DS1

11、302作為主要計(jì)時芯片,可以做到計(jì)時準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備 (2.55.5V電源,在2.5V時耗電小于300nA)下繼續(xù)計(jì)時,并可編程選擇多種充電電流來對后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示模塊使用8位八段數(shù)碼管,八段數(shù)碼管雖然操作略顯繁瑣,但可視圍十分寬,而且經(jīng)濟(jì)實(shí)惠,也不需要復(fù)雜的驅(qū)動程序。鍵盤模塊使用若干個獨(dú)立按鍵即可。3.1 主控器 AT89C52ATMEL公司生產(chǎn)的AT89C52單片機(jī)采用高性能的靜態(tài)80C51設(shè)計(jì),由先進(jìn)工藝制造,并帶有非易失性Flsah程序存儲器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場應(yīng)用最多。其引腳封裝

12、如圖3-1所示。圖3-1 AT89C52引腳封裝圖3.1.1AT89C52的主要性能8KB Flash ROM,可以檫寫1000次以上,數(shù)據(jù)保存10年。256字節(jié)部RAM。電源控制模式時鐘可停止和恢復(fù);空閑模式;掉電模式。 6個中斷源。4個中斷優(yōu)先級。4個8位I/O口。全雙工增強(qiáng)型UART。3個16位定時/計(jì)數(shù)器,T0、T1(標(biāo)準(zhǔn)80C51)和增加的T2(捕獲和比較)。全靜態(tài)工作方式:024MHz。3.1.2AT89C52的引腳與其功能AT89C52單片機(jī)的管腳說明如下:(1) 主要電源引腳VCC 電源端GND 接地端(2) 外接晶體引腳XTAL1和XTAL2XTAL1 接外部晶體的一個引腳。

13、在單片機(jī)部,它是構(gòu)成片振蕩器的反相放大器的輸入端。當(dāng)采用外部振蕩器時,該引腳接收振蕩器的信號,既把此信號直接接到部時發(fā)生器的輸入端。XTAL2 接外部晶體的另一個引腳。在單片機(jī)部,它是上述振蕩器的反相放大器的輸出端。采用外部振蕩器時,此引腳應(yīng)懸浮不連接。(3) 控制或與其它電源復(fù)用引腳RST、ALE/、和/VPP復(fù)位輸入端。當(dāng)振蕩器運(yùn)行時,在該引腳上出現(xiàn)兩個機(jī)器周期的高電平將使單片機(jī)復(fù)位。ALE/當(dāng)訪問外部存儲器時,ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲器,ALE端仍以不變的頻率(此頻率為振蕩器頻率的1/6)周期性地出現(xiàn)正脈沖信號。因此,它可用作對外輸出的時鐘,

14、或用于定時目的。然而要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。在對Flash存儲器編程期間,該引腳還用于輸入編程脈沖()。程序存儲允許()輸出是外部程序存儲器的讀選通信號。當(dāng)AT89S52/LV52由外部程序存儲器取指令(或常數(shù))時,每個機(jī)器周期兩次有效(既輸出2個脈沖)。但在此期間,每當(dāng)訪問外部數(shù)據(jù)存儲器時,這兩次有效的信號將不出現(xiàn)。/VPP 外部訪問允許端。要使CPU只訪問外部程序存儲器(地址為0000HFFFFH),則端必須保持低電平(接到GND端)。當(dāng)端保持高電平(接VSS端)時,CPU則執(zhí)行部程序存儲器中的程序。(4) 輸入/輸出引腳 P0.0 P0.7、P1.0P

15、1.7、P2.0 P2.7 和P3.0P3.7P0端口(P0.0 P0.7) P0是一個8位漏極開路型雙向I/O端口。作為輸出口用時,每位能以吸收電流的方式驅(qū)動8個TTL輸入,對端口寫1時,又可作高阻抗輸入端用。P1端口(P1.0 P1.7) P1是一個帶有部上拉電阻的8位雙向I/O端口。P1的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫1時,通過部的上拉電阻把端口拉到高電位,這時可用作輸入口。作輸入口時,因?yàn)橛胁康纳侠娮?,那些被外部信號拉低的引腳會輸出一個電流。P2端口(P2.0P2.7) P2是一個帶有部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可驅(qū)動(吸收或輸出電

16、流方式)4個TTL輸入。對端口寫1時,通過部的上拉電阻把端口拉到高電位,這時可用作輸入口。P2作輸入口使用時,因?yàn)橛胁康纳侠娮?,那些被外部信號拉低的引腳會輸出一個電流。P3端口(P3.0P3.7) P3口管腳是8個帶部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。P3口也可作為AT89S52的一些特殊功能,這些特殊功能見表3-1。表3-1 P3端口的特殊功能端口引腳兼用功能 P3.0RXD (串行輸入口) P3.1TXD (串行輸出口) P3.2(外部中斷0)

17、P3.3(外部中斷1) P3.4T0 (定時器0的外部輸入) P3.5T1 (定時器1的外部輸入) P3.6(外部數(shù)據(jù)存儲器寫選通) P3.7(外部數(shù)據(jù)存儲器讀選通)本系統(tǒng)即采用AT89C52作為主控芯片,本系統(tǒng)中其管腳分配如圖3-2所示。其中VCC接5V穩(wěn)壓電源,GND接地,RST接復(fù)位電路,P3端口作為獨(dú)立按鍵的接口,XTAL1,XTAL2接外部可換晶振,P0端口作為數(shù)據(jù)總線接到兩片74LS573上作為其輸入信號,P2.7口向DS1302提供CLK時鐘信號,P2.6向DS1302提供I/O信號,P2.5口向DS1302提供RST復(fù)位/片選線信號,P2.4和P2.3口分別向兩片74LS573

18、提供段選和片選信號。圖3-2 主控芯片與其管腳分配3.2時鐘電路的設(shè)計(jì)3.2.1 DS1302的性能特性實(shí)時時鐘,可對秒、分、時、日、周、月以與帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);用于高速數(shù)據(jù)暫存的31×8位RAM;最少引腳的串行I/O;2.55.5V電壓工作圍;2.5V時耗電小于300nA;用于時鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;簡單的3線接口;可選的慢速充電(至Vcc1)的能力。DS1302時鐘芯片包括實(shí)時時鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個簡單的串行接口與微處理器通信。實(shí)時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日期自動

19、調(diào)整,還包括閏年校正的功能。時鐘的運(yùn)行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;Vcc2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,Vcc1連接到備份電,以便在沒有主電源的情況下能保存時間信息以與數(shù)據(jù)。DS1302由Vcc1或Vcc2中較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電;當(dāng)Vcc2小于Vcc時, DS13026由Vcc1供電。3.3.2 D

20、S1302數(shù)據(jù)操作原理DS1302在任何數(shù)據(jù)傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個將被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作是寫入時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過程中置RST腳為低電平,則會終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時,在Vcc大于等于2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時,才能將

21、RST置為高電平。DS1302部結(jié)構(gòu)圖如圖3-3所示,表3-2為各引腳的功能。圖3-3DS1302部結(jié)構(gòu)表 3-2DS1302引腳功能引腳號引腳名稱功 能1Vcc2主電源2,3X1,X2振蕩源,外界32.768kHz晶振4GND地線5RST復(fù)位/片選線6I/O串行數(shù)據(jù)輸入/輸出端(雙向)7SCLK串行數(shù)據(jù)輸入端8Vcc1后備電池DS1302的控制字如圖3-4所示。控制字節(jié)的最高位(位7)必須是邏輯1;如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位51(A4A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進(jìn)行寫操作;為1表

22、示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。圖3-4DS1302的控制字為了提高對32個地址的尋址能力(地址/命令位15=邏輯1),可以把時鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時鐘或RAM,而位0規(guī)定讀或?qū)?。在時鐘/日歷寄存器中的地址931或RAM寄存器中的地址31不能寄存數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時,為了傳送數(shù)據(jù)不必寫所有31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD

23、碼形式。其日歷、時間寄存器與其控制字見表3-3,其中奇數(shù)為讀操作,偶數(shù)為寫操作。表3-3 部寄存器地址和容積存器名命令字節(jié)取值圍積存器容寫讀76543210秒積存器80H81H0059CH10SSEC分積存器82H83H0059010 minMIN小時積存器84H85H0023或011212/24010A/PHRHR日積存器85H87H0128,29,30,310010DATEDATE月積存器88H89H011200010MMONTH周積存器8AH8BH010700000DAY年積存器8CHD3H009910YEARYEAR時鐘暫停:秒寄存器的位7定義位時鐘暫停位。當(dāng)它為1時,DS1302停止

24、震蕩,進(jìn)入低功耗的備份方式。通常在對DS1302進(jìn)行寫操作時(如進(jìn)入時鐘調(diào)整程序),停止震蕩。當(dāng)它為0時,時鐘將開始啟動。AMPM/1224小時方式:小時寄存器的位7定義為12或24小時方式選擇位。它為高電平時,選擇12小時方式。在此方式下,位5是AM/PM位,此位是高電平時表示PM低電平表示AM。在24小時方式下,位5為第二個10小時位(2023h)。DS1302的晶震選用32.768kHz,電容推薦值為33pF,因?yàn)檎鹗庮l率較低,也可以不接電容,對計(jì)時精度影響不大。本系統(tǒng)即采用了DS1302時鐘芯片,其外部電路如圖3-5所示。其中VCC2接5V系統(tǒng)穩(wěn)壓電源,VCC1接備用干電池,SCLK、

25、I/O、RST端口與主控制器相對應(yīng)的端口相連接,X1、X2外界晶振。圖3-5 時鐘電路3.3 顯示電路的設(shè)計(jì)顯示部分采用普通的共陰極數(shù)碼管顯示,采用動態(tài)掃描,以減少硬件電路。為了減少I/O接口,在使用兩個LG3641共陰極數(shù)碼管的情況下,采用2片74HC573分別作為數(shù)碼管的驅(qū)動,輸出位選和段選信號驅(qū)動數(shù)碼管顯示相應(yīng)容。數(shù)碼管的一種是半導(dǎo)體發(fā)光器件,數(shù)碼管可分為七段數(shù)碼管和八段數(shù)碼管,區(qū)別在于八段數(shù)碼管比七段數(shù)碼管多一個用于顯示小數(shù)點(diǎn)的發(fā)光二極管單元DP(decimal point),其基本單元是發(fā)光二極管。本系統(tǒng)采用動態(tài)顯示驅(qū)動。動態(tài)顯示驅(qū)動是將所有數(shù)碼管通過分時輪流控制各個數(shù)碼管的的COM

26、端,就使各個數(shù)碼管輪流受控顯示。將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到一樣的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。圖3-6 74HC573引腳圖74HC573包含八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器,是一種高性能硅門CMOS器件。SL74HC573跟LS/AL573的管腳一樣,其引腳圖見圖3-

27、6。器件的輸入是和標(biāo)準(zhǔn)CMOS輸出兼容的,加上拉電阻他們能和LS/ALSTTL輸出兼容。當(dāng)鎖存使能端為高時,這些器件的鎖存對于數(shù)據(jù)是透明的(也就是說輸出同步)。當(dāng)鎖存使能變低時,符合建立時間和保持時間的數(shù)據(jù)會被鎖存。本系統(tǒng)所采用的顯示電路接線圖如圖3-7所示。其中,第一片74LS573作為數(shù)碼管的段碼驅(qū)動,輸入端與單片機(jī)的P0口相連接,輸出端接八位共陰數(shù)碼管相應(yīng)的段碼輸入端(a-dp),端口C與單片機(jī)相應(yīng)的段碼輸出端相連接,VCC接主電源,GND、OC接地。相應(yīng)的,第二片74LS573作為數(shù)碼管的位碼驅(qū)動,輸入端與單片機(jī)的P0口相連接,輸出端接八位共陰數(shù)碼管相應(yīng)的位碼端口相連接,CC接主電源,

28、GND、OC接地。圖3-7 數(shù)碼管顯示電路3.4鍵盤接口的設(shè)計(jì)由于按鍵有8個,用普通按鈕接10K上拉電阻,用查詢法完成讀鍵功能。其線路連接圖下圖所示。圖3-8 按鍵電路4 系統(tǒng)軟件設(shè)計(jì)本系統(tǒng)軟件分為主程序、中斷服務(wù)程序、子程序三個模塊進(jìn)行編寫。由于本系統(tǒng)程序相對來講比較簡單,用輪詢法對鍵盤進(jìn)行反復(fù)掃描,用中斷法進(jìn)行數(shù)碼管顯示,每隔一段時間,定時器向CPU申請中斷,調(diào)用中斷服務(wù)子程序,根據(jù)當(dāng)前的鍵值,顯示日期、時間或者周秒。而子程序?yàn)橐恍┏S玫难訒r函數(shù)、顯示函數(shù)等。4.1 主程序設(shè)計(jì)由于本系統(tǒng)程序相對來講比較簡單,主程序流程圖如圖4-1所示。系統(tǒng)上電啟動后,定義后續(xù)過程中要使用到的全局變量,對定

29、時器和DS1302進(jìn)行初始化之后,進(jìn)入主循環(huán)對鍵盤進(jìn)行掃描,若檢測到有按鍵按下,進(jìn)入相應(yīng)的鍵處理程序;若沒有檢測到按鍵按下,繼續(xù)掃描鍵盤。圖4-1 主程序流程圖4.2中斷服務(wù)程序設(shè)計(jì)定時器0定時時間到,向CPU申請中斷而進(jìn)入中斷服務(wù)程序。進(jìn)入中斷服務(wù)程序后,先清中斷標(biāo)志位,再對定時器0賦初始值,接著調(diào)用數(shù)碼管掃描子程序達(dá)到數(shù)碼管動態(tài)顯示的目的,延時100ms后,讀標(biāo)志位置1,這里的“讀”是指從時鐘芯片DS1302中讀取相關(guān)數(shù)據(jù)。圖4-2 中斷服務(wù)程序流程圖4.3子程序設(shè)計(jì)4.3.1 延時子程序此延時子程序可用于對延時時間不是特別精確的場合,其程序流程圖如圖4-3所示,主體是一個循環(huán)結(jié)構(gòu),先對t

30、賦初始值255,通過循環(huán)執(zhí)行“t-”指令而達(dá)到延時的目的。圖4-3 延時子程序流程圖4.3.2 數(shù)碼管動態(tài)掃描子程序本系統(tǒng)使用8位八段共陰極數(shù)碼管用于顯示時間和日期,而74LS73作為數(shù)碼管的驅(qū)動芯片,如要控制數(shù)碼管的顯示只需要用程序控制74LS73即可。子程序中定義i為需要顯示的位數(shù),通過對段碼和位碼的鎖存達(dá)來到數(shù)碼管動態(tài)顯示的目的。圖4-4 數(shù)碼管動態(tài)掃描子程序流程圖4.3.3 定時器初始化子程序首選選擇定時器/計(jì)數(shù)器的工作方式為定時器0工作方式1,再對其賦初始值,然后打開總中斷,打開定時器0中斷,打開定時器0開關(guān),定時器初始化工作完成。圖4-5 定時器初始化子程序流程圖4.3.4 鍵盤掃

31、描子程序鍵盤掃描用于向系統(tǒng)輸入數(shù)據(jù),其工作流程如圖4-6所示。簡單描述為:(1) 判斷有無閉合鍵,若無則退出;(2) 延時10ms去抖動;(3) 再次判斷有無閉合鍵,若無則退出;(4) 識別閉合鍵并取得鍵值;(5) 退出鍵盤掃描子程序。圖4-6 鍵盤掃描子程序流程圖4.3.5 顯示子程序?yàn)榱耸怪鞒绦蚪Y(jié)構(gòu)上更加緊湊和清晰,故將顯示部分的程序代碼單獨(dú)拿出來定義為一個子函數(shù)來調(diào)用。其功能相對比較簡單,將數(shù)據(jù)從時鐘芯片取出來經(jīng)過簡單運(yùn)算放入輸出緩沖區(qū)。圖4-7 顯示子程序流程圖5系統(tǒng)調(diào)試與總結(jié)系統(tǒng)研制完成后,在自己的單片機(jī)開發(fā)板上進(jìn)行了系統(tǒng)功能測試。系統(tǒng)上電后顯示正常。按下按鍵K1,LED數(shù)碼管能夠在

32、日期、時間之間切換顯示;按下按鍵K3調(diào)節(jié)小時數(shù)值,其能夠在0-23之間循環(huán)遞增調(diào)節(jié);按下按鍵K5調(diào)節(jié)分鐘數(shù)值,其能夠在0-59之間循環(huán)遞增調(diào)節(jié);按下按鍵K2,K4調(diào)節(jié)年份數(shù)值,按K2年份數(shù)值遞增,按K4年份數(shù)值遞減,年份可設(shè)定為0-99;按下按鍵K6可進(jìn)行分鐘數(shù)值的調(diào)節(jié),調(diào)節(jié)圍為0-59;按下按鍵K8可進(jìn)行日數(shù)值的調(diào)節(jié),實(shí)際上調(diào)節(jié)圍可以是0-31,但是調(diào)節(jié)是要根據(jù)不同的月份適當(dāng)調(diào)節(jié)。實(shí)際調(diào)試結(jié)果如下圖所示。圖5-1 調(diào)試結(jié)果1圖5-2 調(diào)試結(jié)果2此次設(shè)計(jì)立足于電子技術(shù)的實(shí)際運(yùn)用,不斷實(shí)踐,開拓了思維,設(shè)計(jì)以考查、調(diào)研、搜集資料、擬訂方案、進(jìn)行系統(tǒng)規(guī)劃、編程、仿真、調(diào)試的流程,使我深刻的體會到了

33、在學(xué)習(xí)我們專業(yè)的過程中理論與實(shí)踐相結(jié)合的重要性,同時也解決了以前學(xué)習(xí)比較模糊的專業(yè)知識點(diǎn),使自己掌握的專業(yè)知識更加結(jié)構(gòu)化、系統(tǒng)化??傊敬卧O(shè)計(jì)在任課老師的輔導(dǎo)與大力支持下;在指導(dǎo)老師的耐心指導(dǎo)下;在各位同學(xué)和朋友的貼心幫助下解決了許多設(shè)計(jì)中的實(shí)際困難,我以最低的成本和最簡單的方案設(shè)計(jì)出了功能強(qiáng)大的電子萬年歷。參考文獻(xiàn)1 迎新單片微型計(jì)算機(jī)原理、應(yīng)用與接口技術(shù)(第2版)M:國防工業(yè),2004 2 何立民單片機(jī)應(yīng)用文集,:航空航天大學(xué),1991,53723 公茂法單片機(jī)人機(jī)接口實(shí)例集,:航空航天大學(xué),1998.2,32594 何立明單片機(jī)高級教程應(yīng)用與設(shè)計(jì),:航天航空大學(xué),2000.4,1491

34、735 廣弟,朱月秀單片機(jī)基礎(chǔ),:航空航天大學(xué),2001.8,36856 樓然苗,光飛MCS51系列單片機(jī)設(shè)計(jì)實(shí)例,:航天航空大學(xué),2001.3,75837 華單片機(jī)原理與接口技術(shù),:清華大學(xué),33808 王偉高性能、低功耗帶RAM實(shí)時時鐘芯片DS1302(上),電子世界:第一期,1995,26359 王偉高性能、低功耗帶RAM實(shí)時時鐘芯片DS1302(下),電子世界:第四期,1995,3241附錄A 源程序/*- 名稱:萬年歷 編寫:王曉輝 日期:2015.1.X 修改:無 容:DS1302實(shí)時時鐘數(shù)碼管顯示,時間和日期切換顯示 按下按鍵,循環(huán)切換 時間格式xx-xx-xx日期格式xx-xx

35、-xx周秒格式-x- xx-*/#include<reg52.h> /包含頭文件,頭文件包含特殊功能寄存器的定義#include "ds1302.h"#define KeyPort P3 /定義按鍵端口#define DataPort P0 /定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換sbit LATCH1=P23;/定義鎖存使能端口 段鎖存sbit LATCH2=P24;/ 位鎖存bit ReadTimeFlag;/定義讀時間標(biāo)志unsigned char code dofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,

36、0x6d,0x7d,0x07,0x7f,0x6f;/ 顯示段碼值09unsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分別對應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsigned char TempData8; /存儲顯示值的全局變量void DelayUs2x(unsigned char t);/us級延時函數(shù)聲明 void DelayMs(unsigned char t); /ms級延時void Display(unsigned char FirstBit,unsigned char Num);/數(shù)碼管顯示函

37、數(shù)unsigned char KeyScan(void);/鍵盤掃描void Init_Timer0(void);/定時器初始化void displaytime(void);/時間顯示函數(shù)聲明void displaydate(void);/日期顯示函數(shù)聲明void displatzhoumiao(void);/周秒顯示函數(shù)聲明/*- 主函數(shù)-*/void main (void)unsigned char num,displaynum; Init_Timer0();Ds1302_Init();/Ds1302_Write_Time();while (1) /主循環(huán)num=KeyScan(); /按

38、鍵掃描switch(num)case 1:displaynum+; if(displaynum=3) displaynum=0;break;case 2: time_buf11+;if(time_buf11=100)time_buf11=0; Ds1302_Write_Time();break; /正常日期 年 加1case 3: time_buf14+;if(time_buf14=24)time_buf14=0; Ds1302_Write_Time();break; /正常時間 小時 加1case 4: time_buf11-;if(time_buf11=0)time_buf11=99; D

39、s1302_Write_Time();break; /正常日期 年 減1case 5:time_buf15+;if(time_buf15=60)time_buf15=0; Ds1302_Write_Time();break;/分加1case 6: time_buf12+;if(time_buf12=13)time_buf12=1; Ds1302_Write_Time();break; /正常日期 月 加1case 7: break;case 8: time_buf13+;if(time_buf13=32)time_buf13=1; Ds1302_Write_Time();break; /正常日

40、期 日 加1default: break;if(ReadTimeFlag=1) ReadTimeFlag=0; Ds1302_Read_Time();if(displaynum=0) /顯示時間displaytime(); else if(displaynum=1)/顯示日期displaydate();else if(displaynum=2)/顯示周秒displatzhoumiao(); /*- uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的圍是 0255 這里使用晶振12M,精確延時請使用匯編,大致延時 長度如

41、下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的圍是 0255 這里使用晶振12M,精確延時請使用匯編-*/void DelayMs(unsigned char t) while(t-) /大致延時1mS DelayUs2x(245); DelayUs2x(245); /*- 顯示函數(shù),用于動態(tài)掃描數(shù)碼管 輸入?yún)?shù) FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數(shù)碼管開始顯示 如輸

42、入0表示從第一個顯示。 Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2-*/void Display(unsigned char FirstBit,unsigned char Num) static unsigned char i=0; DataPort=0; /清空數(shù)據(jù),防止有交替重影 LATCH1=1; /段鎖存 LATCH1=0; DataPort=dofly_WeiMai+FirstBit; /取位碼 LATCH2=1; /位鎖存 LATCH2=0; DataPort=TempDatai; /取顯示數(shù)據(jù),段碼 LATCH1=1; /段鎖存 LATCH1=0; i+; if(i=Num) i=0;/*- 定時器初始化子程序-*/void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響 /TH0=0x00; /給定初值 /TL0=0x00; EA=1; /總中斷打開 ET0=1; /定時器中斷打開 TR0=1; /定時器開關(guān)打開/*- 定時器中斷子程序-*/void Timer0_isr(void) interrupt 1 static unsigned int num; TH0=(65536-2000)/256; /重新賦值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論