单片机与数模及模数转换器接口.docx
《单片机与数模及模数转换器接口.docx》由会员分享,可在线阅读,更多相关《单片机与数模及模数转换器接口.docx(19页珍藏版)》请在冰豆网上搜索。
单片机与数模及模数转换器接口
第九章单片机与数模及模数转换器接口
当以单片机为核心组成实时测控系统时,通常需要对被控对象的状态进行测试和对控制条件进行监测,因此需要通过前向输入通道将被测信号输入单片机系统中。
在科学研究和生产过程中,测控系统的被测参数可以是温度、压力、速度等非电量,也可以是电流、电压、功率和开关量等电量。
这些参数信号需通过各类传感器和变送器变换成相应的模拟电量,然后经多路开关汇集送给A/D转换器,转换成相应的数字量送给单片机。
经过单片机处理过的数字量,送给D/A转换器,变换成相应的模拟量对被控系统实施控制和调整,使之处于最佳工作状态,如图8-1所示。
知识要点:
输入输出通道的基本知识,
数字量输入输出通道和模拟量输入输出通道的结构
A/D转换器工作原理和MCS-51系列单片机的连接以及程序设计方法。
D/A转换器工作原理和MCS-51系列单片机的连接以及程序设计方法。
第一节MCS-51单片机与DA转换器的接口和应用
一、概述
被测信号分为数字量和模拟量两种。
1.数字量输入
数字量包括N位并行数字量、开关量和频率信号。
·N位并行数字量
可以直接送入单片机的I/O接口。
若N位数字量并行输入,当N=8时,正好利用一个8位I/O接口输入单片机内;当N<8时,可利用一个8位I/O接口输入CPU,然后将其他位屏蔽即可得到N位数据;当N>8时,输入方式有两种:
一种是利用多个8位I/O接口,另一种是利用一个I/O接口多次选通输入。
·开关量
开关量是输入信号为具有TTL电平的状态信号,如继电器的吸合与断开、光电门的导通与截止、限位开关、按钮、转换开关、接触器等电器的触点通断,其信号电平只有高、低两种电平。
图8-2所示是一种开关量检测电路。
开关量信号经过了光电隔离,适当选择电阻值,使A点电平符合TTL电平的要求,可以将A点接到单片机I/O接口或经三态门接到单片机数据总线,实现开关量信号输入。
·频率信号
经放大、整形和隔离等处理,即可得到较为理想的矩形波,这种矩形波可直接送入单片机系统,如图8-3所示。
2.模拟量输入
所谓模拟量,就是一些连续变化的物理量,如温度、速度、电压、电流和压力等。
这些被测参数,单片机无法直接处理,需要把这些模拟量通过各类传感器和变送器变换成相应的模拟电量,然后经多路开关汇集送给A/D转换器,转换成相应的数字量送给单片机。
模拟量输入通道一般由传感器、放大器、多路模拟开关、采样保持器和A/D转换器组成,其结构形式取决于被测对象的环境、输出信号的类型、数量和大小等,见表8-1。
说明:
根据传感器输出信号的大小和类型,选择前向输入通道结构。
大信号模拟电压,能直接满足A/D转换输入要求,则可直接送入A/D转换器,经过A/D转换后再送入单片机。
也可通过V/F转换成频率信号送入单片机。
但由于频率测量响应速度慢,多用于一些非快速过程参量的测量,这种通道结构的优点是抗干扰能力强,便于远距离传输。
小信号模拟电压,则首先应将该信号电压放大,放大到能满足A/D转换、V/F转换要求的输入电压。
以电流为输出信号的传感器或传感仪表则首先应通过I/V转换,将电流信号转换成电压信号。
最简单的I/V转换器就是一个精密电阻,当信号电流流过精密电阻时,其电压降与流过的电流大小成正比,从精密电阻两端取出的电压就是I/V变换后的电压信号。
二、A/D转换接口技术
A/D转换接口技术的主要内容是合理选择A/D转换器和其他外围器件,实现与单片机的正确连接以及编制转换程序。
A/D转换器(Analog-DigitalConverter)是一种能把输入模拟电压或电流变成与其成正比的数字量的电路芯片,即能把被控对象的各种模拟信息变成计算机可以识别的数字信息。
分类:
计数器式A/D转换器、双积分式A/D转换器、逐次逼近式A/D转换器和并行A/D转换器。
计数器式A/D转换器结构很简单,但转换速度也很慢,所以很少采用。
双积分式A/D转换器抗干扰能力强,转换精度很高,但速度不够理想,常用于数字式测量仪表中。
逐次逼近式A/D转换器结构不太复杂,转换速度也高。
计算机中广泛采用其作为接口电路。
并行A/D转换器的转换速度最快,但因结构复杂而造价较高,故只用于那些转换速度极高的场合。
1、概述
1)A/D转换器的技术指标:
·量化误差(QuantizingError)与分辨率(Resolution)。
A/D转换器的分辨率表示输出数字量变化一个相邻数码所需输入模拟电压的变化量,习惯上以输出二进制位数或满量程与2n之比(其中n为ADC的位数)表示。
例如A/D转换器AD574A的分辨率为12位,即该转换器的输出数据可以用212个二进制数进行量化,其分辨率为1LSB(1LSB=VFS/212)。
如果用百分数来表示分辨率时,其分辨率为
1/2n×100%=1/212×100%=0.0244%
一个满量程VFS=10V的12位ADC能够分辨输入电压变化的最小值为2.4mV。
量化误差是由于有限数字对模拟数值进行离散取值(量化)而引起的误差。
因此,量化误差理论上为一个单位分辨率,即士(1/2)LSB。
提高分辩率可减少量化误差。
·转换精度(ConversionAccuracy)。
A/D转换器转换精度反映了一个实际A/D转换器在量化值上与一个理想A/D转换器进行模/数转换的差值,由模拟误差和数字误差组成。
模拟误差是比较器、解码网络中电阻值以及基准电压波动等引起的误差;
数字误差主要包括丢失码误差和量化误差,丢失码误差属于非固定误差,由器件质量决定。
·转换时间与转换速率。
A/D转换器完成一次转换所需要的时间为A/D转换时间,是指从启动A/D转换器开始到获得相应数据所需时间(包括稳定时间)。
通常,转换速率是转换时间的倒数,即每秒转换的次数。
2)A/D转换器选择要点
·确定A/D转换器精度及分辨率。
用户提出的测控精度要求是综合精度要求,它包括了传感器精度、信号调节电路精度和A/D转换精度及输出电路、伺服机构精度,而且还包括测控软件的精度。
应将综合精度在各个环节上进行分配,以确定对A/D转换器的精度要求,据此确定A/D转换器的位数。
通常A/D转换器的位数至少要比综合精度要求的最低分辨率高一位,而且应与其他环节所能达到的精度相适应。
·确定A/D转换器的转换速率。
通常根据被测信号的变化率及转换精度要求,确定A/D转换器的转换速率,以保证系统的实时性要求。
用不同原理实现的转换器,其转换速率是不一样的,如积分型的、跟踪比较型的A/D转换器转换速率较慢,转换时间一般为几毫秒到几十毫秒,一般用于温度、压力、流量等缓变参量的检测。
计算机中广泛采用逐次逼近式A/D转换器为中速转换器,常用于工业多通道单片机测控系统等。
并行A/D转换器的转换速度最快,故常用于如实时瞬态记录等转换速度极高的场合。
·确定环境参数。
根据使用环境条件,确定A/D转换芯片要求的一些环境:
工作温度、功耗和可靠性等级等。
2、A/D转换典型芯片ADC0809
8位8通道逐次逼近式A/D转换器,CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100us左右。
1)ADC0809的内部逻辑结构
ADC0809内部逻辑结构如图所示。
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换。
地址锁存与译码电路完成对A、B、C3个地址位进行锁存和译码,其译码输出用于通道选择。
2)信号引脚
ADC0809芯片为28引脚双列直插式封装,其引脚排列见图9.14.
对ADC0809主要信号引脚的功能说明如下:
·IN0~IN7—模拟量输入通道信号单极性,电压范围0-5V,若信号过小还需进行放大。
模拟量输入在A/D转换过程中其值不应变化,对变化速度快的模拟量,在输入前应增加采样保持电路。
·A、B、C地址线
A为低位地址,C为高位地址,模拟通道的选择信号,引脚图中为ADDA,ADDB和ADDC。
其地址状态与通道对应关系见表9-1
·ALE地址锁存允许信号
对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
·START转换启动信号
START上跳沿时,所有内部寄存器清“0”;START下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。
本信号有时简写为ST。
·D7~D0数据输出线
为三态缓冲输出形式,可以和单片机的数据线直接相连。
D0为最低位,D7为最高位。
·OE输出允许信号
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高电阻;
OE=1,输出转换得到的数据。
·CLK时钟信号
ADC0809的内部没有时钟电路,所需时钟信号由外界提供。
通常使用频率为500kHz的时钟信号。
·EOC转换结束信号
EOC=0,正在进行转换;
EOC=1,转换结束。
使用中该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。
·Vcc+5V电源
·Vref参考电源
参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
其典型值为+5V(Vref(+)=+5V,Vref
(一)=0V)。
3)单片机与ADC0809接口
三个问题:
①要给START线送一个100ns宽的起动正脉冲;
②获取EOC线上的状态信息,因为它是A/D转换的结束标志;
③要给“三态输出锁存器”分配一个端口地址,也就是给OE线上送一个地址译码器输出信号。
MCS-51和ADC接口通常可以采用定时、查询和中断三种方式。
·定时传送方式
对于每种A/D转换器,转换时间作为一项技术指标,是已知的和固定的。
如ADC0809的转换时间为128us。
可以设计一延时子程序,当启动转换后,CPU调用该延时子程序或用定时器定时,延时时间或定时时间稍大于A/D转换所需时间。
等时间一到,转换已经完成,就可以从“三态输出锁存器”读取数据。
特点:
电路连接简单,但CPU费时较多。
·查询方式
采用查询法就是将转换结束信号接到I/O接口的某一位,或经过三态门接到单片机数据总线上。
A/D转换开始之后,CPU就查询转换结束信号,即查询EOC引脚的状态:
若它为低电平,表示A/D转换正在进行,则MCS-51应当继续查询;若查询到EOC变为高电平,则给OE线送一个高电平,以便从线上提取A/D转换后的数字量。
特点:
占用CPU时间,但设计程序比较简单。
·中断方式
采用中断方式传送数据时,将转换结束信号接到单片机的中断申请端,当转换结束时申请中断,CPU响应中断后,通过执行中断服务程序,使OE引脚变高电平,以提取A/D转换后的数字量。
特点:
在A/D转换过程中不占用CPU的时间,且实时性强。
4)应用举例
例分别采用不同方式对8路模拟信号轮流采样一遍,并依次把转换后的数据存放到数据存储区。
ADC0809与8031接口工作方式见图8-9。
·EOC开始转换时为低电平,当转换结束时为高电平。
·查询方式:
查询EOC引脚,接P1.0。
·中断方式:
EOC经反相器接8051的外部中断引脚
。
1)定时传送方式
MAIN:
MOVR1,#data
MOVDPTR,#7FF8H;P2.7=0,且指向通道0
MOVR7,#08H;置通道数
LOOP:
MOVX@DPTR,A;启动A/D转换
MOVR6,#0AH
DLAY:
NOP
NOP
NOP
NOP
DJNZR6,DLAY
MOVXA,@DPTR;读取转换结果
MOV@R1,A
INCDPTR;指向下一个通道
INCR1;修改数据区指针
DJNZR7,LOOP
2)查询方式
MAIN:
MOVR1,#data
MOVDPTR,#7FF8H;P2.7=0,且指向通道0
MOVR7,#08H;置通道数
LOOP:
MOVX@DPTR,A;启动A/D转换
SETBP1.0
WAIT:
JNBP1.0,WAIT;查询P1.0状态
MOVXA,@DPTR;读取转换结果
MOV@R1,A
INCDPTR;指向下一个通道
INCR1;修改数据区指针
DJNZR7,LOOP;8个通道全采样完了吗?
RET
3)中断方式
SETBIT1
SETBEX1
SETBEA
MOVDPTR,#7FF8H
MOVA,#0
MOVX@DPTR,A
…
EINT1:
MOVDPTR,#7FF8H
MOVXA,@DPTR
MOV30H,A
MOVA,#00
MOVX@DPTR,A
RETI
第二节MCS-51单片机与A/D转换器的接口与应用
在以单片机为核心组成的测控系统中,单片机要通过后向输出通道输出控制信号对控制对象实现控制操作。
知识要点:
后向输出通道的作用、结构
D/A转换接口及应用
一、概述
1.后向输出通道的作用分析:
·数/模转换单片机输出的控制信号是数字信号,需要通过D/A转换器把数字量转换成控制对象所需的模拟电压或电流。
·功率放大驱动经数/模转换得到的模拟电压或电流控制信号,不能满足控制对象的功率要求,必须经功率放大,驱动外部伺服系统。
·干扰信号防止后向输出通道接近控制对象,工作环境相对恶劣,会出现伺服驱动系统通过信号通道、电源以及空间电磁场对单片机应用系统的电磁干扰,另外还会出现机械干扰,因此通常采用信号隔离、电源隔离和大功率开关实现过零切换等方法进行干扰防止。
2.后向输出通道的结构
根据单片机输出信号和控制对象的特点,后向输出通道的结构如图8-12所示。
单片机通过I/O接口或数据总线输出的开关量、数字量和频率量可以直接用于开关量、数字量控制系统和频率调制系统,对于模拟量控制系统,需通过D/A、F/V转换成模拟量控制信号。
下面对后向输出通道中的重要部分D/A转换接口进行详细分析。
二、D/A转换接口
D/A转换接口技术的主要内容是合理选择D/A转换器和其他有关器件,实现与微机的正确连接以及编制转换程序。
1.概述
(1)D/A转换器
D/A转换器(DigitaltoAnalogConverter)是一种能把数字量转换成模拟量的电子器件。
在单片机测控系统中经常采用的是D/A转换器的集成电路芯片,称为D/A接口芯片或DAC芯片。
(2)D/A转换器的性能指标
·分辨率(Resolution)
指D/A接口芯片能分辨的最小输出模拟增量。
输入数量发生单位数码变化时,即LSB(最低有效位)产生一次变化时,所对应的输出的模拟量的变化量。
对于线性D/A转换器来说,其分辨率△与数字量的位数n的关系为
在实际使用中,表示分辨率高低更常用的方法是采用输入量的位数,如满量程10V的8位DAC芯片的分辨率为8位。
·转换精度(ConversionAccuracy)
指满量程时DAC的实际模拟输出量与理论值的接近程度,与D/A转换芯片的结构和接口配置电路有关。
通常,DAC的转换精度为分辨率的一半。
·失调误差
指输入数字量为零时,模拟输出量与理想输出量的偏差。
偏差值的大小一般用LSB的份数或用偏差值表示。
(3)D/A转换器的选择要点
·输入信号的形式。
输入信号有并行和串行两种形式,根据实际要求选定。
在实际应用中大多数为并行输入。
串行输入节省数据线,但速度较慢,适用于远距离数据传输。
·分辨率和转换精度
根据对输出模拟量的精度要求来确定D/A转换器的分辨率和转换精度。
常用的分辨率有8位、10位和12位。
在精度指标方面,零点误差和满量程误差可以通过电路调整进行补偿,因此主要看芯片的非线性误差和微分非线性误差。
·建立时间
D/A转换器的电流建立时间很短,一般为50-500ns。
若是输出电压形式,加上运算放大器电路,电压建立时间一般为1us到几us,一般都能满足系统要求。
·转换结果的输出形式
转换结果的输出形式有电流或电压,有单极性或双极性,有不同量程,还有多通道输出方式。
这可根据应用系统对模拟量形式的实际要求来确定。
2.D/A转换典型芯片DAC0832芯片
DAC0832是微处理器完全兼容的,具有8位分辨率的D/A转换集成芯片,以其价廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用。
(1)DAC0832的引脚
其逻辑结构及管脚号如图所示。
它由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
为20脚双列直插式封装结构。
各引脚信号说明如下:
·DI7~DI0—转换数据输入。
·/CS—片选信号(输入),低电平有效。
·ILE—数据锁存允许信号(输入),高电平有效。
·/WR1—第1写信号(输入),低电平有效。
该信号与ILE信号共同控制输入寄存器是数据直通方式还是数据锁存方式:
当ILE=1和/WR1=0时,为输入寄存器直通方式;
当ILE=1和/WR1=1时,为输入寄存器锁存方式。
·/XFER—数据传送控制信号(输入),低电平有效。
·/WR2—第2写信号(输入),低电平有效。
该信号与/XFER信号合在一起控制DAC寄存器是数据直通方式还是数据锁存方式:
/WR2=0和/XFER=0时,为DAC寄存器直通方式;
/WR2=1和/XFER=0时,为DAC寄存器锁存方式。
·Iout1—电流输出“1”;当数据为全1时,输出电流最大;为全0时输出电流最小。
·Iout2—电流输出“2”;DAC转换器的特性之一是:
Iout1+Iout2=常数。
·Rfb—反馈电阻端。
即运算放大器的反馈电阻端,电阻已固化在芯片中。
因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器Rfb即为运算放大器的反馈电阻,运算放大器的接法如图所示。
·Vref—基准电压,是外加高精度电压源。
该电压可正可负,范围为-10V~+10V。
·DGND—数字地。
·AGND—模拟地。
(2)DAC0832内部结构
DAC0832的内部结构框图如图9.3所示。
“8位输入寄存器”用于存放CPU送来的数字量,使输入的数字量得到缓冲和锁存,由/LE1控制。
“8位DAC寄存器”用于存放待转换的数字量,由/LE2控制。
“8位D/A转换电路”由T型电阻网络和电子开关组成,电子开关受“8位DAC寄存器”输出控制。
(3)DAC0832和MCS-51单片机的接口方式
·单缓冲方式连接
所谓单缓冲方式就是使DAC0832的两个输入寄存器中有一个(多为DAC寄存器)处于直通方式,而另一个处于受控的锁存方式。
应用场合:
如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求输出同步的情况下,就可采用单缓冲方式。
单缓冲方式连接如图9.4所示。
单缓冲方式应用举例:
例1产生锯齿波,其电路连接如图所示。
图中的DAC0832工作于单缓冲方式,其中输入寄存器受控,而DAC寄存器直通。
假定输入寄存器地址为5000H,产生锯齿波的程序清单如下:
MOVDPTR,#5000H
MOVR0,#00H
WW:
MOVA,R0
MOVX@DPTR,A
INCR0
NOP
NOP
NOP
AJMPWW
例.2小电机驱动。
分析:
对于小功率直流电机驱动,使用单片机极为方便,其方法就是控制电机定子电压接通和断开时间的比值(即占空比),以此来驱动电机和改变电机的转速,这种方法称为脉冲宽度调速法(或简称脉宽调速法)。
占空比以及占空比与电机转速的关系如图所示。
电压变换周期为T,电压接通时间为t,则占空比表示为D=t/T。
设电机固定接通电源时的最大转速为Vmax,则用脉冲宽度调速的电机转速为:
Vd=Vmax×D
Vd与D的函数曲线如9.7(b)所示。
可以看出,实际上Vd与D并不完全是线性关系(如图中实线所表示),但可以近似地看成是线性关系,为此我们可以采用控制加电脉冲宽度的办法来驱动电机并调节其转速。
按图9.9的连接,DAC0832输入寄存器的地址为9000H,则MCS-51电机驱动程序清单如下:
ORG0000H
AJMPDAMOT
ORG08100H
DAMOT:
MOVDPTR,#9000H;翰入寄存器地址
MOVA,#80H
MOVX@DPTR,A;输出0V电平
ACALLDELAY1,维持0V电平
MOVA,#0FFH
MOVX@DPTR,A;输出+5V电平
ACALLDELAY2,维持+5V电平
AJMPDAMOT
说明:
按上述程序,改变延时子程序的延迟时间就可以改变电机的转速。
如把第二次转换的数字圣从0FFH改为00H,则输出脉冲的极性改变(0V~-5V),从而也就改变了电机的转向。
例3按图8031与DAC0832的接口编写程序,在运算放大器输出端输出一个三角波电压。
DAC0832单缓冲方式接口电路:
ORG1000H
MOVDPTR,#7FFFH;指向0832
MOVR2,#0FFH;循环次数
MOVA,#00H;赋初值
LOOP1:
MOVX@DPTR,A;D/A转换输出
INCA
DJNZR2,LOOP1
MOVR2,#0FEH
LOOP2:
DECA
MOVXGDPTR,A
DJNZR2,LOOP2
ALMPLOOP1
END
·双缓冲方式连接
所谓双缓冲方式,就是把DAC0832的输入寄存器和DAC寄存器都接成受控锁存方式。
双缓冲方式DAC0832的连接如图9.10所示。
应用场合:
对于多路D/A转换接口,要求同步进行D/A转换输出时,必须采用双缓冲器同步方式接法。
0832采用这种接法时,数字量的输入锁存和D/A转换输出是分两步完成的,即CPU的数据总线分时地向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中,然后CPU对所有的D/A转换器发出控制信号,使各个D/A转换器输入寄存器中的数据送入DAC寄存器,实现同步转换输出。
应用举例:
下图是一个两路同步输出的D/A转换接口电路。
P2.5和P2.6分别选择两路D/A转换器的输入寄存器,控制输入锁存;P2.7连到两路D/A转换器的/XFER端控制同步转换输出;8031的/WR端与所有的/WR1和/WR2端相连。
执行下面8条指令就能完成D/A的同步转换输出。
MOVDPTR,#0DFFFH;指向0832
(1)
MOVA,#data11;datal送入0832
(1)中锁存
MOVX@DPTR,A
MOVDPTR,#0BFFFH;指向0832
(2)
MOVA,data2;data2送入0832
(2)中锁存
MOVX@DPTR,A
MOVDPTR,#7FFFH;给0832
(1)、0832
(2)提供信号,同时完成D/A转换输出
MOVX@DPTR,A
作业:
p253,问答题:
2、4、5。
填空题与选择题做在书本上。