• 51驱动TTP229矩阵触摸按键模块,16键输入有效模式


    TTP229

    TTP229 TonTouch IC是一款使用电容感应式原理设计的触摸芯片。此芯片内建稳压电路供触摸传感器使用,稳定的触摸效果可以应用在各种不同应用上,人体触摸面板可以通过非导电性绝缘材料连接,主要应用是以取代机械开关或按钮,此芯片可以独立支持8个触摸键或16个触摸键.
    在这里插入图片描述

    输入按键数目选择

    TTP229 具有 8 键输入模式和 16 键输入模式。两者是通过 TP2(KYSEL)是否连接高阻值电阻到VSS 所决定。默认为 TP2(KYSEL)不连接电阻到 VSS 选定为 8 键输入模式,16 键输入模式是连接高阻值电阻到 VSS。
    本模块采用的是TP2连接高阻值到GND。即16 键输入模式;

    数据输出模式

    TTP229 具有 8 端口直接输出模式和两种串行输出模式。16 键输入模式下只能使用串行输出方式。本模块采用的是两线输出模式

    按键工作模式

    TTP229 具备单键有效和多键有效功能。这些功能由 TP3(SKMS1)和 TP4(SKMS0) 端口设定。全部16 个按键可分为一组或两组进行设置。第一组包括 TP0,TP1,TP2,TP3,TP8,TP9,TP10,TP11 按键。组-2 包括 TP4,TP5,TP6,TP7,TP12,TP13,TP14,TP15 按键。设置方式键下表 :

    TP3TP4功能说明
    00全部多键有效:设定为一组(16键)
    01设置为2组:第一组=>单键;第二组=>多键
    10设置为2组:第一组=>单键;第二组=>单键
    11全部单键有效:一组(16键)

    备注:1. 设定为一组:
    其包括:TP0~TP15。
    设定为二组:
    第一组其包括=>TP0,TP1,TP2,TP3,TP8,TP9,TP10,TP11。
    第二组其包括=>TP4,TP5,TP6,TP7,TP12,TP13,TP14,TP15。
    2. 当使用 8 模式时 TP0~TP7 为输入键。
    3. TP3 和 TP4 的选择状态,“0”状态是指连接高阻值电阻到 VSS,“1”状态是不连接高阻值电阻到 VSS。
    4. 在单键有效功能下,键的检测承认优先权是依键的扫描顺序(从 TP0 到 TP15),当同时多键被有效触摸。不是依照键被触摸的强度。
    本模块是TP3和TP4连接高阻值到GND:全部多键有效:设定为一组(16键)

    模块和单片机的接线

    TTP22951单片机
    V5V
    GGND
    SCLP1_0
    SDAP1_1

    TTP229的时序与程序

    模块采用的是2-线串行通讯方式

    2-线串行通讯方式时序


    模块设置的是TP1=1,TP2=0,设置为16键模式,低电平有效

    数据读取程序

    unsigned int ttp229_read(void)
    {
    	unsigned char i;
    	unsigned int temp = 0;
    	sdo=0;
    	delay10us(10);
    	sdo=1;
    	delay10us(1);	
    	for(i=0;i<16;i++)
    	{
    	temp>>=1;
    		scl=0;
    		if(!sdo)
    			temp|=0x8000;
    		scl=1;
    	}
    return temp;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    主程序和数据处理程序

    main()
    {
    	unsigned  int a=0;
    		
    	UART_Init();
    	while(1)
    	{
    		a = ttp229_read();
    		if(a==0x0001){UART_SendByte('1');UART_SendString("\r\n");}
    		else if(a==0x0002){UART_SendByte('2');UART_SendString("\r\n");}
    		else if(a==0x0004){UART_SendByte('3');UART_SendString("\r\n");}
    		else if(a==0x0008){UART_SendByte('A');UART_SendString("\r\n");}
    		else if(a==0x0010){UART_SendByte('4');UART_SendString("\r\n");}
    		else if(a==0x0020){UART_SendByte('5');UART_SendString("\r\n");}
    		else if(a==0x0040){UART_SendByte('6');UART_SendString("\r\n");}
    		else if(a==0x0080){UART_SendByte('B');UART_SendString("\r\n");}
    		else if(a==0x0100){UART_SendByte('7');UART_SendString("\r\n");}
    		else if(a==0x0200){UART_SendByte('8');UART_SendString("\r\n");}
    		else if(a==0x0400){UART_SendByte('9');UART_SendString("\r\n");}
    		else if(a==0x0800){UART_SendByte('C');UART_SendString("\r\n");}
    		else if(a==0x1000){UART_SendByte('*');UART_SendString("\r\n");}
    		else if(a==0x2000){UART_SendByte('0');UART_SendString("\r\n");}
    		else if(a==0x4000){UART_SendByte('#');UART_SendString("\r\n");}
    		else if(a==0x8000){UART_SendByte('D');UART_SendString("\r\n");}			
    		Delay(100);	
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    实验现象:按着对应引脚的按键会在串口打印的对应的值
    在这里插入图片描述
    在这里插入图片描述

    总结

    模块容易误触,需要手指尽量按在中心位置,背面不能有金属物质;
    需要完整工程的可以在下载留言获取

  • 相关阅读:
    掌握Three.js:学习路线,成为3D可视化开发的高手!
    多进程启动不同的python程序
    Linux从入门到精通(九)——Linux编程
    c# 哈希表(Hash Table)
    Partition架构
    简单工厂模式~
    vue基础-动态class、动态style、vue过滤器、vue计算属性vue基础-动态class、动态style、vue过滤器、vue计算属性
    Chrome 和 Edge 上出现“status_breakpoint”错误解决办法
    私藏干货分享:关于企业架构中如何进行平台化
    06-网络程序设计
  • 原文地址:https://blog.csdn.net/qq_42250136/article/details/126728459