基于單片機(jī)的LED彩燈控制器
標(biāo)簽:LED 照明 光源
本文引用地址:http://m.butianyuan.cn/article/200060.htm1 引言
隨著人們生活環(huán)境的不斷改善和美化,在許多場合可以看到彩色霓虹燈。 led 彩燈由于其豐富的燈光色彩,低廉的造價(jià)以及控制簡單等特點(diǎn)而得到了廣泛的應(yīng)用,用彩燈來裝飾已經(jīng)成為一種時(shí)尚。但目前市場上各式樣的 LED 彩燈控制器大多數(shù)用全硬件電路實(shí)現(xiàn),電路結(jié)構(gòu)復(fù)雜、功能單一,這樣一旦制作成品只能按照固定的模式閃亮,不能根據(jù)不同場合、不同時(shí)間段的需要來調(diào)節(jié)亮燈時(shí)間、模式、閃爍頻率等動(dòng)態(tài)參數(shù)。這種彩燈控制器結(jié)構(gòu)往往有芯片過多、電路復(fù)雜、功率損耗大等缺點(diǎn)。此外從功能效果上看,亮燈模式少而且樣式單調(diào),缺乏用戶可操作性,影響亮燈效果。因此有必要對現(xiàn)有的彩燈控制器進(jìn)行改進(jìn)。
本文提出了一種基于AT89S51單片機(jī)的彩燈控制方案,實(shí)現(xiàn)對LED彩燈的控制。
2 設(shè)計(jì)原理
2.1 MCS51
引腳說明
MCS單片機(jī)都采用40引腳的雙列直插封裝方式。圖1為引腳排列圖, 40條引腳說明如下:
(1)主電源引腳Vss和Vcc
① Vss接地
② Vcc正常操作時(shí)為+5伏電源
(2)外接晶振引腳XTAL1和XTAL2
① XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。
② XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外部振蕩源。
圖1 8051引腳排列圖
(3)控制或與其它電源復(fù)用引腳RST/VPD,ALE/PROG,EA和/Vpp
① RST/VPD 當(dāng)振蕩器運(yùn)行時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位
在Vcc掉電期間,此引腳可接上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。
② ALE/PROG正常操作時(shí)為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號(hào)。因此,它可用作對外輸出的時(shí)鐘,或用于定時(shí)目的。但要注意,每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖,ALE 端可以驅(qū)動(dòng)(吸收或輸出電流)八個(gè)LSTTL電路。 對于EPROM型單片機(jī),在EPROM編程期間,此引腳接收編程脈P沖(PROG功能)
③PSEN外部程序存儲(chǔ)器讀選通信號(hào)輸出端,在從外部程序存儲(chǔ)取指令(或數(shù)據(jù))期間,在每個(gè)機(jī)器周期內(nèi)兩次有效。同樣可以驅(qū)動(dòng)八LSTTL輸入。
④ EA/Vpp 、EA/Vpp為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器選擇端。當(dāng)EA/Vpp為高電平時(shí),訪問內(nèi)部程序存儲(chǔ)器,當(dāng)/Vpp 為低電平時(shí),則訪問外部程序存儲(chǔ)器。
對于EPROM型單片機(jī),在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。
(4)輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。
① P0口(P0.0 - P0.7)是一個(gè)8位漏極開路型雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。
② P1口(P1.0 - P1.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載……
③ P2口(P2.0 - P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。
④ P3口(P3.0 - P3.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。
2.2 LED顯示數(shù)碼管
LED有共陰極和共陽極兩種。如圖所示。二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5V的電壓。一位顯示器由8個(gè)發(fā)光二極管組成,其中7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃(段)a~g,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時(shí),該段筆劃即亮;不加電壓則暗。為了保護(hù)各段LED不被損壞,需外加限流電。
LED數(shù)碼管結(jié)構(gòu)原理圖
AT89C2051芯片的20個(gè)引腳功能為:
VCC 電源電壓。
GND 接地。
RST 復(fù)位輸入。當(dāng)RST變?yōu)楦唠娖讲⒈3?個(gè)機(jī)器周期時(shí),所有I/O引腳復(fù)位至“1”。
XTAL1 反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2 來自反向振蕩放大器的輸出。
P1口 8位雙向I/O口。引腳P1.2~P1.7提供內(nèi)部上拉,當(dāng)作為輸入并被外部下拉為低電平時(shí),它們將輸出電流,這是因內(nèi)部上拉的緣故。P1.0和P1.1需要外部上拉,可用作片內(nèi)精確模擬比較器的正向輸入(AIN0)和反向輸入(AIN1),P1口輸出緩沖器能接收20mA電流,并能直接驅(qū)動(dòng)LED顯示器;P1口引腳寫入“1” 后,可用作輸入。在閃速編程與編程校驗(yàn)期間,P1口也可接收編碼數(shù)據(jù)。
P3口 引腳P3.0~P3.5與P3.7為7個(gè)帶內(nèi)部上拉的雙向I/0引腳。P3.6在內(nèi)部已與片內(nèi)比較器輸出相連,不能作為通用I/O引腳訪問。P3口的輸出緩沖器能接收20mA的灌電流;P3口寫入“1”后,內(nèi)部上拉,可用輸入。P3口也可用作特殊功能口。
2.3 中斷指令
在CPU和外設(shè)交換信息時(shí),存在著快速CPU和慢速外設(shè)間的矛盾,機(jī)器內(nèi)部有時(shí)也可能出現(xiàn)突發(fā)事件,為此,計(jì)算機(jī)中通常采用中斷技術(shù)。
CPU和外設(shè)并行工作,當(dāng)外設(shè)數(shù)據(jù)準(zhǔn)備好( 或有某種突發(fā)事件發(fā)生)時(shí)向CPU提出請求,CPU暫停正在執(zhí)行的程序轉(zhuǎn)而為該外設(shè)服務(wù)(或處 理緊急事件),處理完畢再回到原斷點(diǎn)繼續(xù)執(zhí)行原程序。
中斷優(yōu)先級(jí):當(dāng)有多個(gè)中斷源同時(shí) 向CPU申請中斷時(shí),CPU優(yōu)先響應(yīng)最需緊急處理的中斷請求,處理完畢再響應(yīng)優(yōu)先級(jí)別較低的 ,這種預(yù)先安排的響應(yīng)次序。
中斷的嵌套:在中斷系統(tǒng)中,高優(yōu)先級(jí)的 中斷請求能中斷正在進(jìn)行的較低級(jí)的中斷源處理,
(1)中斷技術(shù)是實(shí)時(shí)控制中的常用技術(shù),51系列單片機(jī)有三個(gè)內(nèi)部中斷,二個(gè)外部中斷。所謂 外部中斷就是在外部引腳上有產(chǎn)生中斷所需要的信號(hào)。
每個(gè)中斷源有固定的中斷服務(wù)程序的入口地址(稱矢量地址或向量地址)。當(dāng)CPU響應(yīng)中斷以 后單片機(jī)內(nèi)部硬件保證它能自動(dòng)的跳轉(zhuǎn)到該地址。因此,此地址是應(yīng)該熟記的,在匯編程序 中,中斷服務(wù)程序應(yīng)存放在正確的向量地址內(nèi)。
(或存放一條轉(zhuǎn)移指令);而在C語言中是靠Interrupt n的關(guān)鍵字n自動(dòng)設(shè)置的。
(2)單片機(jī)的中斷是靠內(nèi)部的寄存器管理的,這就是中斷允許寄存器IE,中斷優(yōu)先權(quán)寄存器IP ,必須在CPU開中斷即開全局中斷開關(guān)EA,開各中斷源的中斷開關(guān),CPU才能響應(yīng)該中斷源的 中斷請求,其中缺一不可。
(3)從程序表面看來,主程序和中斷服務(wù)程序好象是沒有關(guān)連的,只有掌握中斷響應(yīng)的過程, 才能理解中斷的發(fā)生和返回,看得懂中斷程序,并能編寫高質(zhì)量中斷程序。
表2.1 常用中斷
符號(hào)名 稱中 斷 引 起 原 因中斷服務(wù)程序入口
INT0外部中斷0P3.2引腳的低電平或下降沿信號(hào)0003H
INT1外部中斷1
P3.3引腳的低電平或下降沿信號(hào)0013H
T0定時(shí)器0中斷定時(shí)計(jì)數(shù)器0計(jì)數(shù)回零溢出000BH
T1定時(shí)器1中斷定時(shí)計(jì)數(shù)器1計(jì)數(shù)回零溢出001BH
T2定時(shí)器2中斷定時(shí)計(jì)數(shù)器2中斷(TF2或T2EX信號(hào))002BH
TI/RI串行口中斷串行通信完成一幀數(shù)據(jù)發(fā)送或接收引起中斷0023H
3 硬件原理圖
晶振(12MHz)定時(shí)1秒,對于12MHz的晶振而言,其時(shí)鐘周期T=1/f=1/12us,而89C51的一個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期,所以一個(gè)機(jī)器周期為1us,對于T0而言,使之工作于16-bit,最大計(jì)時(shí)為65536*1=65536us,需要多次定時(shí)才能實(shí)現(xiàn)一秒定時(shí)。
4 軟件設(shè)計(jì)
4.1 流程圖
led燈相關(guān)文章:led燈原理
評(píng)論