单片机让LED灯闪烁问题

2025-04-04 20:52:11
推荐回答(4个)
回答1:

呵呵,楼上可能有点小错误哈,程序中的for循环是没错的,i的值会减到0,然后跳出循环。至于LZ看到的 LED在开始持续很短的时间是不亮的 可能是因为你的复位电路不是很合适,复位时间比较长,单片机在复位的时候引脚为高,这时候LED就不亮,之后一直亮是因为你的延时太短,char型数据循环100次用的时间很短的,人眼分辨不出来,把延时加长就可以了,一般是写一个延时函数,主程序中直接调用,像下面这样,参数是多少就是延时多少ms(晶振12M,12T单片机),试试吧,祝成功~
void Delay(unsigned int x)
{
unsigned int a,b;
for(a = x; a > 0; a--)
for(b = 110; b > 0; b--);
}

回答2:

for循环时间太短!

回答3:

unsigned char i;
的i始终大于等于0,所以要改为for(i=100; i != 0; i--);才行。另外变量声明不要放在语句的后面或里面要好些。

回答4:

时间太短了吧,要想能看到闪,一亮一灭得1秒左右好些