0;x--)for(i=110;" />

51单片机3-4矩阵键盘程序

#include "reg51.h"
#define uint8 unsigned char
#define uint16 unsigned int
uint8 code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39}; //0~9,AbC
void delay(uint16 x)
{
uint8 i;
for(x;x>0;x--)
for(i=110;i>0;i--);
}

uint8 scanf()
{
uint8 temp,key=0;
P1=0x07; //行扫描
temp=P1&0x07;
delay(5);
if(temp != 0x07)
{
if(temp==1) key=0;
if(temp==2) key=4;
if(temp==4) key=8;
}

P1=0xf8; //列扫描
temp=P1&0xf8;
delay(5);
if(temp != 0xf8)
{
if(temp==0xf0) key=key+1;
if(temp==0xe8) key=key+2;
if(temp==0xd8) key=key+3;
if(temp==0xb8) key=key+4;
}
while(P1!=0xf8); //松手检测
return key;
}

void main()
{
uint8 key;
while(1)
{
key=scanf();
P2=tab[key]; //当显示0表示没按下按键,显示其他则表示按下相应按键了
}
}

相关文档
最新文档