標題:
單片機一鍵多功能按鍵識別的問題
[打印本頁]
作者:
lclbf
時間:
2018-7-22 16:43
標題:
單片機一鍵多功能按鍵識別的問題
1、工作原理:
開關SP1 接在P3.7/RD 管腳上,在AT89S51 單片機的P1 端口接有四個發(fā)光二極管,上電的時候,L1 接在P1.0 管腳上的發(fā)光二極管在閃爍,當每一次按下開關SP1 的時候,L2 接在P1.1 管腳上的發(fā)光二極管在閃爍,再按下開關SP1 的時候,L3 接在P1.2 管腳上的發(fā)光二極管在閃爍,再按下開關SP1的時候,L4 接在P1.3 管腳上的發(fā)光二極管在閃爍,再按下開關SP1 的時候,又輪到L1 在閃爍了,如此輪流下去。
2、電路圖:
QQ圖片20180722163604.png
(25.99 KB, 下載次數(shù): 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、出現(xiàn)問題:
不斷切換開關,會發(fā)現(xiàn)有的燈不會熄滅,會亮,也就是有正常燈閃,還有其他的燈會亮,但是不會閃。我把燈閃后延時的語句后面把對應燈置高電平(如:P1_3=~P1_3;
delay02s();
break;),燈不閃了,但是不會出現(xiàn)燈同時亮的現(xiàn)象。
誰知道這個問題在哪里,麻煩指點一下。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1