单片机-多个按键的操作

使用软件Proteus和Keil uVision4
代码如下:

#include
int num;
char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80
,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//把数组放入ROM中
void delay(int ms)
{
int x,y;
for(x=ms;x>0;x--)
for(y=110;y>0;y--);
}
main()
{
while(1)
{
if(P1!=0xff)//只要有一个按键按下,那么p1端口必然会有一个二进制位0,那么就不等于0xff
{
delay(10);//大概10ms 延时消抖
if(P1!=0xff)
{
switch(P1)//针对p1端口进行选择,这个时候p1可以当做一个变量。主要p1是特殊功能寄存器
{
case 0xfe: num=1; break;
case 0xfd: num=2; break;
case 0xfb: num=3; break;
case 0xf7: num=4; break;
case 0xef: num=5; break;
case 0xdf: num=6; break;
case 0xbf: num=7; break;
case 0x7f: num=8; break;
}
}
}
while(P1!=0xff);//松手检测
P3=table[num];
}
}

电路仿真效果
单片机-多个按键的操作_第1张图片按下松开第一个按键,就显示1,
同样按下第n个按键,就显示n。

使用: 80C51 ,BUTTON , 7SEG-COM-AN-GRN

你可能感兴趣的:(单片机)