📄 arrkeyboard_1.c
字号:
/**********************************************
* File: ArrKeyboard_1.C
* Description: Array Keyboard Interface Example
* Created Date: 2007-10-01
* Last Modified: 2007-10-01
* Author: Jeffrey - Schicksal@126.com
* Notes: None
**********************************************/
#include <REGX51.h>
unsigned int Scan_Keyboard();
/**********************************************
* Function: delay(unsigned int t)
* Input Variables: t
* Return Variables: None
* Usage: Common Delay Routine, t as the delay time ticks
**********************************************/
void delay(unsigned int t)
{
for(;t>0;t--); // 延时循环
}
/**********************************************
* Function: main()
* Input Variables: None
* Return Variables: None
* Usage: Program Entry
*********************************************/
#define ROW_DETECT_1 0xfff0
#define ROW_DETECT_2 0xff0f
#define ROW_DETECT_3 0xf0ff
#define ROW_DETECT_4 0x0fff
#define COLUMN_DETECT_1 0xeeee
#define COLUMN_DETECT_1 0xdddd
#define COLUMN_DETECT_1 0xbbbb
#define COLUMN_DETECT_1 0x7777
void main()
{
unsigned int Keyboard_Status; // 按键状态
unsigned char LED_Status = 0xff; // 定义键值
unsigned char Row, Column;
unsigned char jTemp; // 临时变量
unsigned char iTemp; // 临时变量
unsigned char BStatus;
while(1)
{
Keyboard_Status = Scan_Keyboard();
if(~(Keyboard_Status | ROW_DETECT_1))
{
Row = 1; // 第一行
}
else if(~(Keyboard_Status | ROW_DETECT_2))
{
Row = 2; // 第二行
}
else if(~(Keyboard_Status | ROW_DETECT_3))
{
Row = 4; // 第三行
}
else if(~(Keyboard_Status | ROW_DETECT_4))
{
Row = 8; // 第四行
}
if(~(Keyboard_Status | COLUMN_DETECT_1))
{
Column = 0x10; // 第一列
}
else if(~(Keyboard_Status | COLUMN_DETECT_2))
{
Column = 0x20; // 第二列
}
else if(~(Keyboard_Status | COLUMN_DETECT_3))
{
Column = 0x40; // 第三列
}
else if(~(Keyboard_Status | COLUMN_DETECT_4))
{
Column = 0x80; // 第四列
}
LED_Status = Column + Row;
P0 = ~LED_Status;
delay(100);
// 点亮相应的LED灯
//********************主程序部分*********************//
// Add your code here
//********************主程序部分*********************//
}
}
/**********************************************
* Function: Scan_Keyboard
* Input Variables: None
* Return Variables: Keys Value
* Usage: Read Keyboard Status
*********************************************/
unsigned int Scan_Keyboard()
{
unsigned int Keys_Value; // 定义键值变量
P2 = 0xf7; // 第四行置低,准备读取按键状态
Keys_Value = P2>>4; // 读取按键状态
Keys_Value <<= 4; // 移位
P2 = 0xfb; // 第三行置低,准备读取按键状态
Keys_Value += P2>>4; // 读取按键状态
Keys_Value <<= 4; // 移位
P2 = 0xfd; // 第二行置低,准备读取按键状态
Keys_Value += P2>>4; // 读取按键状态
Keys_Value <<= 4; // 移位
P2 = 0xfe; // 第一行置低,准备读取按键状态
Keys_Value += P2>>4; // 读取按键状态
return Keys_Value; // 返回按键状态值
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -