|
嘛,先解釋一下,流星雨就是幾個(gè)亮度不同的燈一起滾動(dòng),亮度依次更暗,像流星雨拖著尾巴。
控制全彩(三色)led也可以用同樣的概念編程。
硬件用的STC 12C5A60S2,晶振應(yīng)該是11.0592。
程序上設(shè)計(jì)的是,使用P1口,低電平點(diǎn)亮,同時(shí)亮4個(gè)亮度不同的燈。
可以自己更改,P1為I/O口,if(atimer0<5)這里的數(shù)字代表每個(gè)燈的亮度,定時(shí)中里的nn越大,流動(dòng)越慢。
原理使用PWM,同時(shí)調(diào)節(jié)4個(gè)口得占空比,再同時(shí)使它們移動(dòng)。
簡(jiǎn)略解釋一下程序。注釋里的2.5ms無(wú)意義,最初想用T0運(yùn)行pwm,后來(lái)發(fā)現(xiàn)速度不夠,所以T0改成50ms用作流動(dòng)值的累加。
第一部分設(shè)定變量,這個(gè)不必說(shuō)。
第二部分,主函數(shù)設(shè)定定時(shí)器。
第三部分,while循環(huán)里的前半段:a b c d是所亮led的序號(hào),這部分程序在對(duì)abcd加減的同時(shí)防止其超出正常值
第四部分,while循環(huán)里的后半段:以分辨率255,判斷每次循環(huán)執(zhí)行時(shí)led是否點(diǎn)亮,輸出占空比。
這里使用主函數(shù)里的while,pwm頻率為單片機(jī)運(yùn)行這部分的最高速度/255。
第五部分,定時(shí)器0中斷,負(fù)責(zé):間隔指定的時(shí)間后移動(dòng)流水燈。
流星雨.rar
(922 Bytes, 下載次數(shù): 1042)
2013-10-14 02:06 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|