本科实验报告实验名称:A/D和D/A转换课程名称:计算机原理与应用实验实验时间:2014年6月9任课教师:张笈实验地点:信息系统与安全对抗实验中心实验教师:高平实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:信息与电子学院同组搭档:专业:电子科学与技术成绩:一、实验目的1.了解A/D转换的基本原理,掌握ADC0809的使用方法。2.了解D/A转换的基本原理,掌握DAC0832芯片的使用方法。二、实验内容及步骤(一)A/D转换部分1、接线:CS/0809接Y3/IO地址IN0/0809接0~5V/直流信号EOC接总线的IRQ2、实验电路原理图如图1。通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。启动IN0开始转换:Out298H读取转换结果:In298H图1模数转换电路(二)D/A转换部分1、接线:CS/0832接Y2/IO地址用万用表测量WR2和XFER在实验系统上如何联系的?2、实验电路原理如图2,DAC0832采用单缓冲方式,具有单双极性输出端(图中的Ua、Ub),利用debug输出命令(Out290数据)输出数据给DAC0832,用万用表测量单极性输出端Ua及双极性输出端Ub的电压,验证数字与电压之间的线性关系。3、编程产生以下波形(从Ub输出,用示波器观察)(1)锯齿波(2)正弦波图2三、实验原理(一)A/D转换部分1.A/D转换芯片是由集成在单一芯片上的模拟多路开关、采样/保持器、A/D转换电路及数字输出接口构成。如图7.73所示。(1)模拟多路开关:用于切换多路模拟输入信号,根据地址信号选择某一个通道,使芯片能够分时转换多路模拟输入信号。(2)采样/保持器:缩短采样时间,减小误差。(3)精密基准电压源:产生芯片所需要的基准电压。(4)A/D转换电路:完成模拟量到数字量的转换。(5)数字接口和控制逻辑:将微机总线与芯片相连,接收控制命令、地址信息,输出转换结果。2、逐次逼近式A/D转换原理逐次逼近式A/D转换器与计数式A/D转换类似,只是数字量由“逐次逼近寄存器SAR”产生。SAR使用“对分搜索法”产生数字。转换过程:(1)首先发出“启动信号”信号S。当S由高变低时,“逐次逼近寄存器SAR”清0,DAC输出Vo=0,“比较器”输出1。当S变为高电平时,“控制电路”使SAR开始工作。(2)SAR首先产生8位数字量的一半,即10000000B,试探模拟量的Vi大小,若VoVi,“控制电路”清除最高位,若VoVi,保留最高位。(3)在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位)试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位)试探模拟量Vi的大小。重复这一过程,直到最低位bit0被确定。(4)在最低位bit0确定后,转换结束,“控制电路”发出“转换结束”信号EOC。内部结构及引脚信号ADC0809是28引脚双列直插式芯片,内部结构和引脚信号如图所示。ADC0809内部由8位模拟通道选择开关、地址锁存与译码单元、定时与控制单元、逐次逼近寄存器、树状开关、电阻网络和输出锁存缓冲器组成。IN7~IN0(inputchannel):8路模拟电压输入引脚。D7~D0(digitaloutput):8位数字量输出引脚。ADDC,ADDB,ADDA(address):地址输入引脚,地址与输入通道的关系见表7.14。START(startcontrolsignal):启动A/D转换的控制信号,输入,高电平有效。ALE(addresslatchenable):地址锁存允许控制信号,输入,高电平有效。ALE有效时,ADDC,ADDB,ADDA才能控制选择8路模拟输入中的某一通道。START和ALE两个引脚可以连接在一起,当通过软件输入一个正脉冲时,便立即启动A/D转换。EOC(endofconversion):转换结束状态信号,输出,高电平有效。OE(outputenable):数据输出允许信号,高电平有效。只有OE信号有效时,才能打开输出三态缓冲器,用于指示转换已经完成,在查询方式下,OE信号可以作为A/D转换结束的状态信号。CLOCK(clock):时钟信号,要求频率在10kHz~1MHz范围内,典型值为640kHz,可由微处理器时钟分频后得到。VCC:+5V电源。GND:接地端。VREF(+)(noninvertingreferencevoltageinput):参考电压输入引脚,通常与VCC相连。VREF(-)(invertingreferencevoltageinput):参考电压接地端,通常与GND相连。3.转换结束信号EOC的处理当A/D转换结束后,ADC0809将输出一个转换结束信号EOC,通知CPU读取转换结果。主机查询判断A/D转换是否结束的方式有四种。CPU对转换结束信号EOC的处理方式不同,对应的硬件电路和程序设计方法也就不同。查询方式:把转换结束信号EOC作为状态信号经三态缓冲器送到CPU的数据总线的某一位上。CPU启动ADC0809开始转换后,就不断地查询这个状态位,当EOC有效时,便读取转换结果。这种方式程序设计比较简单,实时性也较强,是比较常用的一种方法。中断方式:把转换结束信号EOC作为中断请求信号接到CPU的中断请求线上。ADC0809转换结束,向CPU申请中断。CPU响应中断请求后,在中断服务程序中读取转换结果。这种方式ADC0809与CPU并行工作,适用于实时性较强和参数较多的数据采集系统。延时方式:在这种方式下,不使用转换结束信号EOC。CPU启动A/D转换后,延时一段时间(略大于A/D转换时间),此时转换已经结束,可以读取转换结果。这种方式,通常采用软件延时的方法(也可以采用硬件延时电路),无须硬件连线,但要占用主机大量时间,多用于主机处理任务较少的系统中。DMA方式:把转换结束信号EOC作为DMA请求信号。A/D转换结束,即可启动DMA传送,通过DMA控制器直接将数据送入内存缓冲区。这种方式特别适合要求高速采集大量数据的系统。(二)D/A转换部分1.DAC0832是直插式单片8位D/A转换器。它可以直接和8088CPU相接口。它采用二次缓冲方式(有两个写信号/WR1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。而更重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。它的主要技术参数如下:分辨率为8位,电流建立时间为1us,单一电源5V-15V直流供电,可双缓冲、单缓冲或直接数据输入。DAC0832内部结构见下图。DAC0832内部功能LE=“1”,Q输出跟随D输入,LE=“0”,D端输入数据被锁存2.DAC0832引脚功能DI0~DI7:数据输入线,TTL电平,有效时间应大于90ns(否则锁存的数据会出错);ILE:数据锁存允许控制信号输入线,高电平有效;CS:选片信号输入线,低电平有效;WR1:输入锁存器写选通输入线,负脉冲有效(脉宽应大于500ns)。当/CS为“0”、ILE为“1”、/WR1为“0”时,DI0~DI7状态被锁存到输入锁存器。XFER:数据传输控制信号输入线,低电平有效;WR2:DAC寄存器写选通输入线,负脉冲(宽于500ns)有效.当/XFER为“0”且/WR2有效时,输入锁存器的状态被传送到DAC寄存器中;Iout1:电流输出线,当输入为全1时Iout1最大;Iout2:电流输出线,其值和Iout1值之和为一常数;Rfb:反馈信号输入线,改变Rfb端外接电容器值可调整转换满量程精度;Vcc:电源电压线,Vcc范围为+5V~+15V;VREF:基准电压输入线,VREF范围为-10V~+10V;AGND:模拟地;DGND:数字地。3.DAC0832工作方式根据对DAC0832的输入锁存器和DAC寄存器的不同的控制方法,DAC0832有如下三种工作方式:(1)单缓冲方式此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。方法是控制输入锁存器和DAC寄存器同时接数,或者只用输入锁存器而把DAC寄存器接成直通方式。(2)双缓冲方式此方式适用于多个DAC0832同时输出的情形方法是先分别使这些DAC0832的输入锁存器接数,再控制这些DAC0832同时传递数据到DAC寄存器以实现多个D/A转换同步输出。(3)直通方式此方式宜于连续反馈控制线路中。方法是使所有控制信号(/CS、/WR1、/WR2、ILE、XFER)均有效。4.电流输出转换成电压输出DAC0832的输出是电流,有两个电流输出端(lout1和Iout2),它们的和为一常数。使用运算放大器,可以将DAC0832的电流输出线性地转换成电压输出。根据运放和DAC0832的连接方法,运放的电压输出可以分为单极型和双极型两种。图5-4是一种单极型电压输出电路。DAC0832的Iout2被接地,Iout1接运放LM324的反相输入端,LM324的正相输入端接地。运放的输出电压Vout之值等于Iout1与Rfb之积,Vout的极性与DAC0832的基准电压VREF极性相反。Vout=-〔VREF×(输入数字量的十进制数)〕/256,如果在单极型输出的线路中再加一个放大器,便构成双极型输出线路。四、编程方法(一)A/D转换部分1.ADC0809的IN0口地址为298H。2.IN0单极性输入电压与转换后数字的关系为:N=U_i/(U_ref/256)其中Ui为输入电压,UREF为参考电压,这里的参考电压为+5V电源。3.一次A/D转换的程序可以为MOVDX,PortOUTDX,AL;启动转换;延时INAL,DX;读取转换结果放在AL中流程图为:NY(二)D/A转换部分1.8位D/A转换器DAC0832的口地址为290H,输入数据与输出电压的关系为:𝑈𝑎=𝑈𝑟𝑒𝑓256×𝑁𝑈𝑏=2𝑈𝑟𝑒𝑓256×𝑁−5𝑈𝑟𝑒𝑓表示参考电压,N表示数据),这里的参考电压为+5V电源。2.产生锯齿波只须将输出到DAC0832的数据由0循环递增。产生正弦波可根据正弦函数建一个下弦数字量表,取值范围为一个周期,表中数据个数在16个以上。3.参考流程图:开始初始化送模拟通道号启动A/D读ECO状态读入结果A/D转换完?结束锯齿波正弦波五、实验结果锯齿波结果图正弦波结果图当采样频率较低时,所得到的波形将不是圆滑的曲线,而有明显的阶梯。所以在不影响A/D和D/A转换的前提下,采样频率越高,所获得波形越好。六、实验心得通过这次实验,让我对ADC0809和DAC0832芯片的工作原理以及工作方式有了更深的认识,让我又有了近一步的提高。1.数模模数转换电路的原理有所不同,模数转换电路是由逐渐逼近的方式完成转换的,数模转换是由分压电路实现的。2.提高了对汇编语言的编程的应用能力,有了更熟练的掌握。实验中三个汇编程序的编写加深了我对语句描述的认识。3.进一步加深了我对中断应用的理解。七、实验代码A/D转换:DATASEGMENTINT0BDW2DUP(?)IMRDB?P_ADDW298HTABDB'0123456789ABCDEF'DATAENDSSSEGMENTSTACK'STACK'DB128DUP(?)SENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SMAINPROCPARMOVAX,DATAMOVDS,AXCLI;修改中断向量表PUSHESPUSHBXMOVAH,35H;保护原中断向量MOVAL,0BHINT21HMOVINT0B,ESMOVINT0B+2,BXPOPBXPOPESPUSHDSPUSHDXMOVDX,OFFSETDISP;设置新的中断向量PUSHBXMOVBX,SEGDISPMOVDS,BXPOPBXMOVAX,250BHINT21HPOPDXPOPD