基于VRS51L3074和DS12887的電子日歷時(shí)鐘設(shè)計(jì)方案
文中是以Versa 8051系列MCU的典型器件VRS51L3074和時(shí)鐘日歷芯片DSl2887為核心制作的可多定點(diǎn)電子日歷時(shí)鐘。該系統(tǒng)功能齊全,可存儲(chǔ)多個(gè)鬧點(diǎn),采用液晶顯示器件LCD以清晰完美的視覺效果顯示出時(shí)間、日歷等各種信息,有操作簡(jiǎn)單、工作穩(wěn)定、功耗低、使用方便等特點(diǎn)。
1 方案論述
VRS51L307是美國(guó)Ramtron公司最新推出的8 kBFRAM鐵電存儲(chǔ)器的8051單片機(jī)。該單片機(jī)將外圍功能模塊和40 MI/s(兆指令/秒)單周期8051內(nèi)核集成在一起,工作電壓3.0~3.6 V,有精確的內(nèi)部振蕩器。
本系統(tǒng)采用VRS51L3074單片機(jī)作為控制核心,使用單片集成的即時(shí)時(shí)鐘芯片DSl2887來實(shí)現(xiàn)時(shí)鐘功能,顯示系統(tǒng)采用液晶模塊LCD顯示時(shí)間、日歷及鬧鈴等提示信息,有著智能化的人機(jī)界面。用此方案設(shè)計(jì)的電路圖簡(jiǎn)單,不需要驅(qū)動(dòng)電路,用并行口的數(shù)據(jù)線便可以實(shí)現(xiàn)時(shí)間、日歷以及鬧鐘的顯示。 VRS51L3074有成熟的閃存技術(shù),本身自帶有看門狗定時(shí)器電路,這樣在單片機(jī)死機(jī)或遇到程序故障時(shí)系統(tǒng)能夠自動(dòng)復(fù)位,看門狗定時(shí)器由一個(gè)14位預(yù)分頻器構(gòu)成,以系統(tǒng)時(shí)鐘或者是系統(tǒng)時(shí)鐘的分頻信號(hào)作為其計(jì)數(shù)源,當(dāng)看門狗溢出時(shí)將使系統(tǒng)復(fù)位。系統(tǒng)時(shí)鐘頻率可動(dòng)態(tài)調(diào)節(jié),有集成省電、上電復(fù)位/掉電檢測(cè)等功能。
2 系統(tǒng)基本原理
用VRS51L3074控制功能將即時(shí)時(shí)鐘DSl2887的年、月、日、星期、時(shí)、分、秒等信息并行輸入LCD液晶顯示器上,時(shí)間和日歷還有鬧鐘的調(diào)整則通過鍵盤的控制功能將各種調(diào)整信息反映到單片機(jī)中,并通過單片機(jī)的并口將各種時(shí)間、日歷和鬧鐘信息輸入給LCD液晶顯示器,從而實(shí)現(xiàn)整個(gè)設(shè)計(jì)的控制功能。
本系統(tǒng)對(duì)外圍器件的訪問都是通過I/O方式,其中單片機(jī)的P1口與鍵盤連接,P0口的8個(gè)端口用作單片機(jī)的數(shù)據(jù)線分別與顯示器和即時(shí)時(shí)鐘相連,P60和 P27分別用作控制端,用來控制單片機(jī)與LCD顯示器以及單片機(jī)與即時(shí)時(shí)鐘之間的數(shù)據(jù)傳輸;本系統(tǒng)中,由于采用LCD顯示屏作為顯示系統(tǒng),因而用鍵盤作為控制系統(tǒng)對(duì)于便攜式的日歷鐘來說,有利于操作和控制。在本設(shè)計(jì)中,各功能鍵的控制通過軟件編程的方法來實(shí)現(xiàn),這樣利用鍵盤的不同功能鍵就可以實(shí)現(xiàn)對(duì)鬧鐘、時(shí)鐘和日歷的調(diào)整控制。整個(gè)設(shè)計(jì)的系統(tǒng)圖,如圖1所示。
3 系統(tǒng)硬件設(shè)計(jì)
硬件系統(tǒng)由單片機(jī)及其鍵盤電路、時(shí)鐘系統(tǒng)、鬧點(diǎn)報(bào)警功能和LCD顯示部分組成。整個(gè)系統(tǒng)的電路設(shè)計(jì)以單片機(jī)VRS51L3074和時(shí)鐘芯片DSl2887的設(shè)計(jì)為核心,外加液晶顯示器OCM160128-I(內(nèi)置T6963C控制器),蜂鳴器以及鍵盤。
采用VRS51L3074單片機(jī)作為控制核心對(duì)時(shí)鐘芯片DSl2887進(jìn)行控制,讀取時(shí)間,提取數(shù)據(jù),對(duì)輸入信號(hào)進(jìn)行處理,最后通過LCD顯示各種時(shí)間、日歷及鬧鐘信息,從而實(shí)現(xiàn)整個(gè)設(shè)計(jì)的控制功能。系統(tǒng)主控電路如圖2所示。VRS51L3074片內(nèi)自帶40 MHz振蕩器,可無需外部晶振為系統(tǒng)提供時(shí)鐘信號(hào)。通過對(duì)時(shí)鐘主電路之間預(yù)分頻器的配置可靈活設(shè)置系統(tǒng)時(shí)鐘以滿足不同應(yīng)用的需要。系統(tǒng)時(shí)鐘源選擇及分頻比設(shè)置由特殊功能寄存器DEVCLKCFGl和DEVCLKCFG2控制。
3.1 單片機(jī)與DSl2887時(shí)鐘芯片的接口設(shè)計(jì)界面
單片機(jī)與DSl2887時(shí)鐘芯片的接口界面如圖3所示。兩者之間要實(shí)現(xiàn)同步通信,就需要用到6個(gè)口線:(1)復(fù)位/RESET。(2)I/O數(shù)據(jù)線。(3)片選信號(hào)線/CS。(4)數(shù)據(jù)激發(fā)或讀取線DS。(5)讀取/寫入,輸入線R/W。(6)地址激發(fā)輸入線AS。
在以上6個(gè)口線中,DS、R/W都有兩種操作模式。本設(shè)計(jì)采用Intel總線時(shí)序,故MOT腳接地。在這種模式下,DS(數(shù)據(jù)激發(fā)或讀取)腳稱為/RD 腳。AD0~AD7是多工雙向的地址/數(shù)據(jù)總線。在總線周期的第一段時(shí)間呈現(xiàn)的是地址,同樣的IC腳和信號(hào)路徑,在第二段時(shí)間當(dāng)成數(shù)據(jù)使用。因總線從地址到數(shù)據(jù)的改變是發(fā)生在內(nèi)部SRAM的存取時(shí)間,所以地址/數(shù)據(jù)作成多工形態(tài)并不會(huì)使DSl2887的存取時(shí)間變慢。片選信號(hào)線/CS選擇輸入為L(zhǎng)OW時(shí),即可對(duì)DSl2887進(jìn)行存取,在總線周期即使沒有使能/CS腳,也同樣會(huì)鎖存住地址但沒有存取的動(dòng)作發(fā)生。當(dāng)Vcc 4.25 V時(shí),DSl2887會(huì)除能/CS腳,禁止存取動(dòng)作,此功能會(huì)保護(hù)在電源消失期間的即時(shí)時(shí)鐘和SRAM里的數(shù)據(jù)。地址激發(fā)輸入AS送一個(gè)正向地址激發(fā)脈沖到輸入腳,然后在AS/ALE的下降邊緣使得地址栓在DSl2887內(nèi)。在下一個(gè)時(shí)鐘下降沿,地址激發(fā)輸入將清除,而不管片選端/ CS是否置位。接入命令必須成對(duì)發(fā)送。/RESET腳的信號(hào)對(duì)于時(shí)鐘、日歷或SRAM都沒有影響。在電源上升時(shí),RESET腳應(yīng)該維持在LOW一段時(shí)間,以便允許電源電壓穩(wěn)定下來,/RESET腳維持在LOW的時(shí)間視應(yīng)用而定。
3.2 單片機(jī)與LCD顯示屏的接口電路
此電路中,液晶顯示器數(shù)據(jù)口D0~D7與單片機(jī)的P00~P07并行相連。如圖4所示。/RD、/WR讀、寫選通端與單片機(jī)的/RD、/WR相連,低電平有效,為輸入信號(hào)。/CE為T6963C的片選信號(hào),低電平有效。C/D通道選擇信號(hào),1為指令通道,O為數(shù)據(jù)通道。
3.3 鬧點(diǎn)報(bào)警功能設(shè)計(jì)
蜂鳴器報(bào)警電路如圖5所示。當(dāng)時(shí)鐘到指定鬧點(diǎn)時(shí),DSl2887控制/狀態(tài)寄存器2中的AF被置1,同時(shí)ALE引腳產(chǎn)生一個(gè)中斷(低電平有效),由于 ALE接至單片機(jī)的ALE腳,所以引發(fā)中斷程序。DSl2887的SQW輸出1Hz的脈沖,由于數(shù)據(jù)信息接至單片機(jī)的P00~P07腳,所以P20腳輸出 1 Hz的脈沖,使得蜂鳴器間斷性地發(fā)出鳴聲。當(dāng)復(fù)位腳為低并且Vcc>4.25 V時(shí),鬧鐘中斷允許ALE被置為O,鬧鐘中斷標(biāo)志AF置0,信號(hào)通過AS位傳送到VRS51L3074的37腳,通過P20腳輸出脈沖到蜂鳴器,停止鬧響。到達(dá)預(yù)定時(shí)間響鈴1 min,1 min后自動(dòng)停止,也可以按下已設(shè)定的鍵實(shí)現(xiàn)手動(dòng)停止。
3.4 單片機(jī)與鍵盤的連接
系統(tǒng)采用行列式鍵盤。用I/O口線組成行、列結(jié)構(gòu),按鍵設(shè)置在行列的交點(diǎn)上。因此,在按鍵數(shù)量較多時(shí),可以節(jié)省I/O口線。鍵盤的列線分別與單片機(jī)的P1.0~P1.2相連,行線分別與單片機(jī)的P1.3~P1.5相連。
4 軟件系統(tǒng)的設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)包括單片機(jī)計(jì)算機(jī)兩部分的編程。計(jì)算機(jī)軟件編程主要實(shí)現(xiàn)參數(shù)設(shè)置、串行口數(shù)據(jù)接收、指令發(fā)送以及數(shù)據(jù)的顯示和存儲(chǔ)。單片機(jī)軟件編程主要實(shí)現(xiàn)鍵盤、液晶顯示、鬧鐘等各模塊的功能,采用C語言編程。該系統(tǒng)通過串行口與鍵盤通信,鍵盤給單片機(jī)發(fā)指令實(shí)現(xiàn)數(shù)據(jù)采集及系統(tǒng)控制,并將數(shù)據(jù)實(shí)時(shí)傳回液晶顯示器顯示結(jié)果。整個(gè)軟件系統(tǒng)采用模塊化的程序設(shè)計(jì)方法,共分為時(shí)間日期設(shè)定、鬧鈴
設(shè)定、LCD顯示模塊和鍵盤掃描模塊4個(gè)部分。其中主要是鬧點(diǎn)的設(shè)定與提取。軟件系統(tǒng)的主要特點(diǎn)是整個(gè)過程完全在鍵盤的控制之下,實(shí)現(xiàn)了友好的人機(jī)交互功能。主程序通過判斷鍵盤的輸入情況調(diào)用不同的子程序,子程序的功能實(shí)現(xiàn)也是在鍵盤的配合之下完成的。主程序流程圖,如圖6所示。
首先對(duì)單片機(jī)的串行口及定時(shí)器進(jìn)行初始化,然后進(jìn)行鍵盤掃描,如果有鍵按下,則根據(jù)掃描到的鍵值跳轉(zhuǎn)到相應(yīng)的入口并執(zhí)行相應(yīng)的程序,并根據(jù)外部的輸入進(jìn)行相應(yīng)的操作。如果沒有鍵按下,則回到初始化狀態(tài)。在并行運(yùn)行的程序中,本設(shè)計(jì)將調(diào)用另外兩位合作者編寫的日歷時(shí)鐘和溫度程序,送入液晶顯示器中進(jìn)行顯示。
4.1 多點(diǎn)定鬧模塊
鬧鐘的的起鬧止鬧基本步驟:(1)電子設(shè)備的中央處理器CPU從硬件時(shí)鐘芯片中讀取當(dāng)前時(shí)間,從鬧鐘信息中提取一個(gè)與當(dāng)前時(shí)間最接近的然后啟動(dòng)鬧鐘,將該鬧鐘的啟動(dòng)時(shí)間設(shè)置到硬件時(shí)鐘芯片中。(2)硬件時(shí)鐘芯片在當(dāng)前時(shí)間與該需啟動(dòng)鬧鐘的啟動(dòng)時(shí)間進(jìn)行比較,一致時(shí)通知CPU鬧鐘啟動(dòng)時(shí)間已經(jīng)到達(dá),蜂鳴器控制標(biāo)志為“1”,鬧鐘打開,開始起鬧,并顯示在顯示器上,要止鬧只需按下啟停鍵便可止鬧,沒有按鍵的情況下系統(tǒng)根據(jù)預(yù)設(shè)的鬧響時(shí)間1 min后停止鬧鈴,鬧時(shí)功能關(guān)停。硬件時(shí)鐘芯片在當(dāng)前時(shí)間與該需啟動(dòng)鬧鐘的啟動(dòng)時(shí)間進(jìn)行比較不同時(shí)指向下一時(shí)間。(3)通過不停的進(jìn)行比較,第一個(gè)鬧點(diǎn)響停后,時(shí)鐘正常行走,系統(tǒng)又再返回步驟(1)。
4.2 OSl2887時(shí)鐘芯片與VRS51L3074的接口程序
系統(tǒng)通過中斷和軟件計(jì)數(shù)器可產(chǎn)生秒信號(hào)。每到1 s,系統(tǒng)將會(huì)調(diào)整時(shí)間存儲(chǔ)單元的內(nèi)容,從而實(shí)現(xiàn)計(jì)時(shí)功能。下面為DSl2887時(shí)鐘芯片和VRS51L3074單片機(jī)的接口軟件,假定采用每天24 h制,時(shí)間數(shù)據(jù)格式為BCD碼,初始化時(shí)間為2000年1月1日9時(shí)00分00秒,1 kHz方波輸出。時(shí)鐘芯片每1 s向單片機(jī)申請(qǐng)中斷一次,一方面讓單片機(jī)修改一次時(shí)鐘顯示,另一方面也給單片微機(jī)系統(tǒng)提供時(shí)間基準(zhǔn)。
5 結(jié)束語
系統(tǒng)利用VRS51L3074作為控制核心,外加專用的時(shí)鐘芯片DSl2887的應(yīng)用,實(shí)現(xiàn)時(shí)間、日歷及鬧鐘信息顯示功能。該電子鐘操作方便,通過鍵盤和漢顯液晶提示可方便地校對(duì)時(shí)鐘和對(duì)鬧鐘進(jìn)行設(shè)置。
評(píng)論