微型计算机原理与接口技术主编何超中国水利水电出版社第12章数/模、模/数转换器及与CPU的接口12.1数/模转换器及其与CPU的接口12.2模/数转换器及其与CPU的接口在实际控制系统和工业生产过程中,需要进行加工和处理的信号可以分为模拟信号和数字信号两种类型。通常,传感器所检测的信号如温度、压力、流量、速度、湿度等物理量都是随着时间连续变化的模拟信号,而现在广泛使用的微型计算机内部都是采用二进制表示的数字量进行信号的输入、存储、传输、加工与输出。为了能用计算机对模拟信号进行采集、加工和处理,就需要把采集到的模拟信号转换成数字信号送入到计算机中,同样经过计算机处理后的数字信号,要对外部设备实现控制必须将数字信号转换成模拟信号。第12章数模、模数转换器及与CPU的接口能够完成模拟信号转换成数字信号的过程称作模/数转换,简称A/D转换。完成A/D转换的装置叫A/D转换器(简称ADC);同理,能够完成数字信号转换成模拟信号的过程称作数/模转换,简称D/A转换。完成D/A转换的装置叫D/A转换器(简称DAC)。第12章数模、模数转换器及与CPU的接口第12章数模、模数转换器及与CPU的接口例1:温度测控系统放大A/D单片机打印输出光隔驱动电热箱温度传感器模数设定值控制信号电热丝电源双向可控硅调节电压控温~例2:速度测控系统A/DPIDD/A=/MG转速给定P0P1纸长拨盘给定转速反馈纸长反馈脉冲发生器测量转速电机可控硅触发器单片机系统+-单片机控制系统原理框图例3:红外线自动门控制系统原理图BISS000160K20K1032M10K10u1M1M47K10347u电压检测模块电机温度检测P3.3/INT1手动/自动切换手动关按钮P3.4P3.02.2uDSG红外传感器+5VGND3.3K103103470u+5V330K330K10210nVCVDD2OUT2IN-1IN+1IN-1OUT220KIBRR1AV0RC1RC2RR2VSS+5V行程开关2行程开关3手动开按钮光电隔离电机正转继电器J1电机过热报警转速检测模块A/D转换蜂鸣报警行程开关4行程开关1电压过高报警速度异常报警速度变换继电器J3电机反转继电器J2ADC0809P1.0P1.3P1.2P1.1P1.4P1.5P1.6P2.0P2.1P2.3P2.2P3.2/INT0P3.1P0WRRDALEP1.710K×6LEDAT89C51VCC12.1数/模转换器及其与CPU的接口12.1.1D/A转换器(DAC)的基本原理及其转换特性12.1.2D/A芯片的性能参数和术语12.1.3DAC和微处理器接口中需要考虑的问题12.1.4D/A芯片简介12.1.5DAC与微处理器接口实例12.1.1D/A转换器(DAC)的基本原理及其转换特性以倒T型D/A转换器为例说明倒T型电阻网络D/A转换器的原理图输出电流io1和各支路电流的关系为iiiDRVDDDDRVDIDIDIDIi222222216842304REF433221100REF01231o1、分辨率:该参数表明DAC对模拟值的分辨能力,它是输入数字的最低有效位LSB所对应的模拟值,即D/A所能分辨的最小的电压增量。计算公式为分辨率=DAC的满量程/2n其中n为DAC的位数,DAC能转换的二进制的位数越多,分辨率越高。例如8位的DAC,可给出满量程电压的1/28的分辨能力。通常也将n简单说成其分辨率。例如说分辨率为8位12.1.2D/A芯片的性能参数和术语2、转换时间:指从数字量输入到完成转换,输出达到最终稳定值为止所需的时间。3、精度:DAC的精度表明DAC的精确程度。它可分为绝对精度和相对精度。绝对精度是指对应于数字输入量,在输出端实际测得的模拟输出值和理论输出值之差。相对精度是指在零点和满量程校准后,其绝对精度与理想输出值的比值。12.1.2D/A芯片的性能参数和术语4、线性误差和微分线性误差:线性误差有时称为非线性度:指A/D的实际转换特性(各数字输入值所对应的各模拟输出值之间的连线)与理想的转换特性之间的偏差。微分线性误差:一个理想的D/A,任意两个相邻的数字码所对应的模拟输出值之差应恰好是一个LSB所对应的模拟值。如果大于或小于1LSB就出现了微分线性误差。其差值就是微分线性误差值。5、温度系数:用来说明DAC受温度变化影响的特性。12.1.2D/A芯片的性能参数和术语12.1.3DAC和微处理器接口中需要考虑的问题DAC的微处理器的接口实际就是DAC与系统的数据、地址、控制总线的连接问题。DAC在与CPU接口之前,必须首先了解DAC芯片的输入/输出特性。包括:1、输入缓冲能力:是否有输入寄存器或锁存器来保存输入来的数字量。2、输入码制:所能接受的数字输入码制。3、输入数据的宽度:DAC的输入数据的位数。4、DAC是电流型还是电压型:即DAC的输出是电流还是电压。5、DAC是单极性输出还是双极性输出:对一些需正负电压控制的设备,就要使用双极性DAC。12.1.4各D/A芯片简介12.1.5DAC与微处理器接口实例1、DAC的分辨率=系统数据总线宽度时,DAC与CPU的连接(1)当片内无输入输出锁存器的DAC与CPU相连时,必须外加锁存器或I/O并行口与CPU相连。D7Q7D6D5D4锁存器D374LSD2273D1D0Q080H74LS138D7D6D5D4D3D2D1D0IORQWRA7~A0D7AD1408D0CPU当ADC1408与CPU相连时,由于内部没有锁存器,所以必须外加锁存器才能与CPU相连。12.1.5DAC与微处理器接口实例1、DAC的分辨率=系统数据总线宽度时,DAC与CPU的连接(2)片内有锁存器时与CPU可以直接相连。81H74LS138D7D6D5D4D3D2D1D0IORQA7~A0WR+5VCPUDI7DAC0832DI0ILECSXFERWR1WR2DAC0832片内有二级锁存,所以与CPU的接口很简单,只需外加地址译码电路给出片选信号即可。12.1.5DAC与微处理器接口实例1、DAC的分辨率=系统数据总线宽度时,DAC与CPU的连接(2)片内有锁存器时与CPU可以直接相连。81H74LS138D7D6D5D4D3D2D1D0IORQA7~A0WR+5VCPUDI7DAC0832DI0ILECSXFERWR1WR2DAC0832片内有二级锁存,所以与CPU的接口很简单,只需外加地址译码电路给出片选信号即可。12.1.5DAC与微处理器接口实例2、分辨率系统总线宽度时,DAC与系统的连接当DAC的分辨率大于系统数据总线的宽度时,必须在DAC与CPU之间加两级锁存,以避免由于两次数据传送带来的尖峰。99H98H74LS138D7D6D5D4D3D2D1D0A7~A0WRIORQD10AD561D3D2D1CPUD1Q1D2Q2D7Q774LS273(1)D0Q0D7Q774LS273(2)D0Q0本图采用两步操作,第一步选址98H,将数据的低8位锁存进锁存器(1)中;第二步选址99H,把数据的低8位锁存入锁存器(2)中,同时将数据的高2位锁入2位锁存器中。12.1.5DAC与微处理器接口实例1、DAC的分辨率=系统数据总线宽度时,DAC与CPU的连接(2)片内有锁存器时与CPU可以直接相连。81H74LS138D7D6D5D4D3D2D1D0IORQA7~A0WR+5VCPUDI7DAC0832DI0ILECSXFERWR1WR2DAC0832片内有二级锁存,所以与CPU的接口很简单,只需外加地址译码电路给出片选信号即可。12.1.6DAC与微处理器接口实例例12-1使用下图所示的DAC0832产生周期锯齿波和三角波,设其口地址为80H。81H74LS138D7D6D5D4D3D2D1D0IORQA7~A0WR+5VCPUDI7DAC0832DI0ILECSXFERWR1WR212.1.6DAC与微处理器接口实例解答:本题要求实现的是重复出现的阶梯波,当阶梯宽度很小时,就是近似的锯齿波。实现周期锯齿波可以将从0开始递增的数据送到DAC,直到FFH,再直接回到0,中间要分为256个小台阶。重复上述过程即可。实现周期三角波可以将从0开始递增的数据送到DAC,直到FFH,再依次递减,回到0,重复上述过程即可。程序如下:LOOP:MOVAL,00HLOOP1:OUT80H,AL;D/A转换INCALCALLDELAY;延时子程序CMPAL,0FFH;JNZLOOP1;递增LOOP2:OUT80H,AL;D/A转换DECAL阶梯宽度由程序中的DELAY子程序的延时时间确定。程序如下:LOOP:MOVAL,00HOUT80H,AL;D/A转换INCALCALLDELAY;延时子程序JMPLOOPCALLDELAY;延时子程序CMPAL,00H;JNZLOOP2;递增JMPLOOP重复12.1.6DAC与微处理器接口实例例12-2:使用图12-3所示的DAC0832产生指定幅度范围的周期锯齿波和三角波,设其口地址为80H。81H74LS138D7D6D5D4D3D2D1D0IORQA7~A0WR+5VCPUDI7DAC0832DI0ILECSXFERWR1WR212.1.6DAC与微处理器接口实例解答:当输出幅度范围不是从0到最大,而是有幅度限制(1~3V),则作法如下:对应DAC的参考电压VR=5V,每一步电压变化量为5/256,下限1V所需步数为:1×5/256=51.3≈51=33H上限3V所需步数为:3×5/256=153.8≈154=9AH编程使输出到DAC的数字量从33H到9AH,程序如下:BEGIN:MOVAL,33H;设置下限LOOP:OUT80H,AL;送DACINCAL;递增CALLDELAY;延时子程序CMPAL,9AH;与上限比较JNZLOOP;小于,继续JMPBEGIN;否则,重新开始12.2模/数转换器及其与CPU的接口12.2.1采样、量化和编码12.2.2A/D的性能参数和术语12.2.3A/D与CPU接口中应注意的问题12.2.4A/D芯片简介12.2.5A/D与微处理器接口实例12.2.1模/数转换器及其与CPU的接口模拟量转换为数字量,一般要经过三个步骤:采样、量化和编码采样:在连续变化的模拟量上按一定的规律(周期的)取出其中的某一瞬时值来代表连续的模拟量,这个过程就是采样。量化:量化是以一定的量化单位将数值上连续的模拟量通过量化装置转变为数值上离散的阶跃量的过程。量化的过程是模/数转换的核心。在量化过程中不可避免地出现了舍、入带来的误差,称为量化误差。编码:把量化的结果用一组二进制或二-十进制数字表示出来,称为编码。这些代码就是A/D转换的输出数字量。12.2.2A/D的性能参数和术语分辨率:表明A/D对模拟输入的分辨能力。由它确定能被A/D辨别的最小的模拟变化。通常用二进制位数表示。量化误差:指在A/D转换过程中量化产生的固有误差。若采用舍入(四舍五入)量化法,量化误差在±1/2LSB(最低有效位)之间。转换时间:完成一次A/D转换所需的时间。绝对精度:指在输出端产生给定的数字代码,实际需要的模拟输入值与理论要求的输入值之差。相对精度:指满量程校准后,任一数字输出所对应的实际模拟输入值与理论值之差。12.2.3.A/D与CPU接口中应注意的问题(1)A/D的数字输出特性A/D与微处理器之间除了明显的电气相容性以外,对A/D的数字输出必须考虑的关键两点是:转换结果数据应由A/D锁存,以及数据输出最好具有三态能力。(2)A/D和CPU的时间配合问题要求解决好启动转换和读取结果数据这两步操作的时间配合问题,解决这个问题有固定延时等待法、保持等待法、中断响应法、双重缓冲法、查询法等。12.2.3.A/D与CPU接口中应注意的问题(3)A/D分辨率超过微处理器数据总线位数时的接口当A/D的分辨率超过微处理器数据总线的位数时,就不能只用一条指令,而必须用两条输入指令才能把A/D转换的结果传递给微