基于單片機(jī)的多功能數(shù)字鐘系統(tǒng)設(shè)計(jì)與分析
摘要:文章簡(jiǎn)述了系統(tǒng)各模塊方案的論證與選擇的相關(guān)內(nèi)容。文中在對(duì)本系統(tǒng)的各個(gè)模塊的方案進(jìn)行論證與實(shí)際應(yīng)用相比較的基礎(chǔ)上,最終方案選用AT89C52作為主控制系統(tǒng)來(lái)控制時(shí)鐘的準(zhǔn)時(shí)運(yùn)轉(zhuǎn),采用獨(dú)立式按鍵控制本設(shè)計(jì)系統(tǒng)將要實(shí)現(xiàn)的全部功能,選用LCD液晶動(dòng)態(tài)掃描來(lái)顯示時(shí)間。并對(duì)系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行分析,同時(shí),對(duì)系統(tǒng)的軟件設(shè)計(jì)進(jìn)行分析。
關(guān)鍵詞:單片機(jī);I/O口;多功能;數(shù)字鐘;模塊
0 引言
隨著科技的發(fā)展,電子技術(shù)也在不斷地向前飛速發(fā)展。本設(shè)計(jì)是制作一款多功能數(shù)字鐘,其具有顯示年、月、日,時(shí)、分、秒、星期及鬧鐘功能,而且秒、分、時(shí)、日、月、年可自動(dòng)關(guān)聯(lián)進(jìn)位。秒具備清零功能,分、時(shí)、日、月、年可自動(dòng)修改、手動(dòng)設(shè)置等功能。它是以一塊AT89S52芯片作為主控模塊,采用DS1302作為定時(shí)來(lái)源的多功能數(shù)字鐘。多功能數(shù)字鐘結(jié)構(gòu)較簡(jiǎn)單,因此便于操作使用。它具有高度的智能化和集成化,是現(xiàn)代人辦公、生活、學(xué)習(xí)的好幫手,具有廣闊的市場(chǎng)前景。同時(shí),它具有鬧鈴和播放音樂等功能,由于這些完善的功能,它必將越來(lái)越受到社會(huì)各界人士的歡迎。
1 系統(tǒng)方案的論證與選擇
1.1 各模塊方案的論證與選擇
1.1.1 主控模塊的論證與選擇
方案一:采用8031芯片。8031芯片內(nèi)部無(wú)ROM,需要外擴(kuò)程序存儲(chǔ)器,由此造成電路焊接的困難,況且使用8031還需要另外購(gòu)買其他的芯片,從而造成成本較高,性價(jià)比低。
方案二:采用89C51芯片。80C51芯片內(nèi)部有ROM,且片內(nèi)ROM全部采用Flash ROM,它能在3V的超低壓工作,與MCS-51系列單片機(jī)完全兼容,但是其不具備ISP在線編程技術(shù),需把程序編寫好以后再放到編程器中燒寫,才可以進(jìn)行硬件電路的調(diào)試,倘若程序編寫出現(xiàn)問(wèn)題,調(diào)試電路就較麻煩,而且其芯片內(nèi)存也只有4kB。
方案三:采用AT89S52芯片。該芯片內(nèi)部既有Flash ROM,又與MCS-51兼容,而且ISP在線編程技術(shù)適用于AT89S52芯片,這樣既降低了成本也無(wú)需反復(fù)插拔芯片,可避免損壞芯片;而且它的性能穩(wěn)定,且內(nèi)存達(dá)8kB。
經(jīng)過(guò)三種方案的比較,方案三主要容量較大,具有成本低的優(yōu)點(diǎn)。因此主模塊采用AT89S52。
1.1.2 顯示模塊的論證與選擇
方案一:點(diǎn)陣顯示。是由八行八列的LED管集成在一塊電路上組成,主要用來(lái)顯示漢字,同時(shí)也能顯示數(shù)字和少量圖象,但它的焊接較麻煩,價(jià)格高,鑒于所設(shè)計(jì)的內(nèi)容要求用它不切實(shí)際,所以排除此方案。
方案二:LED數(shù)碼管靜態(tài)顯示。此方案電路容易理解且驅(qū)動(dòng)的程序簡(jiǎn)單,但需多片七段譯碼器驅(qū)動(dòng)顯示,這不僅增加了成本,還占用單片機(jī)多個(gè)I/O口,也給電路的焊接帶來(lái)一定的困難,因此不選用此方案。
方案三:采用LED數(shù)碼管動(dòng)態(tài)掃描顯示。此方案價(jià)格低廉,不僅減少了對(duì)I/O口的浪費(fèi),而且能夠同時(shí)驅(qū)動(dòng)多個(gè)數(shù)碼管。但其驅(qū)動(dòng)程序不容易編寫和理解。
方案四:采用LCD液晶顯示。由ks0108驅(qū)動(dòng),能顯示大量數(shù)據(jù)、文字、圖形,顯示的位數(shù)多,字體清晰多樣、美觀,而且外部接線較簡(jiǎn)單。
經(jīng)過(guò)四種方案的比較,本設(shè)計(jì)主要顯示字體較多,因此,最后選擇了方案四。
1.1.3 控制按鍵的論證與選擇
方案一:選取陣列式按鍵,減少了I/O口的使用,且掃描M×N個(gè)按鍵只需占用M+N個(gè)I/O口即可實(shí)現(xiàn),但給編程帶來(lái)了一定的困難,雖然節(jié)省了很多的口線,降低了成本,但在此設(shè)計(jì)中所用的按鍵要盡量少,因此排除此方案。
方案二:獨(dú)立式按鍵,每個(gè)按鍵實(shí)現(xiàn)一個(gè)功能,易于控制且編寫程序簡(jiǎn)單,容易理解,雖然會(huì)占用一定的單片機(jī)I/O口資源,但是題目中要求使用的按鍵要盡量少。
通過(guò)以上兩種方案比較,采用方案二。
1.2 系統(tǒng)各模塊的最終方案
經(jīng)過(guò)以上對(duì)本系統(tǒng)各模塊的方案進(jìn)行論證與實(shí)際應(yīng)用相比較,本設(shè)計(jì)電路最終選用AT89C52作為主控系統(tǒng)來(lái)控制時(shí)鐘的準(zhǔn)時(shí)運(yùn)轉(zhuǎn),采用獨(dú)立試按鍵控制本設(shè)計(jì)系統(tǒng)將要實(shí)現(xiàn)的全部功能,選用LCD動(dòng)態(tài)掃描來(lái)顯示時(shí)間。本設(shè)計(jì)選擇最優(yōu)的方案,并設(shè)計(jì)出如圖1所示的系統(tǒng)框圖。
如圖1所示,系統(tǒng)的整個(gè)控制流程是:由單片機(jī)AT89C52的內(nèi)部程序定時(shí)控制LCD使之顯示出本文所要實(shí)現(xiàn)的效果,當(dāng)計(jì)時(shí)到整點(diǎn)時(shí)單片機(jī)發(fā)出一條命令去控制喇叭進(jìn)行整點(diǎn)報(bào)時(shí),若出現(xiàn)特殊狀況,比如突然斷電則單片機(jī)將會(huì)停止工作,從而會(huì)造成時(shí)間的不準(zhǔn)確,所以加一組鍵盤便于隨時(shí)修正時(shí)間使時(shí)間能夠準(zhǔn)時(shí)計(jì)時(shí)。此外,為了使所設(shè)計(jì)的數(shù)字鐘秒表更為準(zhǔn)確,本系統(tǒng)電路又添加了時(shí)鐘芯片DS1302,此芯片計(jì)時(shí)精度非常高,一個(gè)星期誤差只有3s。添加了此芯片使本系統(tǒng)更具實(shí)用性。
2 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)
本設(shè)計(jì)的多功能時(shí)鐘主要由四個(gè)模塊組成,其核心元件是一塊單片機(jī)AT89C52,并采用了誤差小的時(shí)鐘芯片DS1302作時(shí)鐘定時(shí),它一星期的誤差只有為3s。
系統(tǒng)主要通過(guò)單片機(jī)AT89C52對(duì)各個(gè)模塊進(jìn)行實(shí)時(shí)控制,其中P3.1\P3.1\P3.2用來(lái)接獨(dú)矩陣式按鍵,此模塊用于控制電路以便于實(shí)現(xiàn)預(yù)期要實(shí)現(xiàn)的各個(gè)功能:P1和P2口用來(lái)接LCD進(jìn)行動(dòng)態(tài)顯示,利用AT89C52單片機(jī)直接控制LCD來(lái)實(shí)現(xiàn)對(duì)LCD的動(dòng)態(tài)掃描顯示,其中驅(qū)動(dòng)LCD用芯片KS0108;P2.0\P2.1\P2.2還接了時(shí)鐘芯片DS1302的第5、7、6腳作定時(shí)用;本系統(tǒng)還有一部分是鬧鈴,鬧鈴用普通蜂鳴器即可,外加三極管電阻對(duì)其聲音進(jìn)行放大。
2.1 主控制模塊電路的設(shè)計(jì)
主控模塊電路的電路如圖2所示。
如圖2所示,本次設(shè)計(jì)的多功能數(shù)字鐘采用一塊AT89C52作為主控模塊,還用到了轉(zhuǎn)換芯片DS1302,主要是對(duì)實(shí)現(xiàn)定時(shí)電路進(jìn)行信號(hào)交換。在單片機(jī)工作之前,我們必須給它一個(gè)電源(5V)和連接一些需要連接的地方。比如第18、19引腳之間要給它接上一個(gè)12MHz的晶振和兩個(gè)33pF的電容。第31引腳要接上電源,第9引腳要接上復(fù)位電路。第20引腳要接地,第40引腳要接上電源。DS1302芯片主要用于電路的轉(zhuǎn)換。單片機(jī)剩下的P0口、P3口、和P2口分別用于其他功能。同時(shí)要指出的是在使用P0口時(shí)要給它接上上拉電阻,這樣單片機(jī)的驅(qū)動(dòng)能力就會(huì)大大增強(qiáng)。P3口是復(fù)用功能,可以用做數(shù)據(jù)的傳輸和地址線。特別要強(qiáng)調(diào)的是這里只能用高8位做數(shù)據(jù)線。P2口內(nèi)部已經(jīng)具備了上拉電阻,因此不用再加上拉電阻了。這些都是上電之前要做好的一些前提條件,如果忽視了哪一點(diǎn),都可能使單片機(jī)不能正常工作,或者說(shuō)容易燒壞單片機(jī)。
2.2 LCD顯示模塊電路的設(shè)計(jì)
顯示電路圖如圖3所示。從圖3中可以觀察到,單片機(jī)P1口連接LCD的D0-D7, LCD的第1、2腳分別接電源和地,然后由單片機(jī)AT89C52載入程序用以控制LCD,由此來(lái)顯示相應(yīng)的文字。
為了線路的簡(jiǎn)便,本顯示模塊只用到一塊LCD(128×64)的液晶顯示器。另外,為了使程序更簡(jiǎn)單,還使用了一塊液晶的控制器芯片KS0108來(lái)驅(qū)動(dòng)LCD,這樣當(dāng)編寫程序時(shí)就省去了編寫LCD的驅(qū)動(dòng)程序,大大減少了設(shè)計(jì)的時(shí)間段,這樣既省時(shí)間又不會(huì)使電路變復(fù)雜。
2.3 鬧鈴與按鍵模塊電路的設(shè)計(jì)
鬧鈴電路如圖4所示。本電路比較簡(jiǎn)單,只用普通的蜂鳴器接至AT89C52由它進(jìn)行控制,從圖4可以看出單片機(jī)P3.0口接喇叭的正極,為了使蜂鳴器的聲音大些,P3.0口信號(hào)輸出端接上一個(gè)電阻和一個(gè)三極管用于放大聲音信號(hào),蜂鳴器的負(fù)極直接接地,按鍵模塊用到了三個(gè)按鈕和三個(gè)電阻。單片機(jī)的P3.1\P3.2\P3.3與三個(gè)按鈕相連。按鈕的另一端接喇叭的 負(fù)極。其中按鈕的功能是隨時(shí)調(diào)整時(shí)間以及調(diào)
整鬧鐘。
2.4 DS1302時(shí)鐘模塊的設(shè)計(jì)
2.4.1 引腳功能及結(jié)構(gòu)
圖5所示為DS1302的引腳圖。其中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ù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc大于或等于2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說(shuō)明。SCLK始終是輸入端。
2.4.2 DS1302與CPU的連接
DS1302與CPU的連接電路如圖6所示。DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。時(shí)鐘的顯示用LCD。實(shí)際上,在調(diào)試程序時(shí)可以不加電容器,只加一個(gè)32.768kHz的晶振即可。只是選擇晶振時(shí),不同的晶振,誤差也較大(還可以在上面的電路中加入DS18 B20,同時(shí)顯示實(shí)時(shí)溫度)。只要占用CPU一個(gè)口線即可。LCD還可以換成LED,因?yàn)長(zhǎng)ED無(wú)法顯示較復(fù)雜的字符而本設(shè)計(jì)有用到字符顯示,因此系統(tǒng)選用LCD,其特點(diǎn)是可顯示任意字段筆劃(比如星期)而且顯示清晰。
為了初始化任何數(shù)據(jù)的傳輸,引腳信號(hào)應(yīng)由低變高,并且應(yīng)將具有地址和控制信息的8位數(shù)據(jù)(控制字節(jié))裝入芯片的移位寄存器內(nèi),數(shù)據(jù)的讀寫可以用單字節(jié)或多字節(jié)的突發(fā)模式方式進(jìn)行。所有的數(shù)據(jù)應(yīng)在時(shí)鐘的下降沿變化,而在時(shí)鐘的上升沿,芯片或與之相連的設(shè)備進(jìn)行輸入。
3 系統(tǒng)的軟件設(shè)計(jì)
3.1 系統(tǒng)軟件概述
3.1.1 DS1302的命令字節(jié)
命令字節(jié)的格式如圖7所示,每次數(shù)據(jù)的傳輸都是由命令字節(jié)開始的,這里的最高有效位必須是1。D6是RAM(為1)或時(shí)鐘/日歷(為0)的標(biāo)識(shí)位。D1~D5定義片內(nèi)寄存器的地址。最低有效位(D0)定義了寫操作(為0時(shí))或讀操作(為1時(shí))。命令字節(jié)的傳輸始終從最低有效位開始。
3.1.2 DS1302的控制字節(jié)
DS1302的控制字節(jié)如圖7所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。
(1)數(shù)據(jù)的寫入或讀出。對(duì)芯片的所有寫入或讀出操作都是由命令字節(jié)為引導(dǎo)的。每次僅寫入或讀出1B數(shù)據(jù)的操作稱為單字節(jié)操作。每次對(duì)時(shí)鐘/日歷的8B或31個(gè)RAM字節(jié)進(jìn)行全體寫入或讀出稱為多字節(jié)突發(fā)模式操作。包括命令字節(jié)在內(nèi),對(duì)于單字節(jié)操作,每次需要16個(gè)時(shí)鐘;對(duì)于時(shí)鐘/日歷多字節(jié)突發(fā)模式操作,每次需要72個(gè)時(shí)鐘;而對(duì)于RAM多字節(jié)突發(fā)模式操作,每次則需要多達(dá)256個(gè)時(shí)鐘。單字節(jié)傳送操作格式如圖8所示。多字節(jié)突發(fā)模式操作格式如圖9所示。
(2)時(shí)鐘/日歷寄存器數(shù)據(jù)格式及功能定義。訪問(wèn)DS1302片內(nèi)各寄存器數(shù)據(jù)格式如表1所示。表中x表示任意,可為0或1。
3.2 流程圖
3.2.1 主程序流程圖
3.2.2 子程序的設(shè)計(jì)
4 結(jié)語(yǔ)
本多功能數(shù)字鐘系統(tǒng)電路主要是由數(shù)字集成芯片DS1302和單片機(jī)AT89C52實(shí)現(xiàn)的,具有年、月、曰及星期的顯示及設(shè)定功能,同時(shí),具有時(shí)、分、秒的顯示及進(jìn)位功能??稍O(shè)定中斷按鍵,即設(shè)定鬧鈴按鍵和調(diào)整時(shí)間的按鍵以及其它功能的按鍵。能顯示當(dāng)前的時(shí)間、星期及年、月、日,同一時(shí)刻可以設(shè)置鬧鐘。當(dāng)輸入的時(shí)間與設(shè)定的時(shí)間一致時(shí),蜂鳴器就會(huì)發(fā)出報(bào)警聲,還可以播放音樂即為鬧鐘的鈴聲。它有很強(qiáng)的實(shí)用性和較廣泛的推廣應(yīng)用前景。
電容器相關(guān)文章:電容器原理
手機(jī)電池相關(guān)文章:手機(jī)電池修復(fù)
51單片機(jī)相關(guān)文章:51單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
蜂鳴器相關(guān)文章:蜂鳴器原理 上拉電阻相關(guān)文章:上拉電阻原理
評(píng)論