标题:
51单片机矩阵键盘模块代码
[打印本页]
作者:
AronZHOU
时间:
2021-7-20 10:06
标题:
51单片机矩阵键盘模块代码
#include "bsp_key.h"
#include <STC15F2K60S2.H>
/**
* @函数名: 按键读取
* @参数值: 无
* @返回值 : 按键的码值
* @函数功能: 返回按键码
*/
unsigned char Key_Read(void)
{
unsigned int Key_New;
unsigned char Key_Val;
P44 = 0; P42 = 1; P35 = 1; P34 = 1; // 第1列
Key_New = P3;
P44 = 1; P42 = 0; // 第2列
Key_New = (Key_New<<4) | (P3&0x0f);
P42 = 1; P35 = 0; // 第3列
Key_New = (Key_New<<4) | (P3&0x0f);
P35 = 1; P34 = 0; // 第4列
Key_New = (Key_New<<4) | (P3&0x0f);
switch(~Key_New)
{
case 0x8000: Key_Val = 4; break; // S4 1000 0000 0000 0000
case 0x4000: Key_Val = 5; break; // S5 0100 0000 0000 0000
case 0x2000: Key_Val = 6; break; // S6 0010 0000 0000 0000
case 0x1000: Key_Val = 7; break; // S8 0000 1000 0000 0000
case 0x0400: Key_Val = 8; break; // S7 0001 0000 0000 0000
case 0x0800: Key_Val = 9; break; // S9 0000 0100 0000 0000
case 0x0200: Key_Val = 10; break; // S10 0000 0010 0000 0000
case 0x0100: Key_Val = 11; break; // S11 0000 0001 0000 0000
case 0x0080: Key_Val = 12; break; // S12 0000 0000 1000 0000
case 0x0040: Key_Val = 13; break; // S13 0000 0000 0100 0000
case 0x0020: Key_Val = 14; break; // S14 0000 0000 0010 0000
case 0x0010: Key_Val = 15; break; // S15 0000 0000 0001 0000
case 0x0008: Key_Val = 16; break; // S16 0000 0000 0000 1000
case 0x0004: Key_Val = 17; break; // S17 0000 0000 0000 0100
case 0x0002: Key_Val = 18; break; // S18 0000 0000 0000 0010
case 0x0001: Key_Val = 19; break; // S19 0000 0000 0000 0001
default: Key_Val = 0;
}
return Key_Val;
}
/**
* @函数名: 独立按键读取
* @参数值: 无
* @返回值 : 按键的码值
* @函数功能: 返回按键码
*/
unsigned char Key_Read_BTN(void)
{
unsigned char Key_Val;
if(P30==0) Key_Val=7;
else if(P31==0) Key_Val=6;
else if(P32==0) Key_Val=5;
else if(P33==0) Key_Val=4;
return Key_Val;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1