按键检测程序,按键S1-S4数码管分别全显示2,4,6,8
时间: 2023-06-18 12:02:36 浏览: 118
下面是一份基于51单片机的按键检测程序,其中S1-S4按键被连接到P1口的P1.0-P1.3引脚上,数码管分别被连接到P2口的P2.0-P2.3引脚上,程序的功能是当按下不同的按键时,数码管会显示相应的数字。
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit S1 = P1^0;
sbit S2 = P1^1;
sbit S3 = P1^2;
sbit S4 = P1^3;
uchar code tab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
void delay(uint i)
{
while(i--);
}
uchar key_scan()
{
uchar key_value = 0xff;
if(S1 == 0)
{
delay(1000);
if(S1 == 0)
{
key_value = 1;
}
}
else if(S2 == 0)
{
delay(1000);
if(S2 == 0)
{
key_value = 2;
}
}
else if(S3 == 0)
{
delay(1000);
if(S3 == 0)
{
key_value = 3;
}
}
else if(S4 == 0)
{
delay(1000);
if(S4 == 0)
{
key_value = 4;
}
}
return key_value;
}
void main()
{
uchar key_value = 0xff;
while(1)
{
key_value = key_scan();
switch(key_value)
{
case 1:
P2 = tab[2];
break;
case 2:
P2 = tab[4];
break;
case 3:
P2 = tab[6];
break;
case 4:
P2 = tab[8];
break;
default:
P2 = 0xff;
break;
}
}
}
```
上面的程序中,我们首先定义了数码管显示0-9的编码表,然后定义了一个延时函数用于延时,接着定义了一个按键检测函数`key_scan()`,用于检测按下的是哪一个按键,最后在`main()`函数中根据检测到的按键来控制数码管显示相应的数字。
阅读全文