用触摸笔在触摸屏上写字,画画等等。
芯片封装与管脚定义:
数字接口:
XPT2046数据接口是串行接口,其典型工作时序如图12所示,图中展示的信号来自带有基本串行接口的单片机或数据信号处理器。处理器和转换器之间的通信需要8个时钟周期,可采用SPI同步串行接口。一次完整的转换需要24个串行同步时钟(DCLK)来完成。
前8个时钟用来通过DIN引脚输入控制字节。当转换器获取有关下一次转换的足够信息后,将进入采样模式。3个多时钟周期后,控制字节设置完成,转换器进入转换状态。接着的12个时钟周期将完成真正的模数转换,第13个时钟将输出转换结果的最后一位。剩下的3个多时钟周期将用来完成被转换器忽略的最后字节(DOUT置低)。
控制字节由DIN输入的控制字如表5所示,它用来启动转换,寻址,设置ADC分辨率,配置和对XPT2046进行掉电控制。表6给出控制字的各控制位的详细说明。
起始位——第一位,即S位。控制字的首位必须是1,即S=1。在XPT2046的DIN引脚检测到起始位前,所有的输入将被忽略。
地址——接下来的3位(A2、A1和A0)选择多路选择器的现行通道,触摸屏驱动和参考源输入。
MODE——模式选择位,用于设置ADC的分辨率。MODE=0,下一次的转换将是12位模式;MODE=1,下一次的转换将是8位模式。
SER/DFR——位控制参考源模式,选择单端模式(SER/DFR=1),或者差分模式(SER/DFR=0)。在X坐标、Y坐标和触摸压力测量中,为达到最佳性能,首选差分工作模式。参考电压来自开关驱动器的电压。在单端模式下,转换器的参考电压固定为VREF相对于GND引脚的电压。
PD0和PD1——ADC的内部参考电压可以单独关闭或者打开,但是,在转换前,需要额外的时间让内部参考电压稳定到最终稳定值;如果内部参考源处于掉电状态,还要确保有足够的唤醒时间。ADC要求是即时使用,无唤醒时间的。另外还得注意,当BUSY是高电平的时候,内部参考源禁止进入掉电模式。XPT2046的通道改变后,如果要关闭参考源,则要重新对XPT2046写入命令。
单片机源程序如下:
- /***********************************************************************
- * 说 明: 点亮第一个发光二极管
- * 开发平台: 剑齿虎STM8开发板
- *
- * 作 者: 刘洋 张殿东
- * 版 本: V1.0
- * 日 期: 2016-05-03
- *
- * IAR开发环境 版本 V2.20.1
- * ST库函数 版本 V2.2.0
- ***********************************************************************/
- #include "pbdata.h"//引入自定义公共头文件
- void BSP_Configuration(void);//硬件初始化函数声明
- /***********************************************************************
- * 函 数 名: main
- * 功能说明: c程序入口
- * 形 参:无
- * 返 回 值: 错误代码(无需处理)
- ***********************************************************************/
- int main(void)
- {
- BSP_Configuration();//硬件驱动初始化函数
-
- LCD_Demo();
- while(1)//主程序循环,反复执行循环体里的语句
- {
- TP_Demo();
- }
- }
- /***********************************************************************
- * 函 数 名: BSP_Configuration
- * 功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
- * 形 参:无
- * 返 回 值: 无
- ***********************************************************************/
- void BSP_Configuration(void)
- {
- CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
- UART1_Congfiguration();//调用RS232串口1初始化函数
- LED_Init();//调用LED初始化函数
- LCD_Init();
- SPI_Configuration();
- TP_Init();
- rim();//打开总中断
- }
- /*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
- #ifdef USE_FULL_ASSERT
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
【众拳】剑齿虎STM8的代码下载:
众拳剑齿虎触摸屏程序.zip
(2.44 MB, 下载次数: 17)
|