📄 keydrv.h
字号:
/*************************************************************
Copyright 2008-2017 Q~.~Q, GUET AoeeSuot Software dept.
http://
Project : C8051F020Pro
Chip type : C8051F020
Program type : Application
Clock frequency : 24.000000 MHz
Company : Student Union Of Technology
Academy Of Electronic Engineering
--------------------原始版本--------------------------------------------
Date : 2008/8/11
Version : V1.0
Author : Q~.~Q (朗.夜)
Comments: 基于CH452的键盘驱动程序
1, 实现两种模式读取键值
--------------------版本更新--------------------------------------------
Date : 2009/3/26
Version : V1.2
Author : Q~.~Q (朗.夜)
Comments: 增加功能:
1, 增加第三种模式(判断是否一直按下)读取按键
修正:
1, 使用C8051F020中断7取代中断0作为CH452的按键响应口。
2, 修改CH452WriteData(),CH452ReadKey()为可重入函数。
--------------------版本更新--------------------------------------------
Date :
Version :
Author :
Comments:
**************************************************************/
#ifndef _KeyDrv_h
#define _KeyDrv_h
#include "..\C8051F020INIT\C8051F020INIT.h"
/************************* keyboard definition*************************/
#define NO0 25
#define NO1 17
#define NO2 18
#define NO3 19
#define NO4 9
#define NO5 10
#define NO6 11
#define NO7 1
#define NO8 2
#define NO9 3
#define KEYDOT 26 //小数点
#define NOENT 27 //数字键盘确定
#define KEYC 4 //取消
#define KEYE 12 //确定
#define PAGEU 6 //上翻
#define PAGED 14 //下翻
#define KEYSYS 13 //系统
#define KEYMENU 5 //菜单
#define KEYU 21
#define KEYD 29
#define KEYL 28
#define KEYR 30
/************************* keyboard definition*************************/
/*
CH452具有硬件实现的高速4线串行接口,包括 4 个信号
线:串行数据输入线 DIN、串行数据时钟线 DCLK、串
行数据加载线 LOAD、串行数据输出线 DOUT。其中,
DIN、DCLK、LOAD 是带上拉的输入信号线,默认是高
电平;DOUT 在未启用键盘扫描功能时作为串行数据输
出线,在启用键盘扫描功能后作为键盘中断和数据输出线,
默认是高电平。 */
#define KEYDCLK P34
#define KEYDIN P35
#define KEYLOAD P36
/*7 位按键代码输出完毕后,无论DCLK如何变化,CH452
都将DOUT恢复为默认的高电平,这样设计可避免单片机重
复响应低电平中断。*/
#define KEYDOUT P37
// 按键缓冲区大小
#define KEYBUFSIZE 5
// 如果按键已释放,返回此命令
#define KEY_RELEASED 255
#define CH452CMD_INIT 513 //初始化命令
#define CH452CMD_CONTROL 1058 //开启键盘扫描,中断触发方式为低电平脉冲触发
#define CH452CMD_READ 1826 //读键值命令
/*******************DECLARATION API FUNCTION FOR USER*****************/
/********************************************
* 名称:CH452Init()
* 功能:初始化CH452,初始单片机外部中断
* 入口参数:无
* 出口参数:无
* 说明:
*********************************************/
extern void CH452Init(void);
//*******************************************
//函数名称: GetKey()
//函数功能: 得到按键值
//形式参数: mode 得到按键值的模式
//返回参数: key 当前键值
//使用说明:
// 1 == mode , 等待直到有键按下为止
// 0 == mode , 只读一次,如果没有键按下返回假
// 2 == mode, 读取判断按键是否一直接下
// 使用 GetKey( 2 ) 可参考如下代码
// while( KEY_RELEASED != GetKey(2) )
// {
// if( KEY_RELEASED != (keytemp = GetKey(2) )
// .............
// }
//*******************************************
extern uint8 GetKey( uint8 mode );
/*******************DECLARATION API FUNCTION FOR USER*****************/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -