函数信号发生器设计函数信号发生器设计函数信号发生器设计DA转换硬件电路设计;DAC0832工作过程及编程方法。本次课重点函数信号发生器设计任务:利用AT89S52单片机和模数转换芯片DAC0832设计波形发生器电路系统,编写C程序实现锯齿波模拟量的输出。函数信号发生器设计D/A转换器接口技术D/A转换的原理可以总结为“按权展开,然后相加”。即D/A转换器要能把输入的数字量的每一位都按其权值分别转换成模拟量,然后通过运算放大器求和相加。因此,D/A转换器内部必须要有一个解码网络,以实现按权值分别进行D/A转换。解码网络通常有两种形式:二进制加权电阻网络和T型电阻网络。现代D/A转换器一般都采用T型电阻网络进行解码。函数信号发生器设计加权电阻网络D/A转换器运算放大器Vref位切换开关b0b1b2b3VoutRfR2R4R8R二进制数据输入+-A模拟量输出Vout=-Vref·Rf(b3/R+b2/2R+b1/4R+b0/8R)函数信号发生器设计T型电阻网络D/A转换器运算放大器VoutA模拟量输出RfRRR2R+-二进制数据输入b3b2b1b0RR2R2R2RVrefVout=-Vref·Rf/24·R(b3·23+b2·22+b1·21+b0·20)函数信号发生器设计D/A转换器的主要技术指标1.分辨率指D/A转换器的最小输出电压与最大输出电压的比值。8位和10位D/A转换器的分辨率分别为:8位:10位:为简单起见,通常我们就使用输入二进制数的有效位数表示分辨率。2.转换精度D/A转换器的转换精度是指输出模拟电压的实际值与理想值之差,即最大静态转换误差。D/A的转换精度与DAC的二进制位数有关,二进制位数越多精度就越高。128-1=0.0041210-1=0.001函数信号发生器设计3.建立时间建立时间是描述D/A转换速度快慢的一个参数,指从输入数字量变化到输出达到终值误差±(1/2)LSB(最低有效位)所需的时间。通常以建立时间来表示转换速度.转换器的输出形式为电流时,建立时间较短;输出形式为电压时,由于建立时间还要加上运算放大器的延迟时间,因此建立时间要长一点。4.接口形式D/A转换器与单片机接口方便与否,主要决定于转换器本身是否带数据锁存器。对于不带锁存器的D/A转换器,为了保存来自单片机的转换数据,接口时要另加锁存器;而带锁存器的D/A转换器,可以把它看作是一个输出口,因此可直接在数据总线上,而不需另加锁存器。函数信号发生器设计DAC0832与单片机接口(1)DAC0832特性与结构DAC0832是一个8位D/A转换器。单电源供电,从+5V~+15V均可正常工作。基准电压的范围为±10V;电流建立时间为1μs;CMOS工艺,低功耗20mW。DAC0832内部结构框图如下图所示。它由两个输入数据寄存器、一个T型网络D/A转换器和控制电路组成。函数信号发生器设计D7D6D5D4D3D2D1D0Q7Q6Q5Q4Q3Q2Q1Q0D7D6D5D4D3D2D1D0Q7Q6Q5Q4Q3Q2Q1Q0输入寄存器寄存器DACD/A转换器DI7DI6DI5DI4DI3DI2DI1DI0ILECSWR1WR2XFERLE1LE2RfbIout1Iout2VREF≥1≥1&DAC0832的内部结构图AGND函数信号发生器设计①8位输入寄存器由8个D触发器组成,用作输入数据的缓冲寄存器。为其控制端,当为低电平时,8位输入寄存器锁存数据,否则直通。LE1②8位DAC寄存器也由8个D触发器组成,为其控制端,为低电平时,8位DAC寄存器锁存来自8位输入寄存器的内容。反之,为高电平时,为直通状态,这时DAC寄存器输出直接和8位T型电阻网络D/A转换器相连。LE1LE2LE2③8位D/A转换器为电流输出型(内部无运放),若需获得电压输出,需利用IOUT1、IOUT2及Rfb引脚外接运放器将电流输出转换为电压输出。函数信号发生器设计(2)引脚功能①DI0~DI7:8位转换数字量输入端。②ILE:输入锁存允许端,高电平有效时,数据输入DAC0832的输入寄存器并锁存。③/CS:片选信号,低电平有效。④/WR1:输入寄存器写信号,低电平有效。⑤/WR2:DAC寄存器写信号,低电平有效。⑥/XFER:数据传输控制信号,输入低电平有效。函数信号发生器设计DAC083212345678910CSVCCILEWR2XFERDI4DI5DI6DI7Iout2Iout1WR1AGNDDI3DI2DI1DI0VrefRfbDGND11121314151617181920DAC0832引脚图函数信号发生器设计⑦IOUT1:电流输出引脚1。与外接运放器反相输入端相连当输入数据为全“1”时,输出电流最大,当输入数据为全“0”时,输出电流最小。⑧IOUT2:电流输出引脚2。与外接运放器同相输入端相连。DAC转换特性之一是IOUT1+IOUT2=常数。函数信号发生器设计⑨Rfb:反馈电阻端。内接15KΩ电阻已固化在芯片中,可作为外部运放器的反馈电阻用。⑩VREF:基准电压输入端。外接高精度电压源,其电压可正可负,可在-10V~+10V范围内调节,为芯片内电阻网络提供高精度基准电压。其它引脚:DGND为数字地;AGND为模拟地;Vcc为芯片主电源,电压范围为+5V~+15V。函数信号发生器设计(3)DAC0832与AT89C51的接口DAC0832与AT89C51可以有三种连接方式:直通方式、式、单缓冲方式和双缓冲方式。①直通方式:若和均为高电平,则DI7~DI0输入的数据便可直通地到达8位DAC寄存器进行D/A转换。因此,只要将ILE接+5V,/CS、/XFER、/WR1和/WR2接地,DAC0832便工作于直通方式。直通方式常用于不需要单片机控制的系统。LE1LE2②单缓冲方式:单缓冲方式使DAC0832的两个寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者两个输入寄存器同时受控的方式。函数信号发生器设计③双缓冲方式:所谓双缓冲方式,就是将DAC0832内部的两个寄存器都连接成独立受控锁存方式。单片机需发送两次写信号才可完成一次完整的D/A转换。双缓冲工作方式一般用于需要同时输出几路模拟信号的场合。例如,用单片机控制示波器输出一定的波形信号,为使信号波形光滑,这就要求输入到示波器的X、Y信号必须同步输出,否则,信号波形将呈台阶状。如下图所示。函数信号发生器设计X、Y同步输出先X后Y先Y后X双缓冲工作方式的几种输出波形图函数信号发生器设计ALEDAC0832单缓冲方式下的连接电路P0P7~AT89C51WRG74LS373D0D7Q0Q7OEA7~A0A0888~~+5VCSXFERWR1WR2VCCILERFBIOUT1IOUT2AGNDDAC0832D7D0~DGNDVREF-A+LM324V0+5VC1C2MC14032.5V函数信号发生器设计程序设计根据硬件电路,编写C语言程序输出一锯齿波。tVo4V0V函数信号发生器设计4V0VVot实际输出的波形图tVo4V0V不是函数信号发生器设计ALE两路模拟信号同步输出系统P0P7~AT89C51WRG74LS373D0D7Q0Q7OEA7~A0A0888~~CSXFERWR1WR2RFBIOUT2DAC0832(1)D7D0-A+WR2++--AA~8WR2CSXFERWR1A1A2DAC0832(2)RFBIOUT1IOUT1IOUT2RFBXY示波器~D0D7扩展:函数信号发生器设计为了实现两个寄存器分别独立可控,就需要分配给每个寄存器1个单独的地址,以实现独立地写操作。在上图中,DAC0832的输入寄存器和DAC寄存器的锁存信号是分开控制的,第1片DAC0832的输入寄存器的地址是FFFEH,第2片的地址为FFFDH。因为两片的是并接到地址线A2上的,所以两片的DAC寄存器地址均为FFFBH。两片DAC0832的输出经电流电压转换后,分别接到示波器的X、Y偏转系统的输入端。函数信号发生器设计0V-5Va)锯齿波形0V-5Vb)三角波形0V-5Vc)方波波形锯齿波、三角波、方波波形图上机操作:实现同时输出多路信号。函数信号发生器设计END