第十一章D/A、A/D转换器及其与CPU的接口第十一章D/A、A/D转换器及其与CPU的接口11.1概述11.2D/A转换器芯片及其与CPU的接口11.3A/D转换器芯片及其与CPU的接口第十一章D/A、A/D转换器及其与CPU的接口11.1概述数/模(D/A)和模/数(A/D)转换技术主要用于计算机控制和测量仪表中。典型的闭环实时控制系统为:控制对象传感器运算放大器A/D转换器微机系统执行部件功率放大器D/A转换器第十一章D/A、A/D转换器及其与CPU的接口11.2D/A转换器芯片及其接口技术`11.2.1D/A转换原理与基本参数数字量是由一位一位的数位组成的,每个数位都代表一定的权。D/A转换时,就是把一个数字量的每一位代码按权的大小转换为相应的模拟量分量,然后用线性叠加原理将各位代码对应的模拟输出量相加,其和就是与数字量成正比的模拟量。在实现时,通常采用T型网络实现数字量往模拟电流的转换,再利用运算放大器来完成模拟电流到模拟电压的转换。所以,要把一个数字量转变为模拟电压,需要两个环节。有些D/A转换器芯片只包含前一个环节,有些包含两个环节。对于前一种,需外接运算放大器。基本参数:分辨率精度线性度建立时间(转换时间)温度系数第十一章D/A、A/D转换器及其与CPU的接口11.2.2DAC1210转换器芯片及其接口1、内部结构第十一章D/A、A/D转换器及其与CPU的接口2、工作方式(1)单缓冲方式将输入锁存器和DAC寄存器两级输入当作一级输入。硬件连接如下:第十一章D/A、A/D转换器及其与CPU的接口(2)双缓冲方式是将数据经输入锁存器和DAC寄存器两级输入到D/A转换器。对于与16位数据总线连接时,分别看作两个端口予以控制,写两次。对于与8位数据总线连接时,写三次。硬件连接如下:第十一章D/A、A/D转换器及其与CPU的接口第十一章D/A、A/D转换器及其与CPU的接口3、输出方式由于DAC1210属于电流输出型的D/A转换器,需用运算放大器将电流输出转换为电压输出。一般电压输出分为单极性和双极性两种。单极性输出方式:双极性输出方式:第十一章D/A、A/D转换器及其与CPU的接口4、应用举例例1如图所示,向DAC1210连续不断地输出数据,即可得到相应的电压信号。设端口地址为PORT,编写产生连续方波的程序。MOVDX,PORTLP:MOVAX,0OUTDX,AXCALLRLY;延时MOVAX,0FFFHOUTDX,AXCALLRLYJMPLP第十一章D/A、A/D转换器及其与CPU的接口例2同上题,编写产生连续三角波的程序。MOVDX,PORTXORAX,AXW1:OUTDX,AXINCAXNOPCMPAX,0FFFHJNZW1W2:OUTDX,AXDECAXNOPCMPAX,0JNZW2JMPW1第十一章D/A、A/D转换器及其与CPU的接口例3同上题,编写产生连续梯形波的程序。MOVDX,PORTXORAX,AXOUTDX,AXW3:CALLRLY1W1:INCAXOUTDX,AXNOPCMPAX,0FFFHJNZW1CALLRLY2W2:DECAXOUTDX,AXNOPCMPAX,0JNZW2JMPW3第十一章D/A、A/D转换器及其与CPU的接口11.2.3DAC与CPU接口时应注意的问题1、数据锁存问题2、模拟信号输出问题3、D/A位数多于数据总线位数问题(可采用两级锁存的办法)或第十一章D/A、A/D转换器及其与CPU的接口11.3A/D转换器芯片及其接口技术`11.3.1采样和量化注意:采样时必须要符合采样定理,即采样频率f0大于等于输入信号最高频率fm的2倍。量化:以一定的量化单位,把离散的模拟信号转化为离散的阶跃量的过程。通常用“四舍五入”的方法使之整量化。第十一章D/A、A/D转换器及其与CPU的接口11.3.2A/D工作原理11.3.3A/D性能参数分辨率量化误差转换时间精度漏码第十一章D/A、A/D转换器及其与CPU的接口11.3.4ADC0809一、原理框图第十一章D/A、A/D转换器及其与CPU的接口第十一章D/A、A/D转换器及其与CPU的接口二、应用举例1、查询法第十一章D/A、A/D转换器及其与CPU的接口假设仅对模拟通道IN0进行A/D转换。采用查询方式的程序如下(对0通道采样一个点):OUT50H,AL;选通IN0,启动A/D转换NOPW:INAL,41H;输入EOC标志TESTAL,01HJZW;未结束,返回等待INAL,49H;结束,把结果送入AL中第十一章D/A、A/D转换器及其与CPU的接口若对IN0~IN78个通道的模拟量各采样100个点:MOVBX,OFFSETWP;设置数据存储指针MOVCL,100;设置计数初值N:MOVDX,0050HP:OUTDX,AL;选通一个通道,启动A/DNOPW:INAL,41H;输入EOC标志TESTAL,01H;测试状态JZW;未结束,返回等待INAL,49H;结束,读数据MOV[BX],AL;存数INCBX;修改存储地址指针INCDX;修改A/D通道地址CMPDX,0058H;判断8个通道是否转换完JNZP;未完,返回启动新通道DECCL;100个点是否采样完了,JNZN;未完返回再启动IN0HLT;100个点完了,暂停第十一章D/A、A/D转换器及其与CPU的接口2、中断法第十一章D/A、A/D转换器及其与CPU的接口假设ADC0809端口地址为98H,仅对模拟通道IN3进行A/D转换。采用中断响应法的程序为CLIMOVAL,03HOUT98H,AL;选通IN3,并启动A/D转换NOPNOPSTI而在中断服务程序中用一条指令INAL,98H;读取转换结果的数字量第十一章D/A、A/D转换器及其与CPU的接口若对IN0~IN78个通道的模拟量各采样100个点,并转换成数字量采用中断方式8259A边沿触发,自动结束,非缓冲方式,单片使用中断类型码为70—77H,偶地址假设为20H,奇地址为21H的程序如下(伪指令省略):WPDB800DUP(?)MOVAL,13H;ICW1OUT20H,ALMOVAL,70H;ICW2OUT21H,ALMOVAL,03H;ICW4OUT21H,ALPUSHDSMOVAX,0MOVDS,AXMOVBX,OFFSETXYMOVSI,SEGXYMOV[01CCH],BXMOV[01CEH],SIPOPDSMOVCX,100MOVDI,0FFSETWPSTIPP:MOVBL,00HLL:MOVAL,BLOUT98H,ALHLTINCBLCMPBL,08HJNZLLDECCXJNZPPHLT中断服务程序:XY:PUSHAXSTIINAL,98HMOV[DI],ALINCDICLIPOPAXIRET第十一章D/A、A/D转换器及其与CPU的接口举例利用8255A间接与0809接口,接口图如图12.4所示。采用查询方式,编写转换通道IN5的模拟量的程序。第十一章D/A、A/D转换器及其与CPU的接口解由接口图分析可知8255A的A口、B口、C口和控制口的地址分别为90H、94H、98H、9CH,程序片段如下:;8255初始化MOVAL,10011000BOUT9CH,AL;A/D转换MOVAL,05HOUT94H,ALMOVAL,01HOUT9CH,ALMOVAL,0OUT9CH,ALNOPNOPW:INAL,98HTESTAL,00100000BJZWMOVAL,00000101BOUT9CH,ALINAL,90HMOVBL,ALMOVAL,00000100BOUT9CH,AL