矩阵按键-线翻转法
#include <REGX51.H>
typedef unsigned char u8;
typedef unsigned int u16;
#define KEY_MATRIX_PORT P1
#define SMG_A_DP_PORT P0
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,};
void delay_10us(u16 ten_us)
{
while(ten_us–);
}
/行列式扫描法****
u8 key_matrix_ranks_scan(void)
{
u8 key_value=0;
KEY_MATRIX_PORT=0xf7;//第一列为低电平
if(KEY_MATRIX_PORT!=0xf7)
{
delay_10us(1000);//消抖
switch(KEY_MATRIX_PORT)
{
case 0x77:key_value=1;break;
case 0xb7:key_value=5;break;
case 0xd7:key_value=9;break;
case 0xe7:key_value=13;break;
}
}
while(KEY_MATRIX_PORT!=0xf7);//等待