单片机流水灯程序,第一个灯亮然后第二个灯亮,这么写哪里有问题,求大神,求指教

如题所述

请你参考:

    在 P2 = 0xfd; 的后边 再加一句 delay(100); 

    就可以解决问题。

    不过,只见你的 void delay(uint a); 的声明,

    怎么没见到实现。

    如果没有,你添加以下:

void delay(uint a)
{
    unsigned char t;
    while(a--)
    for(t=0;t<120;t++);
}

希望能解决你的问题!!!!!

追问

弄好了,谢谢,但是你可以告诉我为什么吗,我还是不懂

请教我一下可以吗,弄不动下次我还做不出很麻烦的

追答

如果没有第二次延时,那么执行了P2=0xfd之后,循环马上返回,从头开始立刻执行P2=0xfe;第二个灯还没亮起来,又让第一个灯亮了,所以你总是看到第一个灯亮。

温馨提示:内容为网友见解,仅供参考
无其他回答

单片机流水灯程序,第一个灯亮然后第二个灯亮,这么写哪里有问题,求大神...
在 P2 = 0xfd; 的后边 再加一句 delay(100);就可以解决问题。不过,只见你的 void delay(uint a); 的声明,怎么没见到实现。如果没有,你添加以下:void delay(uint a){ unsigned char t; while(a--) for(t=0;t<120;t++);}希望能解决你的问题!!!

...单片机 按键控制流水灯,要求按一下按键第一个灯亮,按两下第二个灯...
如果你不会写程序,给你了也没用 给你个思路:预先定于一个寄存器KEYNUM,首先有按键检测程序,每检测到一次按键,KEYNUM+1。在显示程序里判断KEYNUM是几,如果是1则第一个灯亮,其他的灭,依次类推,如果KEYNUM=8,第八个灯亮,同时清除KWENUM....

...程序 要求:按一下亮一个,再按一下第二个亮,第一个熄灭
if(Key==0){ LED_1=0; \/\/第一个灯亮 LED_2=1; \/\/ Key=1;Delay(250);if(Key==0){ Delay(10); \/\/软件防抖,延时10ms LED_1=1; \/\/第一个灭 LED_2=0;} \/\/第二个亮 } } Delay(300);Key=1;} }

单片机流水灯(8个)先一个个亮再两个两个的亮再三个
亮一个的初值为1,两个的为3三个的为7~~以此类推,然后循环左移或循环右移就可以了,

51单片机开发板八个led灯依次点亮(就是流水灯)然后再全部
600);D7=0;delay(600);} } 延时函数delay的实现如下:void delay(uint z){ uint x,y;for(x=100;x>0;x--){ for(y=z;y>0;y--){ } } 这段代码实现了8个LED灯的流水点亮效果,先点亮第一个LED,等待600毫秒后,再点亮第二个LED,依此类推,直到所有LED都点亮,然后循环重复。

51单片机控制1组流水灯2组LED的方法(能给个代码最好)
\/\/定义第二个LED灯\/\/主函数,C语言的入口函数: void main(void){ while(1){ \/\/循环扫描按键 if(key1==0) \/\/按键1按下,LED1灯亮 led1=0; if(key2==0) \/\/按键2按下,LED1灯灭 led1=1; if(key3==0) \/\/按键3按下,LED2灯亮 led2=0; if(key4==0) \/\/...

如何在这个单片机流水灯程序里再加上控制奇数灯亮后偶数灯亮?
void delay(int);main(){ unsigned char i;LED = 0xfe;while (1){ for (i = 0; i < 7; i++){ delay(100);LED = (LED << 1) | 0X01;} for (i = 0; i < 7; i++){ delay(100);LED = (LED >> 1) | 0x80;} for (i = 1; i < 7; i += 2){ delay(100...

51单片机流水灯,第一轮每次亮一个灯流水,第二轮每次亮两个灯流水...
void delay(unit z){ unit x, y;for(x = 100; x > 0; x--) for(y = z; y > 0; y--);} void main(){ uchar temp, i;temp = 0xfe;while(1) { for (i = 0; i < 8; i++) { P1 = temp; delay(300); temp = _crol_(temp, 1);} temp <<= 1...

单片机c51流水灯开始1个灯亮,接着2个,3个到8个灯亮,然后全灭,再重新开...
include<reg51.h> void delay(int a){ while(a--);} main(){ int i;while(1){ P0=0xfe;i=8;while(i--){delay(30000);P0=P0<<1;} P0=0xff;delay(30000);} }

51单片机流水灯程序
程序如下:include <reg52.h> sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3;sbit led5 = P2^4;sbit led6 = P2^5;sbit led7 = P2^6;sbit led8 = P2^7;void main(){ int i,j;\/\/点亮第一个灯 led1 = 1;led2 = 0;led3 = 0;led4 = ...

相似回答