📄 key.h
字号:
/************************************************************************************
* Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* Http: www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: Key.h
* Project : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
*
* Author: 李林利
* Version: 1.20
* Date: 2007.6.1
* Email: GavinLi@126.com
*
* Description: 本文件是数码管显示驱动和键盘扫描控制芯片CH452硬件驱动程序头文件;
*
* Others: CH452器件最大支持64个键及8个数码管显示;
*
* Function List:
* 1. void Key_Init(void)
* 2. void CH452_Write(unsigned short cmd)
* 3. unsigned char Key_Read(void)
*
* History:
* 1. Author: 李林利
* Version: 1.10
* Date: 2007.3.12
* Modification: none
*
* 2. Author: 李林利
* Version: 1.00
* Date: 2004.11.24
* Modification: 建立文件
*
*************************************************************************************/
/*************************************************************************************
* 键盘及数码管显示函数使用说明
*
* 1. 第1步,必须先调用函数Key_Init();该函数设置了工作模式包括开启键盘, 开启
* 显示, 闪烁速度2HZ,BCD译码,8个数码管; 本函数只允许调用1次;
* 2. 第2步,如果初始化函数的设置不能满足要求,请用CH452_Write()函数重新设置;关于
* CH452_Write()的命令码及其用法,要参考CH452器件的数据手册;
* 3. 第3步,通过Key_Read()函数读取键值,键值范围是0~0x3f,共64个,如键值是0xff,则无效;
应用CH452_Write()函数进行8个数码管显示;
* 4. 其它细节详见具体函数说明;
*
*************************************************************************************/
/************************************************************************************
// 常量及全局变量定义
*************************************************************************************/
// CH451和CH452的常用命令码
#define CH452_NOP 0x0000 // 空操作
#define CH452_RESET 0x0201 // 复位
#define CH452_LEVEL 0x0100 // 加载光柱值,需另加7位数据
#define CH452_CLR_BIT 0x0180 // 段位清0,需另加6位数据
#define CH452_SET_BIT 0x01C0 // 段位置1,需另加6位数据
#define CH452_SLEEP 0x0202 // 进入睡眠状态
#define CH452_LEFTMOV 0x0300 // 设置移动方式-左移
#define CH452_LEFTCYC 0x0301 // 设置移动方式-左循环
#define CH452_RIGHTMOV 0x0302 // 设置移动方式-右移
#define CH452_RIGHTCYC 0x0303 // 设置移动方式-右循环
#define CH452_SELF_BCD 0x0380 // 自定义BCD码,需另加7位数据
#define CH452_SYSOFF 0x0400 // 关闭显示、关闭键盘
#define CH452_SYSON1 0x0431 // 开启显示
#define CH452_SYSON2 0x0433 // 开启显示、键盘
#define CH452_SYSON2W 0x0433 // 开启显示、键盘, 真正2线接口
#define CH452_NO_BCD 0x0500 // 设置默认显示方式,可另加3位扫描极限
#define CH452_BCD 0x0580 // 设置BCD译码方式,可另加3位扫描极限
#define CH452_TWINKLE 0x0600 // 设置闪烁控制,需另加8位数据
#define CH452_GET_KEY 0x0700 // 获取按键,返回按键代码
#define CH452_DIG0 0x0800 // 数码管位0显示,需另加8位数据
#define CH452_DIG1 0x0900 // 数码管位1显示,需另加8位数据
#define CH452_DIG2 0x0a00 // 数码管位2显示,需另加8位数据
#define CH452_DIG3 0x0b00 // 数码管位3显示,需另加8位数据
#define CH452_DIG4 0x0c00 // 数码管位4显示,需另加8位数据
#define CH452_DIG5 0x0d00 // 数码管位5显示,需另加8位数据
#define CH452_DIG6 0x0e00 // 数码管位6显示,需另加8位数据
#define CH452_DIG7 0x0f00 // 数码管位7显示,需另加8位数据
// BCD译码方式下的特殊字符
#define CH452_BCD_SPACE 0x10 //" ", 空格
#define CH452_BCD_PLUS 0x11 //"-1", -1或加号
#define CH452_BCD_MINUS 0x12 //"-", 负号减号
#define CH452_BCD_EQU 0x13 //"=", 等于号
#define CH452_BCD_LEFT 0x14 //"[", 左方括号
#define CH452_BCD_RIGHT 0x15 //"]", 右方括号
#define CH452_BCD_UNDER 0x16 //"_", 下划线
#define CH452_BCD_CH_H 0x17 //"H", 字母H
#define CH452_BCD_CH_L 0x18 //"L", 字母L
#define CH452_BCD_CH_P 0x19 //"P", 字母P
#define CH452_BCD_DOT 0x1A //".", 小数点
#define CH452_BCD_SELF 0x1E // 自定义字符
#define CH452_BCD_TEST 0x88 //
#define CH452_BCD_DOT_X 0x80
// 有效按键代码
#define CH452_KEY_MIN 0x0
#define CH452_KEY_MAX 0x3F
/*************************************************************************************/
//
// 键盘及数码管显示函数外部引用声明
//
/*************************************************************************************/
/***********************************************************************************
* Function: Key_Init;
*
* Description: 设置CH452初始化函数; 设置工作模式包括开启键盘, 开启显示, 闪烁速度2HZ,
* BCD译码,8个数码管;
*
* Input: none;
*
* Output: none;
*
* Return: none;
*
* Note: 如果修改本函数设置或需要其它设置请参照CH452数据手册应用CH452_Write函数进行修改;
************************************************************************************/
void Key_Init(void);
/***********************************************************************************
* Function: CH452_Write;
*
* Description: CH452写命令函数;
*
* 输入参数: cmd, CH452操作命令, 具体命令应用见CH452数据手册;
*
* Output: none;
*
* Return: none;
*
* Note: 调用此函数将禁止键盘中断;
************************************************************************************/
void CH452_Write(unsigned short cmd);
/***********************************************************************************
* Function: Key_Read;
*
* Description: 读取按键键值函数;
*
* Input: none;
*
* Output: none;
*
* Return: 返回按键键值, 键值范围是0~0x3f; 如果返回0xff, 表示无按键按下;
*
* Note: 调用此函数将短暂关闭全局中断;
************************************************************************************/
unsigned char Key_Read(void);
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -