
单片机嵌入式,流水灯编程。
有C语言基础的话那就很简单了,一个最简单的流水灯还是很简单的,只需要要用到8个IO口就可以了,程序里面就1个延时和一个循环赋值语句
单片机流水灯Keil程序
#includeunsigned char a=0x80;void delay(unsigned int t){ unsigned int i,j; for(i=t;i>0;i--) for(j=110;j>0;j--);}void main(){ while(1) { P2=_crol_(a,1); if(P3.3==0) { delay(10); if(P3.3==0) { while(!P3.3) { P2=0xaa;delay(200);P2=0x00; P2=0x55;delay(200);P2=0x00; } } } }}有不对的地方随时回复,我临时写的。
希望我的回答能帮助到你。
51单片机,开关控制LED,开始流水灯,按一下停止,再按一下继续流水灯
采用中断方式序如下:#include#include#define uchar unsigned charsbit button = P3^2;uchar press = 0;uchar luishui = 0xfe;void Delay(uchar z){ uchar x, y; for(x = z; x > 0; x--) for(y = 255; y > 0; y--);}void main(){ IT0 = 1; EX0 = 1; EA = 1; while(1) { if(press == 1) P2 = 0xff; if(press == 0) { P2 = luishui; luishui = _crol_(luishui, 1); Delay(255); } }}X0_INT() interrupt 0{ press += 1; if(press == 2) press = 0; Delay(10); while(button == 0);}试试看。
单片机流水灯的问题
我们把这段程序拆开来看while()led1for(a;a;a) for(b;b;b)三个部分首先 while(1) 表达式的值是1 所以永远是逻辑真 而且也没有break跳出循环所以永远循环 是死循环led1 一般是某个IO口 不断的输出高电平延时 再输出低电平 延时 这样不断的重复两个for循环只是延时 51单片机的时钟频率 一般是用12MHZ左右的晶振 所以for (a=1000;a>0;a--) for (b=100;b>0;b--);能延时1秒不到一点
单片机流水灯简单的程序
while(1) { P1=i; i=_crol_(i,1); if(i==j) { P1=j; j=_cror_(j,1); \\\/\\\/这里只会执行一次,然后就直到i左移后等于j了,然后又执行一次 } \\\/\\\/所以得不到你要的结果。
delay(1000); }——————————————————正确的分割线——————————char flag=0; while(1) { if(flag) { P1=i; i=_crol_(i,1); if(i == 0x7f) flag = 1; } else { P1=i; i=_cror_(i,1); if(i == 0xfe) flag = 0; } delay(1000); }
单片机用keil实现流水灯来回亮只用for来延时,求高手
#include#include#define uchar unsigned charmain(){uchar i,j;P1=0xfe;while(1){P1=_crol_(P1,1);for(i=100;i>0;i--)for(j=0;j<120;j++);}}
单片机 蜂鸣器加流水灯问题
#include#include#define uchar unsigned char#define uint unsigned intsbit teep = P1^2; \\\/\\\/ P1.2口控制蜂鸣器Delay(uint);main (){ uchar temp, a, b; temp = 0xfe; P0 = temp; while(1) { for(a = 0; a < 7; a++) { temp = _crol_(temp, 1); \\\/\\\/左移1位 P0 = temp; Delay(260); } for(b = 0; b < 7; b++) { temp = _cror_(temp, 1); \\\/\\\/右移1位 P0 = temp; Delay(260); } }}Delay(uint z) \\\/\\\/含有发音功能的延时程序{ uint i, j; for(j = z; j > 0; j--) { teep = 0; for(i = 100; i > 0; i--); teep = 1; for(i = 100; i > 0; i--); }}试试看。