韓雪松
渤海大學(xué)工學(xué)院
基于51單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
韓雪松
渤海大學(xué)工學(xué)院
近年來,隨著科技的發(fā)展,電子產(chǎn)品已經(jīng)應(yīng)用到我們生活的很多面面,在現(xiàn)代生活中,尤其是時(shí)間觀念很強(qiáng)的現(xiàn)在,電子時(shí)鐘是我們必需的物品,雖然市面上的時(shí)鐘種類很多,功能也很多,但是數(shù)字電子時(shí)鐘更具有應(yīng)用價(jià)值,具有顯示清晰,走時(shí)準(zhǔn)確,易于調(diào)試等優(yōu)點(diǎn),將會(huì)在生活和工作中占有很大比重。
單片機(jī) 數(shù)字時(shí)鐘 數(shù)碼管
數(shù)字時(shí)鐘在我們的日常生活中是必不可少的,除了家庭用的時(shí)鐘之外,還有智能的儀器和儀表也都會(huì)用到,雖然實(shí)現(xiàn)時(shí)鐘的方式有很多種,但最實(shí)用的,最方便的還是單片機(jī)。
①自動(dòng)計(jì)時(shí);
②顯示時(shí)間;
③時(shí)間校準(zhǔn);
④整點(diǎn)報(bào)時(shí);
⑤定時(shí)鬧鐘。
2.1 硬件的的選擇與設(shè)計(jì)
硬件設(shè)計(jì)的核心部分就是單片機(jī),單片機(jī)主要應(yīng)用于控制方面,它集成了計(jì)算機(jī)中的大部分功能,本次設(shè)計(jì)采用的是AT89C51:具有4K的只讀存儲(chǔ)器;128*8bit內(nèi)部隨機(jī)存儲(chǔ)器;還具有兩個(gè)優(yōu)先級(jí)別的5個(gè)中斷源;而且具有片內(nèi)振蕩器(頻率為1.2MHz-12MHz)和時(shí)鐘電路;兩個(gè)16位的計(jì)時(shí)器;1個(gè)串行I/O接口,可多機(jī)通信;擁有21個(gè)字節(jié)的特殊功能寄存器;低能耗;更突出的是它具有很強(qiáng)的位處理功能,更貼近這次設(shè)計(jì)的功能。
而軟件計(jì)時(shí)使用的8個(gè)LED數(shù)碼管顯示,小時(shí)與分鐘與秒之間用短線連接,非常清晰,一目了然,時(shí)鐘采用的是12MHz的晶振,電路采用按鍵方式,方便操作。P0口作為段選碼輸出,P2口作位選碼輸出。除了單片機(jī)之外的電路還包括:時(shí)鐘電路,復(fù)位電路,LED數(shù)碼顯示電路和按鍵電路。總體的設(shè)計(jì)框圖如圖1。
圖1 軟件計(jì)時(shí)LED顯示時(shí)鐘總體框圖
2.2 程序設(shè)計(jì)
程序的的設(shè)計(jì)分為匯編程序設(shè)計(jì)和C語言程序設(shè)計(jì):匯編程序具有執(zhí)行快,功能強(qiáng),指令短的特點(diǎn),不管是在運(yùn)算速度上還是存儲(chǔ)空間上,效率都很高,但是應(yīng)用范圍不是很廣;C語言有所不同,在單片機(jī)的很多開發(fā)設(shè)計(jì)中都被廣泛應(yīng)用,在匯編語言的功能基礎(chǔ)上,它還具有良好的可移植性,更強(qiáng)的表達(dá)能力,可以直接操作計(jì)算機(jī)硬件,所以為了設(shè)計(jì)出性能優(yōu)良的時(shí)鐘,在這次設(shè)計(jì)中選擇了C語言編程。
C語言的設(shè)計(jì)包括主程序和子程序,主程序包括參數(shù)初始化,按鍵和顯示部分等(見圖2),每個(gè)模塊都用子程序,在主程序中調(diào)用。
軟件的主要程序部分其實(shí)只有兩大部分,也是兩個(gè)重點(diǎn)就是數(shù)碼管顯示模塊和中斷計(jì)時(shí)模塊。
圖2 主程序流程圖
顯示部分使用的是 LED數(shù)碼顯示管,本次設(shè)計(jì)采用的是7段式,公共端共陽極,陰極端分開控制,需要亮的的二極管的陰極端接地。首先要選通數(shù)碼管,然后可以給I/O線發(fā)送數(shù)字對(duì)應(yīng)的字段碼就可以顯示字符,這樣就會(huì)更簡(jiǎn)單方便的顯示數(shù)字,但是需要的I/O線比較多。
計(jì)數(shù)部分使用的是計(jì)數(shù)器0,如果加法計(jì)數(shù)器TL0的低5位計(jì)數(shù)滿時(shí),就向定時(shí)加法計(jì)數(shù)器TH0進(jìn)位,若TH0同樣計(jì)數(shù)滿的話,則溢出,但此時(shí)計(jì)數(shù)器并不會(huì)停止計(jì)數(shù),而是從0開始進(jìn)行加1計(jì)數(shù),如果中斷允許,可以提出中斷請(qǐng)求。除此之外,還可以通過還可以通過溢出標(biāo)志位TF0來判斷是否溢出。
而單片機(jī)有一個(gè)最初始化的操作就是復(fù)位,復(fù)位的作用就是使中央處理器和其他部分保持在一個(gè)比較平穩(wěn)的狀態(tài),使單片機(jī)能正常的運(yùn)行,在單片機(jī)正常運(yùn)行之后,復(fù)位端會(huì)在外部電路的作用下產(chǎn)生高電平,這時(shí)系統(tǒng)就會(huì)復(fù)位,當(dāng)復(fù)位端變?yōu)榈碗娖綍r(shí),單片機(jī)開始執(zhí)行程序。而片內(nèi)的復(fù)位電路是用施密特觸發(fā)器連接,用來控制噪聲。復(fù)位還有一個(gè)作用,就是單片機(jī)的程序出現(xiàn)錯(cuò)誤時(shí),可以通過復(fù)位重新啟動(dòng)。
而在程序設(shè)計(jì)中有一個(gè)最重要部分的就是中斷,時(shí)間的運(yùn)行是通過定時(shí)中斷子程序?qū)r(shí)鐘單元數(shù)值進(jìn)行位調(diào)整來實(shí)現(xiàn)的。只有中斷源有請(qǐng)求而且被允許的情況下才會(huì)有中斷響應(yīng)。首先,根據(jù)請(qǐng)求的中斷源的優(yōu)先級(jí)使觸發(fā)器置“1”,然后現(xiàn)場(chǎng)保護(hù),重置初值,進(jìn)入下一個(gè)定時(shí)階段,滿60秒則分加1,滿60分則小時(shí)加1,滿24個(gè)小時(shí)之后再重復(fù)循環(huán),就形成了時(shí)鐘計(jì)時(shí)。
按鍵處理的部分設(shè)計(jì)比較人性化,時(shí)鐘調(diào)時(shí)時(shí),K0按鍵按一次,時(shí)鐘暫停,可以調(diào)小時(shí),再按第二次可以調(diào)分鐘,再按一次,就回到正常運(yùn)行了(可以通過K1進(jìn)行調(diào)時(shí)調(diào)分加1操作,通過K2進(jìn)行調(diào)時(shí)調(diào)分減1操作),但是,時(shí)鐘正常運(yùn)行時(shí),K1、K2是不起作用的。流程圖如圖3。
圖3 按鍵處理模塊的流程
圖4 數(shù)字電子時(shí)鐘電路仿真圖
這次設(shè)計(jì)的數(shù)字電子時(shí)鐘還具有鬧鐘功能,只需在電路設(shè)計(jì)中加入蜂鳴器即可,通常使用的是電壓式蜂鳴器,在與單片機(jī)的連接中有兩種方法:一種是使用集電極開路輸出反相驅(qū)動(dòng)器7406,另一種則是使用三極管驅(qū)動(dòng),兩種工作原理基本相同:當(dāng)輸出端口為高電平時(shí),7406或三極管則輸出低電平,蜂鳴器發(fā)聲。
本次設(shè)計(jì)電路的仿真和程序編譯采用的軟件都是單片機(jī)設(shè)計(jì)中經(jīng)常用的protues7.8和Keil C51。protues軟件實(shí)現(xiàn)了單片機(jī)與電路仿真的結(jié)合,支持多種類型的單片機(jī)仿真,而且在仿真過程中可以看到單步的仿真情況,還支持比如Keil C51的程序編譯,功能很豐富,使用也更加方便。而與protues搭配使用的Keil C51,它可以對(duì)程序進(jìn)行編譯,仿真,對(duì)C語言和匯編語言同樣適用,并且可利用的庫(kù)函數(shù)非常多,非常方便使用。仿真圖如圖4。
通過這次的課題研究和實(shí)踐,使我能更為熟練地使用protues仿真和Keil C51對(duì)C語言的編譯,這次設(shè)計(jì)是理論與實(shí)踐的結(jié)合,對(duì)以后的學(xué)習(xí)起到了很大幫助。本次設(shè)計(jì)比較成功,基本完成了電子時(shí)鐘的功能需求,但是還有諸多不足,也會(huì)在以后的學(xué)習(xí)和實(shí)踐中逐漸積累經(jīng)驗(yàn),使自己逐漸進(jìn)步。如今,科技飛速發(fā)展,“互聯(lián)網(wǎng)+”的理念更加深入人心,電子產(chǎn)品的應(yīng)用也會(huì)越來越廣,各種數(shù)碼商品也會(huì)在市場(chǎng)中逐漸成為主流,而我們作為一名當(dāng)代大學(xué)生,更應(yīng)該充分利用自己所學(xué)的知識(shí),為社會(huì)發(fā)展盡自己的一份綿薄之力。
[1]謝維成,楊加國(guó).單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)(第三版).北京:清華大學(xué)出版社,2014
[2]孫涵芳.MCS-51系列單片機(jī)原理及應(yīng)用[M] .北京航空航天大學(xué)出版社.1996-4
[3]謝維成,楊加國(guó).單片機(jī)原理、接口及應(yīng)用程序設(shè)計(jì).北京:電子工業(yè)出版社,2011
[4]張培仁.基于C語言編程MCS-51單片機(jī)原理與應(yīng)用.北京:清華大學(xué)出版社,2003