1、Ch.8 模拟量的输入输出模拟量的输入输出n本章内容本章内容n模拟量输入输出通道的组成模拟量输入输出通道的组成nD/A转换器转换器n原理及连接使用方法原理及连接使用方法nA/D转换器转换器n原理及连接使用方法原理及连接使用方法 n模拟量模拟量I/O接口的作用:接口的作用:n实际工业生产环境实际工业生产环境连续变化的模拟量连续变化的模拟量 n例如:电压、电流、压力、温度、位移、流量例如:电压、电流、压力、温度、位移、流量 n计算机内部计算机内部离散的数字量离散的数字量n二进制数、十进制数二进制数、十进制数n工业生产过程的闭环控制工业生产过程的闭环控制 概述概述 模拟量模拟量D/A传感器传感器执行
2、元件执行元件A/D数字量数字量数字量数字量模拟量模拟量模拟量输入模拟量输入(数据采集数据采集)模拟量输出模拟量输出(过程控制过程控制)计算机计算机 8.1 模拟量模拟量I/O通道的组成通道的组成模拟接口电路的任务模拟接口电路的任务模拟电路的任务模拟电路的任务0010110110101100工工业业生生产产过过程程传传感感器器放大放大滤波滤波多路转换多路转换&采样保持采样保持A/D转换转换放大放大驱动驱动D/A转换转换输出输出接口接口微微型型计计算算机机执行执行机构机构输入输入接口接口物理量物理量变换变换信号信号处理处理信号信号变换变换I/O接口接口输入通道输入通道输出通道输出通道模拟量输入通道
3、模拟量输入通道n传感器(传感器(Transducer)n非电量非电量电压、电流电压、电流 n变送器(变送器(Transformer)n转换成标准的电信号转换成标准的电信号n信号处理(信号处理(Signal Processing)n放大、整形、滤波放大、整形、滤波 n多路转换开关(多路转换开关(Multiplexer)n多选一多选一n采样保持电路(采样保持电路(Sample Holder,S/H)n保证变换时信号恒定不变保证变换时信号恒定不变nA/D变换器(变换器(A/D Converter)n模拟量转换为数字量模拟量转换为数字量 模拟量输出通道模拟量输出通道nD/A变换器(变换器(D/A Co
4、nverter)n数字量转换为模拟量数字量转换为模拟量n低通滤波低通滤波n平滑输出波形平滑输出波形n放大驱动放大驱动n提供足够的驱动电压,电流提供足够的驱动电压,电流8.2 数数/模(模(D/A)变换器)变换器n8.2.1 D/A变换器的基本原理及技术指标变换器的基本原理及技术指标nD/A变换器的基本工作原理变换器的基本工作原理n组成:模拟开关、组成:模拟开关、电阻网络电阻网络、运算放大器、运算放大器 n两种电阻网络:权电阻网络、两种电阻网络:权电阻网络、R-2R梯形电阻网络梯形电阻网络n基本结构如图:基本结构如图:VrefRf 模拟开关模拟开关电阻网络电阻网络VO数字量数字量D/A变换原理变
5、换原理 n运放的放大倍数足够大时,输出电压运放的放大倍数足够大时,输出电压Vo与输与输入电压入电压Vin的关系为:的关系为:fOinRV=-VR式中:式中:Rf 为反馈电阻为反馈电阻 R 为输入电阻为输入电阻 VinRf VoR n若输入端有若输入端有n个支路个支路,则输出电压则输出电压VO与输入与输入电压电压Vi的关系为:的关系为:n0fini=1i1V=-RVRVinRf VOR1式中:式中:Ri 为第为第i支路的输支路的输 入电阻入电阻Rnn令每个支路的输入电阻为令每个支路的输入电阻为2iRf,并令并令Vin为一为一基准电压基准电压Vref,则有,则有n如果每个支路由一个开关如果每个支路
6、由一个开关Si控制,控制,Si=1表示表示Si合上,合上,Si=0表示表示Si断开,则上式变换为断开,则上式变换为 nn0frefrefiii=1i=1f11V=-RV=-V2 R2n0irefii=11V=-SV2若若Si=1,该项对该项对VO有贡献有贡献若若Si=0,该项对该项对VO无贡献无贡献2R4R8R16R32R64R128R256RVrefRf VOS1S2S3S4S5S6S7S8n与上式相对应的电路如下与上式相对应的电路如下(图中图中n=8):n图中的电阻网络就称为图中的电阻网络就称为权电阻网络权电阻网络n如果用如果用8位二进制代码来控制图中的位二进制代码来控制图中的S1S8(D
7、i=1时时Si闭合;闭合;Di=0时时Si断开断开),那么根,那么根据二进制代码的不同,输出电压据二进制代码的不同,输出电压VO也不同,也不同,这就构成了这就构成了8位的位的D/A转换器。转换器。n可以看出,当代码在可以看出,当代码在0FFH之间变化时,之间变化时,VO相应地在相应地在0-(255/256)Vref之间变化。之间变化。n为控制电阻网络各支路电阻值的精度,实为控制电阻网络各支路电阻值的精度,实际的际的D/A转换器转换器采用采用R-2R梯形电阻网络梯形电阻网络(见见下页下页),它只用两种阻值的电阻,它只用两种阻值的电阻(R和和2R)。R-2R梯形电阻网络梯形电阻网络D/A转换器的主
8、要技术指标转换器的主要技术指标n分辨率分辨率(Resolution)n输入的二进制数每1个最低有效位个最低有效位(LSB)使输出变化的程度。n一般用输入数字量的位数来表示:如8位、10位例:一个满量程为例:一个满量程为5V的的10位位DAC,1 LSB的变化将使输出变化的变化将使输出变化 5/(210-1)=5/1023=0.004888V=4.888mVn转换精度转换精度(误差误差)n实际输出值与理论值之间的最大偏差。n一般用最小量化阶来度量,如1/2 LSB 也可用满量程的百分比来度量,如0.05%FSRLSB:Least Significant BitFSR:Full Scale Ran
9、ge)n转换时间转换时间n从开始转换到与满量程值相差1/2 LSB所对应的模拟量所需要的时间tV1/2 LSBtCVFULL08.2.2 典型典型D/A转换器转换器nDAC0832n特性:n8位电流输出型D/A转换器nT型电阻网络n差动输出n引线图见教材p351 1234567891020191817161514131211DAC0832CS1WRAGND3DI2DI1DI0DIREFVfbRDGND1OUTI2OUTI7DI6DI5DI4DIXFER2WRILEVCC DAC0832内部结构内部结构引脚功能引脚功能nD7D0:输入数据线nILE:输入锁存允许nCS:片选信号 用于把数据写入到
10、输入锁存器用于把数据写入到输入锁存器nWR1:写输入锁存器 nWR2:写DAC寄存器nXFER:允许输入锁存器的数据传送到DAC寄存器 上述二个信号用于启动转换上述二个信号用于启动转换nVREF:参考电压,-10V+10V,一般为+5V或+10VnIOUT1、IOUT2:D/A转换差动电流输出,接运放的输入nRfb:内部反馈电阻引脚,接运放输出nAGND、DGND:模拟地和数字地 工作时序工作时序nD/A转换可分为两个阶段:转换可分为两个阶段:nCS=0、WR1=0、ILE=1,使输入数据锁存到输入寄存器;,使输入数据锁存到输入寄存器;nWR2=0、XFER=0,数据传送到,数据传送到DAC寄
11、存器,并开始转换。寄存器,并开始转换。写输入写输入寄存器寄存器写写DAC寄存器寄存器工作方式工作方式n单缓冲方式单缓冲方式n使输入锁存器或使输入锁存器或DAC寄存器二者之一处于直通寄存器二者之一处于直通。CPU只需一次写入即开始转换。控制比较简单。见教材p352图。n双缓冲方式双缓冲方式(标准方式)(标准方式)n转换要有两个步骤:n将数据写入输入寄存器nCS=0、WR1=0、ILE=1n将输入寄存器的内容写入DAC寄存器nWR2=0、XFER=0 n优点:数据接收与D/A转换可异步进行;可实现多个DAC同步转换输出分时写入、同步转换n直通方式直通方式n使内部的两个寄存器都处于直通状态。模拟输出
12、始终跟随输入变化。n不能直接与数据总线连接不能直接与数据总线连接,需外加并行接口(如74LS373、8255等)。双缓冲方式双缓冲方式同步转换举例同步转换举例A10-A0译码器译码器0832-10832-2port1port2port3 输出方式输出方式 DAC0830为电流输出型D/A转换器,要获得模拟电压输出时,需要外接一个运算放大器。(1)单极性模拟电压输出单极性模拟电压输出。如果参考电压为+5 V,则当数字量N从00H至FFH变化时,对应的模拟电压VO的输出范围是05 V,如下图所示。VREFVFBIOUT2IOUT1AGNDVODAC083008310832DB5 V (2)双极性模
13、拟电压输出双极性模拟电压输出。如果要输出双极性电压,则需在输出端再加一级运算放大器作为偏移电路,如下图所示。当数字量N从00H至FFH变化时,对应的模拟电压VO的输出范围是5+5 V。VREFVFBIOUT2IOUT1AGNDVODAC083008310832DB15 k5 V7.5 k15 kVO双缓冲方式的程序段示例双缓冲方式的程序段示例本例中三个端口地址的用途:port1 选择选择0832-1的输入寄存器的输入寄存器 port2 选择选择0832-2的输入寄存器的输入寄存器 port3 选择选择0832-1和和0832-2的的DAC寄存器寄存器MOV AL,data ;要转换的数据送AL
14、MOV DX,port1 ;0832-1的输入寄存器地址送DXOUT DX,AL ;数据送0832-1的输入寄存器MOV DX,port2 ;0832-2输入寄存器地址送DXOUT DX,AL ;数据送0832-2的输入寄存器MOV DX,port3 ;DAC寄存器端口地址送DXOUT DX,AL ;数据送DAC寄存器,并启动同步转换HLTD/A转换器的应用转换器的应用n函数发生器函数发生器n只要往D/A转换器写入按规律变化的数据,即可在输出端获得正弦波、三角波、锯齿波、方波、阶梯波、梯形波等函数波形。n直流电机的转速控制直流电机的转速控制n用不同的数值产生不同的电压,控制电机的转速n其他需要
15、用电压/电流来进行控制的场合 例子参见p354-p356。应用举例应用举例【例1】锯齿波的产生。VREFRFBIOUT2IOUT1VO5 VD0D7DAC0830ILECS1WR2WRXFER8255APA0PA7PB4PB3PB2PB1PB08086或8088控制程序清单如下:;8255A初始化MOVDX,0E003H;8255A的控制端口地址MOVAL,80H;设置8255A的方式字OUTDX,AL;B口控制DAC的转换MOVDX,0E001H;8255A的B口地址MOVAL,10H;置0830为直通工作方式OUTDX,AL;生成锯齿波MOVDX,0E000H;设置DAC端口号MOVAL,
16、0H;设置初值L1:OUTDX,AL;向DAC送数据INCAL;输出数据加1NOP;延时JMPL1 通过AL加1,可得到正向的锯齿波。如要得到负向的锯齿波,则只要将程序中的INC AL改为DEC AL即可。可以通过延时的办法改变锯齿波的周期,若延迟时间较短,则可用NOP指令来实现;若延迟时间较长,则可用一个延时子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。【例2】三角波的产生。在原有硬件电路的基础上,换用下述程序即可产生三角波。MOVDX,0E000HMOVAL,0H;输出数据从0开始L2:OUTDX,ALINCAL;输出数据加1JNZL2;AL是否加满?未满,继续MOVAL,0FF
17、H;已满,AL置全“1”L3:OUTDX,ALDECAL;输出数据减1JNZL3;AL是再减到“0”?不是,继续JMPL28.3 模模/数(数(A/D)转换器)转换器n用途用途n将连续变化的模拟信号转换为数字信号,以便于计算机进行处理。n常用于数据采集系统或数字化声音。nA/D转换的四个步骤转换的四个步骤n采样保持量化编码n采样/保持:由采样保持电路(S/H)完成n量化/编码:由ADC电路完成(ADC:AD变换器)1)采样和保持采样和保持n采样n将一个时间上连续变化的模拟量转为时间上断续变化的将一个时间上连续变化的模拟量转为时间上断续变化的(离散的)模拟量。(离散的)模拟量。n或:把一个时间上
18、连续变化的模拟量转换为一个脉冲串,或:把一个时间上连续变化的模拟量转换为一个脉冲串,脉冲的幅度取决于输入模拟量。脉冲的幅度取决于输入模拟量。n保持n将采样得到的模拟量值保持下来,使之等于采样控制脉将采样得到的模拟量值保持下来,使之等于采样控制脉冲存在的最后瞬间的采样值。冲存在的最后瞬间的采样值。n目的:目的:A/D转换期间保持采样值恒定不变。转换期间保持采样值恒定不变。n对于慢速变化的信号,可省略采样保持电路采样保持电路(采样保持电路(S/H)n由MOS管采样开关T、保持电容Ch和运放构成的跟随器三部分组成。n采样控制信号S(t)=1时,T导通,Vin向Ch充电,Vc和Vout跟踪Vin变化,
19、即对Vin采样。S(t)=0时,T截止,Vout将保持前一瞬间采样的数值不变。ChTVoutVin采样控制采样控制S(t)采样保持电路的波形采样保持电路的波形VinS(t)Voutn进行A/D转换时所用的输入电压,就是对保持下来的采样电压(每次采样结束时的输入电压)进行转换。采样周期的确定采样周期的确定n采样通常采用等时间间隔采样。n采样频率fs不能低于2fimax(fimax为输入信号Vin的最高次谐波分量的频率);nfs的上限受计算机的速度、存储容量、器件速度的限制。n实际中一般取fs为fimax的4-5倍。2)量化和编码量化和编码n量化量化就是用基本的量化电平的个数来表示采样到模拟电压值
20、。就是用基本的量化电平的个数来表示采样到模拟电压值。即把时间上离散而数值上连续的模拟量以一定的准确度变换即把时间上离散而数值上连续的模拟量以一定的准确度变换为时间上、数值上都离散的具有标准量化级的等效数字值。为时间上、数值上都离散的具有标准量化级的等效数字值。(量化电平的大小取决于(量化电平的大小取决于A/D变换器的字长)变换器的字长)n只有当电压值正好等于量化电平的整数倍时,量化后才是准确值,否则量化后的结果都只能是输入模似量的近似值。这种由于量化而产生的误差叫做量化误差。量化误差是由于量化电平的有限性造成的,所以它是原理性误差,只能减小,而无法消除。为减小量化误差,根本的办法是减小量化电平
21、(即增加字长)。n编码编码是把已经量化的模拟数值是把已经量化的模拟数值(它一定是量化电平的整数倍它一定是量化电平的整数倍)用二进制码、用二进制码、BCD码或其它码来表示。码或其它码来表示。A/D转换器的分类转换器的分类n根据根据A/D转换原理和特点的不同,可把转换原理和特点的不同,可把ADC分成两大类:分成两大类:直接直接ADC和和间接间接ADC。n直接ADC是将模拟电压直接转换成数字量,常用的有:n逐次逼近逐次逼近式式ADC、计数式ADC、并行转换式ADC等。n 间接ADC是将模拟电压先转换成中间量,如脉冲周期T、脉冲频率f、脉冲宽度等,再将中间量变成数字量。常见的有:n单积分式ADC、双积
22、分式ADC,V/F转换式ADC等。各种各种ADC的优缺点的优缺点n计数式计数式ADC:最简单,但转换速度最慢。最简单,但转换速度最慢。n并行转换式并行转换式ADC:速度最快,但成本最高。速度最快,但成本最高。n逐次逼近式逐次逼近式ADC:转换速度和精度都比较高,且比较简单,转换速度和精度都比较高,且比较简单,价格低,所以在微型机应用系统中最常用。价格低,所以在微型机应用系统中最常用。n双积分式双积分式ADC:转换精度高,抗干扰能力强,但转换速度转换精度高,抗干扰能力强,但转换速度慢,一般应用在精度高而速度不高的场合,如测量仪表。慢,一般应用在精度高而速度不高的场合,如测量仪表。nV/F转换式转
23、换式ADC:在转换线性度、精度、抗干扰能力等方面在转换线性度、精度、抗干扰能力等方面有独特的优点,且接口简单、占用计算机资源少,缺点也是有独特的优点,且接口简单、占用计算机资源少,缺点也是转换速度慢。在一些输出信号动态范围较大或传输距离较远转换速度慢。在一些输出信号动态范围较大或传输距离较远的低速过程的模拟输入通道中应用较为广泛。的低速过程的模拟输入通道中应用较为广泛。8.3.1 工作原理及技术指标工作原理及技术指标n逐次逼近型逐次逼近型A/D转换器转换器n结构:由D/A转换器、比较器和逐次逼近寄存器SAR组成。见P360页图。Vi-+逐次逼近寄存器逐次逼近寄存器D/A转换器转换器Vc比较器比
24、较器数字量输出数字量输出控制电路控制电路模拟量输入模拟量输入工作原理工作原理 类似天平称重量时的尝试法,逐步用砝码的累积重量去逼类似天平称重量时的尝试法,逐步用砝码的累积重量去逼近被称物体。近被称物体。例如:例如:用8个砝码20g,21g,27g,可以称出1255g之 间的物体。现有一物体,用砝码称出其重量(假定重量为176g)。1)ADC从高到低从高到低逐次给SAR的每一位“置1”(即加上不同权重的砝码),SAR相当于放法码的称盘;2)每次SAR中的数据经D/A转换为电压VC;3)VC与输入电压Vi比较,若VCVi,保持当前位的1,否则当前位置0;4)从高到低逐次比较下去,直到SAR的每一位
25、都尝试完;5)SAR内的数据就是与Vi相对应的2进制数。主要技术指标主要技术指标n精度精度 n量化间隔量化间隔(分辨率分辨率)=Vmax/电平数电平数(即满量程值即满量程值)例:某例:某8位位ADC的满量程电压为的满量程电压为5V,则其分辨率为,则其分辨率为 5V/255=19.6mV n量化误差量化误差:用数字(离散)量表示连续量时,由于数字用数字(离散)量表示连续量时,由于数字量量字长有限字长有限而无法精确地表示连续量所造成的误差。而无法精确地表示连续量所造成的误差。(字长越长,精度越高字长越长,精度越高)绝对量化误差绝对量化误差=量化间隔量化间隔/2=(满量程电压满量程电压/(2n-1)
26、/2相对量化误差相对量化误差=1/2*1/量化电平数目量化电平数目*100%例:满量程电压例:满量程电压=10V,A/D变换器位数变换器位数=10位,则位,则 绝对量化误差绝对量化误差 10/211=4.88mV 相对量化误差相对量化误差 1/211*100%=0.049%主要技术指标(续)主要技术指标(续)n转换时间转换时间n转换一次需要的时间。精度越高(字长越转换一次需要的时间。精度越高(字长越长),转换速度越慢。长),转换速度越慢。n输入动态范围输入动态范围n允许转换的电压的范围。如允许转换的电压的范围。如05V、-5V+5V、010V等。等。典型的典型的A/D转换器简介转换器简介nAD
27、C0809n8通道(8路)输入n8位字长 n逐位逼近型n转换时间100s n内置三态输出缓冲器(可直接接到数据总线上)n外部引脚见教材p359引脚功能引脚功能 D7D0:输出数据线(三态):输出数据线(三态)IN0IN7:8通道(路)模拟输入通道(路)模拟输入ADDA、ADDB、ADDC:通道地址(通道选择):通道地址(通道选择)ALE:通道地址锁存:通道地址锁存START:启动转换:启动转换EOC:转换结束,可用于查询或作为中断申请:转换结束,可用于查询或作为中断申请OE:输出允许(打开输出三态门):输出允许(打开输出三态门)CLK:时钟输入(:时钟输入(10KHz1.2MHz)VREF(+
28、)、VREF(-):基准参考电压:基准参考电压ADC0809内部结构内部结构START EOC CLK OED7D0VREF(+)VREF(-)ADDCADDBADDAALEIN0IN7比较器比较器8路模路模拟开拟开关关树状开关树状开关电阻网络电阻网络三态三态输出输出锁存锁存器器时序与控制时序与控制地址地址锁存锁存及及译码译码D/A8个个模模拟拟输输入入通通道道8选选1逐位逼近寄存器逐位逼近寄存器SAR工作时序工作时序 ADC0809的工作过程的工作过程n根据时序图,根据时序图,ADC0809的工作过程如下:的工作过程如下:把通道地址送到ADDAADDC上上,选择一个模拟输入端;在通道地址信号
29、有效期间,ALE上的上升沿上升沿使使该地址锁存到内部地址锁存器;START引脚上的下降沿下降沿启动A/D变换;变换开始后,EOC引脚呈现低电平低电平,EOC重新变为高电平高电平时表示转换结束;OE信号打开输出锁存器的三态门送出结果。ADC0809与系统的连接与系统的连接 n模拟输入端模拟输入端INin单路输入单路输入n模拟信号可连接到任何一个输入端;模拟信号可连接到任何一个输入端;n地址线可根据输入固定连接;也可以由地址线可根据输入固定连接;也可以由CPU给一个固定地址。给一个固定地址。n多路输入多路输入n模拟信号按顺序分别连接到输入端;模拟信号按顺序分别连接到输入端;n要转换哪一路输入,就将
30、其编号送到地址线上要转换哪一路输入,就将其编号送到地址线上(动态选择动态选择)。单路输入时单路输入时ADDCADDBADDAIN4ADC0809输入输入多路输入时多路输入时ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809输入输入0输入输入1输入输入2输入输入3输入输入4CPU指定指定通道号通道号+5Vn地址线地址线ADDA-ADDCn多路输入时,地址线不能固定连接到多路输入时,地址线不能固定连接到5V或地线,而是要通过一个或地线,而是要通过一个接口芯片与数据总线连接。接口芯片可以选用:接口芯片与数据总线连接。接口芯片可以选用:n锁存器锁存器74LS273,74LS373等(
31、要占用一个等(要占用一个I/O地址)地址)n可编程并行接口可编程并行接口8255(要占用四个(要占用四个I/O地址)地址)nCPU用一条用一条OUT指令把通道地址通过接口芯片送给指令把通道地址通过接口芯片送给ADC0809ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809输输入入DB74LS273Q2Q1Q0CP来自来自I/O译码译码D0-D7ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809DB8255PB2PB1PB0CS来自来自I/O译码译码D0-D7A1A0A1A0用锁存器作为用锁存器作为ADC0809的接口的接口用用8255作为作为ADC0809的
32、接口的接口 n数据输出线数据输出线D0-D7n内部已接有三态门,故可直接连到内部已接有三态门,故可直接连到DB上上n也可另外通过一个外部三态门与也可另外通过一个外部三态门与DB相连相连n上述两种方法均需占用一个上述两种方法均需占用一个I/O地址地址D0-D7ADC0809DBOE来自来自I/O译码译码D0-D7ADC0809DBOE来自来自I/O译码译码直接与直接与DB相连相连通过三态门与通过三态门与DB相连相连74LS244+5VDIDOE1E2n地址锁存信号地址锁存信号ALE和启动转换信号和启动转换信号STARTn两种连接方法:两种连接方法:n分别连接:用两个信号分别进行控制分别连接:用两
33、个信号分别进行控制需占用两个需占用两个I/O端口端口或两个或两个I/O线线(用用8255时时);n统一连接:用一个脉冲信号的上升沿进行地址锁存,下降沿统一连接:用一个脉冲信号的上升沿进行地址锁存,下降沿实现启动转换实现启动转换只需占用一个只需占用一个I/O端口或一个端口或一个I/O线线(用用8255时时),参见教材,参见教材p362图。图。ADC0809ALESTART独立连接独立连接来自来自I/O译码译码1来自来自I/O译码译码2ADC0809ALESTART统一连接统一连接来自来自I/O译码译码 n转换结束转换结束EOCn软件延时等待软件延时等待(比如延时比如延时1ms)不用不用EOC信号
34、信号nCPU效率最低,只能按最大转换时间延时效率最低,只能按最大转换时间延时n简单,容易实现简单,容易实现n软件查询软件查询EOC状态状态nEOC通过一个三态门连到数据总线的通过一个三态门连到数据总线的D0(或或D1、D2等等)n三态门要占用一个三态门要占用一个I/O端口地址端口地址nCPU效率低效率低n把把EOC作为中断申请信号,向作为中断申请信号,向CPU申请中断申请中断n在中断服务程序中读入转换结果,效率高在中断服务程序中读入转换结果,效率高D0IN0A15-A0IORIOWD7-D0D7-D0EOCOESTARTALEADDCADDBADDA译译码码器器ADC0809n一个连接实例(用
35、查询方式)一个连接实例(用查询方式)模拟信号输入模拟信号输入进行一次进行一次A/D转换的程序转换的程序(以上图为例以上图为例)n用延时等待的方法用延时等待的方法MOV DX,start_portOUT DX,AL ;启动转换启动转换CALL DELAY_1MS ;延时延时1msMOV DX,oe_portIN AL,DX ;读入结果读入结果n用查询用查询EOC状态的方法状态的方法 MOV DX,start_portOUT DX,AL ;启动转换启动转换LL:MOV DX,eoc_portINAL,DX ;读入读入EOC状态状态AND AL,01H ;测试第测试第0位位(EOC状态位状态位)JZ
36、LL ;未转换完,则循环检测未转换完,则循环检测MOV DX,oe_portINAL,DX ;读入结果读入结果ADC芯片的应用n例1 编程启动、转换结束中断处理n例2 编程启动、转换结束查询处理中断方式D0D7220hIRQ2A0A9译码译码VccD0D7EOCADDAADDBADDCALE模拟输入模拟输入(05V)500KHzCLOCKVREF(+)+5VIN0OESTARTGNDVREF(-)IOR IOW主程序;数据段数据段adtemp db 0;给定一个临时变量给定一个临时变量;代码段代码段;设置中断向量等工作设置中断向量等工作sti;开中断开中断mov dx,220hout dx,a
37、l;启动启动A/D转换转换;其他工作其他工作中断服务程序adint procsti;开中断开中断push ax;保护寄存器保护寄存器push dxpush dsmov ax,data;设置数据段设置数据段DSmov ds,axmov dx,220hin al,dx;读读A/D转换的数字量转换的数字量mov adtemp,al;送入缓冲区送入缓冲区中断服务程序mov al,20h;发送发送EOI命令命令out 20h,alpop ds;恢复寄存器恢复寄存器pop dxpop axiret;中断返回中断返回adintendp查询方式8通道通道模拟输入模拟输入(05V)VccD7A3A9D0D7D0
38、D7OEEOCA0A1A2ADDAADDBADDC 译码译码500KHzCLOCKSTARTGNDVREF(+)VREF(-)ALE+5VIN0IN1IN2IN3IN4IN5IN6IN7220h227h238h23fh IOR IOW启动转换;数据段数据段counter equ 8bufdb counter dup(0);数据缓冲区数据缓冲区;代码段代码段mov bx,offset bufmov cx,countermov dx,220h;从从IN0开始转换开始转换start1:out dx,al;启动启动A/D转换转换push dx查询读取mov dx,238h;查询是否转换结束查询是否转换
39、结束start2:in al,dx;读入状态信息读入状态信息test al,80h;D71,转换结束否,转换结束否?jz start2;没有结束,继续查询没有结束,继续查询pop dx;转换结束转换结束in al,dx;读取数据读取数据mov bx,al;存入缓冲区存入缓冲区inc bxinc dxloop start1;转向下一个模拟通道转向下一个模拟通道进一步应考虑的问题进一步应考虑的问题n多个模拟通道时,程序怎样编写?多个模拟通道时,程序怎样编写?nADC位数大于位数大于8位应怎样处理?位应怎样处理?n用用8255时程序应怎样编写?时程序应怎样编写?n以上三个问题留作思考题以上三个问题留作思考题作业作业nP364n8.4,8.10,8.11,8.14