• 第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: 笔尖抬起或落下中断状态寄存器

    8.程序设计流程图

  • 相关阅读:
    vs编译出现 fatal error LNK1281:无法生成 SAFESEH 映像
    $apply()和$digest()——angular
    JS获取URL中参数值
    NeDB——node嵌入式数据库
    VS Code常用插件
    js断点调试
    VS Code 使用Git进行版本控制
    VS Code快捷键
    用户tokenId
    node-webkit-updater——NW.js自动更新
  • 原文地址:https://www.cnblogs.com/huangdengtao/p/12255656.html
Copyright © 2020-2023  润新知