基于A(yíng)T89S52的多功能電子萬(wàn)年歷
引言
本文引用地址:http://dyxdggzs.com/article/273681.htm隨著(zhù)生活節奏的日益加快,人們的時(shí)間觀(guān)也越來(lái)越重,同時(shí)對電子鐘表、日歷的需求也隨之提高。因此,研究實(shí)用電子時(shí)鐘及其擴展應用,有著(zhù)非?,F實(shí)的意義,具有很大的實(shí)用價(jià)值。
本系統程序由主程序、中斷服務(wù)函數和多個(gè)子函數構成。主函數主要完成各子函數和中斷函數的初始化。定時(shí)中斷函數主要完成時(shí)鐘芯片的定時(shí)掃描及鍵盤(pán)掃描。時(shí)鐘芯片的讀寫(xiě)函數主要是將時(shí)間、日歷信息讀出來(lái),并把要修改具體值寫(xiě)入時(shí)鐘芯片內部。
系統的硬件設計與電路原理
電路設計框圖
系統硬件概述
本電路是由AT89S52單片機為控制核心,具有在線(xiàn)編程功能、低功耗、能在3V的超低壓工作。時(shí)鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對年、月、日、周日、時(shí)、分、秒進(jìn)行計時(shí),工作電壓為2.5V~5.5V。采用三線(xiàn)接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節的時(shí)鐘信號或RAM數據。DS1302內部有一個(gè)31×8的用于臨時(shí)性存放數據的RAM寄存器??僧a(chǎn)生年、月、日、周日、時(shí)、分、秒,具有使用壽命長(cháng)、精度高和低功耗等特點(diǎn),同時(shí)具有掉電自動(dòng)保存功能。
主控制模塊
單片機主控制模塊的設計
AT89S52單片機為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3,MCS-51單片機共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線(xiàn)都能獨立地作輸出或輸入。
時(shí)鐘電路模塊
時(shí)鐘電路模塊的設計
DS1302的引腳排列如圖3所示,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電;當Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復位/片選線(xiàn),通過(guò)把RST輸入驅動(dòng)置高電平來(lái)啟動(dòng)所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節或多字節數據的傳送手段。

時(shí)鐘電路模塊工作原理
DS1302在每次進(jìn)行讀、寫(xiě)程序前都必須初始化,先把SCLK端置“0”,接著(zhù)把RST端置“1”,最后才給予SCLK脈沖;讀/寫(xiě)時(shí)序如圖4所示。表1為DS1302的控制字,此控制字的位7必須置1,若為0則不能對DS1302進(jìn)行讀寫(xiě)數據。對于位6,若對程序進(jìn)行讀/寫(xiě)時(shí)RAM=1,對時(shí)間進(jìn)行讀/寫(xiě)時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫(xiě)操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫(xiě)操作??刂谱止澘偸菑淖畹臀婚_(kāi)始輸入/輸出的。表2為DS1302的日歷、時(shí)間寄存器內容:“CH”是時(shí)鐘暫停標志位,當該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當該位為0時(shí),時(shí)鐘開(kāi)始運行。“WP”是寫(xiě)保護位,在任何的對時(shí)鐘和RAM的寫(xiě)操作之前,WP必須為0。當“WP”為1時(shí),寫(xiě)保護位防止對任一寄存器的寫(xiě)操作。
DS1302的控制字節
DS1302的控制字如表1所示??刂谱止澋母哂行?位7)必須是邏輯1,如果它為0,則不能把數據寫(xiě)入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節總是從最低位開(kāi)始輸出。
數據輸入輸出(I/O)
在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數據被寫(xiě)入DS1302,數據輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時(shí)從低位0位到高位7。如圖4所示。

DS1302的寄存器
DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數據位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表2。
此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內容。DS1302與RAM相關(guān)的寄存器分為兩類(lèi):一類(lèi)是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節,其命令控制字為C0H~FDH,其中奇數為讀操作,偶數為寫(xiě)操作;另一類(lèi)為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫(xiě)所有的RAM的31個(gè)字節,命令控制字為FEH(寫(xiě))、FFH(讀)。
時(shí)鐘模塊實(shí)現功能
該模塊為系統提供精準的秒、分、時(shí)、日、月、年等實(shí)時(shí)時(shí)間信息,星期則由編程計算得到。
溫度采集模塊
溫度采集模塊設計
如圖5所示。采用數字式溫度傳感器DS18B20,它具有測量精度高,電路連接簡(jiǎn)單特點(diǎn),此類(lèi)傳感器僅需要一條數據線(xiàn)進(jìn)行數據傳輸,使用P1.7與DS18B20的I/O口連接加一個(gè)上拉電阻,Vcc1接電源,Vcc2接地。
DS18B20的測溫原理
低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數器1,高溫度系數晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數器2的脈沖輸入,當計數門(mén)打開(kāi)時(shí),DS18B20就對低溫度系數振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計數,進(jìn)而完成溫度測量。計數門(mén)的開(kāi)啟時(shí)間由高溫度系數振蕩器來(lái)決定,每次測量前,首先將-55℃所對應的基數分別置入減法計數器1和溫度寄存器中,減法計數器1和溫度寄存器被預置在-55℃所對應的一個(gè)基數值。減法計數器1對低溫度系數晶振產(chǎn)生的脈沖信號進(jìn)行減法計數,當減法計數器1的預置值減到0時(shí)溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開(kāi)始對低溫度系數晶振產(chǎn)生的脈沖信號進(jìn)行計數,如此循環(huán)直到減法計數器2計數到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數值即為所測溫度。斜率累加器用于補償和修正測溫過(guò)程中的非線(xiàn)性,其輸出用于修正減法計數器的預置值,只要計數門(mén)仍未關(guān)閉就重復上述過(guò)程,直至溫度寄存器值達到被測溫度值。

顯示模塊的設計
本次設計采用的是LED動(dòng)態(tài)顯示方式,由于PROTEUS內沒(méi)有LED,故用LCD代替LED進(jìn)行仿真,與主控制芯片AT89C52相連。如圖6所示。
系統的軟件設計

主程序流程框圖
Keil C與Proteus的聯(lián)調與測試結果
Proteus7.6是目前最好的模擬單片機外圍器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外圍電路(如LCD,RAM,ROM,鍵盤(pán),馬達,LED,AD/DA,部分SPI器件,部分IIC器件等),使用Proteus7.6和Keil C可以像使用仿真器一樣調試程序。
Proteus的工作過(guò)程
運行Proteus的ISIS程序后,進(jìn)入該仿真軟件的主界面如圖8所示。在工作前,要設置view菜單下的捕捉對齊和system下的顏色、圖形界面大小等項目。通過(guò)工具欄中的p(從庫中選擇元件命令)命令,在pick devices窗口中選擇電路所需的元件,放置元件并調整其相對位置、元件參數設置、元器件間連線(xiàn)、編寫(xiě)程序;在source菜單的Define code generation tools菜單命令下,選擇程序編譯的工具、路徑、擴展名等項目;在source菜單的Add/remove source files命令下,加入單片機硬件電路的對應程序;通過(guò)debug菜單的相應命令仿真程序和電路的運行情況。

圖8 Proteus的啟動(dòng)界面
Proteus軟件所提供的調試手段
Proteus提供了比較豐富的測試信號用于電路的測試。這些測試信號包括模擬信號和數字信號。對于單片機硬件電路和軟件的調試,Proteus提供了兩種方法:一種是系統總體執行效果,一種是對軟件的分步調試以看具體的執行情況。
軟件和硬件結合的應用系統
軟件和硬件的結合,就是一個(gè)單片機的應用系統了。在這一階段,硬件電路的設計已經(jīng)不是最為關(guān)鍵的了,而軟件系統的設計、調試和運行才是實(shí)驗的主要內容。因此可以以建議性的意見(jiàn)給出具體的硬件電路,并提出該電路所需要完成的具體工作,進(jìn)行軟件的設計和調試。
Keil C的介紹
keil C的運行界面
運行Keil C后的運行界面如圖9所示。

圖9 keil C的運行界面
Keil C與proteus聯(lián)調測試
1、安裝keil與proteus7.6;
2、打開(kāi)proteus,畫(huà)出相應電路。在proteus的tools菜單中選中use remote debug monitor;
3、在keil中編寫(xiě)MCU的程序;
4、進(jìn)入keil的project菜單option for target '工程名'。在DEBUG選項中右欄上部的下拉菜選中Proteus VSM Monitor-51 Driver;
5、在keil中進(jìn)行debug,同時(shí)在proteus中查看直觀(guān)的結果,LCD顯示;
6、把keil里的文件編譯后輸出hex的文件,在proteus中把單片機的加載程序文件換成keil中的hex文件,然后運行。
運行結果
結果顯示
由圖1整體電路框圖可知,LED顯示結果,如圖10所示。

圖10 結果顯示
調節顯示
日期和時(shí)間的修改由4個(gè)按鍵構成。鍵P0為調節;P2^0,模式切換鍵(向左移)向左移;鍵P2^1,加法按鈕;鍵P2^2,減法按鈕;鍵P2^3,立刻跳出調整模式按鈕。
按動(dòng)PO時(shí)秒閃爍進(jìn)入調節系統,如圖11所示。
按動(dòng)P2^0向左移,對分進(jìn)行調節,如圖12所示。
按動(dòng)P2^1向左移,對時(shí)進(jìn)行加調節,如圖13所示。

圖14所示,是未調之前的顯示,按動(dòng)P2^2向左移,對年進(jìn)行減調節,如圖15所示
按動(dòng)P2^3向左移,退出調節恢復如圖16所示。

總結
本文設計了一個(gè)多功能的電子萬(wàn)年歷。電路是由AT89S52單片機為控制核心,與時(shí)鐘芯片DS1302、溫度芯片DS18B20、按鍵、LED顯示等模塊組成硬件系統。在硬件系統中設有3個(gè)獨立按鍵,根據使用者的需要可以隨時(shí)對時(shí)間進(jìn)行校準、選擇時(shí)間、溫度顯示等,綜上所述此萬(wàn)年歷具有讀取方便、顯示直觀(guān)、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場(chǎng)前景。
在整個(gè)設計過(guò)程中,充分發(fā)揮個(gè)人的主觀(guān)能動(dòng)性,自主學(xué)習,學(xué)到了許多沒(méi)學(xué)到的知識,增加了動(dòng)手能力的考驗,達到了預期的目的??傊?,這次設計使我的能力得到了全方位的提高。
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理 上拉電阻相關(guān)文章:上拉電阻原理
評論