触摸屏控制芯片为 XPT2046。 XPT2046 是一款 4 导线制触摸屏控制器,内含 12 位分辨率 125KHz 转换速率逐步逼近型 A/D 转换器。
一。电阻型触摸屏的基本原理
1. 触摸屏的分类
2. 四线电阻屏的触摸原理
x,y方向都有均匀的电场,触摸在哪个位置就能测出那个位置的电压。
触摸点与输出电压有线性的关系,x的零点并不能保证输出电压就是0.
xfac为斜率。
3. 触摸屏的校准
由于开始不知道这条直线的参数,因此需要在触摸屏上取2个点,把这条直线计算出来,然后如果测出被触摸位置的电压就可以反向计算出对应的坐标。
本实验采用XPT2046
4. XPT2046的数字接口SPI接口
5. XPT2046的命令字(控制字节)
7位设置为1
6-4位MODE 读x轴就是读XP,XN,A2,A1,A0设置为101,读y轴就是读YP,YN,A2,A1,A0设置为001
3位设置为0,选择12位分辨率
2位设置为0
1-0位设置为00,低功耗
例:读x轴电压
设置为 : 1 1 0 1 0 0 0 0 控制字为0xD0
读y坐标
设置为: 1 0 0 1 0 0 0 0 控制字为0x90
6. 电路原理图
4.3寸和7寸的是电容屏
二。程序讲解
//触摸屏初始化
//返回值:0,没有进行校准
// 1,进行过校准
//触摸屏初始化
//返回值:0,没有进行校准
// 1,进行过校准
u8 TP_Init(void)
{
//注意,时钟使能之后,对GPIO的操作才有效
//所以上拉之前,必须使能时钟.才能实现真正的上拉输出
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE); //使能PB,PF端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2; // PB1,PB2端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_2);//上拉
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // PF9端口配置 推挽输出
GPIO_Init(GPIOF, &GPIO_InitStructure);
GPIO_SetBits(GPIOF,GPIO_Pin_9);//P9 上拉
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_10; // PF8.PF10端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入
GPIO_Init(GPIOF, &GPIO_InitStructure);
TP_Read_XY(&tp_dev.x,&tp_dev.y);//第一次读取初始化
AT24CXX_Init();//初始化24CXX
if(TP_Get_Adjdata())return 0;//已经校准
else //未校准?
{
LCD_Clear(WHITE);//清屏
TP_Adjust(); //屏幕校准
TP_Save_Adjdata();
}
TP_Get_Adjdata();
return 1;
}
上一篇:46. IAP的配置和实验源码
下一篇:48.OV7670摄像头实验
推荐阅读最新更新时间:2024-03-16 15:44