1、1第十章第十章 8535单片机模拟量输入接口单片机模拟量输入接口 v模数(模数(A/D)转换器)转换器v模拟比较器模拟比较器210.1 8535单片机单片机A/D接口接口 一、一、主要特点:主要特点:1、10位位精度精度的逐次逼近型的逐次逼近型A/D 转换器(由一定转换器(由一定的时钟控制称之为的时钟控制称之为ADAD时钟)时钟);2、8 个个模拟量输入模拟量输入通道通道(PA07););3、自由运行模式和单次转换模式;自由运行模式和单次转换模式;4、ADC 转换结束中断;转换结束中断;5、睡眠模式噪声消除;睡眠模式噪声消除;6、转换速度快、精确一般;转换速度快、精确一般;3二、二、AD转换器
2、接口框图转换器接口框图10位位A/D转换器转换器MUX0-2A/DC预分预分频器频器分频分频选择选择ADPS02ADC10位位数据数据寄存器寄存器ADCL70ADCH10主频主频CKADENAD允许允许ADSCAD开始转换开始转换注注1:先读低:先读低8位位逻辑与逻辑与AD转换结束中断请转换结束中断请求(受求(受I位控制)位控制)ADFR自由自由运行运行ADIFADIE分频因子分频因子212850-200kHzAD时钟时钟 8 通通道道模模拟拟开开关关ADC0ADC1ADC74三、三、AD转换器的两种工作模式转换器的两种工作模式v初始化初始化AD转换器:转换器:首次转换(在首次转换(在ADEN
3、=1后的第一次转后的第一次转换),将进行一次哑转换过程(虚拟转换),之后才是真换),将进行一次哑转换过程(虚拟转换),之后才是真正的转换过程。(第一次转换增加正的转换过程。(第一次转换增加12个个AD时钟)时钟)1、单次转换模式单次转换模式启动一次启动一次A/D,则转换一次。(,则转换一次。(14个个AD时钟)时钟)2、自由运行模式自由运行模式 启动一次启动一次A/D,连续不断,连续不断AD转换转换,并更新并更新ADC 数据数据寄存器寄存器。(。(13个个AD时钟)时钟)单次转换的时序单次转换的时序自由运行的时序自由运行的时序首次转换(单次模式)的时序首次转换(单次模式)的时序单次转换单次转换
4、的时序的时序自由运行自由运行的时序的时序首次转换首次转换(单次模式)(单次模式)的时序的时序5单次转换单次转换的时序的时序6自由运行自由运行的时序的时序7首次转换首次转换(单次模式)(单次模式)的时序的时序8四、相关的四、相关的I/O寄存器寄存器初值初值=$00,可读写;用于选择通道号,新设定的通道要等到可读写;用于选择通道号,新设定的通道要等到当前当前AD转换结束之后才起作用。转换结束之后才起作用。MUX2 MUX1 MUX0 1、ADC 多路选择寄存器多路选择寄存器ADMUX-$07($27)2、ADC 数据寄存器:数据寄存器:ADCL-$04($24)低低8位位ADC 数据寄存器:数据寄
5、存器:ADCH-$05($25)高)高2位位ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0-ADC9 ADC9规则:规则:先读低先读低8位,后读高位,后读高2位。位。同步:同步:用用in指令读低指令读低8位后,位后,就禁止就禁止ADC对对高高2位的更新,位的更新,直到直到CPU用用in指令读完高位。指令读完高位。9四、相关的四、相关的I/O寄存器寄存器2初值初值=$00,可读写。可读写。3、ADC 控制和状态寄存器控制和状态寄存器ADCSR-$06($26)ADEN ADSC ADFR ADIF ADIE ADPS 2 ADPS 1 ADPS 0ADEN:=1
6、ADC 使能使能;=0用作PA口。ADSC:ADC 开始转换。开始转换。为为1启动启动AD 转换,对于单次模式,转换,对于单次模式,ADC结束自动清结束自动清零,自由运行模式一直保持为零,自由运行模式一直保持为1。ADFR:=1 ADC 自由运行模式自由运行模式;0 单次模式。单次模式。ADIF:转换结束后,转换结束后,ADC 中断标志置中断标志置1。ADIE:ADC 中断使能中断使能 103、ADC 控制和状态寄存器控制和状态寄存器ADEN ADSC ADFR ADIF ADIE ADPS 2 ADPS 1 ADPS 0ADPS 2 0:ADC 预分频选择预分频选择 0 1 1 80 0 1
7、 20 1 0 40 0 0 21 0 0 161 0 1 321 1 0 641 1 1 12811五、多通道的扫描五、多通道的扫描v基本规则基本规则:当前当前AD转换结束之后,转换结束之后,新设定的通道号才起作用。新设定的通道号才起作用。v分两种情况讨论:分两种情况讨论:1.1.对于单次模式;对于单次模式;2.2.对于自由运行模式。对于自由运行模式。121、多通道的扫描、多通道的扫描单次模式单次模式基本思路与方法:基本思路与方法:在设定通道号、在设定通道号、ADEN=1ADEN=1之后;之后;启动启动ADAD转换转换ADSC =1;进入进入AD转换过程,转换过程,ADSC 一直保持为高;一
8、直保持为高;AD转换结束,转换结束,转换结果存入转换结果存入ADAD数据寄存器,数据寄存器,ADSC由由硬件自动清硬件自动清0、ADIF=1;此时可读取转换结果(先低后高)、改变通道号(可此时可读取转换结果(先低后高)、改变通道号(可以在主程序或以在主程序或转换结束转换结束中断服务程序中完成),再次启中断服务程序中完成),再次启动动AD转换。转换。132、多通道的扫描、多通道的扫描自由运行模式自由运行模式基本思路与方法:基本思路与方法:在设定通道号、在设定通道号、ADEN=1ADEN=1之后;之后;只要只要启动启动一次一次ADAD转换即可转换即可,ADSC =1;进入进入AD转换过程转换过程;
9、AD转换结束,转换结束,转换结果存入转换结果存入ADAD数据寄存器,数据寄存器,ADSC保持为保持为1、ADIF=1,同时进行新的转换同时进行新的转换;之后可以在任意时刻读取转换结果(先低后高)、改变通道之后可以在任意时刻读取转换结果(先低后高)、改变通道号(可以在主程序或号(可以在主程序或转换结束转换结束中断服务程序中完成)。中断服务程序中完成)。14对于自由运行模式对于自由运行模式-改变通道号与读取转换结果改变通道号与读取转换结果基本规则:基本规则:当前当前AD转换结束之后,新设定的通道才起作用。转换结束之后,新设定的通道才起作用。1、在在主程序主程序中中改变通道号改变通道号2、在在转换结
10、束转换结束中断服务程序中断服务程序中中改变通道号改变通道号0.1mS0.1mS0.1mS0.1mS0.1mS0.1mS77766676776改改读到读到1mS1mS1mS1mS1mS1mS776666776715六、六、使用时应考虑的使用时应考虑的几个问题几个问题v确定通道数,选择通道号;确定通道数,选择通道号;v确定运行模式:自由运行模式和单次转换模式;确定运行模式:自由运行模式和单次转换模式;v多个通道的扫描;多个通道的扫描;vADC噪声的抑制。噪声的抑制。v转换速度问题;转换速度问题;16七、七、应用举例应用举例测量8535的 ACH6和ACH7两路模拟电压信号,电路如图10.6所示。1
11、71.模拟量输入信号端的处理模拟量输入信号端的处理v两路输入信号经RC滤波去除交流分量。v6.2V稳压管起保护作用,高于6.2V的输入信号被限幅在6.2V之内。对负的输入信号,稳压管反向导通,限幅在 0.7V之内,以避免损坏输入引脚。182.AD的基准电压的稳定的基准电压的稳定及供电及供电v基准电压的稳定、准确事关ADC转换结果的精确性。v采用LM336(5.0V)的三端精密并联式二极管。通过调节精密多圈电位器可调节VREF的电压值。可调到可调到V VREFREF 5.12V5.12V。vAVcc的供电经100和0.1F 电容滤波以减少交流分量对ADC影响。v转换结果(数字量)对应的输入电压(
12、模拟量)间的关系?193.AD转换结果的显示转换结果的显示vPB口8根线作动态扫描数码管字线,PD口低5位作动态扫描数码管位线,数码管用共阴极。v五位数码管最左边显示测量的路号,右边4位显示A/D转换的数字量。v每隔1秒钟轮换显示一次。当ADC采用单次转换模式时程序如下,每秒 钟 换 路 一 次(读 完ADC结果,改变多路开关)。204.编程思路编程思路v表格的定义v初始化堆栈及并口。v通道7的处理设定通道号启动转换延时等待转换结束读取转换结果二转十动态扫描显示v通道6的处理与同道7类似v循环处理.215.程序清单程序清单.include 8535def.inc.org$0000 rjmp r
13、eset tab:.db$3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f ;七段码表 reset:ldi r16,low(ramend);栈指针置初值 out spl,r16 ldi r16,high(ramend)out sph,r1622程序清单程序清单并口初始化;定义PB、PD为输出口ldi r16,$ffout ddrb,r16out ddrd,r16;定义PA口为输入口,ldi r16,$00out ddra,r16;不带内部上拉电阻ldi r16,$00out porta,r1623程程序序清清单单.aa:ldi r16,$07 ;先第7路ADC ou
14、t admux,r16ldi r18,$C6 ;允许ADC,启动ADC,单次模式out adcsr,r18 ;64分频做A/D时钟rcall t1ms ;延时1毫秒in r16,adcl ;读A/D结果放入R17:R16中in r17,adch rcall b16td5 ;调用二转十子程见5.3.1 ldi r22,7 ;万位显示路号7 mov r21,r19 ;四位ADC结果送显示缓冲区 mov r20,r18 mov r19,r17 mov r18,r16 ldi r17,200 ;每一路A/D扫描200次,恰好1sbb:rcall smiao ;调动态扫描子程序见7.2.2 dec r1
15、7 brne bb通道7的处理24程程序序清清单单.ldi r18,$06 ;改变ADMUX为第6路 out admux,r18ldi r18,$C6 ;允许ADC,启动ADC,单次模式out adcsr,r18 ;64分频做A/D时钟rcall t1ms ;延时1毫秒in r16,adcl ;读A/D结果放入R17:R16中in r17,adch rcall b16td5 ;调用二转十子程 ldi r22,6 ;万位显示路号6 mov r21,r19 ;四位ADC结果送显示缓冲区 mov r20,r18 mov r19,r17 mov r18,r16 ldi r17,200 ;每一路A/D扫
16、描200次,恰好1scc:rcall smiao ;调动态扫描子程序见7.2.2 dec r17 brne cc rjmp aa通道6的处理2510.3 模拟比较器模拟比较器一、概述 模拟比较器对正极PB2引脚(AIN0)和负极PB3引脚(AIN1)之上的输入值进行比较。当PB2上的电压高于PB3的电压时模拟比较器输出ACO被置位。比较器的输出可用来为触发模拟比较器中断(上升沿、下降沿或电平变 换),也 可 触 发 定 时/计 数 器 1 的 输 入 捕 获 功能。.26二、二、模拟比较器方框图模拟比较器方框图 27三、相关的三、相关的I/O寄存器寄存器-1个个1、模拟比较器控制和状态寄存器模
17、拟比较器控制和状态寄存器-ACSRACSR-$08($28)ACD-ACOACI ACIE ACIC ACIS 1 ACIS0位位7ACD:模拟比较器禁止位模拟比较器禁止位 当该位设为1时,模拟比较器的电源关闭。可以在任何时候对其置位,以便关闭模拟比较器。这样可以减少器件功耗,常用于休闲模式下又不需从模拟比较器中断唤醒的情况。改变ACD位时,模拟比较器中断必须通过清空ACSR中的ACIE位来禁止;否则,在该位改变时,会产生中断 。位位5ACO:模拟比较器输出模拟比较器输出。28三、相关的三、相关的I/O寄存器寄存器-1个个1、模拟比较器控制和状态寄存器模拟比较器控制和状态寄存器-ACSRACS
18、R-$08($28)ACD-ACOACI ACIE ACIC ACIS 1 ACIS0位位4ACI:模拟比较器中断标志位模拟比较器中断标志位 当比较器输出触发中断时ACI将置位。位位3ACIE:模拟比较器中断使能模拟比较器中断使能 当ACIE位设为1,且状态寄存器中的I位被设为1时,模拟比较器中断被触发。当被清为0时,中断被禁止。29三、三、相关的相关的I/O寄存器寄存器-1个个1、模拟比较器控制和状态寄存器模拟比较器控制和状态寄存器-ACSRACSR-$08($28)ACD-ACOACI ACIE ACIC ACIS 1 ACIS0位位2ACIC:模拟比较器输入捕获使能模拟比较器输入捕获使能 设置为1时,模拟比较器的输出直接连到输入捕获前端逻辑,使比较器能利用T/C1输入捕获中断的噪声消除和边缘选择的特性。当该位=0时,模拟比较器和输入捕获功能之间没有联系。为了使比较器触发定时器/计数器1的输入捕获中断,定时器中断屏蔽寄存器(TIMSK)的TICIE1位必须被设置。位位1,0ACIS1,ACIS0:模拟比较器中断模式选择模拟比较器中断模式选择00:电平变换引发中断 ;01:保留 ;10:AC0下降沿中断 ;11:ACO 上升沿中断