OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4829|回复: 2

如何优化TS12触摸按键扫描

[复制链接]

5

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2013-4-23
在线时间
33 小时
发表于 2013-11-29 14:13:39 | 显示全部楼层 |阅读模式
做了个触摸 IIC的按键扫描程序,芯片用的是韩国的ADS TS12  现在我用的是 每当要输入几个数字的时候,我就用5秒的时间去循环扫描输入,等待得到 几个数字,大神们说 这样太浪费5秒时间了,叫我用中断 我想不明白 ,我用的是STC的1T 51单片机,晶振 22.1184 中断最长2ms ,要是在中断做只能延时中断时间或用中断标志在主循环查询,因为我加了延时 ,况且IIC也需要一点时间, 按键扫描大概用了15m左右

我的主程序 有要求是这样,  按 井 再4位输入密码 执行a功能 

按 米 再输入 6位密码  再按井 执行b功能 
按 米 再按井 执行c功能  

进入b功能后 按下 不同的2位 (注意输入2位指定的数字并没有按米或井 )  再输入 n位 +井  (n小于9)执行   附加 a功能
由于2位的命令码 有10几种
进入b功能后 按下 不同的3位 (注意输入2位指定的数字并没有按米或井 )   再输入 n位 +井  (n小于9)执行   附加 a功能 
由于2位的命令码 有10几种 

求大神给个更好的方法 


不知道 有没更好的办法,比方说,要输入4密码  我目前就是用这个获取的
这个函数 是用来获取 4位密码,因为输入密码先按井 再按4位密码然后直接执行
unsigned char  Get_KeyPass(unsigned char *pt)
{
unsigned char k,i=0;
        unsigned int tm = 1000; //1000大概5秒
while(tm--)
               WDT_CONTR=0x3f;   //防止溢出
delay_1ms(5);
k = Get_TS12_Key();
if(k>0 && k<=12)
{
tm = 1000;
if(k!=10 && k!= 12)
{
if(k==11){k =0;}//把11化为0 因为按键返回是11
*(pt+i)= k;
i++;
if(i==4) return 1;
}
}
if(k ==10) return 0; //按米退出 返回0
if(k ==12) 
                  if(i == 0) {continue; }//如果没有输入 重新输入
                    else return 0;
                }
}
return 0;
}

这个是用来获取 多位密码的。成功获得指定位后返回1 没有输入直接按井返回井 按米返回0 长度不足返回2

unsigned char  Get_Input(unsigned char *pt,unsigned char len)
{
unsigned char k,i=0;
unsigned int tim =800;   //大概4秒?
while(tim--)
{
WDT_CONTR=0x3f; 
delay_1ms(5);
k = Get_TS12_Key();
if(k>0 && k<=12)
{   
tim =800;
if(k!=10 && k!= 12 && i<len)
{
if(k==11){k =0; }//把11化为0
*(pt+i)= k;
i++;
}
    
if(k ==10) return 0;//按米退出 返回0
if(k ==12)
{
if(i==len) return 1;//按井退出返回1
if(i== 0)return 12; 
 if(i==len-1)return 2; 
 else return 0;
}
}
}
}






正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-11-29 23:27:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-6-6
在线时间
14 小时
发表于 2015-3-25 16:05:22 | 显示全部楼层
可以给一份读取TS12键值的完整程序!你工程的功能不需要  ,只要驱动的部分和读取键值的部分!谢谢!
52503911@qq.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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