本文利用80C51单片机外接数模转换器和I/V转换电路,由用户通过按键选择输出实验中经常使用到的几种基本波形:方波、锯齿波、正弦波。方波由80C51单片机内部自带的计数器/定时器产生,并由用户通过小键盘选择波形周期。与微处理器兼容的14位数模转换器MAX7534将数字量转换为模拟量电流信号,通过I/V转换电路得到双极性的锯齿波和正弦波信号,波形保证了他的精度和平滑、稳定。
1硬件电路设计
80C51单片机时钟电路采用内部方式,外接陶瓷谐振器(频率为12 MHz),微调电容值为30 pF。系统复位采用按键式外部复位方式,复位信号至少保持8μs以上。通过按键由用户选择要输出的波形,按键选择占用P1.1~P1.7口,采用独立式键盘结构。利用80C51单片机内部自带的计数器/定时器在P1.0口上产生连续方波,由用户通过按键选择输出方波周期。系统结构框图如图1所示。
1.1 D/A转换电路
本文采用美国MAXIM公司的微处理器兼容高性能单片14位数模转换器MAX7534。MAX7534内部功能框如图2所示。MAX7534的高质量、激光校准、薄膜电阻和带温度补偿的NMOS开关等确保了器件在整个工作温度范围内具有良好的线性和增益稳定性。MAX7534接收8位总线的2个字节,内部包括1个LS输入寄存器和1个MS输入寄存器,分时接收低8位和高6位的14位待转换数字量、1个14位DAC寄存器、1个14位DAC数模转换器和逻辑控制电路。数模转换器(DAC)电路包括由激光校准的11个薄膜R2R电阻阵、1个3位分段电阻阵和NMOS电流开关。该D/A转换器具有保护CMOS寄存器的功能,无需使用外加肖特基二极管保护。
MAX7534与80C51的具体连接见图3。工作时,通过A1、A0引脚确定MAX的工作过程,其对应关系见下表,当出现表中的第3种情况时,14位待转换的数字量通过MAX7534内部总线输入到14位DAC进行转换。转换结束,模拟量以电流形式输出。
1.2 I/V转换电路
由MAX7534转换得到的模拟量电流信号要转换成电压信号,需外加I/V转换电路。I/V转换电路与MAX7534的具体连接见图3。
图3是MAX7534的双极性或四象限乘法工作电路图电路提供的是偏移二进制码,为解决高温时的低泄漏,对VSS进行负偏置;C1为补偿电容,用来消除由DAC的输出电容和内部反馈电阻构成的极点,其值根据采用运放的不同而不同;在接近DAC的VDD和GND管脚处放置1个1μF的旁路电容,再与1个0.01μF的陶瓷电容相并联,抑制高频噪声。按图中给定的器件参数,输出电压的表达式为:
VOUT=[(D-8192)/8192]×VIN
VIN=+5V,当D=0时,VOUT=-5V;当D=8192时,VOUT=0V;当D=16384时,VOUT=4.96V。转换关系见表2。
2软件设计
在硬件设计的基础上进行软件编程。由用户通过按键选择需要输出何种波形。
2.1方波输出
本文通过80C51单片机内部自带的定时器/计数器实现方波输出。采用定时器/计数器T1,工作方式1,计数器位数是16位;门控位GATE置0,定时器的运行只受控制寄存器TCON中运行控制位(TR)的控制;计数器初值的设定由以下公式计算得到:
N=2n-TCfosc/12
n为计数器位数;TC为定时时间;fosc为振荡频率。通过小键盘,由用户键入需要输出方波的周期(周期只能为正数,如1 ms,2 ms,10 ms等,最大为65 ms),在P0口将得到所需的方波波形。
2.2锯齿波、正弦波输出
锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当达到最大值后又回到最小值,如此循环,当台阶间隔很小时,波形基本上近似于直线。适当选择循环的时间,可以得到不同周期的锯齿波。由图3所示连接可知:选通MAX7534的LS寄存器地址为5FFFH;选通MS寄存器地址为:3FFFH;选通DAC寄存器地址为:7FFFH;选通DAC转换地址为:1FFFH。锯齿波产生程序流程图如图4所示。
正弦波的产生采用查表法,单片机的I/O输出均为+5 V的TTL电平,因此产生的正弦波幅值为+5 V。将一个周期内的正弦波形等分为N份,那么第1点的角度为0°,对应的正弦值为5sin0°;第2点的角度为360°/N,对应的正弦值为5sin (360°/N )……,如此计算下去,将这些模拟量正弦值都转换为双极性方式下的数字量,得到一张按照点号顺序排列的数字量正弦值表格。程序流程图与锯齿波产生子程序流程大致一致,只是每次送到MAX7534转换的14位数字量是根据得到的表格所查得的。
3结语
本文基于80C51单片机的多种波形发生器产生的3种波形完全能够满足实验中的使用要求。采用的高性能数模转换芯片保证了输出波形的精度和稳定性。通过软件实现可以输出更多的基本波形如:梯形波、三角波、反向锯齿波等,具有实际的使用价值。
参考文献
[1]周航慈,等.单片机程序设计基础[M].北京:航空航天大学出版社,1999
[2]李朝青.单片机原理及接口技术[M].北京:航空航天大学出版社,1994