资源描述
(完整word版)数字信号发生器课程设计
数字信号发生器的设计
摘 要
信号发生器也叫做振荡器或是信号源,在现在的科技生产实践中有着广泛而重要的应用。现在的特殊波形发生器在价格上不够经济,有些昂贵。而基于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系统调试 20
总 结 21
致 谢 22
参考文献 23
1 绪论
1.1 课题研究背景
随着经济与科技不断发展,相应的测试仪器与手段也有了许多改善与提高,但是对之要求也不断提高。波形发生器的信号已知,使用者然后根据具体的要求,将其作为激励源,测得感兴趣的参数。信号源仿真各种测试信号,给待测电路,从而满足现实需求。信号发生器在仿真实验占有重要地位,对于测试仪器来说也同样不可缺少。因此对相关信号发生器的研究开发有着一定的意义。
传统的信号发生器电路复杂,控制灵活度不够,成本也相对较高。虽然我国所研制的波形发生器在一定程度上已有了一些成果,但与国外技术确实还存在一定差距,因此很有必要提高相关方面的研究。
利用单片机的控制灵活性,外设处理能力强等特点,实现频率与幅度可调的多种波形,这就克服了传统的缺点,具有良好的实用性。同时根据程序的易控制性,可以容易实现各种较复杂的调频调幅功能。
1.2 波形介绍
正弦波,正弦信号可用如下形式表示
f (t)=Asin(ωt+θ ) (1)
其中,A 为振幅,ω 是角频率,θ 为初相位。正弦函数为一周期信号如下图1所示:
图1 正弦波
·方波
方波函数是我们常用且所熟知的简单波形函数,做脉冲等,其表示形式如下:
(2)
方波波形如图2。
图2 图形
当方波下半段幅值为0时,就为矩形波,一个原理,所以不再赘述矩形波。
锯齿波,锯齿波如图3所示。
图3 锯齿波图形
三角波,三角波波形如下图4所示。
图4三角波
2系统设计
2.1方案选择
方案一:利用单片的函数发生器的传统方式,比如8038就行。它可很容易地产生正弦波和方波等波形,而后用数/模转换器对电压进行调制,也可以用数字调控对频率实现改变,但这种方法产生频率不稳定。
方案二:采用频率合成器,锁相环式的。对于所选择的频率,用VCO(压控振荡器)加以选定。这种方法较第一种性能上好,但是对于频率的输出范围难以达到。而且有一个特点,即电路较为复杂。
方案三:可以利用单片机编程的方法来实现波形的输出。可选用AT89C51作为控制器,输出相应波形的数字信号,再用D/A转换器输出相应波形的模拟信号。用DAC0832作为D/A转换器,再经过两级放大后输出,最终在示波器上显示。可以使用按键扫描来实现波形的变化[3]。
由于方案一的输出信号的频率不稳定还有二方案的电路较为复杂,频率可调范围难以达标等缺点,所以决定采用方案三的设计方法。方案三的设计用软件可以很方便的实现对硬件的控制,输出需要的波形。而且方案三中涉及的器件都是容易得到而且价格较为便宜的,所以价格上也有优势。
2.2框图设计
基于AT89C51单片机的函数信号发生器由电源电路、单片机主控电路、信号输出电路和按键控制电路四部分组成,整体设计框图如图5所示
复位电路
按键电路
AT89C51
主控电路
输出电路
电源电路
图5 函数信号发生器系统图
AT89C51单片机是整个函数信号发生器的主控部分,通过电脑对程序改写,可以产生不同波形,也可对同种波形的频率幅度进变换。当单片机输出数字信号经过转换电路后输出相应模拟信号。上图中输出电路包涵转换电路与整波电路。图6为函数信号发生器的原理图。
输出波形
滤波放大
D/A
转换器
接口
电路
89C51
单片机
图6 信号发生器原理框图
2.3单片机模块
2.3.1单片机最小系统
8051片内有4KB的ROM/EPROM,因此只需要外接晶振电路和复位电路就可以构成最小系统了,如图7所示。
图7 单片机最小系统
·该最小系统的特点如下:
(1)由于片外没有扩展存储器和外设,P0、P1、P2、P3都可以作为用户I/O 接口使用。
(2)片内数据存储器有128B,地址空间为00H—7FH,片外没数据存储器。
(3)片内有4KB的程序存储器,地址空间为0000H—0FFFH,没有偏外存储器,应接高电平。
(4)可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源[1]。
·晶振电路工作原理及应用
单片机有18、19两引脚。分别为XTAL1和XTAL2。单片机采取内部振荡电路时,将这两引脚接石英晶体与微调电容。此设计采用的是12M晶振和两个30pF的电容。在芯片内部结构中,XTAL1和XTAL2引脚是一反相放大器的两个输入端,构成单片机内部振荡器。同样,根据需要不同,也可采用外部时钟方式。本次设计采用内部时钟方式。XTAL1
XTAL2
图8时钟电路
·单片机复位电路工作原理及应用
计算机在启动运行时都需要复位,复位是使中央处理器CPU和内部其他部件处于一个确定的初始状态,从这个状态开始工作[1]。89C51单片机有一个复位引脚RST,高电频有效。在时钟电路工作以后,当外部电路使得RST端出现2个机器周期以上的高电平后系统就会内部复位[1]。我们采用按键复位方式。如图9所示。
Vcc
RST
Vss
MCS-51
1k
200W
图9 按钮复位电路
2.4按键控制与显示电路设计
本次设计共设计了4个按键,分别为开关S1、S2、S3和S4。分别接单片机的P3.0、P3.1、P3.3、P3.4口。S1用来控制输出波的类别,每按一次,切换到另一个波形;S2与S3则调节输出波形频率的增减,按S2时,输出平率增加,而S3则减小;S4则用来显示波形的种类与频率的大小。如图10所示。
图10 按键电路
2.5 D/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转换。数字输入端可以有单缓冲、双缓冲或直通方式输入。
当引脚、、、直接接地时,ILE接电源,DAC0832处于直通工作方式。这种状态下,有输入就立即有输出,处理方式简单,但只能通过独立的I/O接口连接。
当连接ILE、、、和引脚,使得两锁存器分别工作在直通与受控状态,或者两个同事被控制,则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
C6H
1
06H
F9H
D
5EH
A1H
2
5BH
A4H
E
79H
86H
3
4FH
B0H
F
71H
8EH
4
66H
99H
P
73H
8CH
5
6DH
92H
U
3EH
C1H
6
7DH
82H
T
31H
CEH
7
07H
F8H
Y
6EH
91H
8
7FH
80H
L
38H
C7H
9
6FH
90H
8.
FFH
00H
A
77H
88H
“灭”
00
FFH
B
7CH
83H
……
……
……
LED数码管在显示的方式上有动态显示和静态显示两种方法。
当LED静态显示时,公共端接地或接电源,根据共阴还是共阳决定。但每一段的段选段都要与I/O接口连接。这种方式结构简单,程序也简单易理解。但缺点也因此点而来,一个数码管就要8个I/O口,数码管若多有几个,则就会占用很多I/O口。
而当LED采取动态显示时,是将所有数码管的段选段并接在一起的,用公共的I/O控制端,公共端不接地或是电源,而是连接I/O口,实现位选,即选取那个数码管亮,几个数码管轮流显示相应信息,这样不断循环。根据人眼短暂滞留性,当循环周期足够快时,看着就像几个一起显示的。此种方式优点是所用I/O口少,线路较简单,但软件与CPU的占用较大。
一般当所用LED显示器的个数少时用静态显示。反之则用动态显示。本次设计采取了动态显示的方案完成显示工作。
LED动态显示方式如图16所示。
图16 LED动态显示
2.7 放大电路设计
可知,单片机出来的信号经D/A转换后的模拟信号也只是电流信号,所以要将次电流信号转换为电压信号。于是,需加上双极性转化电路。此电路需要两个放大器,若干电阻,其具体电路如图17所示。
图17 双极性转化电路
图中第一个放大器的作用是将输出的电流信号转换成电压信号,第二个运算放大器和两电阻组成的是方向加法器。
2.8整体的电路原理图
图18 整体仿真电路
2.9元件清单
表2 元器件
元件名称
型号
数量/个
用途
单片机
AT89C51
1
主控芯片
晶振
12MHz
1
晶振电路
电容
30pF
2
晶振电路
电解电容
10uF
1
复位电路
电阻
10k欧
1
复位电路
开关
BUTTON
1
复位电路
开关
BUTTON
4
选择输出
集成块
DAC0832
1
D/A转换
集成块
LM358
2
运放电路
集成块
74LS573
1
驱动电路
数码管
共阴、蓝色
1
显示电路
电阻
10k欧、7k欧
2
运放电路
滑动变阻器
10k欧
1
运放电路
电源
+5V
1
提供电源
排阻
1k
1
显示电路
发光二级管
红色
4
显示电路
3软件设计
3.1程序流程图
开 始
各芯片初始化
按键按下?
s1num++
S4按下
S3按下
S2按下
S1按下
显示频率域波形种类
频率f减少
LED显示
LED显示
频率f增加
s1num
=0
s1num
=1
s1num
=2
s1num
=3
输出正弦波,LED显示A2
输出矩形波,LED显示C2
输出锯齿波,LED显示D2
输出三角波,LED显示B2
图19 程序流程图
3.2程序代码
·正弦波的代码可分为256个数值,相应时段付相应值,这样既可产生模拟的正弦波形,代码如下
·单片机输出正弦波三角波方波等信号的程序如下:
//按键S1按一下,输出正弦波
//按键S1按两下,输出三角波
//按键S1按三下,输出方波
// 按键S1按4下,输出锯齿波
·频率显示部分:当按键S4按下后,显示频率,频率计算公式为
TH0=(65535-temp)/256;
TL0=(65535-temp)%256; //temp定义为定时器定义时间
f=(int)(1000000/(temp*256)); //f为频率
·频率控制部分:根据按键控制temp的值,频率就会增大或减小。
4系统仿真及调试
4.1系统仿真图
正弦波如下图20所示。
图20 仿真正弦波形
三角波如下图21所示。
图21 仿真三角波形
方波波形如下图22所示。
图22 仿真方波波形
锯齿波波形如下图23所示。
图23 仿真锯齿波波形
4.2系统调试
本次设计是函数信号发生器,所以所用元器件尽量与理论的器件相符,这样是为使误差尽量减小。我们知道单片机的硬件调试与软件调试是分不开的。信号没有输出是有很多方面的,许多硬件错误是可以结合微调软件程序发现和纠正的。但是,从本次设计的调试过程中,可以发现硬件调试是最为重要和基础的。因为若存在明显的硬件错误根本就不会有任何显示结果,更别谈软件的调试了。
硬件调试主要目的是把电路中各参数值调整到最设计的理想要求。最开始就是要先确保设计的正确性。其次就是排除小障碍,优化电路。参数值的取舍,短路断路虚焊等
单片机是本次设计的核心,一定要确保其连接的正确性。比如接电源的40脚是否为+5V,晶振是否作用,复位脚RST等。结合电路,就容易检测出故障。
总 结
以前没做过D/A转换的设计,这次就要对DAC0832芯片进行了解,他的内部结构,与单片机的连接方法等,还有模电运放电路里的知识,也要进行深入了解。这让我更为深刻的体会到把所学的知识运用到现实的复杂,把各门课程综合起来解决一个问题的重要性。而且只有通过某一个特定的要求,我们学习知识运用知识的能力才会更快更好地提升。就这次设计而言,正因为遇到了各种困难,才加速了我运用知识解决问题的能力。如果是平时,只会课本是课本,不会灵活应用,也不会深入了解。从这次设计我得出我们要多多参与实践,在实践中提升自己。同时也发现自己有很多不足之处,比如Proteus软件就不够熟悉,画图时不够流畅。还有c语言的编程有待提高,单片机与各芯片接口的运用还了解不深,这次设计完成后。自己一定得好好重温一下单片机。
致 谢
通过课程设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。我感慨颇多,在着手设计的这段日子里,我又学到了很多东西。特别是理论联系实际。我认为掌握单片机的应用及开发技术是最基本的,也是必要的。单片机是以后从事相关嵌入式研发最为基本的入门芯片。所以学好单片机是我们电子类的必要任务。
通过这次单片机课程设计的顺利完成,离不开付老师指导,也离不开班上同学的耐心帮助。在此,我对所有帮助过我的老师和同学表示我真挚的感谢!
参考文献
[1] 谢维成等.单片机原理与应用及C51程序设计(第2版)[M]. 北京:清华大学出版社,2009.
[2] 杨居义.单片机课程设计指导[M].北京:清华大学出版社,2009.
[3] 基于AT89C51单片机的函数信号发生器设计[M]. 2012.
[4] 余孟尝.数字电子技术基础简明教程(第3版)[M].北京:高等教育出版社,2006.
[5] 杨素行.模拟电子技术基础简明教程(第三版)[M].北京:高等教育出版社,2006.
[6] Altium Designer原理图与PCB设计[M].北京:电子工业出版社2009.
[7] 谭浩强.C程序设计(第2版)[M] .北京:清华大学出版社 1999.
[8] 陈明义. 电子技术教程设计实用教程(第3版)[M]. 长沙:中南大学,2009.
展开阅读全文