微控制器AduC812通用数据端口介绍及P1口的应用
2.1.2 SFR至ADC块的接口 本文引用地址: //m.amcfsurvey.com/article/172008.htm
AduC812中ADC的工作完全由3个SFR控制,它们分别是ADCCON1、ADCCON2和ADCCON3。
2.1.2.1 ADCCON1--ADC控制SFR#1
ADCCON1寄存器控制转换和采集时间、硬件转换模式以及掉电模式。详述如下:
SFR地址: FFH
SFR上电缺省值: 20H
位可寻址: 无
ADCCON1 SFR位的说明如表2所示。
MD1 MD0 CK1 CK0 AQ1 AQ0 T2C EXC
2.1.2.2 ADCCON2--ADC控制SFR#2
ADCCON2寄存器控制ADC通道选择和转换模式。详述如下:
SFR地址: D8H
SFR上电缺省值: 00H
位可寻址: 是
ADCCON2 SFR位说明如表3所示。
ADCI DMA CCONV SCONV CS3 CS2 CS1 CS0
2.1.2.3 ADCCON3--ADC控制SFR#3
ADCCON3寄存器中只有一位有效,它给出ADC忙状态的指示。详述如下:
SFR地址: F5H
SFR上电缺省值: 00H
位可寻址: 无
ADCCON3 SFR位的说明如表4所示。
BUSY RSVD RSVD RSVD RSVD RSVD RSVD RSVD
2.1.3 ADC工作模式
通过设置ADCCON1和ADCCON2两个寄存器,可使ADC处于三种不同的工作模式:一种是单步转换模式,一种是连续转换模式,还有一种是DMA工作模式。用软件或通过把转换信号加至外部引脚23(CONVST)可以启动单步或连续转换模式,同时还可设置定时器2的溢出位,用作ADC转换起始触发脉冲输入。
DMA工作模式与其他两种工作模式有显著不同,若配置ADC工作在DMA工作模式,则ADC块将进行连续转换并把采样值捕获到外部RAM空间,而不需要来自MCU核的任何干预,这种自动捕获功能可以扩展到16M字节的外部数据存储器空间。值得注意的是,若工作于DMA工作模式,将要求用户在中断服务子程序中用5us的时间完成中断服务、读ADC结果并为进一步的后续处理存储结果,否则下一次ADC采样可能会丢失。这一限制条件是由于AduC812已把片内ADC设计成能运行在每5us采样一次的最高速度(即200kHz采样速率)。因此,在要求其他中断速率的应用中,不能使用ADC DMA工作模式。
现以我们研制的家用心电图机为例,说明ADC的使用方法与功能实现。在该心电图机中,ADC0用于心电信号的模拟输入,将2.5V参考电压接至VREF,由于人体心电信号在0.5mV~4mV,典型值在1mV左右,需经过500倍的放大,落在ADC输入电压0~2.5V范围之内。因此,心电信号经过LM324放大、滤波后输入ADC0,进行A/D转换,得到数字量以进行显示、存储、发送、打印等功能。在这里,A/D转换后的12位数字量,最小可分辨的信号是0.6mV。对于最小的心电信号0.5mV,经放大后为0.25V,对于最大的心电信号4mV,经放大后为2V,均在ADC的输入范围之内。
心电图机使用电池作为电源,当电池电压不足时需要提醒用户更新电池。电源电压为+5V,所以不能直接接至ADC的输入端。电源电压要经过分压电路进行分压,使分压的电压在ADC的输入范围之内。ADC1用于电源电压分压后的模拟输入,进而监测电源电压的变化,当电源电压低于一定值时蜂鸣器报警,同时液晶显示提醒用户更换电池。若电源电压低于4.5V时报警,则分压后为1.5V,当ADC1的输入低于1.5V(0999H)时则启动报警系统。
下面是利用ADC0采集心电信号的部分程序,ADC首先要初始化,即送适当的控制字,根据前面介绍的ADC的SFR,选择适当的SFR值。
评论