吳文兵 脫建智
摘 要:本文基于STC89C52單片機應(yīng)用為核心,從系統(tǒng)的硬件電路入手,將8位發(fā)光二極管通過共陰極接法接到單片機的P0端口,并通過控制P0口的電平高低以達到控制發(fā)光二極管,從而實現(xiàn)循環(huán)流水燈的設(shè)計。
【關(guān)鍵詞】發(fā)光二極管 單片機 流水燈
在我們的日常生活中,隨處可見各種美麗的霓虹燈,這些美麗的霓虹燈將我們的城市裝扮的絢麗多彩,霓虹燈廣告牌也已經(jīng)成為各大商家爭相競爭的手段。其實這些霓虹燈是由發(fā)光二極管組合而成的,而這些發(fā)光二極管的組合多數(shù)也是基于單片機設(shè)計和制作出來的。而這些霓虹燈大多電路結(jié)構(gòu)復(fù)雜,不容易實現(xiàn)。我們就以制作一臺簡易循環(huán)流水燈為例來介紹一下它基于51單片機的設(shè)計方案。
1 功能需求約定
本次設(shè)計主要實現(xiàn)8個發(fā)光管間隔200ms由上至下,再由下至上,一個輪回后再重復(fù)上個輪回,即用單片機來設(shè)計循環(huán)流水燈,就是實現(xiàn)這十五種狀態(tài)的循環(huán)切換控制。
2 開發(fā)方案的設(shè)計
本文分別從硬件設(shè)計方案和軟件設(shè)計方案兩個方面進行分析。
2.1 硬件設(shè)計方案
根據(jù)循環(huán)流水燈的十五種運行狀態(tài),可以看出,每盞燈的每種狀態(tài)我們可以做同樣的處理,因此在電路設(shè)計中,可以在每種狀態(tài)下,對單片機的對應(yīng)引腳做同樣的輸出,這樣我們就可以實現(xiàn)基于51單片機最小系統(tǒng)電路(如圖1a所示)流水燈模型的硬件設(shè)計了,值得說明的是我們這里采用的是共陰極連接方式(如圖1b所示),所謂共陰極連接方式即發(fā)光二極管的陰極連接在一起形成一個公共端。如圖1b中的D0-D7八個發(fā)光二極管就為共陰極連接方式。在這里每個發(fā)光二極管上還串聯(lián)了一個限流電阻,那此限流電阻的阻值又該如何選取呢?由于單片機上提供的電壓一般為+5V,發(fā)光二極管的導(dǎo)通壓降一般為1.7V左右,需要的電流一般為3mA,所以限流電阻阻值的計算公式為
2.2 軟件設(shè)計方案
狀態(tài)控制碼的確定
所謂狀態(tài)控制碼,就是要使流水燈工作在某一種狀態(tài),我們應(yīng)該向單片機的控制口所輸出的編碼,由前面的硬件設(shè)計可知,在某一個狀態(tài)下,當(dāng)P0口的某一引腳輸出為1時,對應(yīng)的發(fā)光二極管點亮,當(dāng)P0口某一引腳輸出為0時,對應(yīng)發(fā)光二極管熄滅,因此我們前方十五種狀態(tài)所對應(yīng)的P0口控制碼可以依次寫出,以狀態(tài)1D0燈亮為例,我們可以得到00000001的一個狀態(tài)碼,也就是01(十六進制),因此我們只需要為01通過P0口輸出就可以實現(xiàn)狀態(tài)1的顯示了。
在確定了控制碼之后就可以進行程序流程的設(shè)計了,上電后,取狀態(tài)1的控制碼,并且通過P0口輸出實現(xiàn)D0燈亮,延遲一定時間后,取狀態(tài)2的控制碼實現(xiàn)D1燈亮,按照這個流程直到取狀態(tài)15的控制碼,實現(xiàn)對應(yīng)燈點亮,再從狀態(tài)一開始執(zhí)行,實現(xiàn)這十五種狀態(tài)的循環(huán)切換控制。
3 系統(tǒng)模型的實現(xiàn)
3.1 實現(xiàn)方法
對于單片機而言,一般編程完畢后先基于Proteus等平臺進行仿真測試,然后再進行電路的實現(xiàn)和產(chǎn)品的形成。
3.1.1 軟件實現(xiàn)
本次設(shè)計采用了C51語言,并基于keilC51開發(fā)環(huán)境進行實現(xiàn),在main主程序當(dāng)中,完成主循環(huán)任務(wù),對于15種狀態(tài)的控制,其實是一樣的,都是將操作碼送給P0口,而且延時時間也是相同的,所以可以用一個延時子函數(shù)來編寫。
3.1.2 硬件實現(xiàn)
本次設(shè)計所需要的元器件是8個發(fā)光二極管、8只限流電阻、一塊STC89C52單片機、一個USB下載裝置以及若干個杜邦線。
3.2 實現(xiàn)操作
任務(wù):本次設(shè)計主要實現(xiàn)8個發(fā)光管間隔200ms由上至下,再由下至上,一個輪回后再重復(fù)上個輪回。
我們將程序編寫為如圖2所示。
程序中用到了intrins.h庫函數(shù)中的_crol_和_cror_指令,如在main主程序中的大循環(huán)內(nèi),將i=0x01的值給P0,則D0燈點亮,延時一定時間后,循環(huán)左移一位,此時i的值變?yōu)?x02,再將i的值給P0,則D1燈亮,延時一定時間,按照這種方式直到i的值變?yōu)?x80,將此值再賦給P0,實現(xiàn)D7燈亮。接下來開始循環(huán)右移一位,此時i的中變?yōu)?x40,再將i的值給P0,則D6燈亮,延時一定時間,由此實現(xiàn)八個發(fā)光二極管從上而下,再從下到上依次點亮的任務(wù)。
4 結(jié)語
經(jīng)過上面的設(shè)計,我們完成了循環(huán)流水燈的設(shè)計,循環(huán)流水燈相對于其他的設(shè)計,已經(jīng)相當(dāng)簡單,即沒有中斷也沒有定時/計數(shù)部分。但是這次設(shè)計,難點還是有的,比如發(fā)光二極管中高低電平的選擇,以及保護電阻的選取??傊ㄟ^設(shè)計該循環(huán)流水燈我們掌握了它基于51單片機的設(shè)計方法,同時可以將該方法推廣到我們其他基于51單片機的小制作中。
參考文獻
[1]張燦.單片機花樣流水燈設(shè)計.信息通信,2013(6).
[2]王莉莉,宋冬萍.基于單片機的花式流水燈的設(shè)計[J],廣西輕工業(yè),2011(11).
作者簡介
吳文兵(1985-),女,河北省人?,F(xiàn)就職于濰坊工程職業(yè)學(xué)院。主要研究方向是機電一體化、單片機設(shè)計方面的研究。
脫建智(1981-),男,回族,山東省人?,F(xiàn)就職于濰坊工程職業(yè)學(xué)院。主要研究方向是單片機設(shè)計方面的研究。
作者單位
濰坊工程職業(yè)學(xué)院山工機電工程學(xué)院 山東省濰坊市 262500