eecs-bsp-test-code-2/inc/adc.h

79 lines
5.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**********************************ADC V3.5a 说明 ************************************************************************
ADC模块用于“STC-B学习板”上与ADC相关电路:温度Rt、光照Rop、导航按键Nav、扩展接口EXT上的ADC转换。提供ADC模块初始化函数、2个应用函数,2个事件
(1) AdcInit(char ADCsel)ADC模块初始化函数
函数参数: ADCsel选择扩展接口EXT是否用作ADC功能取值
ADCincEXT : 含对扩展接口EXT设置ADC功能EXT上P1.0、P1.1不可作数字IO功能使用
ADCexpEXT : 不含对扩展接口EXT设置ADC功能EXT上P1.0、P1.1可作数字IO功能使用
(2) struct_ADC GetADC()获取ADC值。
函数参数:无
函数返回值:返回数据结构 struct_ADC。
数据结构定义:
typedef struct //ADC转换结果
{ unsigned int EXT_P10; // 扩展接口EXT上P1.0脚ADC10bit
unsigned int EXT_P11; // 扩展接口EXT上P1.1脚ADC10bit
unsigned int Rt; // 热敏电阻上ADC10bit
unsigned int Rop; // 光敏电阻上ADC10bit
unsigned int Nav; // 导航按键上ADC10bit
} struct_ADC;
说明1每个数字表示 VCC/1024单位V其中VCC为电路板供电电压USB接口一般为5V左右
说明2对于导航按键下面GetAdcNavAct函数输出消抖后导航按键事件和状态更方便使用
(3) char GetAdcNavAct(char Nav_button)获取导航按键包含K3状态
函数参数Nav_button指定要获取状态的导航按键。取值
enumAdcNavKey3K3键,
enumAdcNavKeyRight右按,
enumAdcNavKeyDown下按,
enumAdcNavKeyCenter中心按
enumAdcNavKeyLeft左按,
enumAdcNavKeyUp上按.
当参数取值不在有效范围函数将返回enumKeyFail
函数返回值返回当前按键事件返回值同Key模块GetAdcKeyAct返回值
enumKeyNull无按键动作,
enumKeyPress按下,
enumKeyRelease抬起,
enumKeyFail失败
返回值是经过多次检测按键实时状态和统计检测结果后(软件消抖)的有效事件。
每个按键查询一次后,事件值变成 enumKeyNull (仅查询一次有效)
(4) 导航按键事件“enumEventNav
当导航按键5个方向或按键K3有任意”按下“或”抬起“动作时将产生一个”导航按键事件“enumEventNav。响应导航按键事件的用户回调函数由用户编写,并由sys提供的SetEventCallBack()函数设置响应函数.
(5) 扩展接口EXT上P1.0、P1.1两个端口有新的AD值事件“enumEventXADC
当ADC模块对P1.0、P1.1进行ADC转换获得了它们新的ADC结果时将产生enumEventXADC事件通知用户进行处理。响应enumEventXADC事件的用户回调函数由用户编写,并有sys提供的SetEventCallBack()函数设置响应函数.
ADC模块对P1.0、P1.1进行ADC转换速度为3mS也即每3mS或每秒钟333次转换.
(6) 补充说明:
a对EXT上P1.0、P1.0的转换速度为3mS也即每秒钟提供333次转换结果提供了有新转换结果事件enumEventXADC方便用户处理
b对于Rt、Rop转换速度为9mS也即每秒钟提供111次转换结果。没有提供相应“事件”用户随时用函数GetAdcResult()查询和使用
c对导航按键进行了软件消抖处理最快可支持导航按键每秒12次操作速度提供了导航按键发生了操作事件enumEventNav
d由于导航按键与K3键共用了单片机同一个端口P1.7启用ADC模块后P1.7口IO功能失效只能用GetAdcNavAct(char Nav_button)函数获取K3按键的事件或状态。
e: STC-B板上Rt型号为10K/3950 NTC热敏电阻光敏电阻Rop型号为GL5516. 它们的ADC值与温度、光照强度关系请参阅它们的数据手册与STC-B电路图进行换算。
编写徐成电话18008400450 2021年3月25日设计,2021年8月30日修改
*/
#ifndef _adc_H_
#define _adc_H_
#define ADCincEXT 0x9B
#define ADCexpEXT 0x98
typedef struct //ADC转换结果
{ unsigned int EXT_P10; // 扩展接口EXT上P1.0脚ADC
unsigned int EXT_P11; // 扩展接口EXT上P1.1脚ADC
unsigned int Rt; // 热敏电阻上ADC
unsigned int Rop; // 光敏电阻上ADC
unsigned int Nav; // 导航按键上ADC
} struct_ADC;
extern void AdcInit(char ADCsel);
extern struct_ADC GetADC();
extern unsigned char GetAdcNavAct(char Nav_button); //获取导航按键5个方向右、下、中心、左、上操作以及按键K3操作的事件
//返回值enuKeyNull无按键动作,enuKeyPress按下,enuKeyRelease抬起,enuKeyFail失败
enum KN_name {enumAdcNavKey3=0, //导航按键按键K3
enumAdcNavKeyRight, //导航按键:右
enumAdcNavKeyDown, //导航按键:下
enumAdcNavKeyCenter, //导航按键:中心
enumAdcNavKeyLeft, //导航按键:左
enumAdcNavKeyUp}; //导航按键:上
#endif