4×4矩阵键盘C语言程序参考

来源:本站
导读:目前正在解读《4×4矩阵键盘C语言程序参考》的相关信息,《4×4矩阵键盘C语言程序参考》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《4×4矩阵键盘C语言程序参考》的详细说明。
简介:下面给大家介绍一下4×4矩阵键盘C语言程序参考

#define int8 unsigned int

#define int16 unsigned char

#define int32 unsigned long

#define KEY_PORT PORTD

#define KEY_PIN PIND

#define ROW1 (1<<0)

#define ROW2 (1<<1)

#define ROW3 (1<<2)

#define ROW4 (1<<3)

static int8 scan_X(void);

static delay(void);

int8 scan_key(void);

/*

函数原型:int8 scan_key(void)

功能: 返回按下的按键的行列值,

如返回第二行第三列,即按键“6”,

返回值0x23,高位为行,低位为列

键盘:

7 8 9 /

4 5 6 *

1 2 3 +

C 0 = -

返回值:

0x11 0x12 0x13 0x14

0x21 0x22 0x23 0x24

0x31 0x32 0x33 0x34

0x41 0x42 0x43 0x44

作者: Benny

Email: 89S53@163.com

2005

*/

int8 scan_key(void){

//第四行----------------

KEY_PORT|=0xff;

KEY_PORT&=~ROW4;

if ((KEY_PIN&0xf0)!=0xf0)

{

delay();//去抖动

if ((KEY_PIN&0xf0)!=0xf0)

{

return (0x40|scan_X());

}

}

//第三行----------------

KEY_PORT|=0xff;

KEY_PORT&=~ROW3;

if ((KEY_PIN&0xf0)!=0xf0)

{

delay();//去抖动

if ((KEY_PIN&0xf0)!=0xf0)

{

return (0x30|scan_X());

}

}

//第二行----------------

KEY_PORT|=0xff;

KEY_PORT&=~ROW2;

if ((KEY_PIN&0xf0)!=0xf0)

{

delay();//去抖动

if ((KEY_PIN&0xf0)!=0xf0)

{

return (0x20|scan_X());

}

}

//第一行: 7 8 9 /

KEY_PORT|=0xff;

KEY_PORT&=~ROW1;

if ((KEY_PIN&0xf0)!=0xf0)

{

delay();//去抖动

if ((KEY_PIN&0xf0)!=0xf0)

{

return (0x10|scan_X());

}

}

}

//列扫描函数

static int8 scan_X(void){

if ((KEY_PIN&0xf0)==0xe0)

{ //"7"

while((KEY_PIN&0xf0)==0xe0);

return 0x01; //第一列

}

else if((KEY_PIN&0xf0)==0xd0)

{

while((KEY_PIN&0xf0)==0xd0);

return 0x02;//第二列

}

else if((KEY_PIN&0xf0)==0xb0)

{

while((KEY_PIN&0xf0)==0xb0);

return 0x03;//第三列

}

else if((KEY_PIN&0xf0)==0x70)

{

while((KEY_PIN&0xf0)==0x70);

return 0x04; //第四列

}

}

static delay(void){

//去抖动

int16 i,j;

for (i=0;i<10;i++)

{

for (j=0;j<100;j++)

{}

}

}

提醒:《4×4矩阵键盘C语言程序参考》最后刷新时间 2024-03-14 01:00:03,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《4×4矩阵键盘C语言程序参考》该内容的真实性请自行鉴别。