高毅
(贵阳学院 贵州 贵阳 550005)
传统的低频信号源或发生装置,因其大部分采用模拟电路设计的原因,一般具有价格昂贵、输出性能欠佳且不便于调节等问题,工程应用价值较低。为避免传统低频信号源或发生装置的上述技术缺点,降低技术开发成本和提高技术开发效率,文中利用AT89S51可以在线编写程序的特点,结合了DAC接口技术,设计了波形、频率、相位均调节方便并可产生方波、三角波、锯齿波、正弦波四种波形的技术方案。这种新的低频信号源设计方案,可以使得波形信号的产生由单片机查表软件产生,波形的周期依靠程序设置来改变,具有线路简单、结构紧凑、价格低廉、性能优越等优点。
文中设计目标是完成4种波形信号输出,即正弦波、三角波、方波和锯齿波,并使其在低频范围内具有稳定稳定性好、性能可靠、体积较小、占空比调节方便等技术优势。文中采用键盘控制的办法,来实现并输出方波、锯齿波、三角波和正弦波等信号。另外,对频率和幅值的变换情况,用键盘也能够较好的进行控制和调整。同时,本文还将其产生的信号参数用LCD进行仿真显示和调试。
在设计中,首先在函数中对某个数组附值,利用DAC0832来实现输出波形信号输出转换,再经过功放滤波模块处理,这样的话,就会在示波器上观察到不同函数值的波形信号。但是,因为函数对数组中的数附值之后并不是一次就输出显示出来,这就需要编写AT89S51的控制字,使其开中断,然后再用计数器计数。当计数器溢出时便提出中断请求,这时调用中断函数,将数组中一个值送到DAC0832中[1]。这样连续不断的送值,最后在示波器上显示的就是一个连续的波形。最后,为了产生不同的波形,利用独立按键开关实现波形的不同频率,来控制波形的频率,以及利用滑动变阻器来为DAC0832提供不同的参考电压来实现不同幅值的波形。
当按下“波形选择”键时,发生外部中断,并在LCD显示所对应的波形序号,通过AT89S51单片机执行某一段中断波形发生程序,向DAC0832转换器的输入端按一定的规律发送数据,从而在DA0832转换电路的输出端得到相应的电压波形。再经过放大器的放大作用和二阶低通滤波电路滤波作用,滤除高次谐波,最后在模拟示波器上显示出更加光滑平整的目标波形。在上述的基础上,通过选择按下频率增加键和频率减少键可以改变波形的频率,再利用滑动变阻的分压作用,改变DAC0832的参考电压Vref以致改变电流i,即改变参考电压,使输出电压幅度随i发生改变,从而实现幅度的调节[2]。
基于单片机函数信号发生器原理接线图如图1所示。
文中利用定时器TMR0定时中断与预设波形数据表配合,来实现波形生成,将定时器设定成定时方式1,在每次中断发生时,对波形数据进行采集,或者对定时时间进行调整。从而实现当前时刻的波形数据的输出,以及频率的调整。
生成方波原理:周期性翻转输出引脚(端口)的电平,只取两种电平数据极限值之一:0XFF(对应输出高电平),0X00(对应输出低电平)。每次TMR0发生中断时,立即翻转端口电平:0XFF-0X00或0X00-0XFF,定时时间也不同,输出波形频率也不同,所以要改变输出频率,就要通过定时初值来控制中断时间完成。
相关的2个变量:judge.............//方波当前判断值
DAdata.............//定义为P1口
judge=1,DAdata=0XFF, 正 向 翻 转 ;judge=0,DAdata=0X00,负向翻转。
生成锯齿波的原理是每次定时器TMR0发生中断时,并将更新后的采样值立即通过单片机端口输出至DAC0832进行D/A转换成对应模拟电压。为了控制输出数值范围,当采样值增至8位最大值0XFF即255时,立即将其置0,如此周而复始连续的操作,每次从0增至255又返回0,这样通过D/A转换后的模拟电压即为锯齿波波形。对波形频率的控制可通过改变采样步进值,增加步进值,则采样数值增幅变大。因此从0~255之间采样点数减少,所以完成一个周期波形所需要时间相应变小,输出波形频率增大,反之亦然。但是步进若增幅过大,则采样点数急剧减少,输出波形离散化趋势增加,波形变得不再连续平滑,因此可在DAC0832转换器输出端接上滤波电路,以滤除高次谐波,使波形趋于平滑。
相关的2个变量:juchibo_tab[].............//锯齿波数组
DAdata.............//定义为P1口
其原理与锯齿波类似,不同的是在于当采样值增加至最大值0XFF(255)时,在随后的采样时刻,采样值减去步进值,以此更新。当采样值减小到0时,在后续采样时刻,采样值则与步进值相加,以此更新。如此周而复始连续地操作,采样值经过D/A转换后就能输出对称三角波,调节频率的方法和锯齿波相同[3]。
相关2个变量:triangle_tab[]...............//三角波采样输出数组
DAdata.............//定义为P1口
一个正弦数值表Table(含256个元素值),此表是将一个周期的正弦波离散成256个采样值,在每个采样时刻,按索引值序号选取并输出此表中相应的值,经D/A转换后输出与此表值对应的模拟电压信号,则采样完此表中256个数值即可输出一个完整周期的正弦波。此处的所引值取代了锯齿波或三角波中的步进值,在调节正弦波频率时依然有两种方法:一种是计数上限(即调节采样周期),上限值越大,采样周期越长,输出波形周期也越长,频率则越小,反之亦然。第二种是调节索引值步进,增加步进值,则采样数值增幅变大,因此从0~255之间采样点数减少,所以完成一个周期波形所需要时间相应变小,输出波形频率增大,反之亦然。但是步进若增幅过大,则采样点数急剧减少,输出波形离散化趋势增加,波形变得不再连续平滑,因此可在DAC0832转换器输出端接上滤波电路,以滤除高次谐波,使波形趋于平滑[4]。
图1 原理图Fig.1 Schematic diagram
相关2个变量:sine_tab[256]..............//正弦波数组
DAdata.............//定义为P1口
本设计方案的思路是通过Protues软件仿真来进行波形调试,利用定时器TMR0定时中断与预设波形数据表配和起来实现波形的生成,将定时器设定成定时方式1,在每次中断发生时,对波形数据进行采集,或者对定时时间进行调整。从而实现当前时刻的波形数据的输出,以及频率的调整。是在keil软件上编译,用C语言设计程序的源代码。
下图2~5即为调试所得各类波形。
图2 矩形波Fig.2 Rectangular wave
图3 锯齿波Fig.3 Saw tooth wave
图4 三角波Fig.4 Triangle wave
图5 正弦波Fig.5 Sine wave
仿真过程中,本设计可以实现预期的4种常用低频信号波形的输出,各输出波形标准规范。同时各种波形的输出均可实现调频和调幅操作:对于调频操作,在单片机工作时钟频率为24 MHz条件下,正弦波、锯齿波、三角波可以在1 kHz以下范围内保持输出波形不变形,方波的保形频率范围则可以达到2 kHz,对调幅操作,可以做到4种波形幅值在0~5 V范围内连续调节。
尽管技术调试过程中,出现了诸如正弦波、三角波、锯齿波的频率在0~1 kHz范围调节可以得到清晰、连续平整的没有变形的波形,但是超过这个范围输出的波形会失真变形;不能一次同时多波形输出等技术难题[5]。但是,实验数据仍然表明,文中采用AT89S51单片机设计的方案,是合理可行。同时,从仿真的数据结果和分析来看,新的设计技术方案获得的输出低频波形信号规整、可靠性较好,符合普通常用低频信号源基本要求,其实验结果是令人满意的。
另外,在调试中发现,因DAC0832受到转换位数和建立时间的限制,从而引起了输出波形不够规整、前后沿不陡峭等问题[6]。我们认为,如果能够采用其他诸如DAC9881等芯片来提高转换位数和建立时间的话,设计方案将能够获得更加完美的输出波形。
[1]白延敏.51单片机典型系统开发实例精讲[M].北京:电子工业出版社,2009.
[2]常敏.单片机应用程序开发与实践[M].北京:电子工业出版社,2009.
[3]唐颖.单片机原理与应用及C51程序设计[M].北京:北京大学出版社,2008.
[4]周坚.单片机项目教程[M].北京:北京航空航天大学出版社,2008.
[5]边春元.C51单片机典型模块设计与应用[M].北京:机械工业出版社,2008.
[6]彭树生.PIC单片机原理及应用[M].北京:机械工业出版社,2001.