|
#include<reg52.h>
#include"hl52_h.c"
#define uchar unsigned char
void delay(int q)
{
while(q)
{
--q;
}
}
void scan()
{
int table ;
int i,k,hkey,lkey;
uchar code number[50]={
0X3f,0X06,0X5b,0X4f,0,0,0,0,0,0,
0X66,0X6d,0X7d,0X07,0,0,0,0,0,0,
0X7f,0X6f,0X77,0X7c,0,0,0,0,0,0,
0X39,0X5e,0X79,0X71,0,0,0,0,0,0, } ;
P3=0X0f;
if(P3!=0X0f) // 行正列負(fù)電頻,行P3.0起,列P3.4起
delay(10);
i=P3&0x0f; //判斷行 ,列取與操作,全部統(tǒng)一。行是低4位。
switch(i)
{
case 0X0e : //行1
hkey= 0;
break;
case 0X0d: //行2
hkey=1;
break;
case 0X0b: //行3
hkey=2;
break;
case 0X07: //行4
hkey=3;
break;
}
k=P3&0Xf0; //列判斷 列初始負(fù)。
switch(k)
{
case 0X10:
lkey=0;
break;
case 0X20:
lkey=1;
break;
case 0X80:
lkey=2;
break;
case 0Xf0:
lkey=3;
break;
}
while(P3!=0X0f)
{
delay(10 );
}
table=hkey*10+lkey;
DU=1;
//P0=0Xff ; 測(cè)試用
P0=number[table];
DU=0;
WEI=1;
P0=0X00;
WEI=0;
}
|
|