|
本帖最后由 海尔_大海 于 2014-10-20 10:44 编辑
由于感应按键跟使用的电源、接触方式、隔离介质不同,很多工程师使用专用感应按键IC。选择专用IC的一个总要原因是由于专用IC只要调节一个外部元件就可以。针对这些特点编写了针对海尔的HR7P201的MCU感应按键库。
设计要求:
1、初次使用只要简单选择相关感应按键通道 和灵敏度。其它参数库文件内部使用默认设计就使用
2、针对高端用户库文件可以支持LED和感应按键复用,感应按键跟LED驱动iC的通信线复用,感应按键跟LCD驱动IC复用特点
3、调试函数。可以方便用户在开发时,查看每个通道的情况 。方便更精准的使用感应按键。
一、最简易的测试程序
void main()
{
clr_ram();//清内存
while(1)
{
//感应按键通道任意选择
TK_SET(0,25);//开启感应按键通道0,灵敏度为25
TK_SET(6,,25);//开启感应按键通道6,灵敏度为25
TK_SET(7,25);//开启感应按键通道7,灵敏度为25
if(TKCTL==2)//感应按键转换完
{
TK_READ_DATA();//读感应按键结果
TK_START();//启动感应按键
}
TK_MANAGE();//感应按键处理函数
KEY_OK=TK_RETUN_SINGLE();//感应按键所有键读出结果
}
一、感应按键通道选择和灵敏度设置
void TK_SET(unsigned char NUM,unsigned charSENSITIVITY)
TK_SET是感应按键通道设定函数
NUM是通道值,HR7P201有14个通道分别是TK0到TK13。NUM的值范围为0到13.0代表TK0,13代表TK13.
SENSITIVITY是灵敏度,建议赋值为(5-80)
比如选用感应按键0,灵敏度为20;感应键9,灵敏度为25;
TK_SET(0,20);
TK_SET(9,25);
二、感应按键基线更新速度设置
void TK_BASELINE_SPEED(unsigned charTK_BASE_UP_SPEED,unsigned charTK_BASE_DOWN_SPEED,unsigned charTK_BASE_OK_SPEED);
TK_BASELINE_SPEED是基线更新速度函数
TK_BASE_UP_SPEED是向上更新速度,一般取值为(5-40);默认为20;
在满足缓慢按下手感情况下,值越小越好。便于环境自适应。
TK_BASE_DOWN_SPEED向下更新速度,一般取值为(5-40);默认为20;
在满足手按住按键上电后再次按下手感情况下,值越大越好。
TK_BASE_OK_SPEED相等更新速度,一般取值为(5-40);默认为20;
在满足上电后马上操作情况下,值越大越好。
三、感应按键系统初始化
void TK_SYS_CONFIG(unsigned char TK_single_ack_SPEED,unsigned char TK_strongest_ack_SPEED,unsigned char TK_AP,unsigned char TK_CLK);
TK_SYS_CONFIG是系统选项
TK_single_ack_SPEED是多键相应速度,一般取值(1-20)默认为4;
多键按下相应速度,相当于普通按键的滤波次数。在满足手感情况下,值越大越好。
TK_strongest_ack_SPEED是最强键相应速度,一般取值(1-20)默认为4;
最强键按下相应速度,相当于普通按键的滤波次数。在满足手感情况下,值越大越好。最强键是在感应按键潮湿情况下,单个输出的有效键
TK_AP是感应按键的放大倍数,取值范围是(1-255);默认为20;
TK_CLK是最多按键有效数和感应模块频率,高四位为感应按键最多按键有效数(默认值为14),低四位为感应模块频率默认值为1
高四位设定(2-14):
1、 在调试阶段设定为14
2、 没有组合键高四位设定为2
3、 有组合键设定为组合键数加1.比如是两个键的组合键设定为3.
低四位的设定(0-3):
1、 用示波器看感应按键的波形,在波形不变形的情况下数值越小越好
2、 查看按键结果,在数值不变情况下,数值越小越好。查看按键结果使用函数unsigned intTK_RETUN_RAWDATA(unsigned char NUM);
四、感应按键转换结果读出函数
void TK_READ_DATA();
感应按键转换完利用本函数保存转换结果
五、感应按键通道启动函数
void TK_START();
启动感应按键工作
六、感应按键处理函数
void TK_MANAGE();
感应按键处理函数。建议1毫秒调用一次。
七、感应按键软复位函数
voidTK_REST(void);
调用本函数,感应按键自动复位学习环境参数。
八、调试函数
unsigned char TK_RETUN_DELTA(unsigned char NUM);
感应按键变化量读出函数,NUM的值范围为0到13.0代表TK0,13代表TK13.
14为最大变化量。
本函数是为了设定感应按键灵敏度,在实际系统调试时按下按键读出相应按键变化量取本值的1/2作为感应按键的灵敏度值。
unsigned int TK_RETUN_RAWDATA(unsigned char NUM);
感应按键原始值读出函数。NUM的值范围为0到13.0代表TK0,13代表TK13.
九、输出函数
unsigned char TK_RETUN_strongest();
感应按键最强值读出结果。单键有效的时候建议使用本函数输出的结果。TK0有效输出为1,TK2有效输出为3.
unsigned int TK_RETUN_SINGLE();
感应按键多键输出结果。TK0输出在BIT0,TK1输出在BIT1,TK13输出在BIT13.
有组合键时利用本输出结果。建议在有组合键时加上长按有效。
void main()
{
clr_ram();//清内存
TK_SET(0,25);//开启感应按键通道0,灵敏度为25
TK_SET(6,,25);//开启感应按键通道6,灵敏度为25
TK_SET(7,25);//开启感应按键通道7,灵敏度为25
TK_BASELINE_SPEED(10,10,10);//
//TK_BASELINE_SPEED是基线更新速度函数
//TK_BASE_UP_SPEED是向上更新速度,一般取值为(5-40);
//TK_BASE_DOWN_SPEED向下更新速度,一般取值为(5-40);
//TK_BASE_OK_SPEED相等更新速度,一般取值为(5-40);
//建议本函数放主循环里
TK_SYS_CONFIG(4,4,20,0x21);//TK_SYS_CONFIG(4,4,20,0xf1);
//TK_SYS_CONFIG是系统选项
//TK_single_ack_SPEED是多键相应速度,一般取值(1-20)
//TK_strongest_ack_SPEED是最强键相应速度,一般取值(1-20)
//TK_AP是感应按键的放大倍数,取值范围是(1-255);
//TK_CLK是感应模块频率,0xf`1(最多支持15键),
while(1)
{
CLR_WDT()
TK_MANAGE();//感应按键处理函数,每1MS调用一次
// TK_RETUN_DELTA(9);//感应按键变化量读出函数,NUM是通道
// TK_RETUN_DELTA(10);//感应按键变化量读出函数,NUM是通道
//TK_RETUN_DELTA(11);//感应按键变化量读出函数,NUM是通道
//TK_RETUN_SINGLE();//感应按键所有键读出结果
i=TK_RETUN_strongest();//感应按键最强值读出结果
}
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|