码迷,mamicode.com
首页 > 其他好文 > 详细

第18课.ADC和Touchscreen

时间:2020-02-03 15:46:34      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:数据   控制   this   start   延时   原理   初始   tar   代码解析   

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: 笔尖抬起或落下中断状态寄存器
技术图片

8.程序设计流程图

技术图片

第18课.ADC和Touchscreen

标签:数据   控制   this   start   延时   原理   初始   tar   代码解析   

原文地址:https://www.cnblogs.com/huangdengtao/p/12255656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!