单片机运行该程序灯一直全亮,没有变化!求帮忙!

# include <reg52.h>
# include <intrins.h>

# define uint unsigned int

void delay(uint z);

int main(void)
{
int x, y;

for (x=0; x<3; x++) //奇数灯亮然后偶数灯亮,重复三车
{
P1 = 0xAA;
delay (300);

P1 = 0x55;
delay (300);

}

P1 = 0xff;

for (y=0; y<3; y++) //中间到两边,两边到中间,重复三次
{
P1 = 0xE7;
delay (300);

P1 = 0xDB;
delay (300);

P1 = 0xBD;
delay (300);

P1 = 0x7E;
delay (300);

P1 = 0x7E;
delay (300);

P1 = 0xBD;
delay (300);

P1 = 0xDB;
delay (300);

P1 = 0xE7;
delay (300);
}

P1 = 0xff;

return 0;
}

void delay(uint z)
{
uint x,y;
for (x=z; x>z; x--)
{
for (y=110; y>0; y--);
}
}

从你的程序看,LED是低电平驱动。现在症状是全亮,那么说明P1口接LED的脚都是低电平,一般来说,上电后初始化所有引脚都是高电平的。
所以要找原因,先从一个LED开始:
sbit led1=P1^0; //51写法,其它单片机具体看手册

main()
{
while(1) //控制led间隔闪烁

{
led1 = ~led1;
delay300;

}

}

一个一个检查端口引脚,都能正常控制闪烁没问题了,说明硬件连接和delay函数是正确的,再写循环闪烁的程序。(如果delay不正确),开关频率大于60hz,那么人眼看起来也是一直亮
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-18
问题出在延时函数:
for (x=z; x>z; x--),X>Z不成立,不执行循环。

单片机运行该程序灯一直全亮,没有变化!求帮忙!
从你的程序看,LED是低电平驱动。现在症状是全亮,那么说明P1口接LED的脚都是低电平,一般来说,上电后初始化所有引脚都是高电平的。所以要找原因,先从一个LED开始:sbit led1=P1^0; \/\/51写法,其它单片机具体看手册 main(){ while(1) \/\/控制led间隔闪烁 { led1 = ~led1;delay300...

单片机控制流水灯全亮了
外围系统的问题可能性很大,也就是说,没有振荡或者没有复位等等,这个问题还是常见的,这样的话单片机就处于初试状态,所有引脚都是高电平,并且程序没有执行,你用的是LED正极接单片机吧

单片机点亮rgb灯,一直亮不闪烁什么原因
单片机点亮rgb灯,一直亮不闪烁的原因如下:1、线路接触不良,开关或接头等地方松动了会闪烁。2、LED灯的驱动电源供电不足,这种情况需要维修或更换LED。

单片机流水灯全亮在灭在亮的程序怎么写
你流水灯都写好了 全亮全灭还不简单啊,设置 P0=0X00 (假设低电平亮,高电平灭) 在延迟一下 在P0=0XFF 在延时 不就OK了 把这几个指令打包下放到一个子程序里 你用按键控制的时候就让按键执行这个子程序 如果是 主程序循环的 话就放进主程序 ...

单片机:为什么灯一直亮?程序要求是控制P1.0,使输出高低电平,使灯亮一...
如果只为了控制P1.0,可用如下代码:include<reg52.h> void delay(uint a);sbit d1=P1^0;void main(){ while(1){ d1=!d1;delay(100);\/\/延时可调节 } }

c52单片机灯全亮响个不停
解决方法如下:1、检查电路板:电路板或者连线出现了问题。2、效验程序代码:检查灯光控制部分的代码是否正确。3、排查功率问题:电源接触不良或功率不足。

单片机流水灯全亮,我亦有同样问题在看见最佳回答后仍不知如何解决,附网...
有可能你的芯片没有设置上电复位电路,就是说程序并没有在芯片上电之后就运行。所以就停在灯全亮这里了。单片机有上复位引脚,有的是上电后高电平脉冲复位,有的是低电平脉冲复,你用的时候要看一下对应型号的芯片手册上是怎么表示的。复位引脚的引脚名上有一个横线说明是低电平复位,没有横线说明是...

帮看看这个程序 开发板(单片机90C51),LED应该全灭啊,但LED灯却全亮昨...
灯是亮还是灭要看你开发板的原理图才知道,你试试把pp=0x00;看看灯是亮还是灭;然后在改回pp=0xff;编译下载程序看看结果有没有变化吧

为什么单片机定时器实验1s定时的程序灯会全亮
1、定时器溢出:当定时器计数到最大值时,会发生溢出,导致程序出现错误。在这种情况下,所有的灯可能会同时亮起。可以重新设计定时器中断服务程序,确保在定时器溢出时程序能够正常运行。2、程序逻辑错误:如果程序中使用了不正确的逻辑或算法,可能会导致灯全亮。例如,如果使用了错误的比较运算符或条件...

为什么51单片机开发板,p1口 p1.6和p1.7的灯不受程序控制,一直亮着?
如果51单片机发狂的话这里面一直亮着那就说明里面出现的短路了这个问题如果出现短路了一般情况就会出现这样的一种情况所以呢无论从哪个角度讲把方方面面来说的话这个里边这个电其前

相似回答