历史上的今天
今天是:2024年11月26日(星期二)
2018年11月26日 | tq2440触摸屏学习笔记
2018-11-26 来源:eefocus
硬件平台:TQ2440
触摸屏检测方法可以分两种:
1.检测按下、弹起两个状态时的x y坐标值;
以检测按下状态是读取x y坐标值为例 实现代码如下
void Init_Touchpanel(void)
{
ClearPending(BIT_ADC);
rSUBSRCPND|=BIT_SUB_TC ;
//清adc中断 触摸屏中断
rADCDLY=40000; //ADC转换间隔 (1/3.6864M)*50000=13.56ms
//Normal conversion mode:ADC Start or interval delay 0~65535
rADCCON=(1<<14)+(ADCPRS<<6); //ADCPRS En, ADCPRS Value
//使能预分频器 预分频值 ADCPRS(9) AD转换器频率=gclk / (9+1)
rADCTSC=0xd3; //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En
//ADC触摸屏控制寄存器 检测手写笔按下的中断信号 YM输出驱动有效 YP输出无效 XM输出禁止 XP输出驱动禁止
// XP上啦使能 adc正常转换模式 等待中断模式
pISR_ADC = (int)AdcTsAuto;
//指定adc中断服务程序
rINTMSK=~BIT_ADC; //ADC Touch Screen Mask bit clear
rINTSUBMSK=~(BIT_SUB_TC);
//使能中断 当触摸笔按下时 触发INT_TC中断
}
//触摸屏中断函数
void __irq AdcTsAuto(void)
{
//ADCDAT0[15]==1 触摸笔未按下
//ADCDAT0[15]==0 触摸笔按下
if(rADCDAT0&0X8000)
return ;
rINTMSK |= (BIT_ADC);
//禁止adc中断
rSUBSRCPND|=BIT_SUB_TC ;
//禁止adc的子中断
rADCTSC=(1<<3)|(1<<2); //Pull-up disable, Seq. X,Y postion measure.
//xp上拉禁止 自动顺序测量x y位置
rADCCON|=0x1; //start ADC
while(rADCCON & 0x1); //check if Enable_start is low
//adc一旦开始 将自动使ADCCON[0]=0
while(!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high, This line is necessary~!!
//adc结束时,ADCCON[15]==1
while(!(rSRCPND & (BIT_ADC))); //check if ADC is finished with interrupt bit
//等待ADC结束(不管后级中断是否传递 adc完成后 此处应该被置位)
point.x = (rADCDAT0&0x3ff);
point.y = (rADCDAT1&0x3ff);
//获取x y方向的adc值 更新坐标点
Uart_Printf("XP=d, YP=dn",point.x, point.y); //X-position Conversion data
ClearPending(BIT_ADC);
rSUBSRCPND|=BIT_SUB_TC ;
//清adc中断
Init_Touchpanel();
//重新初始化触摸屏
}
2.检测在按下~弹起两个状态中间的x y坐标值 定时检测并更新坐标;
实现:
a 将adc 触摸屏接口设置为检测按下触摸笔中断;
b 在adc按下触摸笔中断函数中 将adc的中断服务程序重新指定为弹起触摸笔中断函数;
c 在adc按下触摸笔中断函数中 启动定时器定时进行ADC 采集XY坐标值 或在每次读取坐标值的时候进行ad转换 获取坐标值;
d 在adc弹起触摸笔中断函数中 关闭定时器 停止采集x y坐标;
感谢博主s_a_n_的分享!
史海拾趣
|
自制一块2812的开发板,以前焊接的4块都可以用,目前这一块却无法写进程序,现象为: 1. 烧写时没有报错现象; 2. 但烧写进度条却没有任何提示,也就是停顿在原来位置; ...… 查看全部问答> |
|
医疗设备产业是关系到人类生命健康的新兴产业,近十余年来,在世界发达国家一直保持着很高的市场年增长率,因而被誉为朝阳产业。随着医疗水平的提高,越来越多先进的医疗设备广泛运用在了各种医疗场合。电源作为医疗设备的重要组成部分,它相对于其 ...… 查看全部问答> |
|
最近,在做移相全桥的pwm控制程序,全桥的四个管子是用的IR公司的MOSFET。程序能下载到2812中,运行的时候通过示波器查看没有波形出现,好郁闷!哪位仁兄仁姐有这方面的经验,能跟小弟分享一下吗?谢谢… 查看全部问答> |
|
eVC or VC 如何调用tablet PC 手写输入?难 有一款华硕的平板PC, tabletPC 自带了一手写输入, 如何在程序中进行调用? 谢谢。。 手写输入有像其他文件那样的*.IME文件吗?谢谢!… 查看全部问答> |
|
几个小方块(其实不是方的)反过来掉过去,可以组合很多形状。上面是STM32的产品简介,是个不错的宣传品。不知道香版那里有没有多余的,送我一个,在调程序累的时候,活活脑筋。… 查看全部问答> |
|
最近做nRF24Le1程序烧录器,遇到点问题,我用stm32 模拟spi对nrf24le1操作,发送读状态寄存器命令,读出来全是0,有时候又全是1,。 已经按照手册上操作,先RESET=1,PROG = 1, RESET = 0, delay_10ms, RESET = 1,然后发送读状态寄存器命令RDSR,然 ...… 查看全部问答> |
|
请问有人用过AD9901这款芯片来检测相位吗?我采用TTL模式来接线,对两列1MHZ的方波检测相位差,输出一直稳定在直流4V左右,而不是我想得到的两列方波的异或输出。之前在网上看到过文章,用这款芯片来鉴相,我的电路跟文章里的电路一模一样,却始终 ...… 查看全部问答> |
|
Silicon Labs公司的Simplicity Studio也终于支持跨平台了。目前可以在Windows/Linux/Mac三种主流平台上运行了。 在debian7上的运行效果,还在检查更新。 http://cn.silabs.com/products/mcu/Pages/simplicity-studio.aspx … 查看全部问答> |
|
日期: 2015/4/12 15:41:30 周日 -0700 主题: Linux 4.0 发布 来自: 我是一只羊 那么,我决定按照正常的计划发布 4.0 了,因为没有出现什么问题,而且我下周会去一个大学访问,我希望这不会非常影响到合并窗口,希望吧。从 linux-next 分支 ...… 查看全部问答> |




