单片机独立键盘点亮LED的问题??

2025-03-09 12:52:29
推荐回答(3个)
回答1:

这个。硬件我就不说了。至于软件嘛,呵呵。弟,认真观察一下你的过程。
程序到最后就进入死循环while(1)了,每次都在检测key1的状态,不是0就是1,程序执行的速度那么快,你说你的这条 if(key1==0)d1=1; 有半毛钱用吗?从宏观上来讲这条程序一点用都没有,
每个时刻key1都是等于1的,也就是说无时无刻都是在执行d1 = 0这种情况。
自己想想办法怎么避免这种情况,比如,可以设置一个标志位,根据按键的按下的情况改变这个标志位,再根据这个标志位来操作led的亮灭。但是要注意,按键需要消抖。可以这样:
bit fg = 0;
while(1)
{
if(key1==0)
fg=1;
if(fg == 1)
d1=0;
}

我上面给你的这段,只能按一次按键看到灯灭(亮?不知道你的硬件怎么接的)的效果,想用按键控制led的亮和灭,还需要进一步探讨。我相信我这么一说,你也就懂了,好好想想吧。

回答2:

但是为什么我按下键后灯不亮?

----
松开,还不亮?

那么,检查硬件电路吧。

回答3:

LED灯是有正负极的,你看下正负极是怎么接的。