将颜色数据和显示时间(速度)相组合就可方便地实现七彩跳变、渐变、追逐等花样效果,变化方式可达百种以上。例如将单种颜色顺序从左到右或从右到左依次点亮或熄灭、从两边到中间或从中间到两边依次点亮或熄灭,或将两种或两种以上颜色作为一个变化单位也可获得多种变化效果。
除此以外,也可以依据人眼视觉的特殊性,将以上变化方式结合快慢变化又可以获得多种多样的显示效果。
编程时将各种花样效果的颜色数据和显示时间保存在数据存储区,控制时读取颜色和时间数据后输出到相应的输出锁存器,在LED发光单元上就可体现出丰富多彩的变化效果。实现较为简单的七彩跳变效果的程序流程图如图所示。
下文给出以“灯”字为例实现较为简单变化效果的程序。该字有75个发光点共225颗LED,划分为25个发光单元。
以下为灭LED后用七色逐个发光单元延时点亮LED,表现为“书写”效果
Start:
mov r2,#25;控制25个发光单元
mov r0,#OOh ;从灭LED开始
Led_on_Step:
mov a,r0;送颜色数据
acall write595—3bit;颜色数据移三位
djnz r2,Led_on_Step
clr rcIk
Setb rclk;上升沿时颜色在LED上显示
acall delay_1s;延时1s再
点亮下一个发光单元
Inc r0;更换颜色
CJne r0,#08,Led_on_Step;
是否已显示七种颜色
;以下为实现七色轮流闪烁显示
mov r2,#25
Led_on_Flash:
mov a,#00h;灭LED
acall write595_3bit
djnz r2,Led_on,Flash
clr rclk
Setb rcik
acall delay_ls;LED关闭1s
mov r2,#25
mov r0,#O1h;从蓝色开始
Led_on_Flash1:
mov a,r0
acall write595_3bit
djnz r2,Led_on_Flashl
cir rclk
Setb rclk
acall delay_is; LED壳1s
Inc r0;更换颜色
Cjne r0,#08,Led_on_Step;是否已显示七种颜色
;以下为用两种颜色显示“灯”字
mov r2,#12;“火”用红色显示(含12个发光单元)
Color_Red:
mov a,#01h
acall write595_3bit
djnz r2,Colorl
mov r2,.#13;“丁”用蓝色显示(含13个发光单元)
Color_Blue:
mov a,#06h
acall write595_3bit
djnz r2,Color2
cir rclk
Setb rclk
acall delay_10s;延时10s
Sjmp Start
上一页 [1] [2] [3]