《数模及模数转换器接口.ppt》由会员分享,可在线阅读,更多相关《数模及模数转换器接口.ppt(31页珍藏版)》请在三一办公上搜索。
1、第8章 数模及模数转换器接口,A/D转换器 51单片机与8位A/D转换器接口,概述,数模转换即将数字量转换为模拟电量(电压或电流),使输出的模拟电量与输入的数字量成正比。,实现数模转换的电路称数模转换器,Digital-Analog Converter,简称 D/A 转换器或 DAC。,模数转换即将模拟电量转换为数字量,使输出的数字量与输入的模拟电量成正比。,实现模数转换的电路称模数转换器,Analog-Digital Converter,简称 A/D 转换器或 ADC。,为何要进行数模和模数转换?,A/D转换器 A/D转换器用以实现模拟量向数字量的转换。按转换原理可分为 4 种:计数式、双积
2、分式、逐次逼近式以及并行式A/D转换器。,逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几微秒到几百微秒之间。,常用的这种芯片有:(1)ADC0801ADC0805型 8 位MOS型A/D转换器;(2)ADC0808/0809 型 8 位MOS型A/D转换器;(3)ADC0816/0817 型 8 位MOS型A/D转换器;,A/D转换器的性能参数,分辨率与量化误差偏移误差线性误差(线性度、非线性度)精度转换速度电源灵敏度,量化间隔,其中n为A/D转换器的位数。,输出数字最低位发生变化时对应输入模拟信号的变化量。,分辨率,精度,绝对精度:整个工作区间理想值与实际值之间的
3、最大偏差。,包括量化误差、偏移误差和线性误差等所有误差,相对精度:绝对误差与满刻度值之比,一般用%表示。,51单片机与8位A/D转换器接口,ADC0808/0809的主要功能,分辨率为8位总的不可调误差在1/2LSB和1LSB范围内典型转换时间为100s 具有锁存控制的8位多路开关具有三态缓冲输出控制单一+5V供电,此时输入范围为05V输出与TTL兼容工作温度范围-4085,ADC0808/0809的原理图,ADC0809主要信号引脚的功能说明:(1)IN7IN0:模拟量输入通道。ADC0809对输入模拟量的要求主要有:信号单极性,电压范围05 V,若信号过小还需进行放大。在A/D转换过程中,
4、模拟量输入的值不应变化太快,因此,对变化速度快的模拟量,在输入前应增加采样保持电路。,(2)A、B、C:地址线。A为低位地址,C为高位地址,用于对模拟通道进行选择。(ADDA、ADDB和ADDC),(3)ALE:地址锁存允许信号。在对应ALE上升沿,A、B、C地址状态送入地址锁存器中。(4)START:转换启动信号。START启动A/D转换,当START为高电平时,A/D 开始转换。(5)D7D0:数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。(6)OE:输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高电阻;OE=1,输出转换得到的数据。
5、,(7)CLK:时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500kHz的时钟信号。(8)EOC:转换结束状态信号。EOC=0,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。(9)VCC:+5 V电源。(10)Vref:参考电源。参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5 V(Vref(+)=+5 V,Vref(-)=0 V),ADC0809功能分析,CLK:时钟信号,可由单片机ALE信号分频得到。,转换有以下几步:,ALE信号上升沿有效,锁存地址并选中相
6、应通道。ST信号有效,开始转换。A/D转换期间ST为低电平。EOC信号输出高电平,表示转换结束。OE信号有效,允许输出转换结果。,ADC0809和单片机的连接,通道选择表,首先分析各个通道的地址。(IN0到IN7的地址为0000H到0007H),MCS-51和A/D的接口,MCS-51对ADC0809的接口要处理好三个问题:1)给START送一个启动正脉冲2)获取EOC上的状态信息3)给OE送一个地址译码器输出信号软件处理:查询EOC=1 延时读数 EOC申请中断,模拟量由通道0输入,转换成对应的数字量之后存入内部RAM的40H单元中。,MOV R0,#40HMOV DPTR,#7FF8HMO
7、VX DPTR,ALCALL DELYJB P3.2,$MOVX A,DPTRMOV R0,A,查询EOC=1,DELY:MOV R6,#03HDLAY1:NOPDJNZ R6,DLAY1RET,MOV R0,#40HMOV DPTR,#7FF8HMOVX DPTR,ALCALL DELAYMOVX A,DPTRMOV R0,A,DELAY:MOV R7,#50 DJNZ R7,$RET,延时读数,MAIN:SETB EA SETB EX0 SETB IT0 MOV R0,#40H MOV DPTR,#7FF8H MOVX DPTR,A SJMP$,EOC申请中断,ORG 0000HAJMP
8、MAINORG 0003HAJMP INTADORG 0100H,INTAD:MOVX A,DPTR MOV R0,A RETI,MOV DPTR,#7FFFHMOV A,#0MOVX DPTR,AMOV R6,#0AHLCALL DELYJB P3.2$MOVX A,DPTRMOV 40H,A,DELY:MOV R6,#03HDLAY1:NOPDJNZ R6,DLAY1RET,分别利用查询和中断方式分别对8路模拟信号轮流采样一次,并依次把结果转存到以30H为首址的数据存储区。,查询方式流程,IN0的地址送DPTR,启动A/D,A/D结果存储区首地址送R1,转换次数送R7=08,延时10us,
9、A/D转换完?,读A/D转换结果,存入RAM区,调整循环变量,8个通道转换完?,等待,N,Y,Y,N,利用查询方式分别对8路模拟信号轮流采样一次,并依次把结果转存到以30H为首址的数据存储区。,MIAN:MOV R1,#30HMOV DPTR,#0FEF8HMOV R7,#08HLOOP:MOVX DPTR,ALCALL DELAY,WAIT:JNB P3.2,WAITMOVX A,DPTRMOV R1,AINC DPTRINC R1DJNZ R7,LOOPSJMP$,DELAY:MOV R6,#05HDJNZ R6,$,中断方式流程:,主程序流程:,外部中断初始化,循环初值设置,启动A/D,
10、中断服务子程序流程:,读入A/D转换结果,存入缓冲区,指向下一通道,8个通道转换完?,关中断,返回,Y,N,等待,启动A/D,利用中断方式分别对8路模拟信号轮流采样一次,并依次把结果转存到以30H为首址的数据存储区。,ORG 0000HAJMP MAINORG 0003HAJMP PINT1ORG 0100H,MAIN:MOV R1,#30HMOV DPTR,#0FEF8HMOV R7,#08HSETB IT0SETB EX0SETB EALOOP:MOVX DPTR,ASJMP$(),PINT1:MOVX A,DPTRMOV R1,AINC R1INC DPTRDJNZ R7,DONECLR EX0CLR EARETIDONE:MOVX DPTR,ARETIEND,