5.1项目说明-1-项目5基于单片机的低频信号发生器5.1项目说明信号发生器作为一种常见的应用电子仪器设备,传统的一般可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。而在科学研究和工业过程控制中常常要用到低频信号源。由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC要很大。大电阻,大电容在制作上有困难,参数的精度亦难以保证。体积大,漏电,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。利用单片机采用程序设计方法来产生低频信号,其频率底线很低。具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求。本项目主要介绍利用AT89C51单片机和DAC0832数模转换器组成数字式低频信号发生器的具体实现。也就是在51单片机系统中实现D/A转换的典型实例。硬件上,51单片机和D/A器件共同完成主要的功能;软件上,单片机控制D/A转换的接口程序是项目的核心程序。项目要求:(1)用键盘控制输出正弦波、三角波、锯齿波、方波;(2)用键盘控制输出幅度和频率的变化,并将幅值和频率显示,幅度范围1V~5V,频率范围0~10KHz。5.2设计思路分析单片机应用系统中,微处理器处理后的结果往往必须转换成实际的模拟量,以便实现对被控对象的控制,比如需要输出一个模拟电压来控制放大器的增益和LCD的亮度等,这种将数字量转换成模拟量的过程称为D/A转换(数模转换)。在D/A转换系统设计中,设计者的主要任务是根据用户对D/A转换通道的技术要基于单片机的低频信号发生器求,合理地选择通道的结构并按一定的技术准则和经济原因,恰当地选择所需的各种集成电路。在硬件设计的同时还必须考虑通道驱动程序的设计,较好的驱动程序可以使同样规模的硬件设备发挥更高的效率。要实现D/A转换,首先必须弄清楚其工作原理,然后选择合适的D/A转换芯片。5.2.1模拟量输出通道的结构模拟量输出通道一般是由接口电路、数/模转换器(简称D/A或DAC)和电压/电流变换器等;对于多路模拟量输出通道的结构,主要取决于输出保持器的结构方式。输出保持器的作用主要是在新的控制信号到来前,使本次控制信号维持不变。保持器一般有数字保持和模拟保持两种方案,这就决定了模拟量输出通道的两种基本结构形式:多通道独立D/A结构和多通道共享D/A结构。5.2.1.1多通道独立D/A结构图5.1是多通道独立D/A形式的结构图。在这种形式中,CPU和通道之间通过独立的接口缓冲器传送信息,因此这是数字保持的方案。它的优点使转换速度快、工作可靠,每条输出通路相互独立,不会由于某一路D/A故障而影响其他通路的工作。但使用了较多的D/A转换器,因而成本较高,随着大规模集成电路技术发展,成本将不成问题。图5.1多通道独立D/A结构I/O接口:接受来自CPU的数据、地址及控制信号,并向CPU送应答信号。D/A转换器:其作用是数字量转换成相应的模拟量。隔离级:将计算机与被控对象隔离,防止来自现场的干扰。输出级:由运算放大器,V/I转换器等组成,以提供不同形式的输出信号。执行器:其作用是接受微机通过AO发来的控制信号,并转换成执行机构的动作,使生产过程按照预先规定的要求正常进行。5.2设计思路分析-3-5.2.1.2多通道共享D/A结构这种形式的原理框图如图5.2所示。因为共用一个数/模转换器,故它必须在CPU控制下分时工作。即依次把D/A转换器转换成的模拟电压(或电流),通过多路模拟开关传送给输出保持器,这种结构节省了D/A转换器,但电路复杂,占用主机时间,并且因为需要分时工作,只适用于通道数量多且速率要求不高的场合。由于需要多路转换器,且要求输出采样保持器的保持时间与采样时间之比很大,因而其可靠性较差。图5.2多通道共享D/A结构5.2.2D/A转换器数/模(D/A)转换器是一种将数字量转换成模拟量的器件,简称DAC(DigitaltoanalogConverter),它是模拟量输出通道的核心器件。D/A转换器可以分为串行和并行两大类,其中串行D/A转换器是直接将串行二进制码以同步方式转换,转换一个n位输入数码需要n个工作节拍周期,转换速度比并行D/A转换器低的多,连接电路简单。由于串行D/A转换器仅在少数特殊场合应用,在此不作介绍,因此仅讨论并行D/A转换器的情况。此外,进行数/模转换时,还应依照数/模转换器的码制要求和输出信号的极性要求,在数/模转换前用处理器进行代码的转换。5.2.2.1D/A转换原理如果把模/数转换看作编码过程,那么数/模转换相当于是一个译码过程。为完成数/模转换功能,一般需要如下几部分:基准电压、二进制位切换开关、产生二进制位权电流(权电压)的精密电阻网络以及求和放大器等,其结构如图5.3所示。基于单片机的低频信号发生器图5.3数/模转换结构由图中可以看出,D/A转换器的输入有两种:数字输入信号(二进制或BCD码)和基准电压Vref。D/A转换器的输出是模拟信号,可以是电流也可以是电压,多数是电流。大多数D/A转换器是由电阻阵列和多个电流、电压开关构成的。按数字输入值切换开关,产生相应输出的电流和电压。一般而言,电流开关的切换误差小,因此D/A转换器多采用电流开关型电路。电流开关型电路如果直接输出生成的电流,则为电流输出型D/A转换器,电流输出型D/A转换器很少直接利用电流输出,往往通过外接转换电路进行电流至电压转换,常用的转换方法是外接由运算放大器组成的电流至电压转换电路;如图所示,输入数据通过位切换开关电路控制电阻网络,高精度的基准电压通过切换后的网络,输出与输入数据相对应的电流,再经过运算放大器求和并转换为相应的输出电压。如果采用内置运算放大器以低阻抗输出电压,则为电压输出型D/A转换器。也有的电压D/A转换器是直接从电阻阵列输出电压的,这种器件仅用于高阻抗负载。由于它没有输出放大器部分的延时,所以常用作高速D/A转换器。下面介绍两种不同的数/模转换原理。①.权电阻D/A转换原理权电阻D/A转换器的原理如图5.4所示。图中基准电压是VREF,K0~Kn-1为切换模拟开关,它们分别受二进制位标志0a~1na的控制,02R~12nR组成二进制权电阻网络。当二进制数的某位为“1”时,其标志ia也为“1”,开关ik接基准电压VREF,相应支路电流为1/(2)niiREFIVR;当二进制数的某位为“0”时,ia也为“0”,开关ik接地,此时对应支路没有电流。因此各支路电流为:'112222iiREFREFiiiininVVIaaIaRR式中'1/(2)nREFIVR,为最小支路电流。设输入数字量D用n位二进制数表示为1210nnaaaa,则D可以表示为:5.2设计思路分析-5-112101210022222nnninniiDaaaaa所以运算放大器输出的电压为:10nOUTFBOUTFBiiVRIRI1''02niFBiFBiRIaRID由此可以看出,输出的模拟电压OUTV正比于输入的数字量D,从而实现了数字量到模拟量的转换。权电阻D/A转换的二进制位数越多,权电阻网络中各电阻的阻值差别也越大,这给电阻的精度要求带来很大困难。VREFan-1an-2...a0Kn-1Kn-2K0VOUT+-RFBIOUTIn-1In-2I0...02R12R12nR图5.4权电阻D/A转换器的原理图②.T形电阻D/A转换原理T形电阻D/A转换的原理可以图5.5所示的4位电阻网络D/A转换器来说明。图中由R-2R电阻组成的电路解码网络呈倒T形,运算放大器A组成求和电路。模拟开关BSi由输入数码Di控制,当Di=1时,BSi接运算放大器反相端,电流Ii流入求和电路;当Di=0时,BSi则将电阻2R接地。基于单片机的低频信号发生器图5.5T形电阻网络D/A转换器的原理图根据运算放大器线性运用时虚地的概念可知,无论模拟开关BSi处于何种位置,与BSi相连的2R电阻均将连“地”(地或虚地)。即切换时开关端点的电压几乎不变化,电位都近似于地。这样流经2R电阻的电流与开关位置无关,为确定值。分析R-2R电阻网络可以发现,从每个节点向右看的二端网络等效电阻均为R,流入每个2R电阻的电流从高位到低位按2的整数倍递减。即:RVRVIREFREF433222RVIIREF4232222RVIIREF4121222RVIIREF4010222由于开关BS3~BS0的状态是受要转换的二进制数D3、D2、D1、D0控制的,则得到通式:RVDDDDIDIDIDIDIREFOUT400112233001122332)2222(考虑到放大器反相端为虚地,故:TOURfbII,选取Rfb=R,可以得到运算放大器的输出模拟电压为:4001122332)2222(REFOUTfbRfbOUTVDDDDRIRIV即输出的模拟电压OUTV正比于数字量D。输出电压除了与输入的二进制数有关,还与运算放大器的反馈电阻Rfb以及基准电压VREF有关。5.2设计思路分析-7-T形电阻D/A转换器的优点是转换速度比较快,在动态过程中由开关切换引起的尖峰干扰脉冲很小,电阻网络的精度也易于得到保证,因此,D/A转换器一般都使用T形电阻D/A转换原理的电路。5.2.2.2D/A转换器的性能指标在选用D/A转换器时,应考虑的主要技术指标是分辨率、精度、输出电平和稳定时间。分辨率:是指D/A转换器能分辨的最小输出模拟增量,即当输入数字发生单位数码变化时所对应输出模拟量的变化量,它取决于能转换的二进制位数,数字量位数越多,分辨率也就越高。分辨率与二进制位数n呈下列关系:分辨率=满刻度值/(2n-1)。例如:对于满刻度值5.12V,单极性输出,8位D/A转换器的分辨率为20mV,l0位D/A转换器的分辨率为5mV,12位D/A转换器的分辨率为1.25mV。转换精度:是指转换后所得的实际值和理论值的接近程度。它和分辨率是两个不同的概念。例如,满量程时的理论输出值为10V,实际输出值是在9.99V~10.01V之间,其转换精度为±10mV。对于分辨率很高的D/A转换器并不一定具有很高的精度。输出电平:D/A转换器输出电平的类别有电压输出型和电流输出型两种,不同型号的D/A转换器件的输出电平相差较大。电压输出型的输出,低的为20mA,高的可达3A。偏移量误差:是指输入数字量为零时,输出模拟量对于零的偏移值。此误差可通过D/A转换器的外接VREF和电位器加以调整,通常称为“零偏校正”稳定时间:是描述D/A转换速度快慢的一个参数,在输入代码作满度值的变化时(例如从00H变到FFH),其模拟输出达到稳定(一般达到离终值±½LSB值相当的模拟量范围内)所需的时间。稳定时间越大,转换速度越低。对于输出是电流的D/A转换器来说,稳定时间是很快的,约几微秒。输出是电压的D/A转换器,其稳定时间主要取决于运算放大器的响应时间。5.2.2.3D/A转换芯片的选择原则选择D/A转换芯片时,主要考虑芯片的性能、结构及应用特性。在性能上必须满足D/A转换的技术要求,在结构和应用特性上满足接口方便、外围电路简单、价格低廉等要求。D/A转换器性能指标包括静态指标(各项精度指标)、动态指标(建立时间、尖峰等)、环境指标(使用的环境温度范围、各种温度系数)。这些指标通过查阅手册可以得到。D/A转换器的结构特性与应用特性主要表现在芯片内部结构的配置状态,它对接口电路设计影响很大。主要的特性有:基于单片机的低频信号发生器输入特性:D/A转换器一般只能接收二进制数码,当输入数字代码为偏置码或补码等双极性数码时,应外接适当偏置电路才能实现。D/A转换器一般采用并行码和串行码两种数据形式,采用的逻辑电平多为TT