




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、陳 偉 鋒e _ mail:943485595聯(lián)系電話:187 5057 8216聯(lián)系地址:泉州理工職業(yè)學(xué)院 基于單片機(jī)簡易萬年歷的設(shè)計 設(shè) 計 項(xiàng) 目: 單片機(jī)簡易萬年歷的設(shè)計 專 業(yè): 電子信息工程技術(shù) 年 級: 11級 2012年12月08日 摘 要 本文借助電路仿真軟件protues對基于at89s51單片機(jī)的電子萬年歷的設(shè)計方法及仿真進(jìn)行了全面的闡述。該電子萬年歷在硬件方面主要采用at89c51單片機(jī)作為主控核心,由ds1302時鐘芯片提供時鐘、數(shù)碼管顯示屏顯示、按鍵電路、和復(fù)位電路等部分構(gòu)成,能實(shí)現(xiàn)時鐘日歷顯示的功能,能進(jìn)行年、月、日、時、分、秒的顯示。所有程序編寫完成后,在kei
2、l軟件中進(jìn)行調(diào)試,確定沒有問題后,在proteus軟件中嵌入單片機(jī)內(nèi)進(jìn)行仿真。論文主要研究了數(shù)碼管顯示及時鐘芯片ds1302,74hc154單片機(jī)之間的硬件互聯(lián)及通信,對各種硬件連接方案進(jìn)行了詳盡的比較,在軟件方面對日歷算法也進(jìn)行了論述。研究結(jié)果表明,由于萬年歷的應(yīng)用相當(dāng)普遍,所以其設(shè)計的核心在于硬件成本的節(jié)約軟件算法的優(yōu)化,力求做到物美價廉,才能擁有更廣闊的市場前景。關(guān)鍵詞:單片機(jī);ds1302;7seg、74hc154 目 錄摘 要.緒論.1第一章 系統(tǒng)基本方案選擇和論證.2第一節(jié) 系統(tǒng)基本方案選擇和論證.2 1.1統(tǒng)設(shè)計方案及分析.2 1.2 單片機(jī)芯片的選擇.2 1.3 顯示模塊選擇方
3、案和論證.2 1.4 時鐘芯片的選擇方案和論證.2第二章 電路設(shè)計最終方案決定.3第三章 系統(tǒng)的硬件電路設(shè)計.33.1 電路設(shè)計框圖.43.2 邏輯總框圖.4 3.3系統(tǒng)硬件概述.4 (1)單片機(jī)主控制模塊的設(shè)計.4 (2)時鐘芯片ds1302.6 3.4調(diào)整時間程序設(shè)計.9 3.5復(fù)位電路選擇.10 3.6主要顯示單元電路的設(shè)計.10 3.7 系統(tǒng)硬件設(shè)計所需的器材.11第四章 系統(tǒng)的軟件設(shè)計.11第一節(jié) 程序流程總框圖.11第二節(jié) 部分程序設(shè)計.15第五章 系統(tǒng)測試.165.1 硬件測試.165.2 軟件測試.16第6章 結(jié)論、展望和總結(jié).20致謝詞.21參考文獻(xiàn).22附錄:仿真圖、程序.
4、23緒論 隨著人們生活水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準(zhǔn)數(shù)字計時的消費(fèi)需求也是越來越多。二十一世紀(jì)的今天,最具代表性的計時產(chǎn)品就是電子時鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機(jī)數(shù)碼計時技術(shù)的應(yīng)用,使計時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全
5、自動日期、星期的顯示功能,它更符合消費(fèi)者的生活需求!因此,電子時鐘的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進(jìn)步我國生產(chǎn)的電子時鐘有很多種,總體上來說以研究多功能電子時鐘為主,使萬年歷除了原有的顯示時間,日期等基本功能外,還具有鬧鈴,報警等功能。商家生產(chǎn)的電子萬年歷更從質(zhì)量,價格,實(shí)用上考慮,不斷的改進(jìn)電子時鐘的設(shè)計,使其更加的具有市場。本設(shè)計為軟件,硬件相結(jié)合的一組設(shè)計。在軟件設(shè)計過程中,應(yīng)對硬件部分有相關(guān)了解,這樣有助于對設(shè)計題目的更深了解,有助于軟件設(shè)計?;镜囊私庖恍┲饕骷幕竟δ芎妥饔?。除了采用集成化的時鐘芯片外,還有采用mcu的方案,利用stc89系列單片微機(jī)制成電子電路,采用軟件和硬
6、件結(jié)合的方法,控制led數(shù)碼管輸出,分別用來顯示年、月、日、時、分、秒,其最大特點(diǎn)是:硬件電路簡單,安裝方便易于實(shí)現(xiàn),軟件設(shè)計獨(dú)特,可靠。文介紹了基于stc89c52rc單片機(jī)設(shè)計的電子時鐘。首先我們在緒論中簡單介紹了單片機(jī)的發(fā)展與其在中低端領(lǐng)域中的優(yōu)勢以及課題的開發(fā)意義;接著介紹了stc89c52rc單片機(jī)的硬件結(jié)構(gòu)和本畢業(yè)設(shè)計所要外擴(kuò)的led顯示及其驅(qū)動方法,并在此基礎(chǔ)上實(shí)現(xiàn)了時鐘基本電路的設(shè)計;然后使用單片機(jī)c語言進(jìn)行時鐘程序的設(shè)計,程序采用模塊化結(jié)構(gòu),使得邏輯關(guān)系簡單明了,維護(hù)方便。第1章 系統(tǒng)基本方案選擇和論證1.1系統(tǒng)設(shè)計方案及分析(1) 具有年、月、日、星期、時、分、秒顯示并能進(jìn)
7、行斷電自動保存等功能;(2) 能對時間進(jìn)行調(diào)整設(shè)定;1.2 單片機(jī)芯片的選擇本設(shè)計采用at89s51芯片作為硬件核心,該芯片內(nèi)部具有4kb rom存儲空間,相對于本設(shè)計而言程序空間完全夠用。能在3.6v的超低壓工作,而且與mcs-51系列單片機(jī)完全兼容。1.3 顯示模塊選擇方案和論證方案一: 采用排陣式數(shù)碼管顯示,對于顯示文字比較適合。方案二: 采用led數(shù)碼管動態(tài)掃描,led數(shù)碼管價格雖適中,對于顯示數(shù)字也最合適,而且采用動態(tài)掃描法與單片機(jī)連接時,占用的單片機(jī)口線少。方案三: 采用數(shù)碼管顯示屏,數(shù)碼管的主要特點(diǎn)就是發(fā)光響應(yīng)時間極短(<01s),高頻特性好,單色性好,亮度高、體積小,重量
8、輕,抗沖擊性能好。因此它被廣泛用作數(shù)字儀器儀表、數(shù)控裝置、計算機(jī)的數(shù)顯器件。1.4 時鐘芯片的選擇方案和論證方案一: 直接采用單片機(jī)定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然可以減少時鐘芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時間誤差比較小。所以不采用此方案。方案二:采用ds1302時鐘芯片實(shí)現(xiàn)時鐘,ds130是一種高性能、低功耗的實(shí)時時鐘電路,它可以對年、月、日、日、時、分、秒進(jìn)行計時,工作電壓為2.5v5.5v。因此,本設(shè)計中采用ds1302提供時鐘。第二章電路設(shè)計最終方案決定綜上各模塊的選擇方案與論證,確定最后的主要硬件資源如下:采用at89s51作為
9、主控制系統(tǒng)、ds1302提供時鐘、74hc154作為傳輸、led數(shù)碼管動態(tài)掃描作為顯示為顯示。 第三章 系統(tǒng)硬件電路設(shè)計3.1圖1所示為電子萬年歷電路設(shè)計原理圖,系統(tǒng)由主控制器at89c51、時鐘電路ds1302、顯示驅(qū)動74hc154電路,顯示電路及鍵掃描電路組成。 圖1萬年歷電路原理圖3.2邏輯總框圖: 數(shù)碼管 顯示模塊 at89c51單 片 機(jī)主控系統(tǒng)模塊 ds1302時鐘模塊 開 關(guān)控制 模塊 復(fù)位 電 路 3.3系統(tǒng)硬件概述(1)單片機(jī)主控制模塊的設(shè)計1. 主控制器stc89c52rc at89s52單片機(jī)為40引腳雙列直插芯片,有四個i/o口p0,p1,p2,p3, mcs-51單
10、片機(jī)共有4個8位的i/o口(p0、p1、p2、p3),每一條i/o線都能獨(dú)立地作輸出或輸入。 stc89c52rc單片機(jī)是宏晶科技推出的新一代高速、低功耗、超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時鐘、機(jī)器周期和6時鐘、機(jī)器周期可以任意選擇。單片機(jī)的最小系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,xtal1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,xtal2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端. 如圖-1 所示 如圖-1 at89c
11、51at89s51具有pdip,tqfp和plcc三種封裝形式。上圖就是pdip封裝的引腳排列,有40個引腳,32個外部雙向輸入/輸出(i/o)端口;具有兩個16位可編程定時器;中斷系統(tǒng)是具有6個中斷源、5個中斷矢量、2級中斷優(yōu)先級的中斷結(jié)構(gòu);震蕩器頻率0到33mhz,因此我們在此選用12mhz的晶振是比較合理的;具有片內(nèi)看門狗定時器;具有斷電標(biāo)志pof等等。p0口可作為通用i/o口,但須外接上拉電阻;作為輸出口,每各引腳可吸收8各ttl的灌電流。作為輸入時,首先應(yīng)將引腳置1。p0也可用做訪問外部程序存儲器和數(shù)據(jù)存儲器時的低8位地址/數(shù)據(jù)總線的復(fù)用線。在該模式下,p0口含有內(nèi)部上拉電阻。在fl
12、ash編程時,p0口接收代碼字節(jié)數(shù)據(jù);在編程效驗(yàn)時,p0口輸出代碼字節(jié)數(shù)據(jù)(需要外接上拉電阻)。p1口:8位、雙向i/0口,內(nèi)部含有上拉電阻。p1口可作普通i/o口。輸出緩沖器可驅(qū)動四個ttl負(fù)載;用作輸入時,先將引腳置1,由片內(nèi)上拉電阻將其抬到高電平。p1口的引腳可由外部負(fù)載拉到低電平,通過上拉電阻提供電流。p2口:具有內(nèi)部上拉電阻的8位雙向i/o口。p2口用做輸出口時,可驅(qū)動4各ttl負(fù)載;用做輸入口時,先將引腳置1,由內(nèi)部上拉電阻將其提高到高電平。若負(fù)載為低電平,則通過內(nèi)部上拉電阻向外部輸出電流。cpu訪問外部16位地址的存儲器時,p2口提供高8位地址。當(dāng)cpu用8位地址尋址外部存儲時,
13、p2口為p2特殊功能寄存器的內(nèi)容。p3口:具有內(nèi)部上拉電阻的8位雙向口。p3口用做輸出口時,輸出緩沖器可吸收4各ttl的灌電流;用做輸入口時,首先將引腳置1,由內(nèi)部上拉電阻抬位高電平。若外部的負(fù)載是低電平,則通過內(nèi)部上拉電阻向輸出電流。p3口除了通用i/o口功能外,還有替代功能如表21所示。表21 p3口的第二功能端口引腳各個功能p3.0rxd(串行口輸入端)p3.1txd(串行口輸出端)p3.2int0(外部中斷0請求輸入端,低電平有效)p3.3int1(外部中斷1請求輸入端,低電平有效)p3.4t0(定時/計數(shù)器0計數(shù)脈沖輸入端)p3.5t1(定時/計數(shù)器1計數(shù)脈沖輸入端)p3.6wr(外
14、部數(shù)據(jù)存儲器寫選通信號輸出端,低電平有效)p3.7rd(外部數(shù)據(jù)存儲器讀選通信號輸出端,低電平有效) (2)、時鐘芯片ds13021.ds1302的結(jié)構(gòu)及工作原理 ds1302 是美國dallas公司推出的一種高性能、低功耗、帶ram的實(shí)時時鐘電)路,ds1302可以增加主電源/后背電源雙電源引腳,同時提供了對后背電源進(jìn)行涓細(xì)電流充電的功能。引腳功能及結(jié)構(gòu) 圖中所示出ds1302 的引腳排列,其中vcc1 為后備電源,vcc2 為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運(yùn)行。ds1302 由vcc1 或vcc2 兩者中的較大者供電。當(dāng)vcc2 大于vcc10.2v 時,vcc2 給ds
15、1302供電。當(dāng)vcc2 小于vcc1 時,ds1302 由vcc1 供電。ds1302在任何數(shù)據(jù)傳送時必須先初始化,把rst腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在sclk的上升沿被訪問到。在開始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)行時,在vcc2.5v之前,rst腳必須保持低電平。只有在sclk為低電平時,才能將rst置為高電平。為了提高
16、對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。表2.1 ds1302控制字 ds1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式。其日歷、時間寄存器及其控制字如上表所示,其中奇數(shù)
17、為讀操作,偶數(shù)為寫操作。ds1302在每次進(jìn)行讀、寫程序前都必須初始化,先把sclk端置 “0”,接著把rst端置“1”,最后才給予sclk脈沖;讀/寫時序如下圖4所示。圖5為ds1302的控制字,此控制字的位7必須置1,若為0則不能把對ds1302進(jìn)行讀寫數(shù)據(jù)。對于位6,若對程序進(jìn)行讀/寫時ram=1,對時間進(jìn)行讀/寫時,ck=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時,該位為1;該位為0則表示進(jìn)行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表6為ds1302的日歷、時間寄存器內(nèi)容:“ch”是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,ds1302處于低功耗狀態(tài)
18、;當(dāng)該位為0時,時鐘開始運(yùn)行。“wp”是寫保護(hù)位,在任何的對時鐘和ram的寫操作之前,wp必須為0。當(dāng)“wp”為1時,寫保護(hù)位防止對任一寄存器的寫操作。數(shù)據(jù)輸入輸出(i/o)在控制指令字輸入后的下一個sclk時鐘的上升沿時,數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。如下圖-4所示 圖-4 ds1302讀/寫時序圖 ds1302的寄存器ds1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式,其日歷、時間寄存器及其控制字見表-2。 表-2 ds1
19、302的日歷、時間寄存器 此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 ds1302與ram相關(guān)的寄存器分為兩類:一類是單個ram單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個字節(jié),命令控制字為feh(寫)、ffh(讀)。 ds1302的晶振選用32768hz。如圖-2所示 如圖二 ds1302時鐘模塊3.4調(diào)整時間程序設(shè)計調(diào)整時間用三個調(diào)整按鈕
20、,一個作為設(shè)置時間,分別定義為加按鈕,減按鈕,設(shè)置鈕,還有兩個作為加,減用在調(diào)整時間過程中要調(diào)整的位與別的位應(yīng)該有區(qū)別。按鍵電路的連接如圖-3所示: 圖-3 按鍵電路連接3.5復(fù)位電路的選擇復(fù)位是單片機(jī)的初始化操作。單片機(jī)啟運(yùn)運(yùn)行時,都需要先復(fù)位,其作用是使cpu和系統(tǒng)中其他部件處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。因而,復(fù)位是一個很重要的操作方式。但單片機(jī)本身是不能自動進(jìn)行復(fù)位的,必須配合相應(yīng)的外部電路才能實(shí)現(xiàn)。 復(fù)位電路的基本功能是:系統(tǒng)上電時提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時才撤銷復(fù)位信號,以防電源開 關(guān)或電源插頭分-合過程中引
21、起的抖動而影響復(fù)位。如圖-4所示 如圖-4 rc復(fù)位電路3.6主要顯示單元電路的設(shè)計顯示部分采用普通的共陰數(shù)碼管顯示,采用動態(tài)掃描,以減少硬件電路??紤]到一次掃描15位數(shù)碼管顯示時會出現(xiàn)閃爍情況,故采用動態(tài)掃描,可將數(shù)碼管數(shù)量減少至8位,顯示時采用串行口輸出段碼。如圖-5所示圖-五 數(shù)碼管3.7系統(tǒng)硬件設(shè)計所需的器材at89s51芯片 1個74hc154芯片 1個 數(shù)碼管顯示器 7個ds1302 1個led 4個開關(guān) 4個電阻 10 k 1個 100k 2個導(dǎo)線 若干排阻 1個晶振 12m 1個 32768k 1個電容 30pf 2個點(diǎn)解電容 22uf 1個 第四章、電子萬年歷軟件設(shè)計一、(1
22、)程序流程總框圖 開始 初始化讀、寫日期、時間 分離日期時間顯示值顯示子程序 日期、時間修改子程序 返回 圖(1)程序流程總框圖(2)陽歷程序流程圖圖(2)陽歷流程圖 (3)、時間調(diào)整程序流程圖 圖(3)時間調(diào)整程序流程圖2、 部分程序的設(shè)計 (1)、用at89c51模擬ds1302發(fā)送控制字的時序過程void write_byte(uchar cmd) uchar i=0; for (i=0;i=1;(2)、用at89c51模擬ds1302讀取單字節(jié)數(shù)據(jù)的時序過程uchar read_byte(void) uchar i=0; uchar dat=0; uchar tmp=0; for(i=
23、0;i=1; dat|=(tmp7); return(dat);(3)、用at89c51模擬ds1302讀取單字節(jié)數(shù)據(jù)的完整時序uchar read_ds1302(uchar addr) uchar tmp; ds_rst=0; ds_sclk=0; ds_rst=1; write_byte(addr); tmp=read_byte(); ds_sclk=0; ds_rst=0; return(tmp); (4)、用at89c51模擬ds1302寫單字節(jié)數(shù)據(jù)的完整時序(包括控制字) void write_ds1302( uchar addr, uchar dat) uchar tmp =0;
24、tmp=dat; ds_rst=0; ds_sclk=0; ds_rst=1; write_byte(addr); write _byte(tmp); ds_sclk=0; ds_rst=0; 第五章 系統(tǒng)測試系統(tǒng)調(diào)試主要包括硬件調(diào)試和軟件調(diào)試。硬件調(diào)試的任務(wù)是排除系統(tǒng)的硬件電路故障,包括設(shè)計性錯誤和工藝性故障。軟件調(diào)試是利用開發(fā)工具進(jìn)行在線仿真調(diào)試,除了發(fā)現(xiàn)和解決程序錯誤外,也可以發(fā)現(xiàn)硬件故障。5.1硬件調(diào)試 程序的調(diào)試是采用一個模塊一個模塊地進(jìn)行,首先單獨(dú)調(diào)試各功能子程序,檢驗(yàn)程序是否能夠?qū)崿F(xiàn)預(yù)期的功能等;最后逐步將各子程序聯(lián)接起來總調(diào)。聯(lián)調(diào)需要注意的是,各程序模塊間能否正確傳遞參數(shù),特別
25、要注意各子程序的現(xiàn)場保護(hù)與恢復(fù)。在程序調(diào)試過程當(dāng)中,主要是判斷進(jìn)位的問題。要調(diào)試它在大小月中進(jìn)位會不會出現(xiàn)錯誤,尤其是十六進(jìn)制和十進(jìn)制之間的問題。有時候沒考慮清楚,在運(yùn)算過程當(dāng)中就會經(jīng)常出現(xiàn)錯誤。在顯示部分中,我是把第一行顯示寫好后,再寫第二行,然后第三行,再把這三行顯示結(jié)合在一起。在溫度采集中,要把傳感器采集進(jìn)來的信號經(jīng)過a/d轉(zhuǎn)換后,再進(jìn)行乘法和除法運(yùn)算,bcd碼轉(zhuǎn)換。(1)、按鍵的檢測是通過中斷的辦法來實(shí)現(xiàn),利用按鍵進(jìn)行間調(diào)整。 s1按下則開始設(shè)置時間及日期,同時在第一行最右端顯示被選擇的對象,第一次按下s1時,設(shè)置年份,若按下s3,則是減1操作,按下s2是加1操作,設(shè)置好年后,第二次按
26、下s1時,則是設(shè)置月份,按s3減,按s2則加1,依次循環(huán)下去,則可以將時間和日期設(shè)置完畢,s4是確定鍵,設(shè)置好按下即可保存設(shè)置了。(2)、數(shù)碼管顯示是通過完成仿真器軟件仿真后,就要連接上硬件(數(shù)碼管顯示)電子鐘成品板進(jìn)行硬件調(diào)試。將仿真器通過串行usb端口連接計算機(jī)上,將仿真usb接口接到仿真器,檢查接線是否有誤,確信沒有接錯后,接上電源,打開仿真器的電源開關(guān)。再進(jìn)行仿真器和通信設(shè)置。仿真器和仿真頭設(shè)置正確,并且硬件連接沒有錯誤,出現(xiàn) “硬件仿真”的對話框,并顯示仿真器、仿真usb的型號及仿真器的序列號。表明仿真器初始化正確。(3)、led數(shù)碼管的斷碼錯亂,原因出于沒有認(rèn)真看清a、b 、c等引
27、腳信息。那就要重新排列74hc154的輸出端,相應(yīng)接入led數(shù)碼管,即可解決出現(xiàn)在的斷碼或亂碼。(4)、對萬年歷修改時間或日期時,有時led數(shù)碼管被屏蔽掉,造成不亮現(xiàn)象。那時可根據(jù)儀器的測試,發(fā)現(xiàn)電路的驅(qū)動能力不足,最后在ds1302時鐘芯片的/cs、sclk、ret端接入5.1k的上拉電阻后,電路的驅(qū)動能力才能滿足,即可解決不亮現(xiàn)象。5.2軟件調(diào)試軟件總設(shè)計:主程序首先對系統(tǒng)環(huán)境初始化,設(shè)置定時器t0工作模式為16位定時/計數(shù)器模式,置位總中斷允許位ea,并對鍵盤端口置位,再對數(shù)碼管初始化,ds1302初始化。接著掃描鍵盤,在鍵盤程序里面是對時間、日期及鬧鐘的調(diào)整,最下面是時間的顯示。(1)
28、軟件程序編寫:軟件程序編寫的好壞直接影響著系統(tǒng)運(yùn)行情況的良好。因本程序涉及的模塊較多,所以程序編寫也采用模塊化設(shè)計,c語言具有編寫靈活、移植方便、便于模塊化設(shè)計的特點(diǎn),所以本系統(tǒng)的軟件采用c51編寫。具體程序見附件一:程序 (2)萬年歷歷程序的設(shè)計很簡單,編寫好ds1302讀寫程序和陽歷和時間顯示程序,在主函數(shù)中調(diào)用,很容易就能實(shí)現(xiàn)陽歷和時間的顯示功能。 在編寫程序時,由于沒有掌握好ds1302的讀寫時序,導(dǎo)致ds1302不能正常讀數(shù)。經(jīng)過認(rèn)真分析時序,最后終于編寫出了ds1302的正確程序。如圖-6所示為數(shù)碼管顯示出的時間日期。圖-6 數(shù)碼管顯示時間(3)在isis的原理圖中,右鍵單擊at8
29、9c51將其選中,然后單擊左鍵打開at89c51的edit component 對話框,如圖-7所示。圖-7 edit component 對話框選擇相應(yīng)的.hex文件,再在proteus isis 編輯窗口的file菜單中選擇save design 選項(xiàng),保存設(shè)計,生成.dsn文件。 (4)、pcb繪制和pcb3維顯示圖 pcb繪制 pcb3維顯示圖 第六章 結(jié)論、展望與總結(jié)6.1 結(jié)論通過本次設(shè)計,本系統(tǒng)能完成以下功能:(1)顯示公歷日期功能(年、月、日、時、分、秒以及星期);(2)可通過按鍵調(diào)節(jié)年、月、日、時、分、秒以及星期;(3)可動態(tài)完整顯示年;本設(shè)計硬件電路較簡單,所以器件較少,電
30、路中使用了at89c52單片機(jī)、ds1302時鐘芯片和數(shù)碼管顯示屏,實(shí)現(xiàn)了預(yù)計功能。6.2 展望在本次設(shè)計中仍然存在著不足之處。1、顯示的開始年限是從21世紀(jì)起顯示。2、通過按鍵調(diào)節(jié)年、月、日后,如果不調(diào)節(jié)星期,星期的顯示就會出現(xiàn)與正常的星期不匹配,目前還沒辦法自動校正,只能通過手動調(diào)節(jié)星期,才能使所顯示的星期與正常星期匹配。3、由于未來的陰歷日期是不能準(zhǔn)確預(yù)測出的,所以,陰歷日期這部分沒有弄進(jìn)去。4、由于使用的是c語言進(jìn)行的編程,所以整個程序顯得很臃腫,在現(xiàn)有的程序設(shè)計基礎(chǔ)上,還可以進(jìn)行精簡。5、本設(shè)計的功能還可以在現(xiàn)有基礎(chǔ)上再次擴(kuò)展,還可以添加鬧鈴功能、加蜂鳴器、做音樂鬧鈴、進(jìn)行陰歷換算、
31、使用lcd顯示時間以及整點(diǎn)報時功能等等,還有很大的擴(kuò)展空間。6.3 總結(jié)在這學(xué)期的課程中,收獲知識的同時,還收獲了閱歷,收獲了成熟,通過查找大量資料,請教老師,以及不懈的努力,不僅培養(yǎng)了獨(dú)立思考、 動手制作的能力,在各種其它能力上也都有了提高。更重要的是,我還學(xué)會嵌入式萬年歷課程設(shè)計是一個學(xué)習(xí)新知識、鞏固加深所學(xué)課本理論知識的過程。這次作業(yè)也讓我了解怎么從不同的角度去分析同一個問題,讓我們有更多更廣的思路去處理解題時遇到的難點(diǎn)和要點(diǎn)。從解決問題的過程中也可以熟悉和了解c語言和protues程序的不同用法和功能,而各種原有的模板使得我可以用高效,簡潔的思路、觀點(diǎn)來解題。這樣的探索過程也是很愉悅的
32、,特別是看到自己也能編寫一個起碼有點(diǎn)樣子的仿真程序的時候。這也是以后最實(shí)用的,是最受益匪淺。要面對社會的挑戰(zhàn),只有不斷的自學(xué)、實(shí)踐,再自學(xué)、再實(shí)踐。同時與老師和同學(xué)們的交流過程中,不斷互動學(xué)習(xí),將知識融會貫通。通過自己的努力,做出了一個萬年歷,對以后的學(xué)習(xí)是一個莫大的鼓舞,激起了我的學(xué)習(xí)興趣和開發(fā)創(chuàng)新思維。本次單片機(jī)課程設(shè)計是一個使用protues設(shè)計工具、協(xié)同使用keil編程軟件制作個萬年歷的題目。最后,我完成了這次作業(yè),望老師指正。致謝詞首先感謝鄭老師給我們提供了一個展現(xiàn)自己的舞臺,給我們一次難得煅煉的機(jī)會,使我們的專業(yè)知識和專業(yè)技能相結(jié)合。在此學(xué)期的日子里得到了鄭老師的悉心指導(dǎo),在此向我
33、的老師致以誠摯的謝意。還有感謝在此次作業(yè)中提供相關(guān)技術(shù)幫助的同學(xué),你們的支持和鼓勵使我對這次的作業(yè)完成提高信心和動力,在此深表謝意。同時也要感謝學(xué)校能給我這次機(jī)會去嘗試自己設(shè)計一些東西,使自己所學(xué)專業(yè)知識與實(shí)踐相結(jié)合。也要感謝有關(guān)我參考過的文獻(xiàn)的作者,是他們?yōu)槲姨峁┲R的源泉,使我最終能順利地完成這次課程設(shè)計。這學(xué)期的學(xué)習(xí)生活即將結(jié)束,這篇論文作為我這學(xué)期學(xué)習(xí)的最后一份答卷,交給老師。同時也衷心地祝福同學(xué)寒假快樂!相信未來的人生道路上越走越寬廣,也深深相信在未來的日子里我們將一路攜手前行。這將是我克服困難、不斷前進(jìn)的精神動力。參考文獻(xiàn)1余家春protel 99 se電路設(shè)計實(shí)用教程m中國鐵道出
34、版社,20042黎勝容.51單片機(jī)c語言應(yīng)用開發(fā),北京:北京航空航天大學(xué)出版社.20083譚浩強(qiáng).c語言設(shè)計(第二版)北京。清華大學(xué)出版社,2000.4brian w.kernighan, dennis m,ritchie.徐寶文,李志.c語言設(shè)計語言.20045李飛光.單片機(jī)課程設(shè)計實(shí)例指導(dǎo).北京:北京航空航天大學(xué)出版社,20046李飛光.單片機(jī)課程設(shè)計實(shí)例指導(dǎo).北京:北京航空航天大學(xué)出版社,20047楊子文單片機(jī)原理及應(yīng)用西安電子科技大學(xué)出版社,20068沈紅衛(wèi).單片機(jī)應(yīng)用系統(tǒng)設(shè)計實(shí)例與分析,北京航空航天大學(xué)出版社.20039朱定華,戴汝平單片微機(jī)原理與應(yīng)用m清華大學(xué)出版社,200310陳
35、正振電子電路設(shè)計與制作廣西交通職業(yè)技術(shù)學(xué)院信息工程系,2007附錄一仿真軟件圖附錄二系統(tǒng)程序清單#include #include #ifndef _main_h#define _main_h#define uint unsigned int#define uchar unsigned char/自定義時間結(jié)構(gòu)體typedef struct _system_time uchar year; uchar month; uchar date; uchar hour; uchar min; uchar sec; uchar day; /星期 system_time;#endif#include ma
36、in.h#include delay.h#include ds1302.hsbit add_key =p33;sbit sub_key =p36;#define data p0 /數(shù)據(jù)顯示口#define show p2 /數(shù)碼管選擇端口/共陽極數(shù)碼管段碼表uchar code dis_code =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;uchar g_save_time; /需要保存時間標(biāo)志uchar g_has_set; /修改時間標(biāo)志uchar g_set_flag; /設(shè)定時間標(biāo)志/*函數(shù):指定數(shù)碼管顯示數(shù)據(jù)*參數(shù):
37、_show指定的數(shù)碼管* _data要顯示的數(shù)據(jù)*/void display_num(uchar _show,uchar _data) show = _show; data = dis_code_data; delay_ms(1);/*函數(shù):顯示年、月、日、時、分、秒、星期*參數(shù):str_time要顯示的時間*/void show_time(system_time str_time) uchar tmp = 0; static uchar flash = 10; /用靜態(tài)變量實(shí)現(xiàn)閃爍的效果 display_num(0, 2); /年 display_num(1, 0); tmp = str_t
38、ime.year; if(g_set_flag !=1| flash =0) display_num(2, (tmp/10); display_num(3, (tmp%10); tmp = str_time.month; if(g_set_flag !=2 |flash = 0) if(tmp 9) display_num(4, (tmp/10); /月 display_num(5, (tmp%10); tmp =str_time.date; if(g_set_flag != 3 | flash = 0) if(tmp 9) display_num(6, (tmp/10); /日 displa
39、y_num(7, (tmp%10); tmp = str_time.hour; if(g_set_flag != 4 | flash = 0) if(tmp9) display_num(8, (tmp/10); /時 display_num(9, (tmp%10); tmp = str_time.min; if(g_set_flag != 5 | flash = 0) if(tmp9) display_num(10, (tmp/10); /分 display_num(11, (tmp%10); tmp = str_time.sec; if(g_set_flag != 6 | flash = 0
40、) if(tmp9) display_num(12, (tmp/10); /秒 display_num(13, (tmp%10); tmp = str_time.day; if(g_set_flag != 7 | flash = 0) display_num(14, tmp); /星期 if( flash- = 0) flash = 10; /*函數(shù):掃描鍵盤,修改時間值*參數(shù): str_time原來的時間*返回值:str_time修改后的時間*/system_time scan_key(system_time str_time) if(add_key = 0) g_has_set = 1;
41、switch(g_set_flag) case 1: str_time.year+; break; case 2: str_time.month+; break; case 3: str_time.date+; break; case 4: str_time.hour+; break; case 5: str_time.min+; break; case 6: str_time.sec+; break; case 7: str_time.day+; break; default: break; if(sub_key =0) g_has_set =1; switch(g_set_flag) case 1: str_time.year-; break; case 2: str_time.month-; break; case 3: str_time.date-; break; case 4: str_time.hour-; break; case 5: str_time.min-;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人保財險車險合同范本
- 保理人合同范本
- 勞務(wù)派遣合同范本 司機(jī)
- 包工頭與臨時工人合同范本
- 勞務(wù)合同單包工合同范本
- 企業(yè)合同范本封面
- 勞務(wù)用工結(jié)算合同范本
- 單位采購書合同范本
- 醫(yī)院影像科合同范本
- 與商城簽約合同范本
- 第九屆鵬程杯五年級數(shù)學(xué)競賽初試真題
- 實(shí)驗(yàn)一 外科常用手術(shù)器械課件
- 電梯結(jié)構(gòu)與原理-第2版-全套課件
- 《現(xiàn)代漢語》語音教學(xué)上課用課件
- 采購流程各部門關(guān)系圖
- 《遙感導(dǎo)論》全套課件
- 力士樂工程機(jī)械液壓培訓(xùn)資料(共7篇)課件
- 村光伏發(fā)電申請書
- 降低混凝土路面裂縫發(fā)生率QC小組資料
- 【教師必備】部編版四年級語文上冊第二單元【集體備課】
- 支氣管擴(kuò)張的護(hù)理PPT
評論
0/150
提交評論