#include<iom16v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
#include"yj1602.h"
void delay(uchar n)
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<1141;j++);
}
uchar keyscan(int num)
{
int volue;
switch(num)
{
case 0x7e:
volue=13;
break;
case 0xbe:
volue=9;
break;
case 0xde:
volue=5;
break;
case 0xee:
volue=1;
break;
case 0x7d:
volue=14;
break;
case 0xbd:
volue=10;
break;
case 0xdd:
volue=6;
break;
case 0xed:
volue=2;
break;
case 0x7b:
volue=15;
break;
case 0xbb:
volue=11;
break;
case 0xdb:
volue=7;
break;
case 0xeb:
volue=3;
break;
case 0x77:
volue=15;
break;
case 0xb7:
volue=12;
break;
case 0xd7:
volue=8;
break;
default:
volue=4;
}
return volue;
}
void main()
{ int a,b;
uchar h,l;
LcdInit();
while(1)
{
DDRD=0XFF;
PORTD=0X0F;//输出0X0F,检测行
DDRD&=0XF0;
PORTD|=0X0F;
h=PIND&0X0F;
if(h!=0x0f)
{
delay(10);
h=PIND&0X0F;
if(h!=0x0f)
{
DDRD=0XFF;
PORTD=h|0xf0;
DDRD&=0X0F;
PORTD|=0XF0;
l=PIND&0XF0;
keyscan(h+l);
}
}
}
}