利用AT89C51單片機(jī)對發(fā)光二極管陣列進(jìn)行控制
隨著現(xiàn)代科技的發(fā)展,高科技產(chǎn)品以其簡潔化、便攜等,給人們帶來了很大的方便。而“搖搖棒”以其更加簡捷與新穎的信息傳遞方式給人們帶來耳目一新的感受,也必將會給人們帶來一種新的方便的文化傳遞方式,常用在晚會及大型的娛樂節(jié)目場合。
本文通過研究和設(shè)計(jì)一個(gè)利用事先編好程序來控制16 個(gè)LED 發(fā)光二極管,并配合左右手的搖晃來顯示字符和簡易圖形的電子裝置(簡稱為“搖搖棒”),來傳遞有趣的信息。此裝置利用AT89C51 單片機(jī)對發(fā)光二極管陣列進(jìn)行控制。用滾珠開關(guān)檢測當(dāng)前搖動狀態(tài),單片機(jī)控制16 個(gè)發(fā)光二極管進(jìn)行不同頻率的亮滅刷新,則只要搖動就可以可顯示輸出文字及圖案等信息,從而達(dá)到在該視覺平面上傳達(dá)信息的作用。
1 硬件系統(tǒng)的組成
本設(shè)計(jì)的簡單有趣的LED 搖搖棒,它是基于單片機(jī)控制的電子裝置。具有按鍵進(jìn)行畫面切換和消除重影等功能,能使畫面清晰顯示出來。它主要由單片機(jī)控制部分,LED 驅(qū)動部分,LED 顯示部分組成,其硬件組成框圖如圖1 所示。
1.1 按鍵模塊
本設(shè)計(jì)中通過一個(gè)畫面切換開關(guān)對顯示的內(nèi)容進(jìn)行切換。在設(shè)計(jì)中通過滾珠開關(guān)來控制搖搖棒只能向一邊搖動時(shí)顯示信息,否則會出現(xiàn)鏡像字或鏡像畫面,也就是重影的現(xiàn)象。可選的搖動控制開關(guān)有水銀開關(guān)和滾珠開關(guān)兩種。水銀開關(guān)穩(wěn)定性較高,但安全性較差。滾珠開關(guān)雖然穩(wěn)定性稍差,但不容易被打破,安全度很高。考慮到實(shí)際應(yīng)用環(huán)境,故選用滾珠開關(guān)作為系統(tǒng)的搖動控制,由滾珠開關(guān)帶來的不穩(wěn)定性可以通過軟件進(jìn)行彌補(bǔ)。手動復(fù)位開關(guān)的功能是控制系統(tǒng)的啟停。
1.2 控制部分
單片機(jī)最小系統(tǒng)作為整個(gè)系統(tǒng)的控制核心,它主要負(fù)責(zé)控制二極管的亮滅及顯示狀態(tài)。通過單片機(jī)的軟件編程及外部中斷,來控制搖搖棒的顯示效果。
1.3 LED 顯示模塊
此設(shè)計(jì)中根據(jù)LED 點(diǎn)陣的顯示原理來設(shè)計(jì)顯示部分。點(diǎn)陣的顯示分為行掃描與列掃描兩種,列掃描是將字模數(shù)組通過點(diǎn)陣屏的行驅(qū)動進(jìn)行輸入,然后通過列對每一行進(jìn)行掃描,當(dāng)列為低(高)電平、行為高(低)電平時(shí)則表示該點(diǎn)為圖案的一部分,將其讀出、顯示。而本次設(shè)計(jì)的LED 顯示棒數(shù)據(jù)傳輸原理與LED 點(diǎn)陣屏相似??梢园袻ED 顯示棒看成是LED 點(diǎn)陣屏中的一列。為了使顯示的圖案清晰,在設(shè)計(jì)中使用了16 個(gè)高亮度LED 管將它們排成一列,整個(gè)屏在靜止時(shí)也就相當(dāng)于16 行×1 列。數(shù)據(jù)傳輸時(shí)同樣使用行送數(shù)據(jù)、列掃描。在擺動過程中,應(yīng)用人眼的視覺暫留原理,被點(diǎn)亮的列不會很快的消失,而是隨著擺動的方向繼續(xù)向前移動,只要移動的速度高于視覺暫留的最短時(shí)間顯示內(nèi)容就不會熄滅,這樣,一幅圖案也就可以這樣被“擺動”出來了。
根據(jù)系統(tǒng)分析,具體的硬件電路連如圖2 所示。在具體制作硬件的時(shí)候,將16 個(gè)3mm 高亮度紅色的LED 排列成整齊的一列。
在proteus 下仿真調(diào)試的時(shí)候,給定的電源VCC 為5V,實(shí)際使用時(shí)用3 節(jié)干電池串聯(lián)4.5V 即可。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 軟件設(shè)計(jì)思想
在搖動LED 棒的時(shí)候單片機(jī)必須單程傳送數(shù)據(jù),否則顯示的圖形會產(chǎn)生重影,影響視覺效果。因此當(dāng)系統(tǒng)開始工作后通過滾珠開關(guān)的位置來使單片機(jī)實(shí)現(xiàn)單程傳送數(shù)據(jù)給LED.如果滾珠開關(guān)位于右邊,則進(jìn)入外部中斷1 并將一變量置1,在變量為1期間讓單片機(jī)以一定的頻率將數(shù)據(jù)傳送給LED.如果滾珠開關(guān)位于左邊,則進(jìn)入外部中斷0 并將變量置0.在這期間單片機(jī)不會傳送數(shù)據(jù)給LED.在送數(shù)據(jù)時(shí),數(shù)據(jù)送完后應(yīng)延時(shí)一段時(shí)間來使搖動時(shí)顯示的每個(gè)字不會太擁擠,之后再立刻熄滅LED 并開始重新判斷滾珠開關(guān)的位置。
2.2 軟件設(shè)計(jì)流程圖
通過軟件設(shè)計(jì)思想的分析,得到該系統(tǒng)的主程序流程如圖3所示。
系統(tǒng)開始運(yùn)行,首先初始化整個(gè)系統(tǒng),然后等待外部中斷。當(dāng)用手搖動到指定位置時(shí),由滾珠開關(guān)觸發(fā)外部中斷,系統(tǒng)接收到外部中斷信號后,就傳送數(shù)據(jù),再經(jīng)過一段延時(shí)后開始顯示。顯示完成返回主程序,等待下一個(gè)搖動周期的到來。周而復(fù)始的晃動,則會顯示出相應(yīng)的信息。
3 結(jié)論
在設(shè)計(jì)中通過調(diào)試,使用外部中斷讓數(shù)據(jù)單程傳輸很好的取消了重影。通過改變傳送數(shù)據(jù)方式:由一個(gè)字符接一個(gè)字符傳送改為將一組字符一起傳送,傳送結(jié)束后再延時(shí)等,使顯示的內(nèi)容在扇形區(qū)域內(nèi)完整的顯示出來,同時(shí)也解決了畫面連續(xù)出現(xiàn)沒有間斷的問題。所以得出,只要控制好數(shù)據(jù)傳輸方式以及每次傳輸數(shù)據(jù)間的延時(shí)就可以實(shí)現(xiàn)多種數(shù)據(jù)的顯示方法。整個(gè)系統(tǒng)達(dá)到了預(yù)期的目的,結(jié)構(gòu)簡單,趣味性好。經(jīng)過繼續(xù)研究可以應(yīng)用到LED廣告等行業(yè)中。