數(shù)字萬年歷畢業(yè)設(shè)計(jì)綜述_第1頁
數(shù)字萬年歷畢業(yè)設(shè)計(jì)綜述_第2頁
數(shù)字萬年歷畢業(yè)設(shè)計(jì)綜述_第3頁
數(shù)字萬年歷畢業(yè)設(shè)計(jì)綜述_第4頁
數(shù)字萬年歷畢業(yè)設(shè)計(jì)綜述_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、昆山登云科技職業(yè)學(xué)院畢業(yè)論文編號(hào):論文題目教學(xué)系:專業(yè)班級(jí):學(xué)生姓名: 指導(dǎo)教師: 2014年4 月22 日摘要隨著科技的快速發(fā)展,時(shí)間的流逝,至從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究, 不斷創(chuàng)新紀(jì)錄。美國DALLAS公司推出的具有涓細(xì)電流充電能的低功耗實(shí)時(shí)時(shí)鐘電路 DS1302它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能, 而且DS1302的使用壽命長,誤差小。對(duì)于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同 時(shí)顯示年、月、日、周日、時(shí)、分、秒和溫度等信息,還具有時(shí)間校準(zhǔn)等功能。該電路采 用AT89S52單片機(jī)作為核心,功耗小,能在 3V的低壓工作,電壓可選用35V電

2、壓供電 綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的電子萬年歷設(shè)計(jì),可以顯示年月日時(shí)分秒及周 信息,具有可調(diào)整日期和時(shí)間功能。在設(shè)計(jì)的同時(shí)對(duì)單片機(jī)的理論基礎(chǔ)和外圍擴(kuò)展知識(shí)進(jìn) 行了比較全面準(zhǔn)備。在硬件與軟件設(shè)計(jì)時(shí),沒有良好的基礎(chǔ)知識(shí)和實(shí)踐經(jīng)驗(yàn)會(huì)受到很大限 制,每項(xiàng)功能實(shí)現(xiàn)時(shí)需要那種硬件,程序該如何編寫,算法如何實(shí)現(xiàn)等,沒有一定的基礎(chǔ) 就不可能很好的實(shí)現(xiàn)。關(guān)鍵詞:萬年歷時(shí)間溫度單片機(jī)液晶顯示目錄1方案論證31.1單片機(jī)芯片的選擇方案和論證 31.2顯示模塊選擇方案和論證31.3時(shí)鐘

3、芯片的選擇方案和論證31.4電路設(shè)計(jì)最終方案決定42系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn) 52.1電路設(shè)計(jì)框圖52.2系統(tǒng)硬件概述 52.3單片機(jī)主控制模塊的設(shè)計(jì)52.3.1時(shí)鐘電路模塊的設(shè)計(jì) 62.3.2電路原理及說明72.3.3顯示模塊的設(shè)計(jì)83系統(tǒng)的軟件設(shè)計(jì)93.1 程序流程框圖 94測(cè)試與結(jié)果分析 114.1硬件測(cè)試114.2軟件測(cè)試114.3測(cè)試結(jié)果分析與結(jié)論114.3.1測(cè)試結(jié)果分析 114.3.2測(cè)試結(jié)論115 proteus 軟件仿真125.1Proteus ISIS 簡介125.2Proteus 運(yùn)行流程135.3Proteus 功能仿真 136課程設(shè)計(jì)總結(jié)與致謝 16參考文獻(xiàn)17附錄一:系

4、統(tǒng)電路圖18附錄二:系統(tǒng)程序 191緒論1.1選題的依據(jù)及意義單片機(jī)應(yīng)用技術(shù)迅速發(fā)展,在我們生活的各個(gè)領(lǐng)域,無論工業(yè)發(fā)展中還是現(xiàn)實(shí)生活中 都離不開它,它是集CPU,RAM,RO定時(shí),計(jì)數(shù)和多接口于一體的微控制器。它體積小,成 本低,功能強(qiáng)大,廣泛應(yīng)用于只能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。51系列單片機(jī)是各種單片機(jī)中最具典型和最有代表性的一種。通過這次畢業(yè)設(shè)計(jì)可以讓我提升學(xué)習(xí),設(shè)計(jì),開發(fā)軟硬件的 能力。電子萬年歷的設(shè)計(jì)就是建立在單片機(jī)的基礎(chǔ)上,它是應(yīng)用非常廣泛的日常計(jì)時(shí)工具, 而且顯示清晰直觀,走時(shí)準(zhǔn)確,可以進(jìn)行夜視。數(shù)字顯示的日歷鐘已經(jīng)越來越流行,特別 是在家庭居室,辦公室,車站和廣場(chǎng)等使用,壁掛式LED

5、數(shù)碼顯示的日歷鐘逐漸受到人們的歡迎。隨著科學(xué)技術(shù)的快速發(fā)展,時(shí)間的流逝,從擺鐘到現(xiàn)在的電子鐘,人類不斷的研究, 不斷創(chuàng)新紀(jì)錄。美國DALLAS公司推出的具有涓流電流充電能的低功耗實(shí)時(shí)時(shí)鐘電路 DS1302. 它可以對(duì)年,月,日,周,時(shí),分,秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302 的使用壽命長,誤差小。對(duì)于數(shù)字電子萬年歷采用直觀的數(shù)字顯示, 可以同時(shí)顯示年,月, 日,周,時(shí),分,秒和溫度等信息,還具有時(shí)間校準(zhǔn)等功能。該電路采用AT89C52單片機(jī)作為核心,功能小,能在3V的低壓工作,電壓可選用35V電壓供電。綜上所述此萬年歷具有讀取方便,顯示直觀,功能多樣,電路簡潔,成本低廉等諸

6、多 優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有管擴(kuò)大市場(chǎng)前景,值得我們進(jìn)入深入的研究和 了解。意義:(1)通過設(shè)計(jì)提高對(duì)單片機(jī)的認(rèn)識(shí),進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理。(2)通過設(shè)計(jì)、制作提高焊接、布局、電路檢查能力;(3)通過實(shí)際程序設(shè)計(jì)和調(diào)試,逐步掌握模塊化程序設(shè)計(jì)方法和調(diào)試技術(shù),提高軟 件設(shè)計(jì)、調(diào)試能力;(4)通過完成一個(gè)實(shí)際電子產(chǎn)品從電路設(shè)計(jì)、程序開發(fā)、系統(tǒng)調(diào)試的完整過程,熟 悉以單片機(jī)核心的應(yīng)用系統(tǒng)開發(fā)的全過程,掌握硬件電路設(shè)計(jì)的基本方法和技術(shù),掌握相 關(guān)電路參數(shù)的計(jì)算方法。通過此畢業(yè)課題的設(shè)計(jì),加深對(duì)理論知識(shí)的理解,學(xué)會(huì)將學(xué)習(xí)的理論知識(shí)在實(shí)際中運(yùn) 用,培養(yǎng)動(dòng)手能力和解決實(shí)際問題的

7、能力,為今后從事相關(guān)工作打下基礎(chǔ)1.2國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢(shì)隨著科學(xué)技術(shù)的發(fā)展,以前的年歷已發(fā)展成現(xiàn)在的電子萬年歷,他一開始是采用數(shù)字 電路實(shí)現(xiàn)的,電路復(fù)雜,精確度差,每天都需要調(diào)時(shí),由于數(shù)字集成電路的發(fā)展和石英晶 體振蕩器的廣泛應(yīng)用,使得它的電路越來越簡單,精確度越來越高,現(xiàn)在的電子萬年歷一一 般都是集成芯片和軟件結(jié)合實(shí)現(xiàn),電路簡單,制作方法簡便,給人們生產(chǎn)生活帶來了極大 的便利,它已成為我們生活中不可缺少的家居用品。3二十一世紀(jì)的今天,最具有代表性的計(jì)時(shí)產(chǎn)品就是電子萬年歷,它是近代世界鐘表業(yè) 界的第三次革命。前兩次革命是擺和擺輪游絲的發(fā)明,以及石英晶體振蕩器的應(yīng)用,第三 次革命就是單片機(jī)

8、數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用(電子萬年歷),使得從原來傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期,星期, 溫度以及其他日常附屬信息的顯示功能,它更符合消費(fèi)者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計(jì)時(shí)業(yè)界跨越性的進(jìn)步。電子萬年歷的發(fā)展趨勢(shì)將會(huì)朝著功能多,讀取操作簡單,顯示更加直觀,電路更加簡 潔,成本越來越低,滿足大部分人的要求。隨著國內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器 及其外圍芯片有了迅速的發(fā)展。集成技術(shù)的最新發(fā)展之一就是將CPU和外圍芯片,如程序存儲(chǔ)器,數(shù)據(jù)存儲(chǔ)器,并行,串行 I/O 口,定時(shí)/計(jì)數(shù)器,中斷控制器及其他控制器件集 成在一個(gè)芯片中,支撐

9、單片計(jì)算機(jī)。而近年來推出的一些高檔單片機(jī)還包括有許多特殊功 能的單元,如A/DQ/A轉(zhuǎn)換器,調(diào)制解調(diào)器,鎖相環(huán),浮點(diǎn)運(yùn)算單元等。因此只要外加一 些擴(kuò)展電路及必要的通道接口就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng),如數(shù)據(jù)采集系統(tǒng),自動(dòng)測(cè) 試系統(tǒng)等。1.3本課題研究內(nèi)容設(shè)計(jì)一個(gè)基于單片機(jī)多功能的電子萬年歷。單片機(jī)最為本設(shè)計(jì)的核心,實(shí)現(xiàn)時(shí)鐘日歷 的顯示:用1602顯示月、日、星期、時(shí)、分、秒,用 DS1302作為該設(shè)計(jì)的實(shí)時(shí)時(shí)鐘芯片2系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)2.1電路設(shè)計(jì)框圖系統(tǒng)原理圖2.2系統(tǒng)硬件概述本電路是由AT89S52單片機(jī)為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時(shí)鐘電路由DS1302提供

10、,它是一種高性能、低功耗、帶 RAM的實(shí)時(shí)時(shí)鐘電路,它 可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPUS行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信 號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31*8的用于臨時(shí)性存放數(shù)據(jù)的 RAM寄存器??僧a(chǎn)生年、 月、日、周日、時(shí)、分、秒,具有使用壽命長,精度高和低功耗等特點(diǎn),同時(shí)具有掉電自 動(dòng)保存功能;溫度的采集由DS18B20勾成;顯示部份由LCD液晶顯示屏顯示。2.3單片機(jī)主控制模塊的設(shè)計(jì)AT89S52 單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O 口 P0,P1,P2,P3, MCS-

11、51單片機(jī) 共有4個(gè)8位的I/O 口( P0 P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。單片機(jī)的最小系統(tǒng)如下圖所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào) 電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端 在片內(nèi)它是振蕩器倒相放大器的輸出。第 9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠 上電復(fù)位電路,20引腳為接地端,40引腳為電源端。 如圖2所示:lilTl-JTdJsrB PzsN .二-ilTu0 喑K1Fdl$4J:-tlQeKFls主也i空 4JwllJi.iil*1 Ml噸2饒g+4794TOK一LCD液晶顯示

12、屏顯示模塊3系統(tǒng)的軟件設(shè)計(jì)3.1程序流程框圖圖5主程序流程圖4測(cè)試與結(jié)果分析4.1硬件測(cè)試電子萬年歷的電路系統(tǒng)較大,對(duì)于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出 于一處的錯(cuò)誤,則會(huì)對(duì)檢測(cè)造成很大的不便,而且電路的交線較多,對(duì)于各種鋒利的引腳 要注意處理,否則會(huì)刺被帶有包皮的導(dǎo)線,則會(huì)對(duì)電路造成短路現(xiàn)象。在本成電子萬年歷的設(shè)計(jì)調(diào)試中遇到了很多的問題?;叵脒@些問題只要認(rèn)真多思考都 是可以避免的,以下為主要的問題:(1)LCD液晶顯示屏顯示部分已經(jīng)連在最小系統(tǒng)上,節(jié)省了不少時(shí)間和精力。(2)對(duì)萬年歷修改時(shí)間或日期時(shí),有時(shí) LCD液晶顯示屏被屏蔽掉,造成不亮現(xiàn)象。解決:根據(jù)儀器的測(cè)試,發(fā)現(xiàn)電路的驅(qū)

13、動(dòng)能力不足,最后在DS1302時(shí)鐘芯片的/CS、SCLK RET端接入5.1K的上拉電阻后,電路的驅(qū)動(dòng)能力才能滿足,即可解決不亮現(xiàn)象。4.2軟件測(cè)試電子成年歷是多功能的數(shù)字型,可以看當(dāng)前日期,時(shí)間。電子成年歷功能很多,所以對(duì) 于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時(shí)出現(xiàn)了相對(duì)較多的問題。最后經(jīng)過多次 的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中遇到的主 要問題是:燒入程序后,LCD液晶顯示屏顯示亮度不好。解決:一遍旋轉(zhuǎn)10K歐的滑動(dòng)變阻器,一遍觀看LCD顯示屏,知道看到合適的亮度為 止。4.3測(cè)試結(jié)果分析與結(jié)論4.3.1測(cè)試結(jié)果分析1.在測(cè)試中遇到LCD液晶顯示屏

14、為不顯示時(shí),首先使用試測(cè)儀對(duì)電路進(jìn)行測(cè)試,觀察是 否存在漏焊,虛焊,或者元件損壞,滑動(dòng)變阻器器沒有調(diào)好:查看燒寫的程序是否正確無誤, 對(duì)程序進(jìn)行認(rèn)真修改。4.3.2測(cè)試結(jié)論經(jīng)過多次的反復(fù)測(cè)試與分析,可以對(duì)電路的原理及功能更加熟悉,同時(shí)提高了設(shè)計(jì)能力 與及對(duì)電路的分析能力。同時(shí)在軟件的編程方面得到更到的提高,對(duì)編程能力得到加強(qiáng),同時(shí)對(duì)所學(xué)的知識(shí)得到很大的提高與鞏固。5 Proteus軟件仿真5.1Proteus ISIS 簡介Proteus ISIS 是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于 Win dows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路

15、。該軟件的特點(diǎn)是:(1) 全部滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的 優(yōu)勢(shì)。(2) 具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、 RS-232動(dòng)態(tài)仿真、I2 C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬 儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。(3) 目前支持的單片機(jī)類型有:ARM系列、68000系列、8051系列、AVR系列、PIC12 系列、PIC16系列、PIC18系列、Z80系列、HC1係列以及各種外圍芯片。(4) 支持大量的存儲(chǔ)器和外圍芯片??傊?,該軟件是一款集單片機(jī)和 SPICE分析于一身的仿真軟件,功能極其強(qiáng)大

16、,可仿真ARM 51、AVR PICoProteus啟動(dòng)畫面:SDESIGIM1 5UITEElectronics DesignFrom ConceptTa CompletionISIS Prossional v7.1 SF2- VLabceri Ehctronics 1989-2007圖7 Proteus啟動(dòng)畫面5.2Proteus運(yùn)行流程Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的 Win dows界面,如圖所示。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì) 象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口。運(yùn)行Proteus程序后,

17、進(jìn)入軟件的主界面。通過左側(cè)工具欄中的P(從庫中選擇元件命 令)命令,在Pick Devices左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置元件并調(diào)整方向 和位置以及參數(shù)設(shè)置,最后進(jìn)行連線。Proteus ISIS 的工作界面:5o - oPHIVRXDBE Fjsrri pjj&wT pj.TrKFFDlkfADD FD.VAD1FDLWADtM冒AW POJTDTFZJJAE FZ.WAS FZA-iaP2禪懾 P2SA13 FZjmU FZTW15尺”1冷卜:MP: 心 ,i?wrXTAL1lKTALZ2DUF lIFEkIRST9CLKCl1E1 :EnrPSEH ME EAP1J1TZPl

18、.lfTZEKP12PULW1L8ProteusISIS的工作界面5.3Proteus功能仿真Proteus仿真效果最后載入hex文件后可以進(jìn)行模擬仿真,可以全速運(yùn)行也可以單步調(diào)試運(yùn)行IkII1圖9運(yùn)行按鍵上電后后LED顯示:a |*J a-* 口寸 gz E ILLIOOQQOOCia2008/06/30 Ueekl10:20;S 8 UJ(Jj g口 L CM E 寸 9 Z K LJJ QCiCtQaQCiCi圖11.M01SLtT2008/06/39 Ueekl:20:5S夠 8蛍(ngolcmct)寸 sg ii (2 uj DaaaaaiDa圖13調(diào)節(jié)日期:圖14=N1016L 二

19、- -= 訂 EXLCDJ調(diào)節(jié)月份:LMU:I bL圖15LODI2608/39 Weekl10:20:58siiuSESSSSS調(diào)節(jié)年份:圖16/06/30 Week 110:20舟8itfl Qi |jj0CO Q gJ OlCme 分 ungz on QQDoaaaa圖17點(diǎn)擊確定鍵顯示: LIVIU-I DL2098/06/30 Week!16:21:00S5823SSS圖18按鍵功能自上而下依次為:選擇修改項(xiàng)鍵、增大鍵、減小鍵、確定鍵。圖196課程設(shè)計(jì)總結(jié)制作這次課程設(shè)計(jì)一切都是從零開始,從最簡單的畫流程圖起步,這次課程設(shè)計(jì)可 以圓滿完成,跟單片機(jī)課程里面的課外作業(yè)是離不開的。這次課

20、程設(shè)計(jì)從開始到制作成功 前后超過了一個(gè)星期。當(dāng)電子萬年歷可以成功實(shí)現(xiàn)時(shí),那種激動(dòng)和喜悅只有自己可以體會(huì)。在整個(gè)設(shè)計(jì)過程中,充分發(fā)揮人的主觀能動(dòng)性,自主學(xué)習(xí),學(xué)到了許多沒學(xué)到的知識(shí)。較好的完成了設(shè)計(jì),達(dá)到了預(yù)期的目的,完了最初的設(shè)想。對(duì)電路的設(shè)計(jì)、布局要先有一 個(gè)好的構(gòu)思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時(shí)遇到了很 多的問題,經(jīng)過靜下心來思考,和同學(xué)討論,理清了思路,反而得心應(yīng)手。在此次設(shè)計(jì)中, 知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我的耐心,做 什么事都在有耐心。此次課程設(shè)計(jì)中學(xué)到了很多很多東西,這是最重要的??傊?,此次課 設(shè)使我的能力得到了

21、全方位的提高,使得我的操作能力和專業(yè)技能都有了很大的提高。參考文獻(xiàn)1 劉勇 編 數(shù)字電路 電子工業(yè)出版社20042 陳正振編電子電路設(shè)計(jì)與制作廣西交通職業(yè)技術(shù)學(xué)院信息工程系20073 楊子文編單片機(jī)原理及應(yīng)用西安電子科技大學(xué)出版社20064 王法能編單片機(jī)原理及應(yīng)用 科學(xué)出版社2004附錄一:系統(tǒng)電路圖A9+QQaQaaa mLd呂 AAAs_0-fr_EPO w s maJs內(nèi) 3 a sS氏 OJ OJ唱2 圉 92 HssL晝鬲g oi. OXlTEdaxws?SLmsd *看& E孑Ed 二? OLsnEd BWL iff3a saw 豈 d 曹豈d 寸 avxg 晝宦 LOWEs,m

22、 LU *l CMI E 寸 S 9 I-f& 5: &ssaa3L-eLLIw!-i 亠 T JOExff ro 上附錄二:系統(tǒng)程序#i nclude #include vintrins.h#include LCD1602.h#include DS1302.h#defi ne uint un sig ned int實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 實(shí)時(shí)時(shí)鐘復(fù)位線引腳#defi ne uchar un sig ned charsbit DS1302_CLK = P1A7;/sbit DS1302_IO = PM6;/sbit DS1302_RST = PM5;/sbit ACC0 = A

23、CCA0;sbit ACC7 = ACCA7;char hide_sec,hide_mi n,hide_hour,hide_day,hide_week,hide_ mon th,hide_year; / 分,時(shí)到日,月,年位閃的計(jì)數(shù)sbit Set = P2A0;/sbit Up = P2A1;/sbit Dow n =卩2八2;/sbit out = P2A3;/模式切換鍵加法按鈕減法按鈕立刻跳出調(diào)整模式按鈕char don e,co un t,temp,flag,up_flag,dow n_flag;uchar TempBuffer5,week_value2; void show_time

24、(); / 液晶顯示程序1602液晶顯示部分子程序*/Port Defin itio ns*sbit LcdRs=P2A5;*sbit LcdRw =卩2八6;P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口sbit LcdEn=卩2八7;sfr DBPort= 0x80;/內(nèi)部等待函數(shù)*un sig ned char LCD_Wait(void)LcdRs=0;LcdRw=1; _nop_();LcdE n=1; _nop_();LcdE n=0;return DBPort; /向LCD寫入命令或數(shù)據(jù)*#defi ne LCD_COMMAND0/ Comma nd#d

25、efi ne LCD_DATA1/ Data#defi ne LCD_CLEAR_SCREEN01 / 清屏#defi ne LCD_HOMING 0x02/光標(biāo)返回原點(diǎn)void LCD_Write(bit style, un sig ned char in put)LcdE n=O;LcdRs=style;LcdRw=O;_nop_();DBPort=i nput;_nop_(); 注意順序LcdEn=1;LcdEn=0;_nop_();注意順序_nop_();LCD_Wait();/設(shè)置顯示模式#defi ne LCD_SHOW#defi ne LCD_HIDE#defi ne LCD_C

26、URSOR#defi ne LCD_NO_CURSOR#defi ne LCD_FLASH#defi ne LCD_NO_FLASH0x04 /顯示開0x00 /顯示關(guān)0x02/顯示光標(biāo)0x00 / 無光標(biāo) 0x01 /光標(biāo)閃動(dòng)0x00 /光標(biāo)不閃動(dòng)*/設(shè)置輸入模式#defi ne LCD_AC_UP#defi ne LCD_AC_DOWN#defi ne LCD_MOVE#defi ne LCD_NO_MOVE0x020x00/ default0x01/ 畫面可平移0x00 /defaultvoid LCD_SetDisplay(unsigned char DisplayMode) LCD_

27、Write(LCD_COMMAND, 0x08|DisplayMode); *void LCD_Set In put( un sig ned char In putMode) LCD_Write(LCD_COMMAND, 0x04|I nputMode);/初始化LCD*void LCD_I nitial()LcdE n=0;LCD_Write(LCD_COMMAND,0x38);8位數(shù)據(jù)端口 ,2 行顯示,5*7 點(diǎn)陣LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);開啟顯示,無光標(biāo) LCD_Write(LC

28、D_COMMAND, LCD_CLEAR_SCREEN)清 屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);/AC 遞增,畫面不動(dòng)/液晶字符輸入的位置*void GotoX Y(un sig ned char x, un sig ned char y) if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1) LCD_Write(LCD_COMMAND,0x80|(x-0x40); /將字符輸出到液晶顯示void Print(un sig ned char *str) while(*str!=0)LCD_Write(LCD_DATA,*

29、str);st r+;/*DS1302日寸鐘部分子程序 */typedef struct _SYSTEMTIMEun sig ned char Second;un sig ned char Minu te;un sig ned char Hour;un sig ned char Week;un sig ned char Day;un sig ned char Mon th;un sig ned char Year;un sig ned char DateStri ng11;un sig ned char TimeStri ng9; SYSTEMTIME; /定義的時(shí)間類型 SYSTEMTIME

30、 Curre ntTime;#defi ne AM(X) X#defi ne PM(X) (X+12)II轉(zhuǎn)成24小時(shí)制#defi ne DS1302_SECOND0x80/時(shí)鐘芯片的寄存器位置,存放時(shí)間#defi ne DS1302_MINUTE0x82#defi ne DS1302_HOUR0x84#defi ne DS1302_WEEK0x8A#defi ne DS1302_DAY0x86#defi ne DS1302_MONTH 0x88#defi ne DS1302_YEAR0x8Cvoid DS1302I nputByte(u nsig ned char d)II實(shí)時(shí)時(shí)鐘寫入一字節(jié)

31、(內(nèi)部函數(shù)) un sig ned char i;ACC = d; for(i=8; i0; i-)DS1302_IO = ACC0;II相當(dāng)于匯編中的RRCDS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; unsigned char DS1302OutputByte(void)/ 實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù)) un sig ned char i; for(i=8; i0; i-) ACC = ACC 1;/相當(dāng)于匯編中的 RRCACC7 = DS1302O; DS1302_CLK = 1;DS1302_CLK = 0; return(ACC); vo

32、id Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr: DS1302 地址,ucData:要寫的數(shù)據(jù) DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302I nputByte(ucAddr);/ 地址,命令DS1302InputByte(ucDa);/ 寫 1Byte 數(shù)據(jù)DS1302_CLK = 1;DS1302_RST = 0;/讀取DS1302某地址的數(shù)據(jù)地址,命令讀1Byte數(shù)據(jù) un sig ned char Read1302( un sig ned char uc

33、Addr) un sig ned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;/DS1302In putByte(ucAddr|0x01);/ucData = DS1302OutputByte();/DS1302_CLK = 1;DS1302_RST = 0;return(ucData);void DS1302_GetTime(SYSTEMTIME *Time) /獲取時(shí)鐘芯片的時(shí)鐘數(shù)據(jù)到自定義的結(jié)構(gòu) 型數(shù)組un sig ned char ReadValue;ReadValue = Read1302(DS1302_SECON

34、D);Time-Seco nd = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time-Mi nute = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_HOUR);Time-Hour = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_DAY);Time-Day = (ReadValue&0x70)4)

35、*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time-Week = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MONTH);Time- Mon th = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_YEAR);Time-Year = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);void DateToS

36、tr(SYSTEMTIME *Time) / 將時(shí)間年,月,日,星期數(shù)據(jù)轉(zhuǎn)換成液晶顯示字 符串,放到數(shù)組里DateString if(hide_year2)/這里的if,else語句都是判斷位閃爍,2就不顯示,輸出字符串為2007/07/22 Time-DateStri ng0 = 2;Time-DateStri ng1 = 0;Time-DateStri ng2 = Time-Year/10 + 0;Time-DateStri ng3 = Time-Year%10 + 0;else Time-DateStri ng0 = ; Time-DateStri ng1=;Time-DateStri

37、ng2 = ; Time-DateStri ng3 = ;Time-DateStri ng4 = /;if(hide_mo nthDateStri ng5 = Time-Mo nth/10 + O;Time-DateStri ng6 = Time- Mon th%10 + 0;else Time-DateStri ng5 = ; Time-DateStri ng6 = ;Time-DateStri ng7 = /;if(hide_dayDateStri ng8 = Time-Day/10 + 0;Time-DateStri ng9 = Time-Day%10 + 0;elseTime-Date

38、Stri ng8 = ;Time-DateStri ng9 = ;if(hide_weekWeek%10 + 0; /星期的數(shù)據(jù)另外放到 week_value數(shù)組里,跟年,月,日的分開存放,因?yàn)榈纫幌乱谧詈箫@示else week_value0 = ;week_value1 = 0;Time-DateString10 = 0; /字符串末尾加0,判斷結(jié)束字符void TimeToStr(SYSTEMTIME *Time) / 將時(shí),分,秒數(shù)據(jù)轉(zhuǎn)換成液晶顯示字符放到數(shù)組 TimeStri ng; if(hide_hourTimeStri ng0 = Time-Hour/10 + 0;Time-T

39、imeStri ng1 = Time-Hour%10 + 0;else Time-TimeStri ng0 = ;Time-TimeStri ng1 = ;Time-TimeStri ng2=:;if(hide_mi nTimeStri ng3 = Time-Mi nute/10 + 0;Time-TimeStri ng4 = Time-Mi nu te%10 + 0;else Time-TimeStri ng3 = ;Time-TimeStri ng4 = ; Time-TimeStri ng5=:;if(hide_secTimeStri ng6 = Time-Seco nd/10 + 0;

40、Time-TimeStri ng7 = Time-Seco nd%10 + 0; elseTime-TimeStri ng6 = ;Time-TimeStri ng7 = ; Time-DateStri ng8 = 0; void Ini tial_DS1302(void) /時(shí)鐘芯片初始化 un sig ned char Seco nd=Read1302(DS1302_SEC0ND);if(Seco nd&0x80)/Write1302(0x8e,0x00); /Write1302(0x8c,0x07); /判斷時(shí)鐘芯片是否關(guān)閉寫入允許以下寫入初始化時(shí)間日期:07/07/25.星期:3.時(shí)間

41、:23:59:55Write1302(0x88,0x07);Write1302(0x86,0x25);Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);Write1302(0x80,0x55);Write1302(0x8e,0x80); /禁止寫入void Delay1ms( un sig ned int count)un sig ned int i,j;for(i=0;ico un t;i+)for(j=0;j0;delay-)for(i=0;i0x59) / 超過 59 秒,清零temp=0;break;case

42、2:temp=Read1302(DS1302_MINUTE); / 讀取分?jǐn)?shù)temp=temp+1; / 分?jǐn)?shù)力卩 1up_flag=1;if(temp0x59) /超過 59 分,清零temp=0;break;case 3:temp=Read1302(DS1302_HOUR); / 讀取小時(shí)數(shù) temp=temp+1; / 小時(shí)數(shù)加 1 up_flag=1;if(temp0x23) / 超過23小時(shí),清零temp=0; break;case 4:temp=Read1302(DS1302_WEEK); / temp=temp+1; / 星期數(shù)加 1 up_flag=1;if(temp0x7)t

43、emp=1; break;case 5:temp=Read1302(DS1302_DAY); / temp=temp+1; / 日數(shù)力卩 1 up_flag=1;if(temp0x31)temp=1; break;case 6:temp=Read1302(DS1302_MONTH); / temp=temp+1; / 月數(shù)加 1 up_flag=1;if(temp0x12)temp=1; break;case 7:temp=Read1302(DS1302_YEAR); / temp=temp+1; / 年數(shù)加 1 up_flag=1;if(temp0x85) temp=0; break;default:break; while(Up=0); / /讀取星期數(shù)讀取日數(shù)讀取月數(shù)讀取年數(shù)void Dow nkey()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論