//keyTime++;
if(++keyTime>200)
{
keyTime=0;
keyRetu=2; // 輸出2
s_keyState=4;
}
}
case 4:
if(key_temp==no_key) //檢測到按鍵松開
{
s_keyState=0; //狀態(tài)轉到狀態(tài)0,完成
//keyTime=0;
}
break;
default: // 特殊情況:key_state是其他值得情況,清零key_state。這種情況一般出現(xiàn)在 沒有初始化key_state,第一次執(zhí)行這個函數(shù)的時候
s_keyState=0; //狀態(tài)轉到狀態(tài)0,
break;
}
if(keyRetu==1)
{
switch(key_temp) //當確定按鍵按下后,列舉所有的按鍵情況
{
case 0xee: key_value=0;break;//1110 1110
case 0xde: key_value=1;break;//1101 1110
case 0xbe: key_value=2;break;
case 0x7e: key_value=3;break;
case 0xed: key_value=4;break;
case 0xdd: key_value=5;break;
case 0xbd: key_value=6;break;
case 0x7d: key_value=7;break;
case 0xeb: key_value=8;break;
case 0xdb: key_value=9;break;
case 0xbb: key_value=10;break;
case 0x7b: key_value=11;break;
case 0xe7: key_value=12;break;
case 0xd7: key_value=13;break;
case 0xb7: key_value=14;break;
case 0x77: key_value=15;break;
}
}
if(keyRetu==2)
{
switch(key_temp) //當確定按鍵按下后,列舉所有的按鍵情況
{
case 0xee: key_value=100;break;//1110 1110
case 0xde: key_value=101;break;//1101 1110
case 0xbe: key_value=102;break;
case 0x7e: key_value=103;break;
case 0xed: key_value=104;break;
case 0xdd: key_value=105;break;
case 0xbd: key_value=106;break;
case 0x7d: key_value=107;break;
case 0xeb: key_value=108;break;
case 0xdb: key_value=109;break;
case 0xbb: key_value=110;break;
case 0x7b: key_value=111;break;
case 0xe7: key_value=112;break;
case 0xd7: key_value=113;break;
case 0xb7: key_value=114;break;
case 0x77: key_value=115;break;
}
}
return key_value;
}
/*==========================================================
* 開發(fā)人員:laowang
* 當前版本:V1.0
* 創(chuàng)建時間:11/26/2013
* 修改時間:
* 功能說明:對4*4矩陣鍵盤掃描,用8位數(shù)碼管進行顯示,剛開始時不亮,依次按下按鍵時
數(shù)碼管依次顯示0-F,掃描方法為狀態(tài)機方法+定時器中斷
*==========================================================*/
#include<reg52.h>
#include"Define.h"
#include"display.h"
#include"matrixkeyscan.h"
readkey=Keyscan();
// Display(readkey);
switch(key_value)
{
case 0: P2=0x66;break;
case 1: P2=0x02;break;
case 2: P2=0x04;break;
case 3: P2=0x08;break;
case 4: P2=0x10;break;
case 5: P2=0x20;break;
case 6: P2=0x40;break;
case 7: P2=0xff;break;
case 100: P2=0x00;break;
case 101: P2=0x0f;break;
case 102: P2=0xf0;break;
case 103: P2=0x88;break;
default:break;
}
}
}
}