数字信号发生器的设计摘要信号发生器也叫做振荡器或是信号源,在现在的科技生产实践中有着广泛而重要的应用。
现在的特殊波形发生器在价格上不够经济,有些昂贵。
而基于AT89C51单片机的函数信号发生器可以满足此要求。
根据傅里叶变换,各种波形均可以用三角函数的相关式子表示出来。
函数信号发生器能够产生多种波形,如三角波、锯齿波、矩形波、方波和正弦波。
本文通过在单片机的外围加上键盘,控制波形的种类和输出频率的大小,加上LED 显示出相应信息。
单片机输出为数字信号,于是在输出端用DAC0832进行D/A转换,再通过两级运放对波形进行调整。
最终在示波器上显示出来。
关键词:信号发生器, AT89C51,D/A转换,波形调整目录1 绪论 (1)1.1 课题研究背景 (1)1.2波形介绍 (1)2系统设计 (3)2.1方案选择 (3)2.2框图设计 (3)2.3单片机模块 (4)2.4按键控制与显示电路设计 (6)2.5 D/A转换电路 (7)2.6 显示电路 (9)2.7 放大电路设计 (12)2.8整体的电路原理图 (13)2.9元件清单 (13)3软件设计 (15)3.1程序流程图 (15)3.2程序代码 (15)4系统仿真及调试 (18)4.1系统仿真图 (18)4.2系统调试 (19)总结 (21)致谢 (22)参考文献 (23)1绪论1.1课题研究背景随着经济与科技不断发展,相应的测试仪器与手段也有了许多改善与提高,但是对之要求也不断提高。
波形发生器的信号已知,使用者然后根据具体的要求,将其作为激励源,测得感兴趣的参数。
信号源仿真各种测试信号,给待测电路,从而满足现实需求。
信号发生器在仿真实验占有重要地位,对于测试仪器来说也同样不可缺少。
因此对相关信号发生器的研究开发有着一定的意义。
传统的信号发生器电路复杂,控制灵活度不够,成本也相对较高。
虽然我国所研制的波形发生器在一定程度上已有了一些成果,但与国外技术确实还存在一定差距,因此很有必要提高相关方面的研究。
利用单片机的控制灵活性,外设处理能力强等特点,实现频率与幅度可调的多种波形,这就克服了传统的缺点,具有良好的实用性。
同时根据程序的易控制性,可以容易实现各种较复杂的调频调幅功能。
1.2波形介绍正弦波,正弦信号可用如下形式表示f (t)=A sin(ωt+θ) (1)其中,A 为振幅,ω是角频率,θ为初相位。
正弦函数为一周期信号如下图1所示:图1正弦波·方波方波函数是我们常用且所熟知的简单波形函数,做脉冲等,其表示形式如下:)2()20()(T t T T t t f ≤≤<≤⎩⎨⎧-=λλ (2) 方波波形如图2。
图2 图形当方波下半段幅值为0时,就为矩形波,一个原理,所以不再赘述矩形波。
锯齿波,锯齿波如图3所示。
图3 锯齿波图形三角波,三角波波形如下图4所示。
图4三角波2系统设计2.1方案选择方案一:利用单片的函数发生器的传统方式,比如8038就行。
它可很容易地产生正弦波和方波等波形,而后用数/模转换器对电压进行调制,也可以用数字调控对频率实现改变,但这种方法产生频率不稳定。
方案二:采用频率合成器,锁相环式的。
对于所选择的频率,用VCO(压控振荡器)加以选定。
这种方法较第一种性能上好,但是对于频率的输出范围难以达到。
而且有一个特点,即电路较为复杂。
方案三:可以利用单片机编程的方法来实现波形的输出。
可选用AT89C51作为控制器,输出相应波形的数字信号,再用D/A转换器输出相应波形的模拟信号。
用DAC0832作为D/A转换器,再经过两级放大后输出,最终在示波器上显示。
可以使用按键扫描来实现波形的变化[3]。
由于方案一的输出信号的频率不稳定还有二方案的电路较为复杂,频率可调范围难以达标等缺点,所以决定采用方案三的设计方法。
方案三的设计用软件可以很方便的实现对硬件的控制,输出需要的波形。
而且方案三中涉及的器件都是容易得到而且价格较为便宜的,所以价格上也有优势。
2.2框图设计基于AT89C51单片机的函数信号发生器由电源电路、单片机主控电路、信号输出电路和按键控制电路四部分组成,整体设计框图如图5所示图5 函数信号发生器系统图AT89C51单片机是整个函数信号发生器的主控部分,通过电脑对程序改写,可以产生不同波形,也可对同种波形的频率幅度进变换。
当单片机输出数字信号经过转换电路后输出相应模拟信号。
上图中输出电路包涵转换电路与整波电路。
图6为函数信号发生器的原理图。
图6 信号发生器原理框图2.3单片机模块2.3.1单片机最小系统8051片内有4KB 的ROM/EPROM ,因此只需要外接晶振电路和复位电路就可以构成最小系统了,如图7所示。
复位电路 按键电路AT89C51主控电路 输出电路电源电路89C51单片机 接口 电路 D/A 转换器 滤波放大 输出波形图7 单片机最小系统·该最小系统的特点如下:(1)由于片外没有扩展存储器和外设,P0、P1、P2、P3都可以作为用户I/O 接口使用。
(2)片内数据存储器有128B,地址空间为00H—7FH,片外没数据存储器。
(3)片内有4KB的程序存储器,地址空间为0000H—0FFFH,没有偏外存储器,EA 应接高电平。
(4)可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源[1]。
·晶振电路工作原理及应用单片机有18、19两引脚。
分别为XTAL1和XTAL2。
单片机采取内部振荡电路时,将这两引脚接石英晶体与微调电容。
此设计采用的是12M晶振和两个30pF的电容。
在芯片内部结构中,XTAL1和XTAL2引脚是一反相放大器的两个输入端,构成单片机内部振荡器。
同样,根据需要不同,也可采用外部时钟方式。
本次设计采用内部时钟方式。
图8时钟电路·单片机复位电路工作原理及应用计算机在启动运行时都需要复位,复位是使中央处理器CPU 和内部其他部件处于一个确定的初始状态,从这个状态开始工作[1]。
89C51单片机有一个复位引脚RST ,高电频有效。
在时钟电路工作以后,当外部电路使得RST 端出现2个机器周期以上的高电平后系统就会内部复位[1]。
我们采用按键复位方式。
如图9所示。
2.4按键控制与显示电路设计本次设计共设计了4个按键,分别为开关S1、S2、S3和S4。
分别接单片机的P3.0、P3.1、P3.3、P3.4口。
S1用来控制输出波的类别,每按一次,切换到另一个波形;S2与S3则调节输出波形频率的增减,按S2时,输出平率增加,而S3则减小;S4则用来显示波形的种类与频率的大小。
如图10所示。
XTAL XTALVcc RST VssMCS-5 1k 200图10 按键电路2.5D/A转换电路D/A转换器经常用于信号发生器的设计中,通过它可以生成各种波形。
其基本原理如下:利用D/A转换器输出模拟量与输入数字量成正比这一特点,通过程序控制CPU 向D/A转换器送出随时间成一定规律变化的数字,则D/A转换器输出端就可输出随时间按一定规律变化的波形[1]。
2.5.1 D/A转换的必要性D/A是先把数字量转换成模拟量,在单片机设计中经常用到。
众所周知,单片机输出信号为数字量,而本设计旨在输出各种波形,属模拟量,所以单片机的数字量必须经过D/A的转换变为模拟信号才能满足要求。
2.5.2 DAC0832的特性及应用DAC0832是一个8位的D/A转换器,为DAC0830的一种。
DAC0832内部主要由8为输入寄存器、8位DAC寄存器、8位D/A转换器和控制逻辑电路组成。
由于DAC0832与单片机接口方便,其转换与控制较易实现,所以在实际工作中有其重要的作用,使用的也较为频繁。
其内部结构及引脚图如图11所示。
图11 DAC0832的内部结构图12 DAC0832的引脚图DAC0832是D/A 转换器的一类,属电流型,所以后要跟着I/V 转换。
数字输入端可以有单缓冲、双缓冲或直通方式输入。
当引脚1WR 、2WR 、CS 、XFER 直接接地时,ILE 接电源,DAC0832处于直通工作方式。
这种状态下,有输入就立即有输出,处理方式简单,但只能通过独立的I/O 接口连接。
当连接ILE 、1WR 、2WR 、CS 和XFER 引脚,使得两锁存器分别工作在直通与受控状态,或者两个同事被控制,则DAC0832处于单缓冲工作方式[1]。
只要数据DAC0832写入8位输入锁存器,就立即开始转换。
双缓冲方式即将对8位DAC 寄存器与对锁存器的控制分开进行,占用的I/O 口相对较大。
根据以上分析,此次设计选取单缓冲方式。
如图13所示。
图13 DAC0832单缓冲方式的连接2.6 显示电路显示电路分为3部分,分别为LED 灯显示,LED 数码管显示,最后还有示波器显示。
·LED 灯显示本次设计共用了4个LED 灯,分别表示示波器上显示了对应的波形,单片机的P2.4—P2.7分别控制相应灯的亮灭。
电路图如图14所示。
图14 电路图·LED数码管显示本次LED数码管的作用是用来显示相应输出信号的频率。
LED数码管显示电路尽管其所能显示的信息简单,但由于其清晰、亮度高使用时间长和所需电压要求低等优势,在单片机应用中有着应用频率较高。
LED数码管显示器是简单地发光二级管按特定的电路连接起来的显示性器件。
而我们在一些单片机设计中常用的是8段式的LED数码管显示器,其分为两类,共阴和共阳之分。
其结构如图所示。
本次设计采用共阴方式。
图15 LED数码管结构图常用数字和字符的编码如下表:表1 常用字段编码表显示字符共阴极字段码共阳极字段码显示字符共阴极字段码共阳极字段码0 3FH C0H C 39H C6H1 06H F9H D 5EH A1H2 5BH A4H E 79H 86H3 4FH B0H F 71H 8EH4 66H 99H P 73H 8CH5 6DH 92H U 3EH C1H6 7DH 82H T 31H CEH7 07H F8H Y 6EH 91H8 7FH 80H L 38H C7H9 6FH 90H 8.FFH 00HA 77H 88H “灭”00 FFHB 7CH 83H ………………LED数码管在显示的方式上有动态显示和静态显示两种方法。
当LED静态显示时,公共端接地或接电源,根据共阴还是共阳决定。
但每一段的段选段都要与I/O接口连接。
这种方式结构简单,程序也简单易理解。
但缺点也因此点而来,一个数码管就要8个I/O口,数码管若多有几个,则就会占用很多I/O口。
而当LED采取动态显示时,是将所有数码管的段选段并接在一起的,用公共的I/O 控制端,公共端不接地或是电源,而是连接I/O口,实现位选,即选取那个数码管亮,几个数码管轮流显示相应信息,这样不断循环。