S3C2440裸机------触摸屏_利用ADC读取触摸屏坐标

发布者:星辰小鹿最新更新时间:2021-11-04 来源: eefocus关键字:触摸屏  ADC 手机看文章 扫描二维码
随时随地手机看文章

前面我们在按下触摸屏时只是打印调试信息,现在我们再按下的中断处理函数里面增加ADC的配置代码,当我们按下后利用ADC读取触摸屏的坐标。


#include "../s3c2440_soc.h"

 

#define ADC_INT_BIT (10)

#define TC_INT_BIT  (9)

 

#define INT_ADC_TC   (31)

 

 

/* ADCTSC's bits */

#define WAIT_PEN_DOWN    (0<<8)

#define WAIT_PEN_UP      (1<<8)

 

#define YM_ENABLE        (1<<7)

#define YM_DISABLE       (0<<7)

 

#define YP_ENABLE        (0<<6)

#define YP_DISABLE       (1<<6)

 

#define XM_ENABLE        (1<<5)

#define XM_DISABLE       (0<<5)

 

#define XP_ENABLE        (0<<4)

#define XP_DISABLE       (1<<4)

 

#define PULLUP_ENABLE    (0<<3)

#define PULLUP_DISABLE   (1<<3)

 

#define AUTO_PST         (1<<2)

 

#define WAIT_INT_MODE    (3)

#define NO_OPR_MODE      (0)

 

void enter_wait_pen_down_mode(void)

{

ADCTSC = WAIT_PEN_DOWN | PULLUP_ENABLE | YM_ENABLE | YP_DISABLE | XP_DISABLE | XM_DISABLE | WAIT_INT_MODE;

}

 

void enter_wait_pen_up_mode(void)

{

ADCTSC = WAIT_PEN_UP | PULLUP_ENABLE | YM_ENABLE | YP_DISABLE | XP_DISABLE | XM_DISABLE | WAIT_INT_MODE;

}

 

void enter_auto_measure_mode(void)

{

ADCTSC = AUTO_PST | NO_OPR_MODE;

}

 

void Isr_Tc(void)

{

//printf("ADCUPDN = 0x%x, ADCDAT0 = 0x%x, ADCDAT1 = 0x%x, ADCTSC = 0x%xnr", ADCUPDN, ADCDAT0, ADCDAT1, ADCTSC);

if (ADCDAT0 & (1<<15))

{

//printf("pen upnr");

enter_wait_pen_down_mode();

}

else

{

//printf("pen downnr");

 

/* 进入"自动测量"模式 */

enter_auto_measure_mode();

 

/* 启动ADC */

ADCCON |= (1<<0);

}

}

 

 

void Isr_Adc(void)

{

int x = ADCDAT0;

int y = ADCDAT1;

 

if (!(x & (1<<15))) /* 如果仍然按下才打印 */

{

x &= 0x3ff;

y &= 0x3ff;

printf("x = %08d, y = %08dnr", x, y);

}

 

enter_wait_pen_up_mode();

}

 

void AdcTsIntHandle(int irq)

{

if (SUBSRCPND & (1< Isr_Tc();

 

if (SUBSRCPND & (1< Isr_Adc();

SUBSRCPND = (1<}

 

void adc_ts_int_init(void)

{

SUBSRCPND = (1< 

/* 注册中断处理函数 */

register_irq(31, AdcTsIntHandle);

 

/* 使能中断 */

INTSUBMSK &= ~((1< //INTMSK    &= ~(1<}

 

 

void adc_ts_reg_init(void)

{

/* [15] : ECFLG,  1 = End of A/D conversion

* [14] : PRSCEN, 1 = A/D converter prescaler enable

* [13:6]: PRSCVL, adc clk = PCLK / (PRSCVL + 1)

* [5:3] : SEL_MUX, 000 = AIN 0

* [2]   : STDBM

* [0]   : 1 = A/D conversion starts and this bit is cleared after the startup.

*/

ADCCON = (1<<14) | (49<<6) | (0<<3);

 

/*  按下触摸屏, 延时一会再发出TC中断

*  延时时间 = ADCDLY * 晶振周期 = ADCDLY * 1 / 12000000 = 5ms

*/

ADCDLY = 60000;

}

 

 

void touchscreen_init(void)

{

/* 设置触摸屏接口:寄存器 */

adc_ts_reg_init();

 

printf("ADCUPDN = 0x%x, SUBSRCPND = 0x%x, SRCPND = 0x%xnr", ADCUPDN, SUBSRCPND, SRCPND);

 

/* 设置中断 */

adc_ts_int_init();

 

/* 让触摸屏控制器进入"等待中断模式" */

enter_wait_pen_down_mode();

}

关键字:触摸屏  ADC 引用地址:S3C2440裸机------触摸屏_利用ADC读取触摸屏坐标

上一篇:S3C2440裸机------触摸屏_定时候程序优化
下一篇:S3C2440裸机------触摸屏_按下松开检测

推荐阅读最新更新时间:2024-11-08 10:20

Touch Panel Systems扩充产品群,满足触摸屏液晶显示器需求扩大
    带触摸面板的21.5英寸液晶显示器“2201L”(右下方为新产品)(点击放大) 带触摸面板的55英寸数字标牌用大型液晶显示器(点击放大)   日本Touch Panel Systems投产了5款带触摸面板的15~21.5英寸液晶显示器新产品,以及带触摸面板的55英寸数字标牌用大尺寸液晶显示器。   Touch Panel Systems对5款带触摸面板的15~21.5英寸液晶显示器新产品的定位是,通过提供多种画面尺寸和触摸面板方式选项,广泛满足使用POS系统及Kiosk终端的店铺及流通领域和待客服务领域的需求。此次投产了画面尺寸为15英寸的“1515L”、17英寸的“1715L”、15.6英寸宽屏的“1519L”、18
[手机便携]
AD10242型双通道高速ADC及其应用
  AD10242型电路是美国ADI公司推出的高速模/数转换器(ADC)。样速度高达每秒 40MHz,最一种高速度、高性能、低功耗的12位双通道模/数转换器。采用±5.0V电源供电,其输入信号既可以是双极性也可以是单极性。片内带有跟踪 /保护放大器(T/H)、基准电源和输出缓冲器。芯片内的2个通道完全独立,均有各自的译码和模拟输入,每个通道均用激光修正增益和偏移匹配,可保证2通道间串扰优于80dB。该电路无疑是小体积、高速、高集成度嵌入式处理系统的理想选择。       1 AD10242内核介绍     AD10242中的每一个通道内均集成了3个单片器件AD9632、OP279、AD9042以及多个电阻器和去耦电容器。AD1
[模拟电子]
飞思卡尔单片机KEA128之ADC学习
这个ADC模块的操作模式其实也比较简单。 首先就是配置,罗列一下该配置什么吧 ADICLK ADC模块的输入时钟选择。是总线时钟,总线时钟2分频还是外部的 ADIV 对上面的时钟再分频后就可以给ADC的核心模块使用了。 MODE 选择8/10/12位转换 ADLSMP 短还是长时间采样。不设置的话默认是短 ADLPC 高速还是低功耗,低功耗的话会慢一些,不设置的话默认是高速 AIEN 使能不使能中断啊,默认不使能 ADCO 连续转换功能,默认单次。单次的话在一次采样完成后,要再一次选择通道才能开始下一次转换。 ADTRG 软件触发启动转换还是硬件触发。默认是软件
[单片机]
C8051F020触摸屏驱动控制
C8051F020触摸屏驱动控制 目前触摸屏和液晶屏已成为嵌入式计算机系统常用的输入输出设备。触摸屏分为电阻、电容、表面声波、红外线扫描和矢量压力传感式触摸屏,其中使用最多的是四线或五线电阻式触摸屏。TSC2046为四线电阻式触摸屏控制器,以其低功耗和高速率等特性广泛应用于电池供电的小型手持设备。 C8G051Fxxx系列单片机是完全集成的混合信号系统级器件,峰值速率达25 MI/s。片内集成ADC和DAC;SMBus/I2C、UART、SPI接口:可编程计数器/定时器阵列;64个I/O端口(P0~P7);内部具有JTAG和调试电路,支持在系统调试。本文介绍了利用该系列单片机C8051F020、TSC2046和液晶屏实现人
[单片机]
C8051F020<font color='red'>触摸屏</font>驱动控制
吉时利2450型触摸屏数字源表的使用优势和典型应用分析
2450型触摸屏数字源表是吉时利新一代数字源表(SMU)仪器,它真正把欧姆定律(电流、电压和电阻)测试带到你的指 尖。其创新的图表化用户界面(GUI)和先进的电容触摸屏技术,实现了直观使用和学习曲线简便化,支持工程师和科学家掌握更迅速、工作更便捷、发明更简单。 吉时利源表2450是适用于各行各业使用者的源测量单元(SMU):这种多用途仪器特别适合现代半导体、纳米器件和材料、有机半导体、印刷电子技术以及其他小尺寸、低功率器件特性分析。这些特性加上吉时利源测量单元(SMU)的精度和准确度,允许用户触摸、测试和发明,无论现在和未来,都将成为您实验室中爱不释手的仪器。 一、吉时利源表2450优势: 1、 学习更迅速、工作更灵巧和发
[测试测量]
吉时利2450型<font color='red'>触摸屏</font>数字源表的使用优势和典型应用分析
s3c2440裸机-电阻触摸屏-4.2-isr设计_支持长按和滑动
1.改进定时器 五. irq之定时器中断这记一节中,是在handle_irq_c()中去区分中断源,执行不同的isr。那现在通过register_timer注册对应的定时器中断服务程序,timer_irq进行执行不同的定时器中断服务程序。 #define TIMER_NUM 32 #define NULL ((void *)0) typedef void(*timer_func)(void); typedef struct timer_desc {   char *name;   timer_func fp; }timer_desc, *p_timer_desc; timer_desc timer_array ; int regi
[单片机]
揭开Σ-ΔADC的神秘面纱
       越来越多的应用,例如过程控制、称重等,都需要高分辨率、高集成度和低价格的ADC。 新型Σ-Δ转换技术恰好可以满足这些要求。然而,很多设计者对于这种转换技术并不十分了解,因而更愿意选用传统的逐次比较ADC。Σ-Δ转换器中的模拟部分非常简单(类似于一个1bit ADC),而数字部分要复杂得多,按照功能可划分为数字滤波和抽取单元。由于更接近于一个数字器件,Σ-ΔADC的制造成本非常低廉。    一、Σ-ΔADC工作原理   要理解Σ-ΔADC的工作原理,首先应对以下概念有所了解:过采样、噪声成形、数字滤波和抽取。    1. 过采样   首先,考虑一个传统ADC的频域传输特性。输入一个正弦信号,然后
[电源管理]
揭开Σ-Δ<font color='red'>ADC</font>的神秘面纱
GD32 MCU如何使用双ADC内核提高ADC采样率?
如下图所示,GD32F303系列MCU在不同的ADC位宽情况下均具有对应的最高采样率,那这个最高采样率还可以提高吗? 答案是可以的。GD32F30X系列MCU可以支持双ADC内核,分别为ADC0和ADC1,且双ADC可以支持同步模式,同步模式可以支持常规并行模式、常规快速交叉模式和常规慢速交叉模式,其中可以使用ADC0和ADC1的交叉模式采样同一个通道,同步等效为提高ADC采样率。 下面以快速交叉模式为例来进行介绍: 以下为常规快速交叉模式工作示意图,常规触发后,ADC1立即启动采样,之后ADC0在7个ADC时钟周期后自动启动。 ADC0和ADC1采样转换的数据在快速交叉模式下会被自动放到32位的ADC0数据寄存器里
[单片机]
GD32 MCU如何使用双<font color='red'>ADC</font>内核提高<font color='red'>ADC</font>采样率?

推荐帖子

MSP430程序库<四>printf和scanf函数移植
printf和scanf函数是C语言中最常用的输入出函数,从学习C语言开始,就开始使用这两个函数,然而当写用C语言写单片机程序时却不能使用这两个函数,总觉得单片机的C语言和一般的C语言差别很大,写起来不大方便;其实,单片机的C语言也是标准C语言上扩展或是改动的,都支持格式化输入输出函数(printf和scanf);事实上,printf,scanf只负责格式化输入输出的字符,至于从哪儿输入,输出到哪儿,他们分别依靠getchar和putchar函数,只要实现单片机上的ge
Engin 微控制器 MCU
人工智能必看5本经典书
《人工智能复杂问题求解的结构和策略(原书第6版)》书评:本书是一本经典的人工智能教材,全面阐述了人工智能的基础理论,有效结合了求解智能问题的数据结构以及实现的算法,把人工智能的应用程序应用于实际环境中,并从社会和哲学、心理学以及神经生理学角度对人工智能进行了独特的讨论。新版中增加了对“基于随机方法的机器学习”的介绍,并提出了一些新的主题,如涌现计算、本体论、随机分割算法等。《人工智能一种现代的方法(第3版)》书评:本书教学内容非常丰富,不但涵盖
高进 下载中心专版
功率放大器的性能指标
功率放大器的性能指标很多,有输出功率、频率响应、失真度、信噪比、输出阻抗、阻尼系数等,其中以输出功率、频率响应、失真度三项指标为主。1.输出功率输出功率是指功放输送给负载的功率,以瓦(W)为基本单位。功放在放大量和负载一定的情况下,输出功率的大小由输入信号的大小决定。过去,人们用额定输出功率来衡量输出功率,现在由于高保真度的追求和对音质的评价不一样,采用的测量方法不同,因此形成了许多名目的功率称呼,应当注意。(1)额定输出功率(RMS)。额定输出功率是指在一定的
fish001 模拟与混合信号
芯片漏电分析手段被误导了很多年
激光诱导定位系统一提到IC漏电定位大家都认为只有OBIRCH,甚至现在可笑的是认为OBIRCH是一种设备的名称。今天小编给大家普及一下这方面的知识。OBIRCH其实只是一种技术,是早年日本NEC发明并申请了专li。它的原理是:给IC加上电压,使其内部有微小电流流过,同时在芯片表面用激光进行扫描。激光扫描的同时,对微小电流进行监测,当激光扫到某个位置,电流发生较大变化,设备对这个点进行标记,也就是
advbj 测试/测量
uCOS-II在S3C2440上的移植
1)下载源代码http://www.armforum.cn下载最新的uCOS-II-V286版和MichaelAnburaj基于S3C2410的1.6.1移植版。根据代码用途的,建立app,s3c2440,ucosii三个目录,分别放置应用程序,平台移植文件和uCOS的源代码。如图:ARMM开发论坛字串42)新建ADS工程http://www.armforum.cn加入所有代码,修改ARM
songbo 实时操作系统RTOS
[开源]UMLStatemachineWizard6.
UMLStatemachineWizard6.UMLStatemachineWizard6.
maker Microchip MCU
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved