設(shè)計(jì)基于DS12C887高精度時(shí)鐘的意義
DS12C887時(shí)鐘芯片能夠自動(dòng)顯示年、月、日、時(shí)、分、秒等時(shí)間信息,同時(shí)還具有校時(shí),報(bào)時(shí),鬧鐘等功能。DS12C887也可以很方便的由軟件編程進(jìn)行功能的調(diào)整或增加。所以設(shè)計(jì)基于DS12C877時(shí)鐘芯片的高精度時(shí)鐘的設(shè)計(jì)具有十分重要的現(xiàn)實(shí)意義和實(shí)用價(jià)值。
設(shè)計(jì)方案
在傳統(tǒng)的基于單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)的基礎(chǔ)上經(jīng)過一些改進(jìn),引入DS12C887時(shí)間芯片,本次設(shè)計(jì)可分為兩部分:硬件部分包括:體積小功能豐富的STC89C52單片機(jī)、具有掉電保護(hù)的DS12C887時(shí)鐘芯片電路簡單易于實(shí)現(xiàn)的1602LCD液晶顯示器,鍵盤輸入電路等。具體說來,系統(tǒng)智能控制部分由單片機(jī)及其相關(guān)的外圍電路組成,外圍電路包括解決死機(jī)等問題的復(fù)位電路、波形穩(wěn)定的晶振電路、鍵盤設(shè)計(jì)、鬧鈴電路以及合適的直流電源電路。
利用單片機(jī)將復(fù)位電路、能夠降低功耗和減少顯示器外部引線的顯示電路、電源電路等正確的連接在一起,并通過單片機(jī)的編程來實(shí)現(xiàn)本次設(shè)計(jì)任務(wù)中的要求。軟件部分主要包括了主程序模塊,DS12C887模塊,LCD1602模塊,鍵盤控制模塊。DS12C887芯片具有掉電保護(hù)功能,內(nèi)部自帶鋰電池,能夠在斷電的情況下保持時(shí)間信息,等到外部電路恢復(fù)供電之后能夠不必調(diào)整時(shí)間,為時(shí)鐘的校時(shí)操作節(jié)省了很多時(shí)間,而且這種設(shè)計(jì)更節(jié)能,在需要觀察時(shí)間的時(shí)候比如白天就可以給主電路通電。而在夜晚不需要觀察時(shí)鐘的時(shí)候就可以給主電路斷電,這樣可以節(jié)約大量電能。
時(shí)間芯片DS12C887采用了內(nèi)部集成晶振的電路,并且具有內(nèi)部溫漂補(bǔ)償電路設(shè)計(jì)。能夠準(zhǔn)確計(jì)時(shí),提供精確的時(shí)間,這樣就簡化了電路的器件選擇,另外也使程序的設(shè)計(jì)更加簡潔。在硬件設(shè)計(jì)方面,由于只增加了一個(gè)DS12C887時(shí)間芯片,因此并不是特別復(fù)雜,而且這種獨(dú)立計(jì)時(shí)的設(shè)計(jì)使得產(chǎn)品排故更加方便。
設(shè)計(jì)過程詳解
一、系統(tǒng)組成
1、系統(tǒng)原理與硬件設(shè)計(jì)
本次的設(shè)計(jì)題目是電子萬年歷設(shè)計(jì),要求實(shí)現(xiàn)年、月、日、時(shí)、分、秒的正常顯示,需要硬件和軟件的結(jié)合來實(shí)現(xiàn)。本次設(shè)計(jì)利用時(shí)鐘日歷芯片DS12C887的特性和STC89C52單片機(jī)的功能利用實(shí)現(xiàn)的。根據(jù)設(shè)計(jì)的要求萬年歷要顯示年、月、日、時(shí)、分、秒的顯示同LCD1602。
在明確本次設(shè)計(jì)思路之后,畫出設(shè)計(jì)框圖,總體框圖如圖2.1所示。
2、硬件選擇
?。?)時(shí)鐘芯片選擇 選用DS12C887時(shí)鐘芯片。
?。?)單片機(jī)的選擇 選用STC89C52單片機(jī),并配備11.0592MHz晶振,復(fù)位電路采用上電復(fù)位。
?。?)顯示電路選擇 采用LCD1602液晶顯示。
?。?)電源選擇 采用直流5V電源供電。
3、單片機(jī)STC89C52中文資料
STC89C52 是STC公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī).片內(nèi)含8K byTES的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用STC公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052 產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU )和FLASH由存儲(chǔ)單元, STC89C52單片功能強(qiáng)大,適用于許多電子產(chǎn)品。
主要性能參數(shù):
Vcc:電源電壓 GND:地線
P0:P0口是一組8位漏極開路型雙向1/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí).每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL 邏輯門電路,對(duì)端口P0 寫“1”時(shí),可作為高阻抗輸入端用。
當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部 上拉電阻。
在FLASH由編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字 節(jié),校驗(yàn)時(shí),要求外接上拉電阻。
P1口:PI 是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流IIL
與AT89C51不同之處是,Pl.0 和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(Pl.0/T2 )和輸入(P1.1/T2EX) ,參見圖3
FLASH編程和程序校驗(yàn)期間,Pl接收低8位地址。
圖3 PI.O 和PI.l 的第二功能
口:P2 是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯電路。對(duì)端口P2寫“l(fā)“,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(llt )。
在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOvx@DPTR 指令)時(shí),P2送出高8 位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器、如執(zhí)行MOVX@RI指令)時(shí),P2口輸出P2鎖存器的內(nèi)容。
FLASH編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。
·P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),內(nèi)部上拉電阻把它們被拉高,并作為輸入的端口。這個(gè)時(shí)候,被外部拉低的P3口將用上拉電阻輸出電流(IIL) 。
P3口除了作為一般的I/0口線外,更重要的用途是它的第二功能,如圖表1:
此外,P3口還接收一些用于FLASH閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。 RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上的高電平時(shí)單片機(jī)復(fù)位。
·ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器的時(shí)候,ALE(地址鎖存允許)輸出脈沖用來鎖存低8位字節(jié)的地址.通常,ALE依然以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),所以可以用來實(shí)現(xiàn)對(duì)外輸出時(shí)鐘或用于定時(shí)目的。每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。
對(duì)Flash存儲(chǔ)器編程的時(shí)候,這個(gè)引腳還用于輸入編程脈沖(PROG)。可以通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位.可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活,另外,此引腳會(huì)被拉高一點(diǎn)點(diǎn),當(dāng)單片機(jī)執(zhí)行外部程序得時(shí)候,應(yīng)該把ALE設(shè)置為禁止。
·PSEN:程序儲(chǔ)存允許PSEN輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令時(shí),每個(gè)機(jī)器周期兩次PSEN有效,就是輸出兩個(gè)脈沖。這個(gè)時(shí)候,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),就會(huì)跳過兩次PSEN信號(hào)。
·EA/VPP:外部訪問允許。欲使CPU 僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH ) , EA端必須保持低電平(接地).
如EA端接在高電平上, CPU就執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。
flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源VPP ,該器件必須使用12V編程電壓VPP 。
·XTAL1:振蕩器的反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端. ·XTAL2:振蕩器的反相放大器的輸出端。
AT89C52的特殊功能是,在AT89C52 片內(nèi)存儲(chǔ)器中,80H-FFH 共128 個(gè)單元為特殊功能寄存器(SFR),SFR 的地址空間映象如表2 所示。
并非所有的地址都被定義,從80H—FFH 共128 個(gè)字節(jié)只有一部分被定義,還有相當(dāng)一部分沒有定義。對(duì)沒有定義的單元讀寫將是無效的,讀出的數(shù)值將不確定,而寫入的數(shù)據(jù)也將丟失。
不應(yīng)將數(shù)據(jù)寫入未定義的單元,由于這些單元在將來的產(chǎn)品中可能賦予新的功能,在這種情況下,復(fù)位后這些單元數(shù)值總是“0”。
AT89C52除了有AT89C51所有的定時(shí)/計(jì)數(shù)器0 和定時(shí)/計(jì)數(shù)器1 外,還增加了一個(gè)定時(shí)/計(jì)數(shù)器2。定時(shí)/計(jì)數(shù)器2 的控制和狀態(tài)位位于T2CON,T2MOD,寄存器對(duì)(RCAO2H、RCAP2L)是定時(shí)器2 在16 位捕獲方式或16 位自動(dòng)重裝載方式下的捕獲/自動(dòng)重裝載寄存器。
4、STC單片機(jī)最小系統(tǒng)
STC單片機(jī)是一種高性能、低功耗的8位CMOS微處理芯片, STC單片機(jī)雖然功能強(qiáng)大,但要想完成其強(qiáng)大的功能,單靠它也是不的行的,因此要讓它運(yùn)行起來,就要?jiǎng)?chuàng)設(shè)其工作的環(huán)境,即最小系統(tǒng),STC單片機(jī)最小系統(tǒng)如圖1所示,它包括由一個(gè)晶振,兩個(gè)電容組成的振蕩電路,一個(gè)復(fù)位按鈕一個(gè)10UF電容和一個(gè)10K電阻組成的復(fù)位電路,電源電路三個(gè)電路組成。本系統(tǒng)以STC89S52單片機(jī)為核心,使用11.0592MHZ的晶振,復(fù)位電路為按鍵高電平復(fù)位。
二、系統(tǒng)硬件電路設(shè)計(jì)
1、晶振電路
在晶振電路中,C1、C2為晶振的負(fù)載電容,分別接在晶振的兩個(gè)腳上和對(duì)地的電容,電路中取了30PF。因?yàn)榫д衽c單片機(jī)的振蕩電路中腳XTAL0和腳XTAL1會(huì)產(chǎn)生偕波,雖然諧波對(duì)電路的影響不大,但是會(huì)影響電路中時(shí)鐘振蕩器的穩(wěn)定性。 在晶振的腳XTAL0和腳XTAL1之間接分別接入兩個(gè)5pf-30pf的瓷片電容接可以增加電路的穩(wěn)定性。
2、復(fù)位電路
單片機(jī)復(fù)位電路有上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種方式。上電復(fù)位要求接通電源后,自動(dòng)進(jìn)行復(fù)位操作。手動(dòng)復(fù)位要求接通電源的前提下,在單片機(jī)運(yùn)行的條件下,在單片機(jī)運(yùn)行期間,用按鈕開關(guān)操作使單片機(jī)進(jìn)行復(fù)位的操作。這里采用的是手動(dòng)復(fù)位。
3、程序下載接口
1)1602液晶概述
1602LCD是指顯示的字符和數(shù)字為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊共32個(gè)字符和數(shù)字。
1602LCD主要技術(shù)參數(shù):
1.顯示大?。?6×2個(gè)字符
2.芯片額定電壓:4.5—5.5V
3.額定電流:2.0mA(5.0V)
4.工作時(shí)的電壓:5.0V
2)1602液晶引腳功能
3)1602讀寫時(shí)序圖
4、1602LCD的一般初始化(復(fù)位)過程
5、1602LCD的電路連接
液晶5端為讀/寫選擇端,因?yàn)槲覀儾粡囊壕е凶x取數(shù)據(jù),只向其寫入命令和顯示數(shù)據(jù),因此此端始終選擇為寫狀態(tài),即低電平接地。液晶6端為使能信號(hào),是操作時(shí)必須的信號(hào)。其電路如圖2-11所示:
1)DS12C887概述
DS12C887具有DS12R885裸片,32.768HZ石英晶體和一個(gè)可充電電池三個(gè)部分, DS12C887與計(jì)算機(jī)常用的時(shí)鐘芯片MC146818B和DS12887管腳兼容,同時(shí)可直接替換可以用來直接代替IBM PC上的時(shí)鐘日歷芯片DS12887。采用DS12C887芯片設(shè)計(jì)的時(shí)鐘電路有良好的微機(jī)接口,并且不需要任何外圍電路和器件。時(shí)鐘芯片DS12C887具有如下的特征:
?。?)DS12C887里面自帶一個(gè)鋰電池,外部掉電時(shí),內(nèi)部信息還能保持10年的時(shí)間,保證不丟失數(shù)據(jù)。
?。?)能夠自動(dòng)產(chǎn)生秒、分、時(shí)、天、星期、日、月、年、世紀(jì)等時(shí)間信息, 并 有閏年補(bǔ)償功能。其內(nèi)部還增加了世紀(jì)寄存器,利用硬件電路解決了“千年”問題。
?。?)具有二進(jìn)制數(shù)碼和BCD碼兩種表示時(shí)間的方法、具有日 歷和定時(shí)鬧鐘功能。
?。?)一天內(nèi)的時(shí)間記錄具有12小時(shí)制和24小時(shí)制兩種,12小時(shí)時(shí)鐘模 式中,具有PM和AM用來區(qū)分上午和下午。同時(shí)可選用夏令時(shí)模式;
?。?)有128個(gè)RAM單元與軟件接口,其中有11字節(jié)RAM用來存儲(chǔ)時(shí)間信息,4字節(jié)RAM用來存儲(chǔ)DS12C887的控制信息,稱為控制寄存器14個(gè)作為字節(jié)時(shí)鐘和控制寄存器,113字節(jié)通用RAM使用戶使用。
?。?)用戶還可對(duì)DS12C887進(jìn)行編程以實(shí)現(xiàn)多種方波輸出,并可對(duì)其內(nèi)部的三路中斷通過軟件進(jìn)行屏蔽
2)DS12C887引腳功能
3)DS12C887讀寫時(shí)序
4)DS12C887流程圖
進(jìn)入主程序后,DS12C887首先進(jìn)行初始化設(shè)置,當(dāng)串行口有數(shù)據(jù)時(shí),則調(diào)用函數(shù)從日歷時(shí)鐘芯片獲取日歷時(shí)鐘信息,調(diào)用顯示函數(shù)顯示日歷時(shí)鐘信息顯示出來,重復(fù)進(jìn)行。這部分包括DS12C887某個(gè)單元寫、讀DS12C887某個(gè)單元的內(nèi)容和DS12C887設(shè)定時(shí)間。
5)時(shí)鐘芯片引腳介紹
1)時(shí)鐘芯片DS12C887,其引腳分布圖如下所示
MOT (1腳) :總線時(shí)序模式選擇腳。接高電平時(shí),選擇MOTOROLA總線方式工作;接低電平或懸空時(shí),芯片按照INTEL總線方式工作。此時(shí)其工作時(shí)序與MCS51芯片的片外RAM讀寫時(shí)序相伺。
NC (2,3,16,20,21,22腳):不解任何引腳。 AD0~AD7(4~11腳):地址/地址數(shù)據(jù)復(fù)用總線引腳。
CS(13腳):片選腳,低電平有效。
AS(14腳):地址鎖存輸入腳。引腳上的正脈沖用于切換地址/數(shù)據(jù)復(fù)用總線。脈沖后沿將地址鎖入DS12887中,在Intel總線方式下,該腳等效于MCS一51系列單片機(jī)芯片的ALE腳。
R/W(15腳):讀/寫輸入腳。此引腳有兩種工作方式,在選擇MOTOROLA總線方式下,此引腳用于指示當(dāng)前的讀寫周期,高電平表示一個(gè)讀周期,低電平表示一個(gè)寫周期;選擇INTEL中線時(shí)序模式時(shí),此引腳為低電平有效的輸入腳,相當(dāng)于通用RAM的寫使能信號(hào)(/WE)
DS(17腳):此引腳有兩種工作方式,當(dāng)MOT接高電平時(shí)時(shí),此引腳為數(shù)據(jù)鎖存腳;當(dāng)MOT接低電平時(shí),此引腳為讀輸入腳,在Mcs一51系統(tǒng)中,Ds相等于RD腳?!?/p>
RESET(18腳):復(fù)位輸入,當(dāng) RESET為低電平且VCC≥4.25時(shí),DS12C887芯片執(zhí)行復(fù)位操作。該腳上的電壓不影響時(shí)鐘、日歷及片內(nèi)RAM的內(nèi)容。
IRQ(19腳):中斷申請輸出腳,低電平有效,只要引起中斷的狀態(tài)位有效且相應(yīng)的中斷允許位為1,則IRQ變?yōu)榈汀NC(jī)需靠讀寄存器C來清除該腳信號(hào),RESET腳也可清除該信號(hào)。
SQW(23腳):方波信號(hào)輸出腳??赏ㄟ^設(shè)置寄存器位SQWE關(guān)斷此信號(hào)輸出,此信號(hào)的輸出頻率也可通過對(duì)芯片內(nèi)部的寄存器編程予以改變。
VCC(24腳):+5V電源端。當(dāng)Vcc≤3v時(shí),芯片內(nèi)部自動(dòng)將Vcc切換至片內(nèi)置電池上,當(dāng)VCC恢復(fù)為》4.25V后須經(jīng)過100ms才能對(duì)它進(jìn)行訪問。
6)4個(gè)控制寄存器介紹
DS12C887有4個(gè)控制寄存器,在任何時(shí)間都可以進(jìn)行訪問,即使處于更新周期。
寄存器A字節(jié)的內(nèi)容如下。
SET:設(shè)置位,不受到復(fù)位操作影響,可以進(jìn)行讀寫。當(dāng)0時(shí),不處于設(shè)置狀態(tài),芯片更新時(shí)間數(shù)據(jù);當(dāng)1時(shí),抑制數(shù)據(jù)更新,可以通過程序設(shè)定時(shí)間和日歷信息。
PIE:周期性中斷使能位,復(fù)位時(shí)清除此位,可以進(jìn)行讀寫。當(dāng)1時(shí),允許寄存器C中的周期中斷標(biāo)志位PF,驅(qū)動(dòng)/IRQ引腳向低產(chǎn)生中斷信號(hào)輸出,中斷信號(hào)產(chǎn)生的周期通過RS0~RE3決定。
AIE:鬧鐘中斷使能位,可以進(jìn)行讀寫。當(dāng)1時(shí),允許寄存器C中的鬧鐘中斷標(biāo)志位AF、鬧鐘發(fā)生時(shí)就會(huì)通過/IRQ引腳產(chǎn)生中斷輸出。
VRT;RAM和時(shí)間有效位。用于指示和VBAT引腳連接的電池狀態(tài)。此位不可寫入,也不受操作的影響,一般的時(shí)候讀取時(shí)總?cè)?,如果出現(xiàn)讀取為0的情況,就說明電池沒電了,時(shí)間數(shù)據(jù)和RAM中的數(shù)據(jù)就會(huì)變得不準(zhǔn)確。
芯片DS12CR887的113字節(jié)普通RAM空間為非易失性RAM空間,可以在未處理器程序中作為非易失性內(nèi)存空間使用。
鬧鈴電路
鬧鈴功能是由單片機(jī)的I/O口輸出一定頻率方波信號(hào),驅(qū)動(dòng)蜂鳴器發(fā)出特定頻率的聲音信號(hào)實(shí)現(xiàn)的。當(dāng)鬧鈴設(shè)置的時(shí)間到達(dá)時(shí)鐘的時(shí)間時(shí),單片機(jī)發(fā)送一個(gè)低電平給蜂鳴器,三極管導(dǎo)通驅(qū)動(dòng)蜂鳴器發(fā)出聲音作為定時(shí)鬧鈴。
獨(dú)立鍵盤電路
當(dāng)單片機(jī)檢測到有按鍵被按下時(shí),就發(fā)射與之相對(duì)應(yīng)的二進(jìn)制編碼信號(hào)
時(shí)鐘的電源為+5V直流電源,本設(shè)計(jì)中可以使用4節(jié)1.5V電池,電源模塊的原理圖如圖2-15所示
評(píng)論
查看更多