标题:
单片机一键多功能按键识别的问题
[打印本页]
作者:
lclbf
时间:
2018-7-22 16:43
标题:
单片机一键多功能按键识别的问题
1、工作原理:
开关SP1 接在P3.7/RD 管脚上,在AT89S51 单片机的P1 端口接有四个发光二极管,上电的时候,L1 接在P1.0 管脚上的发光二极管在闪烁,当每一次按下开关SP1 的时候,L2 接在P1.1 管脚上的发光二极管在闪烁,再按下开关SP1 的时候,L3 接在P1.2 管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4 接在P1.3 管脚上的发光二极管在闪烁,再按下开关SP1 的时候,又轮到L1 在闪烁了,如此轮流下去。
2、电路图:
QQ图片20180722163604.png
(25.99 KB, 下载次数: 36)
下载附件
2018-7-22 16:37 上传
3、C语言程序:
#include <AT89X51.H>
unsigned char ID;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay02s(void)
{
unsigned char i;
for(i=20;i>0;i--)
{delay10ms();
}
}
void main(void)
{ while(1)
{ if(P3_7==0)
{delay10ms();
if(P3_7==0)
{
ID++;
if(ID==4)
{
ID=0;
}
while(P3_7==0);
}
}
switch(ID)
{ case 0:
P1_0=~P1_0;
delay02s();
break;
case 1:
P1_1=~P1_1;
delay02s();
break;
case 2:
P1_2=~P1_2;
delay02s();
break;
case 3:
P1_3=~P1_3;
delay02s();
break;
}
}
}
复制代码
4、出现问题:
不断切换开关,会发现有的灯不会熄灭,会亮,也就是有正常灯闪,还有其他的灯会亮,但是不会闪。我把灯闪后延时的语句后面把对应灯置高电平(如:P1_3=~P1_3;
delay02s();
break;),灯不闪了,但是不会出现灯同时亮的现象。
谁知道这个问题在哪里,麻烦指点一下。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1