《基于AT89C51单片机的多功能函数信号发生器设计.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的多功能函数信号发生器设计.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、海 南 师 范 大 学本 科 生 毕 业 论 文 题目:基于AT89C51单片机的多功能函数信号发生器设计 姓 名: xx 学 号: xxx 专 业: 电子信息科学与技术 年 级: 2009 级 系 别: 电子系 指导老师: xxx完成日期: 2013年5月 学习文档 仅供参考本科生毕业论文设计独创性声明本人声明所呈交的毕业论文设计是本人在导师指导下进行的研究工作及取得的研究成果,除了文中特别加以标注和致谢的地方外,本论文中没有抄袭他人研究成果和伪造数据等行为 。与我一同工作的同志对本研究所做的任何奉献均已在论文中作了明确的说明并表示谢意。论文设计作者签名: 日期: 本科生毕业论文设计使用授权
2、声明海南师范大学有权保留并向国家有关部门或机构送交毕业论文设计的复印件和磁盘,允许毕业论文设计被查阅和借阅。本人授权海南师范大学可以将本毕业论文设计的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复印手段保存、汇编毕业论文设计。论文设计作者签名: 日期: 指 导 教 师 签 名: 日期: 目 录1.引言 2 1.1课题研究背景2 1.2波形介绍22.系统设计 4 2.1方案选择4 2.2框图设计4 2.3单片机模块552.4按键控制电路设计82.5 D/A转换电路 8 8 82.6 LED显示电路 102.7 运算放大器的特性及应用 133.硬件设计143.1整体的电路原理图
3、143.2元件清单154.软件设计 164.1程序流程图 164.2程序清单175系统仿真及调试185.1系统仿真图185.2系统调试216 总结217 参考文献23基于AT89C51单片机的多功能函数信号发生器设计 xx 指导老师:xx海南师范大学,电子系,海口,571158 摘 要:信号发生器也叫做振荡器或是信号源,在现在的科技生产实践中有着广泛而重要的应用。现在的特殊波形发生器在价格上不够经济,有些昂贵。而基于AT89C51单片机的函数信号发生器可以满足此要求。根据傅里叶变换,各种波形均可以用三角函数的相关式子表示出来。函数信号发生器能够产生多种波形,如三角波、锯齿波、矩形波、方波和正弦
4、波。本文通过在单片机的外围加上键盘,控制波形的种类和输出频率的大小,加上LED显示出相应信息。单片机输出为数字信号,于是在输出端用DAC0832进行D/A转换,再通过两级运放对波形进行调整。最终在示波器上显示出来。关键词:信号发生器 AT89C51 D/A转换 波形调整The design of multifunction signal generator based on AT89C51Author:Zhang qin Tutor:Professor Lin ji(Department of Electronic, Hainan normal university,Haikou, 57115
5、8)Abstract:Signal generator is also called source or oscillator. It has been widely used in production practice or the field of science and technology. Now, the price of the special waveform generator is not economic and some expensive. While the function signal generator based on AT89C51 can satisf
6、y this requirement. As we know, it can be represented with trigonometric function equation for kinds of waveform curve. The one can produce various waveform, such as triangle wave, sawtooth wave, rectangle wave, square wave and sine wave is often called function signal generator. Function signal gen
7、erator is broad-spectrum in circuit experiment and test equipment. It can control the type and the output frequency of the waveform when the microcontroller are equipped with the keyboard. Also when it coupled with the LED it can be displayed. It can be sure that it is digital signal that come from
8、the microcontroller. So we should add the DAC0832 on the output side for D/A conversion. With the two levels of op-amp we can adjust waveform. Finally display on the oscilloscope.Keywords:signal generator, AT89C51, D/A conversion,wave adjust1. 引 言 1.1 课题研究背景随着经济与科技不断发展,相应的测试仪器与手段也有了许多改善与提高,但是对之要求也不断
9、提高。波形发生器的信号已知,使用者然后根据具体的要求,将其作为激励源,测得感兴趣的参数。信号源仿真各种测试信号,给待测电路,从而满足现实需求。信号发生器在仿真实验占有重要地位,对于测试仪器来说也同样不可缺少。因此对相关信号发生器的研究开发有着一定的意义。传统的信号发生器电路复杂,控制灵活度不够,成本也相对较高。虽然我国所研制的波形发生器在一定程度上已有了一些成果,但与国外技术确实还存在一定差距,因此很有必要提高相关方面的研究。利用单片机的控制灵活性,外设处理能力强等特点,实现频率与幅度可调的多种波形,这就克服了传统的缺点,具有良好的实用性。同时根据程序的易控制性,可以容易实现各种较复杂的调频调
10、幅功能。 1.2 波形介绍 正弦波正弦信号可用如下形式表示f (t)=Asin(t+ ) 1其中,A 为振幅, 是角频率, 为初相位。正弦函数为一周期信号如下列图1所示:图1 正弦波方波方波函数是我们常用且所熟知的简单波形函数,做脉冲等,其表示形式如下: 2方波波形如下:图2 图形当方波下半段幅值为0时,就为矩形波,一个原理,所以不再赘述矩形波。锯齿波锯齿波如图3所示:图3 锯齿波图形三角波三角波波形如下列图所示:图42.系统设计2.1方案选择方案一:利用单片的函数发生器的传统方式,比方8038就行。它可很容易地产生正弦波和方波等波形,而后用数/模转换器对电压进行调制,也可以用数字调控对频率实
11、现改变,但这种方法产生频率不稳定。方案二:采用频率合成器,锁相环式的。对于所选择的频率,用VCO压控振荡器加以选定。这种方法较第一种性能上好,但是对于频率的输出范围难以到达。而且有一个特点,即电路较为复杂。方案三:可以利用单片机编程的方法来实现波形的输出。可选用AT89C51作为控制器,输出相应波形的数字信号,再用D/A转换器输出相应波形的模拟信号。用DAC0832作为D/A转换器,再经过两级放大后输出,最终在示波器上显示。可以使用按键扫描来实现波形的变化3。由于方案一的输出信号的频率不稳定还有二方案的电路较为复杂,频率可调范围难以达标等缺点,所以决定采用方案三的设计方法。方案三的设计用软件可
12、以很方便的实现对硬件的控制,输出需要的波形。而且方案三中涉及的器件都是容易得到而且价格较为廉价的,所以价格上也有优势。2.2框图设计基于AT89C51单片机的函数信号发生器由电源电路、单片机主控电路、信号输出电路和按键控制电路四部分组成,整体设计框图如下图复位电路按键电路AT89C51主控电路输出电路电源电路图5 函数信号发生器系统图AT89C51单片机是整个函数信号发生器的主控部分,通过电脑对程序改写,可以产生不同波形,也可对同种波形的频率幅度进变换。当单片机输出数字信号经过转换电路后输出相应模拟信号。上图中输出电路包涵转换电路与整波电路。下列图为函数信号发生器的原理图。输出波形滤波放大D/
13、A转换器接口电路89C51单片机图6 信号发生器原理框图2.3单片机模块 8051片内有4KB的ROM/EPROM,因此只需要外接晶振电路和复位电路就可以构成最小系统了,如下图。图7 单片机最小系统该最小系统的特点如下:1由于片外没有扩展存储器和外设,P0、P1、P2、P3都可以作为用户I/O 接口使用。2片内数据存储器有128B,地址空间为00H7FH,片外没数据存储器。3片内有4KB的程序存储器,地址空间为0000H0FFFH,没有偏外存储器,应接高电平。4可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源1。晶振电路工作原理及应用 单片机有18、19两引脚。分别为X
14、TAL1和XTAL2。单片机采取内部振荡电路时,将这两引脚接石英晶体与微调电容。此设计采用的是12M晶振和两个30pF的电容。在芯片内部结构中,XTAL1和XTAL2引脚是一反相放大器的两个输入端,构成单片机内部振荡器。同样,根据需要的不同,也可采用外部时钟方式。本次设计采用内部时钟方式。如下图。图8 内部时钟方式XTAL1XTAL2单片机复位电路工作原理及应用电脑在启动运行时都需要复位,复位是使中央处理器CPU和内部其他部件处于一个确定的初始状态,从这个状态开始工作1。89C51单片机有一个复位引脚RST,高电频有效。在时钟电路工作以后,当外部电路使得RST端出现2个机器周期以上的高电平后系
15、统就会内部复位1。我们采用按键复位方式。如下图。VccRSTVssMCS-511k200W图9 按钮复位电路2.4按键控制与显示电路设计 本次设计共设计了4个按键,分别为开关S1、S2、S3和S4。分别接单片机的P3.0、P3.1、P3.3、P3.4口。S1用来控制输出波的类别,每按一次,切换到另一个波形;S2与S3则调节输出波形频率的增减,按S2时,输出平率增加,而S3则减小;S4则用来显示波形的种类与频率的大小。如下图。图10 按键电路2.5 D/A转换电路D/A转换器经常用于信号发生器的设计中,通过它可以生成各种波形。其基本原理如下:利用D/A转换器输出模拟量与输入数字量成正比这一特点,
16、通过程序控制CPU向D/A转换器送出随时间成一定规律变化的数字,则D/A转换器输出端就可输出随时间按一定规律变化的波形1。D/A是先把数字量转换成模拟量,在单片机设计中经常用到。众所周知,单片机输出信号为数字量,而本设计旨在输出各种波形,属模拟量,所以单片机的数字量必须经过D/A的转换变为模拟信号才能满足要求。DAC0832是一个8位的D/A转换器,为DAC0830的一种。DAC0832内部主要由8为输入存放器、8位DAC存放器、8位D/A转换器和控制逻辑电路组成。由于DAC0832与单片机接口方便,其转换与控制较易实现,所以在实际工作中有其重要的作用,使用的也较为频繁。其内部结构及引脚图如下
17、图。图11 DAC0832的内部结构图12 DAC0832的引脚图 DAC0832是D/A转换器的一类,属电流型,所以后要跟着I/V转换。数字输入端可以有单缓冲、双缓冲或直通方式输入。当引脚、直接接地时,ILE接电源,DAC0832处于直通工作方式。这种状态下,有输入就立即有输出,处理方式简单,但只能通过独立的I/O接口连接。当连接ILE、和引脚,使得两锁存器分别工作在直通与受控状态,或者两个同事被控制,则DAC0832处于单缓冲工作方式1。只要数据DAC0832写入8位输入锁存器,就立即开始转换。双缓冲方式即将对8位DAC存放器与对锁存器的控制分开进行,占用的I/O口相对较大。根据以上分析,
18、此次设计选取单缓冲方式。如下图。图13 DAC0832单缓冲方式的连接2.6 显示电路显示电路分为3部分,分别为LED灯显示,LED数码管显示,最后还有示波器显示。 LED灯显示本次设计共用了4个LED灯,分别表示示波器上显示了对应的波形,单片机的P2.4P2.7分别控制相应灯的亮灭。电路图如下图。图14 LED数码管显示 本次LED数码管的作用是用来显示相应输出信号的频率。LED数码管显示电路尽管其所能显示的信息简单,但由于其清晰、亮度高使用时间长和所需电压要求低等优势,在单片机应用中有着应用频率较高。LED数码管显示器是简单地发光二级管按特定的电路连接起来的显示性器件。而我们在一些单片机设
19、计中常用的是8段式的LED数码管显示器,其分为两类,共阴和共阳之分。其结构如下图。本次设计采用共阴方式。图15 LED数码管结构图常用数字和字符的编码如下表:表1 常用字段编码表显示字符共阴极字段码共阳极字段码显示字符共阴极字段码共阳极字段码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8FFH00HA77H88H“灭”00FFHB7CH83HLED数码管在显示的方式上有动态显
20、示和静态显示两种方法。当LED静态显示时,公共端接地或接电源,根据共阴还是共阳决定。但每一段的段选段都要与I/O接口连接。这种方式结构简单,程序也简单易理解。但缺点也因此点而来,一个数码管就要8个I/O口,数码管假设多有几个,则就会占用很多I/O口。而当LED采取动态显示时,是将所有数码管的段选段并接在一起的,用公共的I/O控制端,公共端不接地或是电源,而是连接I/O口,实现位选,即选取那个数码管亮,几个数码管轮流显示相应信息,这样不断循环。根据人眼短暂滞留性,当循环周期足够快时,看着就像几个一起显示的。此种方式优点是所用I/O口少,线路较简单,但软件与CPU的占用较大。一般当所用LED显示器
21、的个数少时用静态显示。反之则用动态显示。本次设计采取了动态显示的方案完成显示工作。LED动态显示方式如下图。图16 LED动态显示2.7 放大电路设计 可知,单片机出来的信号经D/A转换后的模拟信号也只是电流信号,所以要将次电流信号转换为电压信号。于是,需加上双极性转化电路。此电路需要两个放大器,假设干电阻,其具体电路如下图。图17 双极性转化电路 图中第一个放大器的作用是将输出的电流信号转换成电压信号,第二个运算放大器和两电阻组成的是方向加法器。3硬件设计3.1整体的电路原理图图18 整体仿真电路3.2元件清单表2 元器件元件名称型号数量/个用途单片机AT89C511主控芯片晶振12MHz1
22、晶振电路电容30pF2晶振电路电解电容10uF1复位电路电阻10k欧1复位电路开关BUTTON1复位电路开关BUTTON4选择输出集成块DAC08321D/A转换集成块LM3582运放电路集成块74LS5731驱动电路数码管共阴、蓝色1显示电路电阻10k欧、7k欧2运放电路滑动变阻器10k欧1运放电路电源+5V1提供电源排阻1k1显示电路发光二级管红色4显示电路3 软件设计4.1程序流程图开 始各芯片初始化按键按下?s1num+S4按下S3按下S2按下S1按下显示频率域波形种类频率f减少LED显示LED显示频率f增加s1num=0s1num=1s1num=2s1num=3输出正弦波,LED显示
23、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
24、为频率频率控制部分:根据按键控制temp的值,频率就会增大或减小。4 系统仿真及调试5.1系统仿真图正弦波如下列图图20 仿真正弦波形三角波如下列图所示图21 仿真三角波形方波波形如下列图所示图22 仿真方波波形锯齿波波形如下列图所示图23 仿真锯齿波波形实物波形及频率,如下列图所示 图24实物的显示图左正弦波,42Hz,右三角波,32Hz5.2系统调试本次设计是函数信号发生器,所以所用元器件尽量与理论的器件相符,这样是为使误差尽量减小。我们知道单片机的硬件调试与软件调试是分不开的。信号没有输出是有很多方面的,许多硬件错误是可以结合微调软件程序发现和纠正的。但是,从本次设计的调试过程中,可以发
25、现硬件调试是最为重要和基础的。因为假设存在明显的硬件错误根本就不会有任何显示结果,更别谈软件的调试了。硬件调试主要目的是把电路中各参数值调整到最设计的理想要求。最开始就是要先确保设计的正确性。其次就是排除小障碍,优化电路。参数值的取舍,短路断路虚焊等单片机是本次设计的核心,一定要确保其连接的正确性。比方接电源的40脚是否为+5V,晶振是否作用,复位脚RST等。结合电路,就容易检测出故障。 6 小结毕业设计是每一个大学生根据自己专业所学,大学四年积累的知识总结与应用。通过毕业设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。特别是理论联系实际。在我认为,作为电子专业类的本科生,掌
26、握单片机的应用及开发技术是最基本的,也是必要的。单片机是以后从事相关嵌入式研发最为基本的入门芯片,较FPGA更为低端。所以学好单片机是我们电子类的必要任务。通过此次的设计,我感慨颇多。从大四上学期就选题,到大四下学期的开题,中期检查,再到完成初稿,其间历史很长,论文就主要在这学期完成。在着手设计的这段日子里,我又学到了很多东西。以前没做过D/A转换的设计,这次就要对DAC0832芯片进行了解,他的内部结构,与单片机的连接方法等,还有模电运放电路里的知识,也要进行深入了解。这让我更为深刻的体会到把所学的知识运用到现实的复杂,把各门课程综合起来解决一个问题的重要性。而且只有通过某一个特定的要求,我
27、们学习知识运用知识的能力才会更快更好地提升。就这次设计而言,正因为遇到了各种困难,才加速了我运用知识解决问题的能力。如果是平时,只会课本是课本,不会灵活应用,也不会深入了解。从这次设计我得出我们要多多参与实践,在实践中提升自己。同时也发现自己有很多不足之处,比方Proteus软件就不够熟悉,画图时不够流畅。还有c语言的编程有待提高,单片机与各芯片接口的运用还了解不深,这次设计完成后。自己一定得好好重温一下单片机。当然,这次设计的顺利完成,离不开林吉老师辛勤指导,也离不开班上同学的耐心帮助,特别是吴春龙同学,在此,我对所有帮助过我的老师和同学表示我真挚的感谢!7 参考文献1 谢维成等.单片机原理
28、与应用及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.9 马晓.函数信号发生器的设计D.河南2012.