基于AT89S52單片機(jī)的多功能電子萬年歷
DS1302的寄存器
DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表2。
此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。
時(shí)鐘模塊實(shí)現(xiàn)功能
該模塊為系統(tǒng)提供精準(zhǔn)的秒、分、時(shí)、日、月、年等實(shí)時(shí)時(shí)間信息,星期則由編程計(jì)算得到。
溫度采集模塊
溫度采集模塊設(shè)計(jì)
如圖5所示。采用數(shù)字式溫度傳感器DS18B20,它具有測(cè)量精度高,電路連接簡單特點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(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ù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(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重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測(cè)溫度值。
顯示模塊的設(shè)計(jì)
本次設(shè)計(jì)采用的是LED動(dòng)態(tài)顯示方式,由于PROTEUS內(nè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,鍵盤,馬達(dá),LED,AD/DA,部分SPI器件,部分IIC器件等),使用Proteus7.6和Keil C可以像使用仿真器一樣調(diào)試程序。
Proteus的工作過程
運(yùn)行Proteus的ISIS程序后,進(jìn)入該仿真軟件的主界面如圖8所示。在工作前,要設(shè)置view菜單下的捕捉對(duì)齊和system下的顏色、圖形界面大小等項(xiàng)目。通過工具欄中的p(從庫中選擇元件命令)命令,在pick devices窗口中選擇電路所需的元件,放置元件并調(diào)整其相對(duì)位置、元件參數(shù)設(shè)置、元器件間連線、編寫程序;在source菜單的Define code generation tools菜單命令下,選擇程序編譯的工具、路徑、擴(kuò)展名等項(xiàng)目;在source菜單的Add/remove source files命令下,加入單片機(jī)硬件電路的對(duì)應(yīng)程序;通過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)容。因此可以以建議性的意見給出具體的硬件電路,并提出該電路所需要完成的具體工作,進(jìn)行軟件的設(shè)計(jì)和調(diào)試。
評(píng)論