【摘 要】單片機(jī)具有體積小、控制功能強、功耗低等特點,所以在工業(yè)控制和電子信息技術(shù)領(lǐng)域得到了廣泛的應(yīng)用。本文設(shè)計了基于AT89C51單片機(jī)的流水燈控制系統(tǒng),介紹了系統(tǒng)硬件電路、軟件結(jié)構(gòu)和程序的設(shè)計,對單片機(jī)技術(shù)的相關(guān)應(yīng)用具有借鑒價值。
【關(guān)鍵詞】AT89C51 單片機(jī) 流水燈
在電子信息技術(shù)和自動化智能控制領(lǐng)域,單片機(jī)正以前所未有的速度替代了傳統(tǒng)的數(shù)字邏輯電路構(gòu)成的控制系統(tǒng)。由于單片機(jī)具有體積小、功能強、成本低、應(yīng)用面廣等優(yōu)點,所以單片機(jī)在我們的日常生活和工作中無處不在、無處不有,可以說單片機(jī)已經(jīng)滲透到了我們生活的各個領(lǐng)域?;趩纹瑱C(jī)的流水燈設(shè)計與實現(xiàn),全面的介紹了一個完整的單片機(jī)控制系統(tǒng),包括系統(tǒng)結(jié)構(gòu)和硬件電路,軟件流程和程序編寫。流水燈的控制對單片機(jī)應(yīng)用技術(shù)的教學(xué)入門和基礎(chǔ)案例具有參考價值。
一、控制系統(tǒng)和硬件電路
本文采用AT89C51單片機(jī)為控制器的流水燈系統(tǒng),AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS 8位微處理器 ,工作電壓范圍4.25~5.50V,工作頻率0~24MHz,AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案且在使用AT89C51單片機(jī)時無須外擴(kuò)存儲器[1-3]。本流水燈系統(tǒng)實際上就是一個帶有八個發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的軟件組成的單個單片機(jī)控制系統(tǒng),硬件原理如圖1所示。
本流水燈系統(tǒng)使用AT89C51單片機(jī)來實現(xiàn)流水燈的控制的設(shè)計原理是:P1的八個接口P1.0~P1.7,都通過限流電阻連接著LED燈的陽極,所有LED燈的陰極連接在0V,要讓接在P1.0口的LED1亮起來,那么只要把P1.0口的電平變?yōu)楦唠娖骄涂梢粤?;相反,如果要接在P1.0口的LED1熄滅,就要把P1.0口的電平變?yōu)榈碗娖?;同樣的方式控制接在P1.1~P1.7口的其他7個LED的點亮和熄滅。只要將發(fā)光二極管LED1~LED8依次點亮、熄滅,8只LED燈便會一亮一暗的做流水燈了[3-4]。在此還應(yīng)注意一點,由于人眼的視覺暫留效應(yīng)以及單片機(jī)執(zhí)行每條指令的時間很短,我們在控制二極管亮滅的時候應(yīng)該延時一段時間,否則我們就看不到“流水”效果了,所以要人眼直接觀察到流水燈的狀態(tài),需要在每個LED燈狀態(tài)轉(zhuǎn)換間隔,進(jìn)行一定時間的延時。
二、系統(tǒng)的軟件流程
流水燈系統(tǒng)的控制器為單片機(jī),完成硬件的設(shè)計和實現(xiàn)后,需要根據(jù)系統(tǒng)的控制要求告訴單片機(jī)怎么來進(jìn)行工作,即編寫程序控制單片機(jī)管腳電平的高低變化,來實現(xiàn)發(fā)光二極管的一亮一滅。那么通過軟件編程的方法來實現(xiàn)。下面本文以最簡單的流水燈控制功能,即實現(xiàn)8個LED燈的循環(huán)點亮,圖2為實現(xiàn)流水燈控制的系統(tǒng)的軟件流程[5]。
三、系統(tǒng)程序
編程設(shè)計的思路是在程序一開始就給P1口送一個數(shù),這個數(shù)本身就讓P1.0先高,其他位為低,然后讓這個數(shù)據(jù)向高位移動不就實現(xiàn)“流水”效果,8051指令中沒有讓P1數(shù)據(jù)移動的指令,但有對累加器ACC中數(shù)據(jù)左移或右移的指令,ACC在指令中常寫為A,累加器A數(shù)據(jù)左移指令為\"RL A\",累加器數(shù)據(jù)右移指令為\"RR A\",累加器在數(shù)據(jù)傳輸和數(shù)據(jù)處理過程中作用十分重要,累加器ACC為8位。他可與片內(nèi)所有單字節(jié)寄存器交換數(shù)據(jù),實際上P1和其他端口在單片機(jī)中也是一個寄存器[6-7]。這樣我們可以將需移動的數(shù)據(jù)先放到ACC中,讓其移動,然后將ACC移動后的數(shù)據(jù)再轉(zhuǎn)送到P1口,這樣同樣可以實現(xiàn)“流水”效果。左側(cè)程序就是流水燈的程序light water.asm。
將上述程序編譯并燒寫到AT89C51數(shù)字芯片中,安裝在設(shè)計好的實驗板上,可以看到程序的”流水”效果。
從單片機(jī)控制流水燈系統(tǒng)可以得出,設(shè)計一個完整的單片機(jī)控制系統(tǒng),需要對包括整體系統(tǒng)設(shè)計、硬件電路、軟件設(shè)計、程序編寫等每個環(huán)節(jié)進(jìn)行系統(tǒng)的規(guī)劃和多次的動手實踐調(diào)試,只有這樣,才能全面系統(tǒng)的完成單片機(jī)控制系統(tǒng)的要求。
參考文獻(xiàn):
[1]何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計[M].北京:航空航天大學(xué)出版社,1994.
[2]耿德根.AVR高速嵌入式單片機(jī)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2002.
[3]胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,1996.
[4]易禮智.基于51 單片機(jī)實現(xiàn)流水燈的若干種編程方法[J].銅仁學(xué)院報,2012(11):125-127
[5]周航慈.單片機(jī)應(yīng)用程序設(shè)計技術(shù)[M].北京:北京航空航天大學(xué)出版社,2001.
[6]王成瑞.匯編語言程序設(shè)計[M].北京:高等教育出版社,2010.
[7]徐建民,邵艷華.匯編語言程序設(shè)計(第3版)[M].北京:電子工業(yè)出版社,2010.