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