搜索
bottom↓
回复: 7

南京特尔驰感应按键库TK_LIB使用说明

[复制链接]
(224435754)

出0入0汤圆

发表于 2014-10-20 10:39:18 | 显示全部楼层 |阅读模式
本帖最后由 海尔_大海 于 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();//感应按键最强值读出结果
    }
}
(224435455)

出0入0汤圆

发表于 2014-10-20 10:44:17 | 显示全部楼层
mark 一下。
(224435333)

出0入0汤圆

 楼主| 发表于 2014-10-20 10:46:19 | 显示全部楼层
补上附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(207218345)

出0入0汤圆

发表于 2015-5-7 17:16:07 | 显示全部楼层
你好楼主,我用了这个库,调用 TK_MANAGE()函数后,Led就不亮了,请问怎么解决
(207218238)

出0入0汤圆

发表于 2015-5-7 17:17:54 | 显示全部楼层
如PB6引脚控制的LED就不亮了,如果不调用 TK_MANAGE()函数的话控制都正常
(207135324)

出0入0汤圆

 楼主| 发表于 2015-5-8 16:19:48 | 显示全部楼层
请叫我全名 发表于 2015-5-7 17:17
如PB6引脚控制的LED就不亮了,如果不调用 TK_MANAGE()函数的话控制都正常

请联系张铸
QQ:263132814
技术支持群:1220905421 1220905422090542
手机:15105161788
座机:025-58101616
(207045830)

出0入0汤圆

发表于 2015-5-9 17:11:22 | 显示全部楼层
海尔_大海 发表于 2015-5-8 16:19
请联系张铸
QQ:263132814
技术支持群:1220905421 1220905422090542

好的,谢谢了
(163394189)

出0入0汤圆

发表于 2016-9-25 22:38:43 | 显示全部楼层
楼主,我看官网上面也有个触摸库,和这个不一样的,请问有什么区别呢,官方推荐使用哪个呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-11-30 01:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表