⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.h

📁 C8051F020单片机开发板演示程序
💻 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 + -