基于單片機(jī)的多功能電子萬(wàn)年歷設(shè)計(jì)
引言
本文引用地址:http://m.butianyuan.cn/article/148267.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)硬件概述
本電路是由AT89S52單片機(jī)為控制核心,具有在線編程功能、低功耗、能在3V的超低壓工作。時(shí)鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),工作電壓為2.5V~5.5V。采用三線接口與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ì)
AT89S52單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3,MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(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ù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。
圖1 整體電路框圖
圖2 主控制系統(tǒng)
圖3 時(shí)鐘控制系統(tǒng)
時(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所示。
表1 DS1302的控制字格式
圖4 DS1302讀/寫(xiě)時(shí)序圖
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ù)線進(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ò)程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值。
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理 晶振相關(guān)文章:晶振原理 脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理 上拉電阻相關(guān)文章:上拉電阻原理
評(píng)論