毕业设计(论文)数字式波形信号发生器的制作_第1页
毕业设计(论文)数字式波形信号发生器的制作_第2页
毕业设计(论文)数字式波形信号发生器的制作_第3页
毕业设计(论文)数字式波形信号发生器的制作_第4页
毕业设计(论文)数字式波形信号发生器的制作_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录 TOC o 1-3 h z u HYPERLINK l _Toc388822885 摘要 PAGEREF _Toc388822885 h I HYPERLINK l _Toc388822886 Abstract: PAGEREF _Toc388822886 h II HYPERLINK l _Toc388822887 第一章波形发生器的概述 PAGEREF _Toc388822887 h 1 HYPERLINK l _Toc388822888 第二章方案的选择与确定 PAGEREF _Toc388822888 h 2 HYPERLINK l _Toc388822889 控制按钮部分 P

2、AGEREF _Toc388822889 h 2 HYPERLINK l _Toc388822890 波形产生部分 PAGEREF _Toc388822890 h 2 HYPERLINK l _Toc388822891 微控制器部分 PAGEREF _Toc388822891 h 3 HYPERLINK l _Toc388822892 显示部分 PAGEREF _Toc388822892 h 3 HYPERLINK l _Toc388822893 第三章硬件原理 PAGEREF _Toc388822893 h 4 HYPERLINK l _Toc388822894 STC12c5a60s2单片

3、机的认识 PAGEREF _Toc388822894 h 4 HYPERLINK l _Toc388822899 DAC0808的选用 PAGEREF _Toc388822899 h 7 HYPERLINK l _Toc388822902 LCD1602液晶显示屏 PAGEREF _Toc388822902 h 10 HYPERLINK l _Toc388822905 第四章程序设计 PAGEREF _Toc388822905 h 11 HYPERLINK l _Toc388822906 频率调节模块的程序设计 PAGEREF _Toc388822906 h 11 HYPERLINK l _T

4、oc388822907 幅度调节模块的程序设计 PAGEREF _Toc388822907 h 12 HYPERLINK l _Toc388822908 存储模块的程序设计 PAGEREF _Toc388822908 h 12 HYPERLINK l _Toc388822909 键盘模块的程序设计 PAGEREF _Toc388822909 h 13 HYPERLINK l _Toc388822910 第五章误差的来源与分析 PAGEREF _Toc388822910 h 14 HYPERLINK l _Toc388822911 波形幅度的误差 PAGEREF _Toc388822911 h

5、14 HYPERLINK l _Toc388822912 频率的调节部分 PAGEREF _Toc388822912 h 14 HYPERLINK l _Toc388822913 第六章总结 PAGEREF _Toc388822913 h 15 HYPERLINK l _Toc388822914 参考文献: PAGEREF _Toc388822914 h 16 HYPERLINK l _Toc388822915 致谢 PAGEREF _Toc388822915 h 17 HYPERLINK l _Toc388822916 附录: PAGEREF _Toc388822916 h 18 HYPER

6、LINK l _Toc388822917 附录一: 原件清单 PAGEREF _Toc388822917 h 18 HYPERLINK l _Toc388822918 附录二:电路原理图 PAGEREF _Toc388822918 h 19 HYPERLINK l _Toc388822919 附录三:PCB版图 PAGEREF _Toc388822919 h 20 HYPERLINK l _Toc388822920 附录四:实物图 PAGEREF _Toc388822920 h 21 HYPERLINK l _Toc388822921 附录五:源程序 PAGEREF _Toc388822921

7、 h 22数字式波形信号发生器的制作摘要:在这次毕业设计中,是通过单片机STC12C5A60S2和高速D/A转换芯片DAC0808来构成的数字式波形信号发生器。采用STC12C5A60S2单片机作为主控芯片,输出数字信号,从而控制DAC0808芯片产生模拟波形,通过按键调节波形的各种参数,用LCD1602来显示当前波形的种类、幅度、频率和存储状况。本作品具有一定的实用性,设计比较简单,在需要低频信号的场所比较实用。本文在介绍利用STC12C5A60S2单片机和DAC0808芯片设计波形信号发生器的时候,详细介绍了数模转换芯片的稳定时间对频率的影响,还有STC12C5A60S2单片机的相关知识、

8、PWM波通过低通滤波器调节基准电压的方法,甚至对于如何利用计时器调节频率,和计时器的TLTH寄存器的值的计算,都有很详细的论述。关键词:STC12C5A60S2,单片机,DAC0808,LM324,PWM波,数模转换芯片Abstract:This system is based on the domestic enhanced MCU STC12C5A60S2 and high-speed D/A conversion chip DAC0808 digital waveform signal generator.Using STC12C5A60S2 single-chip microcompu

9、ter as the master control chip, digital output code,DAC0808 chip generating an analog waveformcontrol , through the buttons to adjust the parameters of waveform, using LCD1602 to display the current waveform, amplitude, frequency, and the kinds of storage conditions.Its simple design, good performan

10、ce and can be used for a variety of requiring low frequency signal places, has a certain practicality.This article introducd the using of STC12C5A60S2 MCU and DAC0808 chip design waveform signal generator,while introduced the stable time of the analog-to-digital conversion chip and the influence on

11、frequency in detail.This article aslo introduced STC12C5A60S2 knowledge of single chip microcomputers, the PWM wave through a low-pass filter to adjust voltage reference method. Even how to use the timer to adjust frequency, and the timer of TL TH register values calculation, there are very detailed

12、 exposition.Keywords: STC12C5A60S2, SCM, DAC0808, LM324, PWM wave, digital-analog converter chip第一章波形发生器的概述信号发生器是一种常用的信号源,广泛用于电子电路、自动控制、电子测量、仪表、计算机科学和教学实验等领域。在早期信号发生器主要基于模拟电路,由分立元件构成振荡电路和整形电路,进而产生各种波形,随着科学技术和电子技术的发展,集成电路的应用越来越广泛,用集成电路可以很方便的构成波形信号发生器。与以往的模拟电路构成的波形信号发生器相比,用集成电路构成的波形信号发生器在波形质量和频率、幅度的稳定

13、性等性能指标上,都有了很大的提高。波形信号发生器也称函数发生器,在实际应用中一般作为实验信号源,在现今各种电子电路实验设计的应用中是必不可少的仪器设备之一。传统的信号发生器采用的数模电子技术,大部分由分立元件搭建电路,由振荡器产生波形,再通过各种整形电路产生所需的波形。这种波形信号发生器曾经在很长一段时间内发挥了很大作用。用这种技术设计制作这种波形信号发生器电路非常复杂,幅度频率调节范围小,容易受到这种外界因素(温度,湿度等)的干扰,精确度和稳定性都比较差。产生的波形种类也比较少,难以产生复杂的波形信号。随着电子技术的发展,微处理器性能的提高,集成电路电子技术和微处理器走进了我们的生活,我们可

14、以利用微处理器和数模转换器件(D/A)以及相关硬件软件来构成波形发生器。与以往相比,这种波形信号发生器扩展了很多功能,可以产生比较复杂的波形,波形的频率、幅度都可以通过按键方便的调节,波形的相关数据也可以存储,以便在需要的时候调用而不需要重新调节,由于微处理器的处理速度快,时钟比较准确,产生的波形频率的准确性也得到了提高,同时,我们可以把波形的相关参数直接用显示屏显示出来,这是在以往的示波器上面不可能出现的,提高了示波器的使用效率。在本课题里面,初步方案是通过变压器把220V交流电变为15V,再通过整流电路把交流电压变为直流电压,最后通过78xx系列三端稳压集成电路把电压变为所需要的正电压,用

15、79xx系列三端稳压集成电路把电压变为所需要的负电压,电源部分完成,用stc12c5a60s2单片机作为为控制模块,通过按键来产生中断,利用存储在ROM中的程序进而调节频率、幅度,单片机控制LCD1602显示波形信号发生器的相关信息。波形的产生式通过单片机输出的数字信号,经过数模转换芯片(D/A)输出所需波形。通过调节数模转换模块的基准电压来调节波形电压幅度,通过调节单片机每个波形数据的延时时间来调节波形的频率。第二章方案的选择与确定不同的场合,对波形信号发生器的具体指标要求都不一样,所以我们要根据场合的不同选择合适的设计方案来设计产品。通常示波器需要产生的波形有正弦波、方波、三角波和锯齿波。

16、波形的指标一般包括:波形频率、波形幅度的准确度和稳定性。在设计方案时,一般分如下几个方面考虑。2.1控制按钮部分方案一:用独立按键作为单片机的调节按钮。方案二:用矩阵键盘作为单片机的调节按钮。在考虑这两个方案,主要目的是为了节省I/O口,以尽量少的I/O口来链接所有的按钮,在本课题中,总共有七个按键,分别为:频率增加按键、频率减少按键、幅度增加按键、幅度减少按键、存储按键、调用按键、复位按键。其中复位按键是不能和其他的按键链接在一起,所以总共有六个按键需要链接。如果利用矩阵键盘,可以采用2x3的方式,这样需要用到五个I/O口;如果用独立按键直接,也仅仅需要六个I/O口,而且不需要专门为键盘模块

17、编写程序。综合来考虑,选择方案一。2.2波形产生部分方案一:DDS AD9852芯片。用DDS芯片设计波形信号发生器,产生的波形频率、幅度精度高,波形稳定,且能产生任意波形,但是芯片昂贵。方案二:使用ICL8038芯片。ICL 8038 是一种具有多种波形输出的精密振荡集成电路,可以通过调整个别的外部元件就能得到从 0.001HZ300kHz可调的低失真正弦波、三角波、矩形波等脉冲信号。而且输出的方波占空比可调。方案三:直接通过微控制器向数模转换芯片(D/A)输出数据,通过数模转换芯片生成所需波形。这三个方案的选取,主要是考虑生成波形的是否能达到设计要求。其中方案二虽说能产生各种所需的波形,波

18、形的频率、幅度可调,但是容易通过按键的方式以一定的步进来调节,所以方案二放弃;方案一是采用DDS芯片方式,所产生的波形频率能轻易达到10M Hz以上。对于本课题来说,信号的最高频率只需要达到20kHz即可,而且DDS芯片比较昂贵。方案三所采用的方法,能达到所有的设计要求,而且器都比较件常见。所以综合来说,选择方案三。2.3微控制器部分方案一:采用微处理器AT89C51作为控制器。AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机方案二:采

19、用微处理器STC12c5a60s2作为控制器。这款单片机是单时钟机器周期的单片机,在8051单片机的基础上,增加了高速、低功耗、抗干扰的一些特点,在编程方面,指令代码完全兼容8051,运行速度却是普通8051单片机的8到12倍,集成复位电路和两路pwm波输出,以及八路10位模数转换器。对于为控制器的选用主要是考虑其性能,方案一所采用的AT89C51单片机,时钟周期与 机器周期的比为12,而时钟频率最大只能为12Mhz,这在以后进行高频率的波形输出时,频率会不够用(具体的相关问题会在后文进行详细论述),所以放弃方案一;方案二采用的STC12c5a60s2单片机为时钟周期和机器周期比为1的单片机,

20、即1T单片机。其最大速度为AT89C51单片机的8-12倍计即最大机器频率420Mhz,能满足该课题对微控制器的性能要求,而且这种单片机是目前很流行的单片机,价格便宜,性能好。综合来说,选择方案二。2.4显示部分方案一:LCD1602液晶显示。LCD1602属于工业字符型液晶,专门用来显示字母、数字、符号等,能够同时显示32个字符。它是一种点阵型液晶模块。它由若干个点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所,以它不能很好地显示图形。微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系

21、统中。方案二:LED数码管显示。led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。这些段分别由字母a,b,c,d,e,f,g,dp来表示。能显示0到9十个数字还能显示A、B、C、D、E、F英文字母,给相应的管脚输入电压,就会是数码管显示不同的数字或字母。对于显示模块的选择,需要考虑的是在能充分满足显示需要的情况下,尽量减少I/O口的占用。LED数码管只能显示十个数字和A到F六个英文字母,在本课题中,需要显示的有波形种类,频率单位HZ,幅度单位V,这些字符数码管都不能显示出来,所以方案一

22、舍弃。用LCD1602液晶显示可以很清楚的显示出波形的各种参数,与单片机链接仅仅需要占用13个I/O口。综合来看,选用方案一。第三章硬件原理在本课题中,波形的产生是通过STC12c5a60s2单片机,输出所需波形的采样数据,经过DA转换来得到波形。通过改变每个采样点延时时间来改变波形频率,通过单片机输出的PWM波来调节D/A模块的基准电压来改变波形幅度。电路图如下图所示: 幅度控制原理3.1STC12c5a60s2单片机的认识采用微处理器STC12c5a60s2作为控制器。这款单片机是单时钟机器周期的单片机,在8051单片机的基础上,增加了高速、低功耗、抗干扰的一些特点,在编程方面,指令代码完

23、全兼容8051,运行速度却是普通8051单片机的8到12倍,集成复位电路和两路pwm波输出,以及八路10位模数转换器。3.1.1STC12c5a60s2单片机简介1.这款单片机基于8051内核,指令代码完全兼容8051单片机。2.工作电压:5.5V - 3.5V。3.工作频率范围:能在035MHz范围内工作,相当于普通8051频率的8到11倍, 4.片上集成1280字节RAM。5.有EEPROM功能。6.外部掉电检测电路:在P4.6端口有一个低压门槛比较器。在5V单片机中,比较电压为1.33V,误差为单片机中,比较电压为1.31V,误差为3%。7.时钟源:具有内部时钟和外部时钟,用户在下载的时

24、候可以自主选择用哪个时钟源。常温下内部R/C振荡器频率为:单片机为:11MHz 17MHz;单片机为:8MHz 12MHz。精度要求不高时,可选择使用内部时钟。8.共有4个16位定时器。两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器。9.3个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟,独立波特率发生器可以在P1.0口输出时钟。10.PWM(2路)/ PCA(可编程计数器阵列,2路):也可用来当2路D/A使用。也可用来再实现2个

25、定时器。也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持)。3.1.2单片机内外部结构图3.2STC12C5A60S2单片机管引脚图3.1.3单片机脉宽调节模式(PWM)脉宽调制(PWM,Pulse Width Modulation)是一种使用程序来控制波形占空比、周期、相位波形的技术,在三相电机驱动、D/A转换等场合有广泛的应用。STC12C5A60S2系列单片机的PCA模块可以通过程序设定,使其工作于8位PWM模式。PWM模式的结构如下图所示CCAPMn,n=0,1PWMn输出1输出0(0,CL)=(EPCnL,CCPnL)(0,CL)(EPCnL,CCPnL)CL o

26、verflowEnableEPCnH CCAPnHEPCnL CCAPnL9位比较器0 CLECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn图3.3 PCA PWM mode / 可调制脉冲宽度输出模式所有PCA模块都可用作PWM输出(上图)。输出频率于 图)。输出频率取决于PCA定时器时钟源。由于所有模块共用仅有的PCA定时器,所以它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器EPCnL,CCAPnL有关。当寄存器CL的值小于EPCnL,CCAPnL时,输出为低;当寄存器CL的值等于或大于 ;当寄存器CL的值等于或大于 当寄存器CL的值等

27、于或大于 寄存器CL的值等于或大于 CL的值等于或大于EPCnL,CCAPnL时,输出为高。当CL的值由FF变为00溢出时,EPCnH,CCAPnH的内容装载到EPCnL,CCAPnL中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。由于PWM是8位的,所以: PWM的频率=PCA时钟输入源频率(3.1)PCA时钟输入源可以从以下8种中选择一种:SYSclk,SYSclk/2,SYSclk/4,SYSclk/6,SYSclk/8,SYSclk/12,定时器0的溢出,ECI/P3.4输入。举例:要求PWM输出频率为38KHz,选SYSc

28、lk为PCA/PWM时钟输入源,求出SYSclk的值:由计算公式38000=SYSclk/256,得到外部时钟频率SYSclk=38000 x 256 x 1=9,728,000如果要实现可调频率的PWM输出,可选择定时器0的溢出率或者ECI脚的输入作为PCA/PWM的时钟输入源:当EPCnL = 0及ECCAPnL = 00H时,PWM固定输出高。当EPCnL = 1及CCAPnL = 0FFH时,PWM固定输出低。当单片机某个I/O口作为PWM输出用时,I/O口的状态变化可以用下表来表示: PWM波输出端在输出PWM波的时候端口的变化PWM之前I/O口的状态PWM之时I/O口的状态弱上拉/

29、准双向口强推挽输出/强上拉输出要加输出限流电阻10K 1K强推挽输出强推挽输出/强上拉输出要加输出限流电阻10K 1K仅为输入/高阻PWM无效开漏开漏3.1.4如何将定时器T0/T1的速度提高12倍STC12C5A60S2 系列单片机的AUXR寄存器如下图所示:图3.4AUXR寄存器3.2DAC0808的选用3.2.1DAC0832的特点DAC0808是德州仪器(TI)公司生产的一块8位高速低功耗直通数模转换芯片。功耗仅仅为35毫瓦。该芯片有如下几个特点:相对精度:最大误差0.19;满量程电流匹配度:1LSB;快速建立时间:150ns;同相和数字信号输入TTL和COMS兼容;电源电压范围:18

30、v;低功耗:33毫瓦。3.2.2DAC0832和DAC0808芯片的选择在设计波形型号发生器的时候,我们要充分考虑到每一个因素。决定波形信号发生器能否达到设计要求,特别是频率部分,不仅仅取决于单片机的处理速度,还跟DA芯片的处理速度(即建立时间)息息相关。在利用单片机和DA芯片产生波形的时候,仅仅考虑DA的处理速度,波形的最小周期T等于建立最短时间t与每个周期量化电平个数N的乘积。即T=tNDA芯片决定的波形最大频率 F=1 T=1tN(3.2)在量化相对复杂的正弦波的时候,为了保证波形尽量圆滑,没有明显的阶梯,理论上取的点数越多,波形越圆滑,经过查证资料,我们取二百个电平来量化一个正弦波,如

31、果采用DAC0832,电流稳定时间为1us,最大频率F=12001MHz=5KHz(3.3)达不到设计要求的最大频率29KHz的频率要求;如果以牺牲取的电平数目为代价,要使波形能达到20KHz,则N最大只能取50,这样波形会出现很大的失真,如图所示:所以,我们不能采用DAC0832作为DA转换芯片。DAC0808,建立时间为150ns,取二百个电平量化正弦波的时候可以算出:F=12000.15MHz(3.4)能满足设计要求。同时,在仿真中,我们也验证了这个观点,如图所示可以看出,采用DAC0808作为DA转换芯片,所产生的正弦波波形比采用DAC0832转换芯片产生的正弦波质量高,波形圆滑。所以

32、在本设计方案里面采用DAC0808作为数模转换芯片。3.3LCD1602液晶显示屏1602液晶也叫1602字符型液晶,他是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个57或者511等点阵字符组成,每个点阵字符都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,真因为如此,在显示图像的时候表现不是很好,但是可以清楚具体的显示字符、数字和汉字。3.3.1 LCD1602显示屏的特点1.3.3V或5V工作电压,对比度可调。2.内含复位电路。3.提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。4.有80字节显示数据存储器D

33、DRAM。5.内建有192个5X7点阵的字型的字符发生器CGROM。6.8个可由用户自定义的5X7的字符发生器CGRAM。7. 微功耗、体积小、显示内容丰富。.2按键的设计由于在本课题设计中,为了不使波形产生中断,将使用中断的方式来响应按键的操作。所以需要设计一个按键模块,使单片机既能够产生中断,又能识别出是那个键按下了,以便采取相应的操作。一般,我们采用与门来连接开关,如下图所示。即只要有按键按下,就会激发单片机的外部中断,接下来单片机就开始检测连接键盘的几个I/O口,根据按键的不同,来做出不同的操作。 按键部分的设计原理第四章程序设计在本课题中,波形信号发生器的波形幅度、波形频率都是通过按

34、键来调节的,也就是说,都是通过单片机程序来控制波形幅度和频率,所以程序的设计,在本课题中尤为重要。下图为本次课题的程序总框图。图4.1程序总体框图4.1频率调节模块的程序设计在本课题中,为了便于频率方便统一调节,每一种模型都采用相同的电平数来量化,为了使所有的波形尽量平滑,我们统一采用两百个电平来刻画一个周期的波形。这样,一个波形的周期就等于200个电平保持的时间,我们改变每个电平的保持时间,就可以调节频率。波形周期计算公式如下:T=200t(4.1)每个电平保持的时间t,可以利用定时器来实现。在本课题中,我们采用的是24Mhz晶振,这样,我们可以算出计时个数N和波形周期T之间的关系。(4.2

35、)T=124N200(s)(4.3)F=24M200N(Hz)4.2幅度调节模块的程序设计幅度的调节是通过控制DAC0808芯片的基准电压来实现的,用单片机来控制电压的大小,需要用到PWM波和一个简单的低通滤波电路。通过调节PWM波的占空比来调节电压的大小。占空比,就是一个周期中,高电平所占的时间比例。当占空比为1的时候,电压就为5V,占空比为0的时候,电压为0V。在multisim中仿真可见效果如图:4.3存储模块的程序设计设计任务书中有要求存储波形的要求,其实对于程序来说,只需要存储波形的幅度,频率,和波形值到单片机的eeprom,这样即使单片机断电,也能在上电之后再次调出已经存储的波形。

36、在波形调出的时候,只需要把存储的数据放在相应的寄存器就可以实现波形的调出。需要注意的就是响应寄存器的设置和地址的选择。同一次修改的数据放在同一扇区,不是同一次修改的数据放在不同的扇区,不必用满,也可全用。4.4键盘模块的程序设计为了保证在输出波形的时候波形保持稳定不间断,所以在程序运行中不能一直花时间去扫描键盘,所以就采用中断的方式来响应按键。按下键之后,单片机响应中断,开始检测连接键盘的I/O口,读取数值,做出相应的变化。在实物制作时,键盘是连接在P3口,七个键盘分别连接在P30、P31、P33、P34、P35、P36、P37在发生中断时,先P3口的数据与0XFF相或。消除P32的干扰。再检

37、测哪位为0,从而识别哪个按键按下。第五章误差的来源与分析在做出硬件电路并且烧录好程序以后,硬件电路就可以开始工作了,在实际工作中可以发现有误差。5.1波形幅度的误差在实际测试中,可以发现,在调节好幅度之后,波形幅度不会马上变到相应的幅度值,而是需要一定的时间。这是因为在设计电路的时候电压时通过PWM波低通滤波来的,这样会导致在变化PWM波占空比的时候,后面产生的电压值需要一短时间才会稳定,这样也导致波形的幅度在调节之后需要一段时间才会达到调节的值。5.2频率的调节部分在实际工作中,频率调节可能不是很准确,有可能在按键调节的时候频率会不发生变化,或者变化很大。这是算法的问题。由于计时中计时个数与

38、频率之间的公式为F=24M200N(Hz),可以发现,N变化较小的时候F就会发生很大的变化,而且这个现象会随着F的增大(N的减小)而变得更加严重。我们可以通过减少晶振频率的方式来减缓此现象。第六章总结经过几个月的毕业设计,最终还是终于完成了波形信号发生器的制作,各项指标也基本达到了要求。在制作波形信号发生器的过程中,用单片机控制数模转换芯片来产生波形的方法是一个经典应用,在之前也有很多人用到过;但是需要精确量化波形的幅度和频率并且以较小的步进值来步进,还需要波形可以存储,这是在之前很少见到的,可以说是一个创新,至少在利用单片机控制转换芯片来制作波形信号发生器的制作中是这样。在本次毕业设计的制作

39、中,主要是以软件为主,硬件为辅。在编写程序的过程中,各个模块的程序都是用不同的文本来编写,各个模块之间的程序独立,很方便调用,可移植性强,几乎是程序编写中的经典。这次波形信号发生器的制作,各项指标都能达到任务书的要求,所以总体来说,这次毕业设计还是比较成功的。参考文献:1 童诗白.模拟电路技术基础M.北京:高等教育出版社,2000.171202.2 张永瑞.电子测量技术基础M.西安:西安电子科技大学出版社,2006.61101.3 张友德.单片微型机原理、应用与实践M.上海:复旦大学出版社,2004.4044.4 周明德.微型计算机系统原理及应用M.北京:清华大学出版社,2002.341364

40、.5 程朗.基于8051单片机的双通道波形发生器的设计与实现J.计算机工程与应用,2004.8:100103.6 Intel.MCS-51 Family of Single Chip MicrocomputersM.New York: Englewood Cliffs,1990:1-23.7 康华光.陈大钦.电子技术基础(模拟部分)M.北京:高等教育出版社,1999.8 .9 .10 .致谢在这几个月的毕业设计中遇到了很多困难,但是在邹老师和同学的帮助下,所有的问题都被一一解决。和在毕业设计中学到的知识一样,这种师生情,同学之间的友情,也是我的一笔财富。在这次毕业设计中,我巩固了很多在大学所学

41、的课程内容,很多疑惑都得到了答案,也使得自己所学的知识得到综合和利用。特别是单片机方面,全面的了解一片如今比较流行的高性能的单片机,斯沃学到了很多知识。在编写程序的时候也是。各种中断定时器的应用,EEPROM的存储和调用,液晶显示,程序模块化,这些都是我新学到的知识。所以我需要感谢这次的毕业设计,给了我这个学习的机会。在这次毕业设计结束之际,我要感谢我的指导老师邹老师。在很多次遇到问题,毕业设计进度停滞不前的情况下,老师都能及时的给我解惑。也正因为老师的帮助,才使得这次毕业设计获得成功。在此,我还要感谢和我一起完成毕业设计的同学,在这次毕业设计中,我们紧密合作,互相协助,不仅锻炼了我们的沟通能

42、力,还培养了我们的团队精神。最后,我还要感谢我们学校,在这次毕业设计中提供给我们良好的环境以及便利的条件,让我们更好的投入到这次的毕业设计中。马 雷 2014年5月26日附录:附录一: 原件清单元器件名称数量STC12C3A60S2单片机1LCD1602液晶显示屏1LM2341DAC08081400uF电解电容3个1000uF电解电容三个103排4阻1个带锁按键1个普通按键七个Led发光二极管红黄绿各一个Dip40插座1个Dip16插座1个Dip14 插座1个1K欧姆电阻5个10K欧姆电阻2个2个100欧姆电阻1个12M晶振1个104瓷片电容2个附录二:电路原理图附录三:PCB版图附录四:实物

43、图附录五:源程序*/ 简易数字函数发生器/ 采用的是24MHZ的晶振频率/ 指导老师:邹道胜/*/#include #include#include #include /* 主程序*/void main()uint out_V,w,out_VX;LCD_initial(); num_V=100;num_F=2;iniai();InitADC(); /对内部ADC初始化string(0 x80,press No.1 key!);while(1)tt=P3;if(tt!=0 xff)TR0=0;TR1=0;keey_main(); /按键处理程序TR0=1;TR1=1;w+;if(w=1000)w

44、=0;out_V=adc_isr(2); /采集输出电压out_VX=out_V*0.488;write_command(0 xc8); write_data(temp1out_VX/100); write_data(temp110);write_data(temp1out_VX/10/10); write_data(temp1out_VX%10);write_data(V);/* 定时器1,产生PWM波*/void timer1() interrupt 3if(!pwmx)TH1=0 xff;TL1=0 xff-num_V;else TH1=0 xff;TL1=0 x37+num_V; /占

45、空比20%pwmx=pwmx;PWM=pwmx;/* 定时器0*/void timer0() interrupt 1TH0=THtemp;TL0=TLtemp;if(mode=0) sine_out();else if(mode=1) triangle_out();else if(mode=2) square_out();/* 按键处理程序*/void keey_main()te=keey(); switch(te)/* 波形选择*/case 1:mode+;if(mode2)mode=0;if(mode=0)THtemp=waveTH_Sinum_F;TLtemp=waveTL_Sinum_

46、F;elseif(mode=1)THtemp=waveTH_Trnum_F;TLtemp=waveTL_Trnum_F;elseTHtemp=waveTH_Sqnum_F;TLtemp=waveTL_Sqnum_F;while(!key);break;/* 频率加 */case 2:if(num_F1)num_F-;if(mode=0)THtemp=waveTH_Sinum_F-1;TLtemp=waveTL_Sinum_F-1;else if(mode=1)THtemp=waveTH_Trnum_F-1;TLtemp=waveTL_Trnum_F-1;elseTHtemp=waveTH_Sq

47、num_F-1;TLtemp=waveTL_Sqnum_F-1;break;/* 幅度加 */case 4:if(num_V0)num_V-;break;/* 存储数据*/case 6: Sector_Erase(0);Byte_Program(range,0);/将range的数据存到eeprom里面Byte_Program(num_F,1); /将fre的数据存到eeprom里面Byte_Program(mode,2); /将mode的数据存到eeprom里面write_command(0 xcd); /LCD写指令write_data(O); /LCD写数据write_data(K);

48、/LCD写数据while(!key);break;/* 读出数据*/case 7:range=Byte_Read(0); /将对应的数据从eeprom中读出来赋给rangenum_F=Byte_Read(1); /将对应的数据从eeprom中读出来赋给fremode=Byte_Read(2); /将对应的数据从eeprom中读出来赋给modewrite_command(0 xcd); /LCD写指令write_data( ); /LCD写数据write_data( ); /LCD写数据while(!key);if(mode=0)THtemp=waveTH_Sinum_F;TLtemp=wave

49、TL_Sinum_F;else if(mode=1)THtemp=waveTH_Trnum_F;TLtemp=waveTL_Trnum_F;elseTHtemp=waveTH_Sqnum_F;TLtemp=waveTL_Sqnum_F;break;default :break;switch(mode)case 0:string(0 x80 , Select Wave: ); /正弦波/*/write_command(0 xc0); write_data(temp1num_F/100);write_data(temp1num_F%100/10);/写频率write_data(temp1num_F

50、%10);write_data(temp10);write_data(temp10);write_data(H);write_data(Z);/*/*write_command(0 xc8); write_data(temp1range/100); write_data(temp110); /LCD写幅度write_data(temp1range%100/10); write_data(temp1range%10);*/*/ break;case 1:string(0 x80 , Triangle Wave: );/写显示三角波形/*/write_command(0 xc0); write_d

51、ata(temp1num_F/100);write_data(temp1num_F%100/10);/写频率write_data(temp1num_F%10);write_data(temp10);write_data(temp10);write_data(H);write_data(Z);/*/*write_command(0 xc8); write_data(temp1range/100); write_data(temp110); /LCD写幅度write_data(temp1range%100/10); write_data(temp1range%10); */break;case 2

52、:string(0 x80 , Square Wave: ); /方波write_command(0 xc0); write_data(temp1num_F/100);write_data(temp1num_F%100/10);/写频率write_data(temp1num_F%10);write_data(temp10);write_data(temp10);write_data(H);write_data(Z);/*/write_command(0 xc8); /write_data(temp1range/100); /write_data(temp110); /LCD写幅度/write_

53、data(temp1range%100/10); /write_data(temp1range%10);break;default :break;#include #define uchar unsigned char#define uint unsigned intvoid iniai()EA=1;TMOD|=0 x11; /定时器0TR1=1;ET1=1;TH1=0 xf0;TL1=0 xf0;ET0=1;TH0=0 xfe;TL0=0 xfe;/IP=0 x02; /设置定时器为高优先级AUXR|=0X80; /T0工作在1T模式/TH0=0 xff; #include #define

54、uchar unsigned char#define uint unsigned intvoid delay_key(uchar z) uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);uchar keey()uchar aa,cc;aa=P3;cc=0;if(aa|0 x04)!=0 xff)switch(aa|0 x04)case 0 xfe:cc=1;break;case 0 xfd:cc=2;break;case 0 xf7:cc=3;break;case 0 xef:cc=4;break;case 0 xdf:cc=5;break;case 0 xbf:

55、cc=6;break;case 0 x7f:cc=7;break;default :cc=0;break;return cc;#include #define uchar unsigned char#define uint unsigned int#define DAdata P2uchar wavecount;bit judge;extern num_F;uchar aa;uchar code triangle_tab= /每隔数字8,采取一次0 x00,0 x08,0 x10,0 x18,0 x20,0 x28,0 x30,0 x38,0 x40,0 x48,0 x50,0 x58,0 x

56、60,0 x68,0 x70,0 x78,0 x80,0 x88,0 x90,0 x98,0 xa0,0 xa8,0 xb0,0 xb8,0 xc0,0 xc8,0 xd0,0 xd8,0 xe0,0 xe8,0 xf0,0 xf8,0 xff,0 xf8,0 xf0,0 xe8,0 xe0,0 xd8,0 xd0,0 xc8,0 xc0,0 xb8,0 xb0,0 xa8,0 xa0,0 x98,0 x90,0 x88,0 x80,0 x78,0 x70,0 x68,0 x60,0 x58,0 x50,0 x48,0 x40,0 x38,0 x30,0 x28,0 x20,0 x18,0 x

57、10,0 x08,0 x00;uchar code sine_tab256=/输出电压从0到最大值(正弦波1/4部分)0 x80,0 x83,0 x86,0 x89,0 x8d,0 x90,0 x93,0 x96,0 x99,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb1,0 xb4,0 xb7,0 xba,0 xbc,0 xbf,0 xc2,0 xc5,0 xc7,0 xca,0 xcc,0 xcf,0 xd1,0 xd4,0 xd6,0 xd8,0 xda,0 xdd,0 xdf,0 xe1,0 xe3,0 xe5,0 xe7,0 xe9,0

58、 xea,0 xec,0 xee,0 xef,0 xf1,0 xf2,0 xf4,0 xf5,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0 xfb,0 xfc,0 xfd,0 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,/输出电压从最大值到0(正弦波1/4部分)0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfd,0 xfd,0 xfc,0 xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 xf4,0 xf2,0 xf1,0 xef,0 xee,0 xe

59、c,0 xea,0 xe9,0 xe7,0 xe5,0 xe3,0 xe1,0 xde,0 xdd,0 xda,0 xd8,0 xd6,0 xd4,0 xd1,0 xcf,0 xcc,0 xca,0 xc7,0 xc5,0 xc2,0 xbf,0 xbc,0 xba,0 xb7,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99 ,0 x96,0 x93,0 x90,0 x8d,0 x89,0 x86,0 x83,0 x80,/输出电压从0到最小值(正弦波1/4部分)0 x80,0 x7c,0 x79,0 x76,0 x72,

60、0 x6f,0 x6c,0 x69,0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e,0 x4c,0 x48,0 x45,0 x43,0 x40,0 x3d,0 x3a,0 x38,0 x35,0 x33,0 x30,0 x2e,0 x2b,0 x29,0 x27,0 x25,0 x22,0 x20,0 x1e,0 x1c,0 x1a,0 x18,0 x16 ,0 x15,0 x13,0 x11,0 x10,0 x0e,0 x0d,0 x0b,0 x0a,0 x09,0 x08,0 x07,0 x06,0 x05,0 x04,0 x03

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论