新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89S52的多功能電子萬(wàn)年歷

基于AT89S52的多功能電子萬(wàn)年歷

作者: 時(shí)間:2015-05-06 來(lái)源:網(wǎng)絡(luò) 收藏

  引言

本文引用地址:http://m.butianyuan.cn/article/273681.htm

  隨著生活節(jié)奏的日益加快,人們的時(shí)間觀也越來(lái)越重,同時(shí)對(duì)電子鐘表、日歷的需求也隨之提高。因此,研究實(shí)用電子時(shí)鐘及其擴(kuò)展應(yīng)用,有著非?,F(xiàn)實(shí)的意義,具有很大的實(shí)用價(jià)值。

  本系統(tǒng)程序由主程序、中斷服務(wù)函數(shù)和多個(gè)子函數(shù)構(gòu)成。主函數(shù)主要完成各子函數(shù)和中斷函數(shù)的初始化。定時(shí)中斷函數(shù)主要完成時(shí)鐘芯片的定時(shí)掃描及鍵盤(pán)掃描。時(shí)鐘芯片的讀寫(xiě)函數(shù)主要是將時(shí)間、日歷信息讀出來(lái),并把要修改具體值寫(xiě)入時(shí)鐘芯片內(nèi)部。

  系統(tǒng)的硬件設(shè)計(jì)與電路原理

  電路設(shè)計(jì)框圖

  系統(tǒng)硬件概述

  本電路是由單片機(jī)為控制核心,具有在線(xiàn)編程功能、低功耗、能在3V的超低壓工作。時(shí)鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),工作電壓為2.5V~5.5V。采用三線(xiàn)接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器??僧a(chǎn)生年、月、日、周日、時(shí)、分、秒,具有使用壽命長(zhǎng)、精度高和低功耗等特點(diǎn),同時(shí)具有掉電自動(dòng)保存功能。

  主控制模塊

  單片機(jī)主控制模塊的設(shè)計(jì)

  單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3,MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線(xiàn)都能獨(dú)立地作輸出或輸入。

  時(shí)鐘電路模塊

  時(shí)鐘電路模塊的設(shè)計(jì)

  DS1302的引腳排列如圖3所示,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電;當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復(fù)位/片選線(xiàn),通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。

  

 

  時(shí)鐘電路模塊工作原理

  DS1302在每次進(jìn)行讀、寫(xiě)程序前都必須初始化,先把SCLK端置“0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫(xiě)時(shí)序如圖4所示。表1為DS1302的控制字,此控制字的位7必須置1,若為0則不能對(duì)DS1302進(jìn)行讀寫(xiě)數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫(xiě)時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫(xiě)時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫(xiě)操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫(xiě)操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出的。表2為DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開(kāi)始運(yùn)行。“WP”是寫(xiě)保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫(xiě)操作之前,WP必須為0。當(dāng)“WP”為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。

  DS1302的控制字節(jié)

  DS1302的控制字如表1所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出。

  數(shù)據(jù)輸入輸出(I/O)

  在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。如圖4所示。

 

  DS1302的寄存器

  DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表2。

  此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類(lèi):一類(lèi)是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類(lèi)為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫(xiě)所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫(xiě))、FFH(讀)。

  時(shí)鐘模塊實(shí)現(xiàn)功能

  該模塊為系統(tǒng)提供精準(zhǔn)的秒、分、時(shí)、日、月、年等實(shí)時(shí)時(shí)間信息,星期則由編程計(jì)算得到。

  溫度采集模塊

  溫度采集模塊設(shè)計(jì)

  如圖5所示。采用數(shù)字式溫度傳感器DS18B20,它具有測(cè)量精度高,電路連接簡(jiǎn)單特點(diǎn),此類(lèi)傳感器僅需要一條數(shù)據(jù)線(xiàn)進(jìn)行數(shù)據(jù)傳輸,使用P1.7與DS18B20的I/O口連接加一個(gè)上拉電阻,Vcc1接電源,Vcc2接地。

  DS18B20的測(cè)溫原理

  低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線(xiàn)性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值。

  

 

  顯示模塊的設(shè)計(jì)

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

  系統(tǒng)的軟件設(shè)計(jì)

  

 

  主程序流程框圖

  Keil C與Proteus的聯(lián)調(diào)與測(cè)試結(jié)果

  Proteus7.6是目前最好的模擬單片機(jī)外圍器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外圍電路(如LCD,RAM,ROM,鍵盤(pán),馬達(dá),LED,AD/DA,部分SPI器件,部分IIC器件等),使用Proteus7.6和Keil C可以像使用仿真器一樣調(diào)試程序。

  Proteus的工作過(guò)程

  運(yùn)行Proteus的ISIS程序后,進(jìn)入該仿真軟件的主界面如圖8所示。在工作前,要設(shè)置view菜單下的捕捉對(duì)齊和system下的顏色、圖形界面大小等項(xiàng)目。通過(guò)工具欄中的p(從庫(kù)中選擇元件命令)命令,在pick devices窗口中選擇電路所需的元件,放置元件并調(diào)整其相對(duì)位置、元件參數(shù)設(shè)置、元器件間連線(xiàn)、編寫(xiě)程序;在source菜單的Define code generation tools菜單命令下,選擇程序編譯的工具、路徑、擴(kuò)展名等項(xiàng)目;在source菜單的Add/remove source files命令下,加入單片機(jī)硬件電路的對(duì)應(yīng)程序;通過(guò)debug菜單的相應(yīng)命令仿真程序和電路的運(yùn)行情況。

  

 

  圖8 Proteus的啟動(dòng)界面

  Proteus軟件所提供的調(diào)試手段

  Proteus提供了比較豐富的測(cè)試信號(hào)用于電路的測(cè)試。這些測(cè)試信號(hào)包括模擬信號(hào)和數(shù)字信號(hào)。對(duì)于單片機(jī)硬件電路和軟件的調(diào)試,Proteus提供了兩種方法:一種是系統(tǒng)總體執(zhí)行效果,一種是對(duì)軟件的分步調(diào)試以看具體的執(zhí)行情況。

  軟件和硬件結(jié)合的應(yīng)用系統(tǒng)

  軟件和硬件的結(jié)合,就是一個(gè)單片機(jī)的應(yīng)用系統(tǒng)了。在這一階段,硬件電路的設(shè)計(jì)已經(jīng)不是最為關(guān)鍵的了,而軟件系統(tǒng)的設(shè)計(jì)、調(diào)試和運(yùn)行才是實(shí)驗(yàn)的主要內(nèi)容。因此可以以建議性的意見(jiàn)給出具體的硬件電路,并提出該電路所需要完成的具體工作,進(jìn)行軟件的設(shè)計(jì)和調(diào)試。

  Keil C的介紹

  keil C的運(yùn)行界面

  運(yùn)行Keil C后的運(yùn)行界面如圖9所示。

  

 

  圖9 keil C的運(yùn)行界面

  Keil C與proteus聯(lián)調(diào)測(cè)試

  1、安裝keil與proteus7.6;

  2、打開(kāi)proteus,畫(huà)出相應(yīng)電路。在proteus的tools菜單中選中use remote debug monitor;

  3、在keil中編寫(xiě)MCU的程序;

  4、進(jìn)入keil的project菜單option for target '工程名'。在DEBUG選項(xiàng)中右欄上部的下拉菜選中Proteus VSM Monitor-51 Driver;

  5、在keil中進(jìn)行debug,同時(shí)在proteus中查看直觀的結(jié)果,LCD顯示;

  6、把keil里的文件編譯后輸出hex的文件,在proteus中把單片機(jī)的加載程序文件換成keil中的hex文件,然后運(yùn)行。

  運(yùn)行結(jié)果

  結(jié)果顯示

  由圖1整體電路框圖可知,LED顯示結(jié)果,如圖10所示。

  

 

  圖10 結(jié)果顯示

  調(diào)節(jié)顯示

  日期和時(shí)間的修改由4個(gè)按鍵構(gòu)成。鍵P0為調(diào)節(jié);P2^0,模式切換鍵(向左移)向左移;鍵P2^1,加法按鈕;鍵P2^2,減法按鈕;鍵P2^3,立刻跳出調(diào)整模式按鈕。

  按動(dòng)PO時(shí)秒閃爍進(jìn)入調(diào)節(jié)系統(tǒng),如圖11所示。

  按動(dòng)P2^0向左移,對(duì)分進(jìn)行調(diào)節(jié),如圖12所示。

  按動(dòng)P2^1向左移,對(duì)時(shí)進(jìn)行加調(diào)節(jié),如圖13所示。

  

 

  圖14所示,是未調(diào)之前的顯示,按動(dòng)P2^2向左移,對(duì)年進(jìn)行減調(diào)節(jié),如圖15所示

  按動(dòng)P2^3向左移,退出調(diào)節(jié)恢復(fù)如圖16所示。

  

 

  總結(jié)

  本文設(shè)計(jì)了一個(gè)多功能的。電路是由單片機(jī)為控制核心,與時(shí)鐘芯片DS1302、溫度芯片DS18B20、按鍵、LED顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有3個(gè)獨(dú)立按鍵,根據(jù)使用者的需要可以隨時(shí)對(duì)時(shí)間進(jìn)行校準(zhǔn)、選擇時(shí)間、溫度顯示等,綜上所述此萬(wàn)年歷具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。

  在整個(gè)設(shè)計(jì)過(guò)程中,充分發(fā)揮個(gè)人的主觀能動(dòng)性,自主學(xué)習(xí),學(xué)到了許多沒(méi)學(xué)到的知識(shí),增加了動(dòng)手能力的考驗(yàn),達(dá)到了預(yù)期的目的??傊?,這次設(shè)計(jì)使我的能力得到了全方位的提高。

塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
上拉電阻相關(guān)文章:上拉電阻原理


關(guān)鍵詞: AT89S52 電子萬(wàn)年歷

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉