tony001 发表于 2017-7-27 18:01:24

求一个PIC的触摸例程,要求商用,谢谢!

本帖最后由 tony001 于 2017-7-27 18:02 编辑

之前做一个触摸方案用的专用触摸IC,太贵了,现在用PIC16F1936来做4键触摸,,但实在效果不太理想啊,
看了别人做的四键效果相当不错的,我们硬件一样,肯定的说,我的软件做的不如别人好啊,


#include"head.h"
void Cap_ISR(void)
{
   staticint trip={136,134,136,144,128,152},raw=0;
   staticchar AvgIndex=0,Index=1;
   staticchar DIM_Index={1,2,3,0,5,4};
   if((Cap_bit==1)&&(TMR0IF==0))
   {
    TMR1ON=0;raw=TMR1H<<8|TMR1L;KEY_Avg=raw;      
        if(raw<(Cap_Avg-trip))//如果当前通道的频率值小于当前通道平均值减去差值,表示有按键按下
        {
       switch(Index)
           {
          case 0: {Key_data=Key_data|1;break;}
          case 1: {Key_data=Key_data|2;break;}
      case 2: {Key_data=Key_data|4;break;}
      case 3: {Key_data=Key_data|8;break;}
          case 4: {Key_data=Key_data|16;break;}
      case 5: {Key_data=Key_data|32;break;}
      case 6: {Key_data=Key_data|64;break;}
          case 7: {Key_data=Key_data|128;break;}
      case 8: {Key_data=Key_data|256;break;}
      case 9: {Key_data=Key_data|512;break;}
      case 10:{Key_data=Key_data|1024;break;}
      case 11:{Key_data=Key_data|2048;break;}
       }
        }
        else if(raw>(Cap_Avg-trip+64))
        {
          switch(Index)
          {
           case 0: {Key_data=Key_data&4094;break;}//-1
           case 1: {Key_data=Key_data&4093;break;}//-2
       case 2: {Key_data=Key_data&4091;break;}//-4
       case 3: {Key_data=Key_data&4087;break;}//-8
           case 4: {Key_data=Key_data&4079;break;}//-16
       case 5: {Key_data=Key_data&4063;break;}//-32
       case 6: {Key_data=Key_data&4031;break;}//-64
           case 7: {Key_data=Key_data&3967;break;}//-128
       case 8: {Key_data=Key_data&3839;break;}//-256
       case 9: {Key_data=Key_data&3583;break;}//-512
       case 10:{Key_data=Key_data&3071;break;}//-1024
       case 11:{Key_data=Key_data&2047;break;}//-2048
          }
          if(AvgIndex<2)AvgIndex ++;else AvgIndex=0;
          if(AvgIndex==2)
          {
               if(raw>=Cap_Avg) Cap_Avg+=((raw-Cap_Avg)>>4);
               else                  Cap_Avg-=((Cap_Avg-raw)>>4);
          }
        }
   
    if(Index<5) Index++; else Index=0; CPSCON1=DIM_Index;//切换通
        TMR1H=0;TMR1L=0;TMR1ON=1;
   }
}

gyd0317 发表于 2017-7-27 18:26:14

你这个应该是官方例程吧,结合硬件修改阈值,官方好像还有一个touch相关的工具

shhludb 发表于 2017-7-27 21:10:27

这玩意布线很有讲究,尽量细点,我用了罗姆专用芯片效果也不好

tony001 发表于 2017-7-28 08:05:43

看个别人用PIC做的,效果超好啊,

sup888 发表于 2017-7-28 09:50:16

既然硬件一样,把他们的芯片吹下来,换你们的芯片和程序,看看是不是PCB方面的原因{:lol:}

tony001 发表于 2017-7-28 09:56:15

哈哈,楼上的方法试过了,的确是自己的软件不行

a312835782 发表于 2017-7-28 09:56:57

pic有个mtouch。效果蛮好的。   

触摸布线没那么讲究一样可以用。

kebaojun305 发表于 2017-7-28 14:50:13

这东西 关键在软件上 和芯片上。

face9 发表于 2017-7-29 13:58:42

难怪中国人做产品都把IC字磨掉,还涂环氧树脂,不是别人无耻是都无...

szxszx 发表于 2017-7-29 15:30:00

用PIC单片机的mtouch库试试

fangjikun 发表于 2017-8-11 13:17:41

ads ts04   
http://www.microchip.com.cn/community/Library/more/categoryId/27/p/3/
页: [1]
查看完整版本: 求一个PIC的触摸例程,要求商用,谢谢!