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

📄 keydrv.h

📁 C8051F020单片机 CH452 键盘管理
💻 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 + -