本帖最后由 lbb_1112 于 2015-12-4 13:45 编辑
用74c922做的键盘控制,51单片机和12864显示,按键后总是没反应进不到按键后的程序中去,74c922的输出有信号,能用万用表量到。
程序如下:好像进不去这个键盘的程序,
void main ()
{
start:
//delay_lcd(2000);
init_lcd ();
init();
shen=0;
time=0;
KDA=keyDA;
KDA=0;
counter=0;
clrram ();
wc(0x80);
wh("速度");
wd(0x3a);
wc(0x90);
wh ("深度");
while(1)
{ uchar k;
delay_lcd(100);
k=key1();
if(k==14)
{wc(0x98);
wd(0x30+k);
s=1;
shezhi();
}
if(k<=9)
{wc(0x88);
wd(0x30+k);
}
sushen();
// delay_lcd(1000);
if(k==12)
{
goto start;
}
}
}
uchar key1(void)
{ uchar keyk,k;
if(KDA==1)
{ // P2=0x00;
delay_key(20);
if (KDA==1)
{
delay_key(20);
keyk=P2&0xf0;
P2=0xf0;
}
switch(keyk)
{
case 0x00:k=7; break;
case 0x10:k=4; break;
case 0x30:k=1; break;
case 0x20:k=0; break;
case 0x40:k=8; break;
case 0x50:k=5; break;
case 0x70:k=2; break;
case 0x80:k=9; break;
case 0x90:k=6; break;
case 0xb0:k=3; break;
case 0x60:k=10;break;//光标
case 0xa0:k=11;break;//确定
case 0xc0:k=12;break;//复位
case 0xd0:k=13;break;//通信
case 0xf0:k=14;break;//设置
case 0xe0:k=15;break;//测量
}
if (KDA==1);
{
next++;}
return k;
}
//else
//{
//return;}
}
|