历史上的今天
返回首页

历史上的今天

今天是:2024年11月26日(星期二)

正在发生

2018年11月26日 | tq2440触摸屏学习笔记

2018-11-26 来源:eefocus

  硬件平台:TQ2440


  触摸屏检测方法可以分两种:


  1.检测按下、弹起两个状态时的x y坐标值;


  以检测按下状态是读取x y坐标值为例 实现代码如下


  1. void Init_Touchpanel(void)  

  2. {    

  3.     ClearPending(BIT_ADC);  

  4.     rSUBSRCPND|=BIT_SUB_TC  ;  

  5.     //清adc中断 触摸屏中断  

  6.   

  7.     rADCDLY=40000; //ADC转换间隔 (1/3.6864M)*50000=13.56ms  

  8.     //Normal conversion mode:ADC Start or interval delay 0~65535  

  9.       

  10.     rADCCON=(1<<14)+(ADCPRS<<6);   //ADCPRS En, ADCPRS Value  

  11.     //使能预分频器 预分频值 ADCPRS(9) AD转换器频率=gclk / (9+1)   

  12.   

  13.     rADCTSC=0xd3;  //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En  

  14.     //ADC触摸屏控制寄存器  检测手写笔按下的中断信号 YM输出驱动有效 YP输出无效 XM输出禁止 XP输出驱动禁止  

  15.     // XP上啦使能 adc正常转换模式 等待中断模式  

  16.   

  17.     pISR_ADC = (int)AdcTsAuto;  

  18.     //指定adc中断服务程序   

  19.   

  20.     rINTMSK=~BIT_ADC;       //ADC Touch Screen Mask bit clear  

  21.     rINTSUBMSK=~(BIT_SUB_TC);  

  22.     //使能中断 当触摸笔按下时 触发INT_TC中断  

  23. }  

  24.   

  25. //触摸屏中断函数  

  26. void __irq AdcTsAuto(void)  

  27. {  

  28.     //ADCDAT0[15]==1 触摸笔未按下  

  29.     //ADCDAT0[15]==0 触摸笔按下  

  30.     if(rADCDAT0&0X8000)  

  31.         return ;  

  32.     rINTMSK |= (BIT_ADC);     

  33.     //禁止adc中断  

  34.     rSUBSRCPND|=BIT_SUB_TC ;  

  35.     //禁止adc的子中断  

  36.   

  37.     rADCTSC=(1<<3)|(1<<2);         //Pull-up disable, Seq. X,Y postion measure.  

  38.     //xp上拉禁止 自动顺序测量x y位置  

  39.   

  40.     rADCCON|=0x1;                   //start ADC  

  41.   

  42.     while(rADCCON & 0x1);       //check if Enable_start is low  

  43.     //adc一旦开始 将自动使ADCCON[0]=0  

  44.       

  45.     while(!(rADCCON & 0x8000));        //check if EC(End of Conversion) flag is high, This line is necessary~!!  

  46.     //adc结束时,ADCCON[15]==1  

  47.           

  48.     while(!(rSRCPND & (BIT_ADC)));  //check if ADC is finished with interrupt bit  

  49.     //等待ADC结束(不管后级中断是否传递 adc完成后 此处应该被置位)  

  50.       

  51.     point.x = (rADCDAT0&0x3ff);  

  52.     point.y = (rADCDAT1&0x3ff);  

  53.     //获取x y方向的adc值 更新坐标点  

  54.   

  55.     Uart_Printf("XP=d, YP=dn",point.x, point.y);    //X-position Conversion data              

  56.   

  57.     ClearPending(BIT_ADC);  

  58.     rSUBSRCPND|=BIT_SUB_TC  ;  

  59.     //清adc中断  

  60.       

  61.     Init_Touchpanel();  

  62.     //重新初始化触摸屏  

  63. }  


  2.检测在按下~弹起两个状态中间的x y坐标值 定时检测并更新坐标;


  实现:


  a 将adc 触摸屏接口设置为检测按下触摸笔中断;


  b 在adc按下触摸笔中断函数中 将adc的中断服务程序重新指定为弹起触摸笔中断函数;


  c 在adc按下触摸笔中断函数中 启动定时器定时进行ADC 采集XY坐标值 或在每次读取坐标值的时候进行ad转换 获取坐标值;


  d 在adc弹起触摸笔中断函数中 关闭定时器 停止采集x y坐标;


  感谢博主s_a_n_的分享!


推荐阅读

史海拾趣

First Switchtech公司的发展小趣事

在追求商业成功的同时,First Switchtech公司(或类似公司)也始终关注可持续发展和社会责任。公司致力于环保产品的研发和生产,推出了多款符合国际环保标准的电子开关产品。同时,公司还积极参与公益事业,通过捐赠资金、技术支持等方式帮助贫困地区改善教育条件、提升医疗水平等。这些举措不仅提升了公司的社会形象,也促进了公司与社会的和谐共生。

需要注意的是,以上故事是基于电子行业普遍趋势和可能发展路径的构想,并非直接针对First Switchtech公司的具体事实。如需了解该公司的真实发展情况,建议直接访问其官方网站或查阅相关新闻报道。

Axon' Cable公司的发展小趣事

Axon' Cable公司自1965年在法国成立起,便致力于通讯连接器的研发与生产。在创业初期,公司面临着资金短缺、技术瓶颈和市场竞争的诸多挑战。然而,Axon' Cable凭借其坚定的信念和不懈的努力,逐步突破了技术难关,并成功开发出了一系列具有竞争力的产品。这些产品在市场上得到了广泛认可,为公司的后续发展奠定了坚实的基础。

Avic公司的发展小趣事

随着全球化的推进,Avic公司不断加强与国际航空工业界的合作。公司与多家国际知名航空企业建立了战略合作关系,共同开展航空电子技术的研发和生产。这些合作不仅促进了中国航空工业与国际先进水平的接轨,也为中国航空工业的国际化发展提供了有力支持。

DDP Engineered LED Solutions公司的发展小趣事

DDP Engineered LED Solutions公司自创立之初,便以技术创新作为公司发展的核心动力。在公司成立的早期,研发团队深入LED照明领域,通过不断实验和改进,成功开发出了一系列高效、稳定的LED照明产品。这些产品不仅具有出色的照明效果,而且具有较长的使用寿命和较低的能耗,迅速在市场上获得了认可。随着技术的不断迭代,DDP不断推出符合市场需求的创新产品,逐渐在电子行业LED照明领域崭露头角。

Geyer Electronic E K公司的发展小趣事

DDP Engineered LED Solutions公司自创立之初,便以技术创新作为公司发展的核心动力。在公司成立的早期,研发团队深入LED照明领域,通过不断实验和改进,成功开发出了一系列高效、稳定的LED照明产品。这些产品不仅具有出色的照明效果,而且具有较长的使用寿命和较低的能耗,迅速在市场上获得了认可。随着技术的不断迭代,DDP不断推出符合市场需求的创新产品,逐渐在电子行业LED照明领域崭露头角。

Euvis Inc公司的发展小趣事

Euvis Inc公司自成立以来,始终将技术创新作为发展的核心动力。公司投入大量研发资源,成功开发出一款具有革命性意义的新型半导体材料,该材料具有更高的导电性能和更低的能耗,极大地提升了电子产品的性能。随着这款材料的广泛应用,Euvis Inc公司在半导体材料市场迅速崛起,成为行业内的领军企业。

问答坊 | AI 解惑

中文域名相关知识

1什么是中文域名? 中文域名是含有中文的新一代域名,同英文域名一样,是互联网上的门牌号码。中文域名在技术上符合2003年3月份IETF发布的多语种域名国际标准(RFC3454、RFC3490、RFC3491、RFC3492)。中文域名属于互联网上的基础服务,注册后可以 ...…

查看全部问答>

自制2812开发板无法写入程序,为何?

自制一块2812的开发板,以前焊接的4块都可以用,目前这一块却无法写进程序,现象为:      1. 烧写时没有报错现象;      2. 但烧写进度条却没有任何提示,也就是停顿在原来位置;      ...…

查看全部问答>

AC-DC医疗电源应用

医疗设备产业是关系到人类生命健康的新兴产业,近十余年来,在世界发达国家一直保持着很高的市场年增长率,因而被誉为朝阳产业。随着医疗水平的提高,越来越多先进的医疗设备广泛运用在了各种医疗场合。电源作为医疗设备的重要组成部分,它相对于其 ...…

查看全部问答>

移相全桥PWM驱动控制程序

   最近,在做移相全桥的pwm控制程序,全桥的四个管子是用的IR公司的MOSFET。程序能下载到2812中,运行的时候通过示波器查看没有波形出现,好郁闷!哪位仁兄仁姐有这方面的经验,能跟小弟分享一下吗?谢谢…

查看全部问答>

eVC or VC 如何调用tablet PC 手写输入?难

有一款华硕的平板PC, tabletPC 自带了一手写输入, 如何在程序中进行调用? 谢谢。。 手写输入有像其他文件那样的*.IME文件吗?谢谢!…

查看全部问答>

今天在客户那里看到个ST的一个很好玩的小礼品

几个小方块(其实不是方的)反过来掉过去,可以组合很多形状。上面是STM32的产品简介,是个不错的宣传品。不知道香版那里有没有多余的,送我一个,在调程序累的时候,活活脑筋。…

查看全部问答>

nRF24LE1 程序烧录

最近做nRF24Le1程序烧录器,遇到点问题,我用stm32 模拟spi对nrf24le1操作,发送读状态寄存器命令,读出来全是0,有时候又全是1,。 已经按照手册上操作,先RESET=1,PROG = 1, RESET = 0, delay_10ms, RESET = 1,然后发送读状态寄存器命令RDSR,然 ...…

查看全部问答>

求助AD9901鉴相问题

请问有人用过AD9901这款芯片来检测相位吗?我采用TTL模式来接线,对两列1MHZ的方波检测相位差,输出一直稳定在直流4V左右,而不是我想得到的两列方波的异或输出。之前在网上看到过文章,用这款芯片来鉴相,我的电路跟文章里的电路一模一样,却始终 ...…

查看全部问答>

Simplicity Studio支持跨平台了

Silicon Labs公司的Simplicity Studio也终于支持跨平台了。目前可以在Windows/Linux/Mac三种主流平台上运行了。 在debian7上的运行效果,还在检查更新。 http://cn.silabs.com/products/mcu/Pages/simplicity-studio.aspx …

查看全部问答>

Linux 4.0 发布——我是一只羊

日期: 2015/4/12 15:41:30 周日 -0700 主题: Linux 4.0 发布 来自: 我是一只羊 那么,我决定按照正常的计划发布 4.0 了,因为没有出现什么问题,而且我下周会去一个大学访问,我希望这不会非常影响到合并窗口,希望吧。从 linux-next 分支 ...…

查看全部问答>