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