完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件平台: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=%04d, YP=%04dn",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_的分享! |
|
相关推荐
|
|
路过,支持一下
|
|
|
|
|
|
不错,学习了
|
|
|
|
|
|
刚入手2440,正准备学习使用中,多学楼主分享 |
|
|
|
|
|
|
|
|
|
|
|
还是用电容屏吧,用一组i2c接口
|
|
|
|
|
|
路过,为楼主赞一个!
|
|
|
|
|
|
860 浏览 1 评论
飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
526 浏览 0 评论
飞凌嵌入式-ELFBOARD 4.3吋电容触摸液晶模块简介第三期 :机械机构说明
691 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-i2c与从设备通讯编程示例之开发板测试
1370 浏览 0 评论
ubuntu ping 开发板存在严重的丢包情况,请问该怎么解决?
2517 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 09:20 , Processed in 0.764576 second(s), Total 87, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号