第3章输入输出通道接口技术第3章输入/输出通道接口技术•概述•输入输出通道的结构•模拟量输入通道接口技术•模拟量输出通道接口技术•数字量输入输出通道•过程通道的抗干扰与可靠性设计3.1概述在计算机控制系统中,为了实现对生产过程的控制,必须把现场的各种测试参数,如温度、压力、流量等连续变化的物理量或开关量,转换为计算机可识别的数字量输入到计算机进行数据处理。处理结果又必须转换为电压或电流,以推动执行机构工作。因此在计算机和生产过程之间,必须设置信息传递和变换装置,这个装置称为过程输入/输出通道。典型的单片机测控系统硬件组成框图单片计算机接口D\AA\D多路开关反多路开关开关量输入开关量输出执行机构传感器变送器接口接口接口生产设备或过程通用外设输入/输出通道输入/输出信号一般有两种类型:一种是随时间连续变化的物理量,称为模拟信号;一种是只有开和关(或1和0)两种状态的量,称为开关量(数字量)。因此计算机控制系统中,输入/输出通道分模拟量通道和数字量(开关量)通道两类。3.2输入/输出通道的结构信息种类信息来源通道类型数字量开关量输入阀门的开、关,接点的通、断,电平的高、低数字量输入通道数据数码各类数字传感器、控制器等脉冲量输入长度、转速、流量测定转换等中断输入操作人员请求、过程报警等模拟量电流信号压力、温度、液位、湿度、速度、质量、位移等模拟量输入通道电压信号信息来源输出驱动输出信息种类通道类型数字量计算机输出的阀门的开、关,触点的通、断,电机的启、停等开关量数字量输出通道数字量(数字设备)数字量执行器(电动、气动、液压执行器械)电压或电流模拟量输出通道3.2.1模拟量输入通道的结构输入通道的一般结构:1、并行转换结构CPUI/O接口电路A/D转换采样/保持器采样/保持器A/D转换来自现场的信号2、共享转换结构多路开关信号处理信号处理信号处理放大器逻辑控制S/HA/DI/O接口电路CPU3.2.2模拟量输出通道结构输出通道的一般结构:1、多通道独立D/A转换形式CPUI/O接口电路D/A转换隔离执行器放大转换D/A转换隔离执行器放大转换2、多通道共享D/A转换形式CPUI/O接口电路D/A转换反多路开关保持器保持器3.3模拟量输入通道接口技术在单片机的实时测控和智能化仪表等应用系统中,常需将检测到的连续变化的模拟量(如温度、压力、流量、速度、液位和成分等)通过模拟量输入通道转换成单片机可以接收的数字量信号,输入到单片机中进行处理。A/D转换器是模拟量输入通道的主要组成部分,完成模拟量到数字量的转换。A/D转换接口设计主要是根据用户提出的数据采集精度及速度等要求,按一定的技术准则和经济原因合理的选择通道结构和A/D转换器芯片,并适当配置多路模拟开关、前置放大器、采样保持器、接口和控制电路等,实现模拟量到数字量的线性转换,对被测信号进行采集和处理。A/D转换器一般分类如下:(1)按转换输出数据的方式,可分为串行与并行两种,其中并行(串行)ADC又可根据数据宽度分为8位、12位、14位、16位等。(2)按输出数据类型可分为BCD码输出型和二进制输出型。(3)按转换原理可分为逐次逼近式、双积分式和并行式。3.3.1A/D主要技术指标1、分辨率:用数字量的位数来表示,位数越高,分辨率越高,对输入量的变化越灵敏。2、量程:所能转换的电压(电流)范围。3、转换时间:转换时间是指启动A/D转换到转换结束所需的时间。4、线性误差:满量程输入范围内,偏离理想转换特性的最大误差。另外还有工作温度范围、对参考电压的要求、转换精度(绝对精度和相对精度)、偏移误差、满刻度误差等。ADC0809主要特性:1)8路输入通道,8位A/D转换器,即分辨率为8位。2)具有转换起、停控制端。3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)。4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。6)工作温度范围为-40~+85摄氏度。7)低功耗,约15mW。3.3.2并行ADC及接口技术ADC0809地址锁存和译码OE通道选择开关ADDAADDBADDC1N0IN1IN2IN3IN4IN5IN6IN78位三态锁存缓冲器DACVcc比较器CLOCKSTARTGNDVREF(+)VREF(-)ALE逐次逼近寄存器SAR定时和控制D0D1D2D3D4D5D6D7EOCADC0809的内部结构例1:如图所示,试用中断方式编写程序,对IN0~IN7通道上的模拟电压数据进行一次采集,并将转换结果送入内部RAM20H单元开始的数据缓冲区中。RDWRCPDQQA0A1A2CLKSTARTALEOEEOCIN0IN1IN2IN3IN4IN5IN6IN774LS373P1.0ADDAADDBADDCD0~D7ALEP0INT0P2.7MCS-51单片机≥1≥1OEGADC0809;主程序START:MOVDPTR,#7FFFHMOVR2,#08HMOVR0,#20HMOVR1,#00H;IN0通道号SETBEASETBEX0;开外中断0SETBIT0;中断请求信号为下降沿触发MOVA,R1MOVX@DPTR,A;启动A/D转换LOOP:SJMPLOOP;等待中断;中断服务程序……ORG1000HADINT0:MOVXA,@DPTR;读取A/D转换数据MOV@R0,A;存储数据INCR1;指向下一个通道INCR0DJNZR2,ROTCLREX0JMPEXITROT:MOVA,R1MOVX@DPTR,AEXIT:RETIEND若采用C语言编程,清单如下:#includereg51.h#defineucharunsignedcharucharxdata*adch;uchardata*addata;uchari;voidmain(){adch=0x7fff;addata=0x20;i=0;EA=1;EX0=1;IT0=1;*adch=i;while(1);}voidADint0(void)interrupt0{ucharj;j=*adch;*addata=j;addata++;i++;if(i==0x08)EX0=0;else*adch=i;}串行ADC具有输出占用的数据线少,转换后的数据逐位输出,输出速度较慢的特点,但它具有两大优势:其一,便于信号隔离,在数据输出时,只需少数几路光电隔离器件,就可以很简单地实现与单片机间的电气隔离;其二,在转换精度要求日益提高的前提下,使用串行ADC的性价比较高,且芯片小,引脚少,便于线路板制作。3.3.3串行ADC及接口技术ADC0832由NS公司研制的8位逐次逼近型串行A/D转换器,其主要特点如下:1)8位分辨率;2)双通道A/D转换;3)输入输出电平与TTL/CMOS相兼容;4)5V电源供电时输入电压在0~5V之间;5)工作频率为250KHZ,转换时间为32μS;6)一般功耗仅为15mW;7)8P—DIP(双列直插)、PLCC多种封装;ADC0832ADC0832引脚及功能Vcc:电源端,接+5V电源。GND:信号地。CLK:串行时钟输入端。DO:数字量串行输出口。CS:使能端。DI:两路模拟输入选择端。CH0、CH1:两路模拟信号输入端。12348765CSCH0CH1GNDVcc/refCLKDODIADC08321.转换时,先将CS置于低电平并且保持到转换完全结束。2.由DI端输入启动位和配置位,同时输入CLK时钟脉冲。在第1个时钟脉冲的下降沿之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下降沿之前DI端应输入2位数据(SGL、Odd)用于选择通道功能,当此2位数据为“1”、“0”时,选择CH0。当2位数据为“1”、“1”时,选择CH1。3.完成输入启动位、通道选择之后,就可以开始读出数据。4.7μF例2:编写令AD0832工作的程序。ADC0832ADC0832与MCS-51接口电路VccDICSCLKGNDCH0P1.0P1.1P1.2MCS-51单片机0.1μF+5V+P1.3DO#includereg51.hsbitCS=P1^0;sbitCLK=P1^1;sbitD1=P1^2;sbitD0=P1^3;voiddelay(inttimer){while(--timer);}voidpulse(void){CLK=1;delay(4);CLK=0;}voidmain(void){chari,a;CS=0;//选芯片a=0x03;//通道选择03通道0;07通道1for(i=0;i3;i++){if(a&0x01)D1=1;elseD1=0;a=a1;pulse();}//启动a=0x00;delay(50);//等待转换结束for(i=0;i8;i++){pulse();a=a1;if(D0)a=a+1;}//读数CS=1;//关闭芯片选择}3.4模拟量输出通道接口技术D/A转换器是模拟量输出通道的主要组成部分,完成数字量到模拟量的转换。D/A转换器一般可分类如下:1)根据输出是电流还是电压,可以分为电压输出型和电流输出型。2)根据输出端是串口还是并口,可以分为串行输出型和并行输出型。3)根据内部是否有锁存器,可以分为无锁存器型和带锁存器型。3.4.1DAC的主要性能指标1.分辨率:是D/A转换器对输入量变化敏感程度的描述。2.转换精度:实际模拟输出和理论值的接近程度。3.非线性误差:是指实际转换特性曲线与理想转换特性曲线之间的最大偏差。4.建立时间:建立时间是描述D/A转换速率快慢的一个重要参数。3.4.2并行DAC及接口技术DAC0832主要特性:1)分辨率为8位;2)电流稳定时间1us;3)可单缓冲、双缓冲或直接数字输入;4)单一电源供电(+5V~+15V);5)VREF的范围为-10V~+10V6)低功耗,20mWLE2LE1RfbAGNDDAC0832VccILEVREF输入寄存器DGNDDI0~DI7D/A转换器DAC寄存器Iout2Iout1CSWR1WR2XFER1.DAC0832的内部结构Vout=-Iout1×Rfb=-(D/28)×VREF单极性电压输出2.DAC0832的输出方式RfbIout2Iout1Vout+_AGNDADIVREF设VREF=-5VD=FFH=255时,最大输出电压:Vmax=(255/256)×5V=4.98VD=00H时,最小输出电压:Vmin=(0/256)×5V=0VD=01H时,一个最低有效位(LSB)电压:VLSB=(1/256)×5V=0.02V双极性电压输出Vout2=[(D-27)/27)]×VREFR1(R)R3(2R)R2(2R)RfbIout2Iout1AGNDDIVREFVout1+_A1Vout2+_A2设VREF=5VD=FFH=255时,最大输出电压:Vmax=[(255-128)/128]×5V=4.96VD=00H时,最小输出电压:Vmin=[(0-128)/128]×5V=-5VD=81H=129时,一个最低有效位电压:VLSB=[(129-128/128]×5V=0.04V3.DAC0832的工作方式及与MCS-51的接口例3:根据下图分别输出锯齿波、三角波及方波信号。设选通地址为FEH。VoutFEHCS+5VILEWR+5VXFERD0~D7WR2ALEP0_ARfbIout2Iout1VREF+-DAC0832MCS-51单片机锁存器译码器WR1锯齿波程序:ORG0100HMOVR0,#0FEHCLRA;转换初值LOOP:MOVX@R0,A;D/A转换INCA;转换值增量NOP;延时NOPNOPSJMPLOOPEND#include”absacc.h”#include”intrins.h”#defineDA0832PBYTE[0xfe]#defineucharunsignedcharvoidmain(){uchari;while(1){for(i=0;i=255;i=i++){DA0832=i;_nop_();_nop_();_nop_()