在富士通8FX 系列单片机中使用的是逐渐近似模数转换器。它可以通过软件,外部信号或者内部时钟来触发,具有多个模拟输入通道。
7.3.1A/D 转换器特性
A/D 转换器可以把输入模拟电压值转换为10 位精度的数字量。
具有多个模拟输入通道。转换速率可以通过程序来设置,而且可以配置(通过相应的电压和频率值来设置 )。
A/D 转换结束时将产生一个中断。
通过读取ADC1 寄存器中ADI 位的值来判断转换是否结束。
可以通过以下几种方式来激活A/D 转换器。
通过设置ADC1 寄存器中AD 位来启动。
通过外部引脚ADTG 来启动。
通过8/16 位比较定时器输出引脚TO00 来启动。
7.3.2 A/D 转换器结构
A/D 转换器结构图如图7-5 所示
点击查看图片![]()
1) 时钟选择
在连续启动状态下选择A/D 转换器的时钟源。
2) 模拟通道选择
从多个模拟输入通道中选择一个作为输入
3) 采样保持电路
该电路可以保持模拟通道选择器所选择的通道的电压。在A/D 转换启动后,它立即对输入电压进行采样并保持,从而避免了输入电压波动对A/D 转换的影响。
4) 控制电路
A/D 转换器把采样保持电路所保持的输入电压通过比较器进行比较最终从低位开始输出10 位A/D 转换结果。当A/D 转换结束后,该电路对中断请求标志位(ADC1:AD1) 置“1” 。
5) A/D 数据寄存器(ADDH/ADDL)
10 位A/D 转换结果的高2 位位于ADDH 寄存器中。低8 位的数据位于ADDL 寄存器中。对A/D 转换精度位(ADC2:AD8) 置“1” 则选择8 位精度。此时8 位数据都是存放于ADDL 寄存器中的。
6) A/D 控制寄存器1(ADC1)
ADC1 用来选择各项功能,选择模拟输入引脚,检查状态,控制中断。
7) A/D 控制寄存器2(ADC2)
ADC2 用来选择输入时钟,允许或禁止中断,选择功能,和控制其他一些活动。
8) A/D 转换器中断
当A/D 转换完成时,如果中断请求输出被允许(ADC2:ADIE1) 的话将产生一个中断请求。
9) A/D 转换器的供电电压
AVCC
A/D 转换器供电电压引脚。和VCC 使用相同的电压值。如果A/D 转换器精度要求比较高,必须保证VCC 噪声不会影响到AVCC,或者使用独立的电源供应。即使A/D 转换器没有使用的时候最好也把这个引脚联接到电源上。
AVSS
A/D 转换器接地引脚。和VSS 使用相同的电压值。如果A/D 转换器精度要求比较高,必须保证VSS 噪声不会影响到AVSS。即使A/D 转换器没有使用的时候最好也把这个引脚接地。
AVR
A/D 转换器基准电压引脚。10 位A/D 转化结果值是介于AVR 和AVSS 之间的。有些系列的MCU 不包含AVR 引脚,内部电路直接连接到AVCC。当不使用A/D 转换器的时候应该把它连接到AVSS。
7.3.3 A/D 转换器引脚
模拟输入引脚同时可以用作通用的输入输出口。
AN15~AN0: 当使用A/D 转换器的时候,在这些引脚上输入想要进行转换的模拟电压信号。即使A/D 转换器正在被使用,没有作为模拟输入的引脚仍然可以作为通用的输入输入口。
不同系列的单片机具有不同的模拟输入通道数量。
7.3.4 A/D 转换器的寄存器
A/D 转换器具有以下几个寄存器:A/D 控制寄存器1(ADC1),A/D 控制寄存器2(ADC2), A/D 数据寄存器H(ADDH),A/D 数据寄存器L(ADDL),如图7-6 所示。
点击查看图片![]()
(1) A/D 控制寄存器1(ADC1)
A/D 控制寄存器1(ADC1) 用来设置A/D 转换器的各个功能,选择模拟输入通道,检测状态,如图7-7 所示。A/D 控制寄存器1 的各位功能描述见表7-2。
点击查看图片![]()
(2) A/D 控制寄存器2(ADC2)
A/D 控制寄存器2(ADC2) 用来选择A/D 转换器,选择输入时钟源,检测中断和状态,如图7-8 所示。A/D 控制寄存器1 的各位功能描述见表7-3。

点击查看图片![]()
(3) A/D 数据寄存器(ADDH 和ADDL)
10 位A/D 转换数据的高2 位对应于ADDH 寄存器中的第1 位和第0 位。第8 位数据对应于ADDL 寄存器中的第7 位~第0 位,如图7-9 所示。

7.3.5 A/D 转换器中断
当A/D 转换完成后,中断请求标志位(ADC1:ADI) 将被置“1”, 如果这时中断请求使能位(ADC2:ADIE) 也为“1”, 中断请求将会被送至CPU。在中断处理程序中对ADI 写“0” 来清除中断请求。A/D 转换完成后ADI 将被置“1” ,与ADIE 的值无关。
7.3.6 A/D 转换器的操作
(1)软件启动
软件启动的时候寄存器配置如图7-10 所示

(2)连续启动
连续启动的时候寄存器配置如图7-11 所示

当连续启动时,A/D 转换器是由选择时钟的上升沿触发的。
A/D 转换器操作
1)当A/D 转换启动时其中的转换进行位(ADC1:ADMV=1) 将被置位,选择的模拟输入通道将被连接到采样保持电路
2)在采样周期里,模拟输入电压被加载到内部的采样保持电容上。这个电压一直保持到A/D 转换完成。
3)加载到采样保持电容的电压和A/D 转换器基准电压从低位到高位进行比较,最后结果存放在ADDH 和ADDL 寄存器中。当A/D 转换完成后,转换进行位(ADC1:ADMV=0) 将被清零,中断请求标志位(ADC1:ADI=1) 置“1” 。
7.3.7 A/D 转换器使用的注意事项
1) 软件设置
1)当A/D 转换正在进行时,ADDH 和ADDL 的内容会保留直到下次A/D 转换完成。因此,A/D 转换期间,读取的值是上次转换的结果。
2)当启用A/D 转换时不要更改模拟输入通道。特别是在连续启动的时候,必须在禁止连续启动位(ADC2:EXT=0)之后执行前述操作。
3)CPU 复位,进入停止模式或者监视模式都将停止A/D 转换器,并且初始化所有相关的寄存器。
4)如果中断请求标志位和中断请求使能位始终都为“1”,程序将不能从中断处理中返回,确保在中断服务程序中清除中断请求标志位。
2) 中断请求
如果A/D 转换器同时进行启动和终止操作,中断请求标志位将不被置位。
3) 幅度误差
如果|AVR—AVSS|的值增加,幅度误差的值也会相应地增加。
4) A/D 转换器上电,模拟输入和关断顺序
1)在打开VCC 之前或者在打开VCC 的同时给予A/D 转换器的供电电压(AVCC,AVSS)并提供模拟输入信号。
2)关断的时候,在关断A/D 转换器的供电电压(AVCC,AVSS)和模拟输入信号的同时或者在这之后关断VCC。
3)在A/D 转换器上电和断电的时候保证AVCC,AVSS 和模拟输入电压的值不超过数字供电电压。


