×
嵌入式 > 技术百科 > 详情

基于单片机的流水灯介绍_51单片机流水灯的五种实现方法

发布时间:2020-06-08 发布时间:
|

本文为大家带来五种51单片机流水灯的实现方法。


51单片机流水灯原理


为主控芯片和流水灯模块的原理图。流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。


实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。


1、通过改变赋值实现流水灯


void main()


{ while(1) {


P2=0xfe;


delay1ms(500); P2=0xfd; delay1ms(500); P2=0xfb;


delay1ms(500); P2=0xf7; delay1ms(500); P2=0xef; delay1ms(500); P2=0xdf;


delay1ms(500); P2=0xbf; delay1ms(500); P2=0x7f;


delay1ms(500); } }


2、通过公式运算实现流水灯


void main() {


while(1) {


uinta,b=1; P2=0xfe; delayms(500); for(a=0;a<7;a++)


P2-=b; // P2=P2-b delayms(500); b=b*2; //都化为同一类型进制运算 } } }


3、通过操作符<


void main() {


uchara,i;


while(1) {


a=0xfe; //点亮第一位LED灯 for(i=0;i<8;i++)


{ P2=a;


a=a<<1; //左移一位


a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500); } } }


4、通过库函数_crol_(字符左移)实现流水灯


void main()


{


uint a; a=0xfe; while(1) {


P2=a;a=_crol_(a,1); delay_ms(500); } }


5、采用数组实现流水灯


uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


void main(void) {


uchari;


while (1) {


for(i=0;i<8;i++) //循环点亮8只LED灯 {


P2=table[i];


delay_ms(500); //延时500毫秒 } } }

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器