第18课.ADC和Touchscreen
1.简介
2.接口结构
解析:
8路模拟信号的输入
使用触摸屏时,引脚XP,XM,YP,YM被用于和触摸屏直接相连,剩下AIN[3:0]共4个引脚用于一般的ADC输入;当不使用触摸屏时,XP, XM,YP和YM这4个引脚也可以用于一般一般的ADC输入。
3.ADC转换时间
4.ADC寄存器解析
ADCCON: ADC控制寄存器
ADCTSC:ADC触摸屏控制寄存器
此寄存器多用于触摸屏,对于普通ADC,使用它的默认值即可,或设置其位[2]为0。
ADCDLY: ADC启动或初始化延时寄存器
通过此寄存器可以设置采样的延时时间
问:为什么要延时采样?
答:如下图
ADCDAT0: ADC转换数据寄存器
5.代码解析
adc.h
#ifndef _ADC_H
#define _ADC_H
void adc_init(void);
int adc_read_ain0(void);
#endif /* _ADC_H */
adc.c
void adc_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);
ADCDLY = 0xff;
}
int adc_read_ain0(void)
{
/* 启动ADC */
ADCCON |= (1<<0);
while(!(ADCCON & (1<<15))); /* 等待ADC结束 */
return ADCDAT0 & 0x3ff;
}
6.电阻触摸屏的原理
7.寄存器解析
ADCDAT1: ADC转换数据寄存器
ADCUPDN: 笔尖抬起或落下中断状态寄存器