第一篇:开题报告, 单片机实现一个简单的信号发生器
单片机实现一个简单的信号发生器
一、课题来源及研究的目的和意义
1.1课题来源
教师虚拟。
1.2研究的目的及意义
本课题是基于单片机的信号发生器的设计。研究本课题可以熟悉c语言,MATLAB及相关电子器件的功能和用法。通过对单片机硬件、软件的设计,及硬件与软件的联调后可以进一步熟悉相关的知识,提高利用所学知识解决实际问题的能力。
二、课题所涉及的问题在国内(外)研究现状分析
单片微型计算机,简称单片机,是微型计算机的一个分支。采用超大规模技术把具有数据处理能力(如算术运算、逻辑运算、数据传送、中断处理)的微处理器,随机存取数据存储器,只读程序存储器,输入输出电路等电路集成到一块单块芯片上,构成一个体积小,然而功能较完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
单片机诞生20世纪70年代。当时微电子技术正处于发展阶段,集成电路也属于中规模发展时期,各种新材料新工艺尚未成熟,单片机仍处在初级的发展阶段,元件集成规模还比较小,功能比较简单。1976年INTEL公司推出了MCS-48单片机,这个时期的单片机才是真正的8位单片微型计算机,并推向市场。到了80年代初,单片机已发展到了高性能阶段,像INTEL公司的MCS-51系列。九十年代以后,单片机获得了飞速的发展,世界各大半导体公司相继开发了功能更为强大的单片机。美国Microchip公司发布了一种完全不兼容MCS-51的新一代PIC系列单片机,引起了业界的广泛关注,特别它的产品只有33条精简指令集吸引了不少用户。1990年美国INTEL公司推出了80960超级32位单片机引起了计算机界的轰动,产品相继投放市场,成为单片机发展史上又一个重要的里程碑。我国的单片机应用始于80年代,虽然发展迅速,但相对于世界市场我国的占有率还很低。到目前为止,由于我国的微电子技术和制造工艺都比较落后及国外单片机的竞争等原因,我国还没有设计生产出自己的单片机。国内的单片机目前注重的还只是低中档的应用,普遍采用的是8或16位的单片机,对宏单片机和DSP等高档的应用还处于初始阶段。
Keil是一个优秀的单片机C语言编译器,他几乎支持所有51系列的单片机的汇编语言,和c语言编程。
Keil Software 的8051开发工具提供以下程序,你可以用它们来编译你的C源码,汇编你的汇编源程序,连接和重定位你的目标文件和库文件,创建HEX文件,调试你的目标程序。
Windows应用程序uVision2是一个集成开发环境,它把项目管理,源代码编辑,程序调试等集成到一个功能强大的环境中。
C51美国标准优化C交叉编译器从你的C源代码产生可重定位的目标文件。
A51宏汇编器从你的8051汇编源代码产生可重定位的目标文件。
BL51连接/重定位器组合你的由C51和A51产生的可重定位的目标文件,生成绝对目标文件。
LIB51库管理器组合你的目标文件,生成可以被连接器使用的库文件。OH51目标文件到HEX格式的转换器从绝对目标文件创建Intel HEX 格式的文件。
RTX-51实时操作系统简化了复杂和对时间要求敏感的软件项目。
软件开发流程C运行连接库包含一些标准的子程序,如:格式化输出,数字转换,浮点运算。
由于程序的模块结构技术,使得现有的程序段可以很容易的包含到新的程序中去。
ANSI 标准的C语言是一种丰常方便的,获得广泛应用的,在绝大部分系统中都能够很容易得到的语言。
因此,如果需要,现有的程序可以很快地移植到其他的处理器上,节省投资。代码优化
C51是一个杰出的优化编译器,它通过很多步骤以确保产生的代码是最有效率的(最小和/或最快)。编译器通过分析初步的代码 产生最终的最有效率的代码序列,以此来保证你的C语言程序占用最少空间的同时运行的快而有效。
C51编译器提供9个优化级别。每个高一级的优化级别都包括比它低的所有优化级别的优化内容。以下列出的是目前C51编译器提供的所有优化级别的内容:常量折叠:在表达式及寻址过程中出现的常量被综合为一个单个的常量。跳转优化:采用反转跳转或直接指向最终目的的跳转,从而提升了程序的效率。
哑码消除:永远不可能执行到的代码将自动从程序中剔除。
寄存器变量:只要可能,局部变量和函数参数被放在CPU寄存器中,不需要为这些变量再分配存储器空间。
通过寄存器传递参数:最多三个参数通过寄存器传递。
消除全局公用的子表达式:只要可能,程序中多次出现的相同的子表达式或地址计算表达式将只计算一次。
合并相同代码:利用跳转指令,相同的代码块被合并。
重复使用入口代码:需要多次使用的共同代码被移到子程序的前面以缩减代码长度。
公共块子程序:需要重复使用的多条指令被提取组成子程序。指令被重新安排以最大化一个共用子程序的长度。
三、任务要求及实现预期目标的可行性分析
3.1课题的任务要求
单片机实现简单的信号发生器设计的要求运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。
基本要求:
1.产生三种以上波形。如正弦波、三角波、矩形波等。
2.最大频率不低于 500Hz。并且频率可按一定规律调节,如周期按1T,2T,3T,4T或1T,2T,4T,8T变化。
3.幅度可调,峰峰值在0——5V之间变化。
扩展要求:产生更多的频率和波形。
3.2可行性分析
波形发生器是一种常用的信号源,在自动控制系统设计、调试和电子实验过程中,经常会遇到需要不同频率的正弦波、矩形波、三角波等信号作为信号源。目前国内生产的波形发生器大部分是利用分立元件组成的,然后根据具体的需要加入积分电路等构成正弦、矩形、三角等波形发生器。这种波形发生器输出频率范围窄且电路设计参数设定比较繁琐,其频率的大小的测量往往需要通过硬件电路的切换来实现不同濒率范围值的测量,电路设计复杂、操作不便。且体积大,可靠性、准确性都比较差,不能满足科研、生产的要求。利用单片机芯片和外接少量的元器件,能制成质量技术指标先进,结构轻巧,价格低廉,用途广泛的波形发生器。它既可以用坐一般低频放大器频响测试,失真分析、电路瞬态响应测试、线性分析,也可以做成各种信号源。
在上述的基础上,如利用单片机进行控制,那么仪器的功能和准确度将有一个飞跃,即成为多功能智能波形发生器,该仪器电路结构简单,虽然功能及性能指标赶不上标准信号发生器,但满足一般的实验要求是不成问题的,并且其成本低、体积小,更容易被大家接受,而且还可作为电子产品维修人员的重要随身设备之一。
四、需要重点研究的、关键的问题及解决的思路
本课题主要是设计用单片机实现一个简单的信号发生器,运用c语言编程进行设计,然后采用matlab进行仿真。主要就是要确定所需要的信号的类型,有正弦波,三角波,方波等。
用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。系统的应具有下列特点:
(1)根据软件功能要求,将系统软件分成若干个独立的部分。设计出软件的总体结构,使其结构清晰、流程合理。
(2)要树立结构化程序设计风格,各功能程序模块化、子程序化。既便于调试、链接,又便于移植、修改。
(3)建立正确的数学模型。即根据功能要求,描述各个输入和输出变量之间的数学关系,它是关系到系统好坏的重要因素。
(4)为提高软件设计的总体效率,以简明、直观法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。
(5)要合理分配系统资源,包括ROM、RAM、定时数器、中断资源等。
(6)注意在程序的有关位置处写上功能注释,提高程序的可读性。
(7)加强软件抗干扰设计,它是提高系统应用可靠性的有利措施。
当写好了程序之后就是要设计matlab中的仿真过程,看是否符合要求,当一切顺利之后就烧到单片机内,进行实践。
五、必须的工作条件及解决办法
5.1开发环境
操作系统:Windows XP。
应用软件:MATLAB7.0,keil C 5.2开发工具
C言是1972年由美国的Dennis Ritchie设计发明的,并首 次在UNIX操作系统的 DEC PDP-11 计算机上使用。它由早期的编程语言BCPL(Basic Combind Programming Language)发展演变而来,在1970年,AT&T贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,最后导致了C语言的问世。
随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准, 使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。C语言是世界上流行、使用最广泛的高级程序设计语言之一。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。
六、工作方案及进度计划
第1周——第3周:阅读相关参考资料,并做好课题的需求分析。
第4周——第6周:根据相关的参考资料,设计课题的系统结构。
第7周——第8周:完成开题报告的写作。
第9周——第10周:信号发生器控制原理熟悉,总体方案的拟定。
第11周——第13周:信号发生器模块的软件编程和设计。
第14周——第16周:系统软件调试以及软件的模拟仿真,从而不断完善设计。第17周——第18周:论文交指导教师和评阅教师评阅,定终稿。
第19周——第20周: 准备答辩。
七、参考文献
[1]余永权,李小青,陈林庚.单片机应用系统的功率接口技术.[M]北京航空航天大学出版社,1992.[2]邵时,沈建华,王荣良.微机接口与通信实践教程[M].华东师范大学出版社,1997.[3]张毅刚,修林成,胡振江.MCS-51单片机应用设计[M].哈尔冰工业大学出版社,1992
[4]盛琳阳,孙菊江.微型计算机原理[M].西安电子科技大学出版社,2000
[5]程全.基于AT89C52实现的多种波形发生器的设计[J].周口师范学院学报,2005.[6]周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2002.[7]刘乐善.微型计算机接口技术及应用[M].北京:航空航天大学出版社,2001.[8]童诗白.模拟电路技术基础[M].北京:高等教育出版社,2000.[9]陈慈发.微型计算机技术[M].高等教育出版社,2005.[10]汪文.单片机原理及应用[M],华中科技大出版社,2007.[11]张洪润.单片机应用设计200例[M],航空航天大学出版社,2006.[12]孙传友,孙晓斌.测控系统原理与设计[M].北京航空航天大学出版社,2002.[13]陈海宴.51单片机原理及应用—基于keil C与Proteus[M].北京航空航天大学出版社,2007.[14]徐爱钧.Keil Cx51 V7.0单片机高级语言编程与u Vision2应用实践[M].电子工业出版
社,2004
[15]徐爱钧.单片机高级语言C51 Windows环境编程与应用[M].电子工业出版社,2000
[16]马忠梅.单片机的c语言程序设计[M].北京航空航天大学出版社,2007
[17]汪文.单片机原理及应用[M].华中科技大出版社,2007.[18]马刚.用Proteus和Keil整合构建单片机虚拟仿真平台[M],现代电子技术,2006.[19]宁成军.基于Proteus和Keil接口的单片机外围硬件电路仿真[M],现代电子技术,2006.[20]朱善君.单片机接口技术与应用[M],清华大学出版社,2005.
第二篇:函数信号发生器 开题报告
毕业设计(论文)开题报告
题目
函数信号发生器
专 业 名 称
电子信息工程
班 级 学 号
118501106
学 生 姓 名
蔡伟攀
指 导 教 师
邓洪峰
填 表 日 期
201年 3 月 日
说
明
开题报告应结合自己课题而作,一般包括:课题依据及课题的意义、国内外研究概况及发展趋势(含文献综述)、研究内容及实验方案、目标、主要特色及工作进度、参考文献等内容。以下填写内容各专业可根据具体情况适当修改。但每个专业填写内容应保持一致。
一、选题的依据及意义
1.选题依据
信号发生器(signal generator)又称信号源或振荡器,是输出供给量,产生频率、幅度、波形等主要参数都可调的信号,用于测量的信号发生器指的是能够产生不同频率、不同幅度的规则或不规则的信号源,在电子系统的测量、实验、校准和维护中的得到广泛的应用。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波甚至任意波形,各种波形曲线均可用三角函数方程式表示。如在制作和调试音频功率放大器时,就需要人为的输入一个标准音频信号,才能测量功率放大器的输出,得到功率放大器的相关参数,此时要用到的这个标准音频信号就是由信号发生器提供的,可见信号发生器的应用很广。信号发生器其作用是:测量网络的幅频特性、相频特性;测量网络的瞬态响应;测量接收机;测量元件参数等。
信号源可以分为通用和专用两种,通用信号源包括:正弦信号源、脉冲信号源、函数信号源、高频信号源、噪声信号源;专用信号源包括:电视信号源、编码脉冲信号源。信号发生器根据输出波形可以分为:正弦信号发生器、函数信号发生器、脉冲信号发生器和噪声信号发生器。
(1)正弦信号发生器
主要用于测量电路和系统的频率特性、非线性失真、增益及灵敏度等。按照其不同性能和用途还可以分为低频(20Hz~10MHz)信号发生器、高频(100kHz~300MHz)信号发生器、微波信号发生器、扫频和程控发生信号发生器、频率合成式信号发生器等。
(2)函数(波形)信号发生器
能产生特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号,频率范围可以从几微赫兹到几十兆赫兹。除供通信、仪表和自动控制系统测试外,还广泛用于其他非电测量领域。
(3)脉冲信号发生器
能产生宽度、幅度和重复频率可调的矩形脉冲的发生器,可用以测试线性系统的瞬态响应,或用作模拟信号来测试雷达、多路通信和其他脉冲数字系统的性能。
(4)随机信号发生器
通常又分为噪声信号发生器和伪随机信号发生器两种。噪声信号发生器的主要用途为:在待测系统中引入一个随机信号,以模拟实际工作条件中的噪声而测定系统性能;外加一个已知噪声信号与系统内部噪声比较以测定噪声系数;用随机信号代替正弦或脉冲信号,以测定系统动态特性等。当用噪声信号进行相关函数测量时,若平均测量时间不够长,会出现统计行误差,可用伪随机信号来解决。
信号发生器按照用途分可以分为专用信号发生器和通用信号发生器等;按照性能有普通信号发生器和标准信号发生器;按照调制类型可以分为调幅信号发生器、调频信号发生器、调相信号发生器、脉冲调制信号发生器及组合调制发生器等;按照频率调节方式可以分为扫频信号发生器、程控信号发生器等。
传统的波形发生器大多是采用分立元件组成的,这种电路存在波形质量差、控制难、可调范围小、电路复杂和体积大等特点,特别是对于低频信号而言,这些问题更是突出。而用单片机构成的函数信号发生器可以克服这些问题,还能产生正弦波、三角波、方波等波形,而且波形的幅度和频率都是可以改变的。
2.选题意义
函数发生器是电子电路等各种实验中必不可少的实验设备之一,设计函数发生器是一个很好的选题,因此我们要熟悉的掌握它的工作原理。本课题是研究设计一个基于51单片机的函数信号发生器,和其他方案的设计比起来成本较低而且精度较高,最重要的是开发起来简单易于调试,相对来说具有一定程度的社会和经济价值。在如今的社会,电子科技发展猛速,社会依靠电子科技有了本质的改变,人们的价值观和需求也在改变,因此基于单片机的函数信号发生器会越来越进入我们的使用范围。
二、国内外研究概况及发展趋势(含文献综述)
以前,信号发生器全部属于模拟方式,借助电阻电容,电感电容、谐振腔、同轴线作为振荡回路产生正弦或其它函数波形。频率的变动由机械驱动可变元件,如电容器或谐振腔来完成,往往调节范围受到限制,因而划分为音频、高频、超高频、射频和微波等信号发生器。随着无线电应用领域的扩展,针对广播、电视、雷达、通信的专用信号发生器亦获得发展,表现在载波调制方式的多样化,从调幅、调频、调相到脉冲调制。
后来,数字技术日益成熟,信号发生器绝大部分不再使用机械驱动而采用数字电路,从一个频率基准由数字合成电路产生可变频率信号。调制方式更加复杂,出现同相/正交调制至宽频数字调制。数字合成技术使信号发生器变为非常轻便、覆盖频率范围宽、输出动态范围大、容易编程、适用性强和使用方便的激励源。过去测量1GHz以上的射频和微波元部件需要几个信号要手动操作,现在一台高档信号发生器可提供1MHz至65GHz的带宽,而且全部程控操作,从实验室的台式,生产车间的便携式至现场的手持式应用都有大量信号发生器可供选择。特别是微处理器的出现,更促使了信号发生器向着智能化、自动化方向发展。
现在,许多信号发生器除带有微处理器,因而具备了自校、自验、自动故障诊断和自动波形形成和修正等功能外,还带有IEEE-488或RS232总线,可以和控制计算机及其他测量仪器仪器方便地构成自动测试系统。目前比较让大家熟悉的发生器有这么一些,如正弦信号发生器、低频和高频信号发生器、微波信号发生器、锁相信号发生器和合成信号发生器等等。
正弦信号发生器:正弦信号主要用于测量电路和系统的频率特性、非线性失真、增益及灵敏度等。按频率覆盖范围分为低频信号发生器、高频信号发生器和微波信号发生器;按输出电平可调节范围和稳定度分为简易信号发生器(即信号源)、标准信号发生器(输出功率能准确地衰减到-100分贝毫瓦以下)和功率信号发生器(输出功率达数十毫瓦以上);按频率改变的方式分为调谐式信号发生器、扫频式信号发生器、程控式信号发生器和频率合成式信号发生器等。
低频信号发生器:包括音频(200~20000赫)和视频(1赫~10兆赫)范围的正弦波发生器。主振级一般用RC式振荡器,也可用差频振荡器。为便于测试系统的频率特性,要求输出幅频特性平和波形失真小。
高频信号发生器:频率为100千赫~30兆赫的高频、30~300兆赫的甚高频信号发生器。一般采用 LC调谐式振荡器,频率可由调谐电容器的度盘刻度读出。主要用途是测量各种接收机的技术指标。输出信号可用内部或外加的低频正弦信号调幅或调频,使输出载频电压能够衰减到1微伏以下。
微波信号发生器:从分米波直到毫米波波段的信号发生器。信号通常由带分布参数谐振腔的超高频三极管和反射速调管产生,但有逐渐被微波晶体管、场效应管和耿氏二极管等固体器件取代的趋势。仪器一般靠机械调谐腔体来改变频率,每台可覆盖一个倍频程左右,由腔体耦合出的信号功率一般可达10毫瓦以上。简易信号源只要求能加1000赫方波调幅,而标准信号发生器则能将输出基准电平调节到1毫瓦,再从后随衰减器读出信号电平的分贝毫瓦值;还必须有内部或外加矩形脉冲调幅,以便测试雷达等接收机。
锁相信号发生器是由调谐振荡器通过锁相的方法获得输出信号的信号源。这类信号发生器频率的精度和稳定度很高,但要实现快速和数控比较困难,同时输出信号的频率分辨率较差。实现高分辨率的信号发生器,采用锁相环来实现有一定的难度,尤其是覆盖低频和高频的信号发生器采用锁相实现比较困难。
合成信号发生器是采用频率合成方法构成的信号发生器。合成信号发生器中使用一个晶体参考频率源,所需的各种频率都由它经过分频、混频和倍频后得到的,因而合成器输出频率的稳定性和精度与参考源一样,现在绝大多数频率合成技术都使用这种合成方法。这类信号发生器具有频率稳定度高、分辨率高、输出信号频率范围宽、频率易于实现程序控制、可以实现多种波形输出及频率显示方便等优点。
当前信号发生器总的趋势是向着宽频率、高频率精多功多用自动化和智能化方向发展。
我国已经开始研制函数信号波形发生器,并取得了可喜的成果。但总的来说我国的函数信号波形发生器还没有形成真正的产业。就目前国内的成熟产品来看,多为一些PC仪器插卡,独立的仪器和VXI系统的模块很少,并且我国目前在函数信号波形发生器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫。
三、研究内容及实验方案
1.研究内容:
(1)系统的硬件设计:利用51单片机作为控制电路和DAC0832芯片进行数模转换构成函数信号发生器。使得电路能产生正弦波、三角波、方波、锯齿波和梯形波。同时对幅度和频率进行相应的控制。
(2)系统的软件设计:在本次设计中要用到Altium Designer软件进行PCB制图,然后编写程序要在Keil C51环境中编译,再把程序导入STC89C51芯片中,最后利用示波器观察所要得到的波形结果。
2.实验方案:
函数信号发生器系统主要由硬件系统和软件系统两部分组成。这次设计的函数信号发生器由单片机(STC89C51)作为主控制电路,和DAC0832芯片进行数模转换构成函数信号发生器。另外由复位电路、稳压电源控制电路、整流部分、波形放大电路、按键控制部分、LCD液晶显示电路等构成,系统框图如下图所示:
系统组成框图
波形由所编程序控制产生,由单片机为核心控制电路,向D/A的输入端按照一定的规律传送数据,将数字信号转变成模拟信号,再由DAC0832的输出端输出信号,输出的信号经过波形转换电路运算放大器LM324得到不同的波形。通过程序和按键控制部分来选择波形的类型、调制波形的幅度和频率。最后在LCD1602上显示波形的类型及数值。
四、研究目标、主要特色及工作进度
1.研究目标:
(1)设计函数发生器,利用51单片机作为控制电路,使该函数发生器能产生正弦波、三角波、方波、锯齿波、梯形波。
(2)使用同一按键选择五个波形,依次输出。要求幅度范围控制在0~5V,正弦波的频率范围控制在10~50Hz,步进值为10Hz;三角波的频率范围控制 在50~250Hz,步进值为50Hz;方波的频率范围控制在200~1000Hz,步进值为200Hz;锯齿波的频率范围控制在100~500Hz,步进值为100Hz;梯形波的频率范围控制在50~250Hz,步进值为50。(3)输出波形的同时实物上的LCD第一行显示内容为:
输出正弦波时显示:Sine Wave;
输出三角波时显示:Triangle Wave;
输出方波时显示:Square Wave;
输出锯齿波时显示:Sawtooth Wave;
输出梯形波时显示:Trapezoidal Wave;
第二行显示内容为:Frequency: *** Hz。
2.主要特色:
设计的信号发生器功能比较齐全能输出几种波形、性能高、波形精度高失真小、电路结构框图较简单,容易调试和操作,使用程序控制单片机使得修改起来方便。
3.工作进度:
1.完成外文资料翻译 第1周——第2周 2.上网查询相关资料,完成开题报告,确定设计方案 第3周——第4周 3.完成软硬件设计 第5周——第6周 4.进行软硬件调试 第7周——第9周 5.毕业设计论文初稿 第10周——第13周 6.修改和完善毕业论文 第14周——第15周 7.提交毕业论文准备论文答辩 第16周——第17周
五、参考文献
[1] 江志红.51单片机技术与应用系统开发案例精选[M].北京:清华大学出版社.2008.12.[2] 臧春华,邵杰,魏小龙.综合电子系统设计与实践[M].北京:北京航空航天大学出社.2009.11.[3] 王松武,于鑫,武思军.电子创新设计与实践[M].北京:国防工业出版社.2005.1.[4] 宁武,唐晓宇,闫晓金.全国大学生电子设计竞赛基本技能指导[M].北京:电子工业出社.2009.5.[5] 马玉丽,康丽娟.函数信号发生器制作方法的比较与分析[J].青岛远洋船员学院学 报.2007,28(2):34~37.[6] 张少辉.基于DDS技术构建信号发生器[J].中国科技信息.2007,(1):94~96.[7] Qiu Hui taught you how to learn 51 SCM Beijing: Electronic Industry Press [M].2009.1.[8] Zhaoquan Li, Xiao Xingda Principles and Applications Guide(second edition)[M] Beijing: Mechanical Industry Press.2010.1.
第三篇:基于51单片机函数信号发生器设计.
摘 要: 本系统利用单片机AT89S52采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。
关键词:单片机AT89S52、DAC0832、液晶1602 Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile.In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave.Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602.this design includes three modules.They are D/A conversion module, wave generate module and liquid crystal display of LED module.In this design, the wave generator into wave form module and D/A conversion module are discussed in detail.key word: AT89S52, DAC0832, liquid crystal 1602.目录
1.系统设计
1.1 设计要求
1.2方案设计与论证
1.2.1 信号发生电路方案论证 1.2.2 单片机的选择论证 1.2.3 显示方案论证 1.2.4 键盘方案论证 1.3 总体系统设计 1.4 硬件实现及单元电路设计 1.4.1 单片机最小系统的设计
1.4.2 波形产生模块设计 1.4.3 显示模块的设计 1.4.4 键盘模块的设计
1.5 软件设计流程 1.6 源程序
2.输出波形的种类与频率的测试
2.1 测试仪器及测试说明
2.2 测试结果 3.设计心的及体会 4.附录 4.1 参考文献 4.2 附图
1、系统设计
经过考虑,我们确定方案如下:利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
1.1、设计要求
1、利用单片机采用软件设计方法产生三种波形 2)、三种波形可通过键盘选择 3)、波形频率可调
4)、需显示波形的种类及其平率
1.2方案设计与论证
1.2.1 信号发生电路方案论证
方案一:通过单片机控制D/A,输出三种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。
方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。
方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。但此方案成本高,程序复杂度高。
以上三种方案综合考虑,选择方案一。
1.2.2 单片机的选择论证
方案一:AT89S52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。
方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。但其价格较贵
以上两种方案综合考虑,选择方案一
1.2.3 显示方案论证
方案一:采用LED数码管。LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。
方案二:采用LCD液晶显示器1602。其功率小,效果明显,显示编程容易控制,可以显示字母。
以上两种方案综合考虑,选择方案二。
1.2.4 键盘方案论证
方案一:矩阵式键盘。矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。当某一个键闭合时,该键所对应的行线和列线被短路。
方案二:编码式键盘。编码式键盘的按键触点接于74LS148芯片。当键盘上没有闭合时,所有键都断开,当某一键闭合时,该键对应的编码由74LS148输出。
以上两种方案综合考虑,选择方案一。
1.3总体系统设计
该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。将设计任务分解为按键电路、液晶显示电路等模块。图(1)为系统的总体框图
图(1)总体方框图
1.4硬件实现及单元电路设计
1.4.1单片机最小系统的设计
89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图(2)89C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:
(1 有可供用户使用的大量I/O口线。(2 内部存储器容量有限。(3 应用系统开发具有特殊性。
图(2)89C51单片机最小系统
1.4.2 波形产生模块设计
由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。其电路图如下:
图(3)波形产生电路
如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。DAC0832的为八位数据并行输入的,其结构图如下:
图(4)DAC0832的内部结构
1.4.3 显示模块的设计
通过液晶1602显示输出的波形、频率,其电路图如下:
图(5)液晶显示
如上图所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、E分别接单片机的P3.2—P3.4。通过软件控制液晶屏可以显示波形的种类以及波形的频率。
1.4.4 键盘显示模块的设计
本系统采用独立键盘,其连接电路图如下:
图(6)键盘
图中键盘独立键盘引出的八跟线分别接单片机的P2口,只用其第四列,因此在程序初始化时P2.7脚给低电平。如图开关3用来切换输出波形、开关7和8用
来调节频率的加减。当按开关7时输出波形的频率增加,按开关8时输出波形的频率减小。
1.5 软件设计流程
本系统采用AT89S52单片机,用编程的方法来产生三种波形,并通过编程 来切换三种波形以及波形频率的改变。
具体功能有:(1)各个波形的切换;(2)各种参数的设定;(3)频率增减等。
软件调通后,通过编程器下载到AT89S52芯片中,然后插到系统中即可独立完成所有的控制。
软件的流程图如下:
图(7)程序流程图
1.6源程序
#include #define uchar unsigned char #define uint unsigned int
sbit lcdrw=P3^3;sbit lcdrs=P3^2;sbit lcde=P3^4;sbit d=P2^7;sbit s1=P2^0;sbit s2=P2^1;sbit s3=P2^2;sbit cs=P3^5;sbit wr=P3^6;uchar s1num,a,ys,j;uint fre;uchar code tosin[256]={ 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2, 0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5, 0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1, 0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd, 0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1, 0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda, 0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc, 0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99, 0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51, 0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30, 0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16, 0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06, 0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05, 0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15, 0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e, 0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e, 0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72, 0x76,0x79,0x7c,0x80 };/*正弦波码 */ void delay(uint z //延时子程序 { uchar i,j;for(i=z;i>0;i--for(j=110;j>0;j--;} void delay1(uint y { uint i;for(i=y;i>0;i--;} void write_com(uchar com //1602写指令
{ lcdrs=0;P1=com;delay(5;lcde=1;delay(5;lcde=0;} void write_data(uchar date //1602数据 { lcdrs=1;P1=date;delay(5;lcde=1;delay(5;lcde=0;} void init(//初始化 { lcdrw=0;lcde=0;wr=0;cs=0;
write_com(0x38;write_com(0x0c;write_com(0x06;write_com(0x01;write_com(0x80+0x00;write_data(0x77;//写wave: write_data(0x61;write_data(0x76;write_data(0x65;write_data(0x3a;write_com(0x80+0x40;//写 f: write_data(0x66;write_data(0x3a;} void write_f(uint date //写频率 { uchar qian,bai,shi,ge;qian=date/1000;bai=date/100%10;shi=date/10%10;ge=date%10;write_com(0x80+0x42;write_data(0x30+qian;
write_data(0x30+bai;write_data(0x30+shi;write_data(0x30+ge;write_data(0x48;write_data(0x5a;} void xsf(//显示频率 { if(s1num==1 { fre=(1000/(9+3*ys;write_f(fre;} if(s1num==2 { fre=(100000/(3*ys;write_f(fre;} if(s1num==3 { fre=(1000/(15+3*ys;write_f(fre;}
} void keyscanf({ d=0;if(s1==0 { delay(5;if(s1==0 { while(!s1;s1num++;if(s1num==1 { ys=0;write_com(0x80+0x05;write_data(0x73;//写sine: write_data(0x69;write_data(0x6e;write_data(0x65;write_data(0x20;write_data(0x20;} if(s1num==2
{ ys=10;write_com(0x80+0x05;write_data(0x73;//写squrae write_data(0x71;write_data(0x75;write_data(0x61;write_data(0x72;write_data(0x65;} if(s1num==3 { ys=0;write_com(0x80+0x05;//train write_data(0x74;write_data(0x72;write_data(0x61;write_data(0x69;write_data(0x6e;write_data(0x20;} if(s1num==4 {
s1num=0;P1=0;write_com(0x80+0x05;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_com(0x80+0x42;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;} } } if(s2==0 { delay(5;if(s2==0
{ while(!s2;ys++;} } if(s3==0 { delay(5;if(s3==0 { while(!s3;ys--;} } } void main({ init(;while(1 { keyscanf(;if(s1num==1 //正弦波// {
for(j=0;j<255;j++ { P0=tosin[j];delay1(ys;} } if(s1num==2 //方波// { P0=0xff;delay1(ys;P0=0;delay1(ys;} if(s1num==3 //三角波// { if(a<128 { P0=a;delay1(ys;} else { P0=255-a;
delay1(ys;} a++;}
if(!(s1&s2&s3 { xsf(;} } }
2、输出波形的种类与频率的测试
2.1、测量仪器及测试说明
测量仪器:稳压电源、示波器、数字万用表。
测量说明:正弦波、矩形波、三角波信号的输出,通过对独立键盘来实现其的不同波形的输出以及其频率的改变。
2.2测试过程
当程序下进去时经过初始化,液晶屏的上只显示“wave:”和“f:“,当开关三按一下是此时输出波形为正弦波,按两下时输出为方波,按三下时输出为三角波。另外两个开关可以调节频率,三种波形的频率可调范围不同,分别如下: 正弦波:1—180HZ 方 波:1——3.3KHZ 三角波:1——180HZ
根据示波器的波形频率的显示计算出三种波形的频率计算公式如下: 正弦波:f=(1000/(9+3*ys 方 波:f=(100000/(3*ys 三角波:f=(1000/(15+3*ys 其中ys为延时的变量。三种波形的仿真波形图如下:
图(8)正弦波图形
图(9)方波图形
图(10)三角波图行
2.3、测试结果
各项指标均达到要求。
测试数据如下:
1)、产生正弦波、方波、三角波基本实现
2)、三种波形的频率都可调,但不能步进的调节,其中方波的可调范围最广为1—3.3KHZ,其他两种波形的频率范围不大1—180HZ 3)、显示部分基本实现 4)、键盘功能实现
3、设计心的及体会
通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力。虽然在这次设计中对于所学知识的运用和衔接还不够熟练,作品完成的还不是很出色。但是我将在以后的工作和学习中继续努力、不断完善。这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。
4、附录
4.1 参考文献
[1] 戴仙金主编 51单片机及其C语言汇编程序开发实例 清华大学出版社,2008 [2] 高吉祥主编 全国大学生电子设计竞赛培训系列教程 电子工业出版社,2007 [3] 杨素行主编 模拟电子技术基础简明教程 高等教育出版社,2007 [4] 蒋辉平主编 单片机原理与应用设计 北京航空航天大学出版社 2007 4.2 附图
图(11)总体原理设计图
第四篇:基于51单片机函数信号发生器设计
湘南学院
电子工程设计
题 目: 基于51单片机的函数信号发生器设计
学院(系): 电子信息与电气工程学院 年级专业: 2013级电子信息科学与技术 学 号: 201314110144,201314110106 学生姓名: 周 慧 程迅 指导教师: 王 龙
2016年 4 月 1 日
课程设计任务书
学生姓名:程迅 周慧
专业班级:电子信息科学与技术
(一)班 指导教师:王 龙 工作单位:电子信息与电气工程学院
题 目:
基于51单片机的函数信号发生器的设计 初始条件:
1.运用所学的单片机原理与接口技术知识和数字电路知识; 2.51单片机最小系统; 3.PC机及相关应用软件。
要求完成的主要任务: 系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,通过程序设计方法产生锯齿波、正弦波、三角波、矩形波四种波形,通过按键来控制四种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及频率值。
1.完成函数信号发生器的设计和调试。
2.撰写课程设计说明书,说明书使用A4打印纸计算机打印,用proteus等仿真软件绘制电子线路图纸。
基于51单片机的函数信号发生器的设计
摘 要
本系统利用单片机STC89C52采用程序设计方法产生锯齿波、正弦波、三角波、矩形波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产0Hz—535Hz的波形。通过按键来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。
关键词:单片机STC89C52、DAC0832、液晶1602
目录
前言..........................................................................1 第一章 系统设计要求及设计方案..................................................2
1.1 设计要求.................................................................2 1.2 方案设计与论证...........................................................2 1.2.1 信号发生电路方案论证...............................................2 1.2.2 单片机的选择论证..................................................2 1.2.3 显示方案论证.....................................................3 1.2.4 键盘方案论证......................................................3 1.3 系统主要功能.............................................................3 第二章 系统的硬件设计..........................................................4 2.1 总体系统设计.............................................................4 2.2 硬件实现及单元电路设计...................................................4 2.2.1 振荡电路..........................................................4 2.2.2 复位电路设计.....................................................5 2.2.3 波形产生模块设计..................................................6 2.2.4显示模块的设计.....................................................7 2.2.5 键盘显示模块的设计.................................................7 2.3 软件设计流程.............................................................8 第三章 proteus的简介..........................................................9 3.1 proteus介绍.............................................................9 3.1.1 keil调试.........................................................10 3.1.2 proteus仿真调试..................................................10 3.2 测试过程................................................................11 附录一:总电路图..............................................................12 附录二:部分程序..............................................................12
前言
信号发生器是一种常用的信号源,广泛应用于电子电路、自动控制系统和教学实验等领域。信号的产生有模拟电路、专用硬件和软件产生等方法。采用模拟电路搭建函数信号发生器,可产生方波、三角波、正弦波、锯齿波,但不能产生任意波形,存在波形质量差、控制难、可调范围小,电路复杂和体积大等缺点,且频率调节不方便。专用硬件方法产生的信号频率分辨率高、稳定性好、在线调整方便,如目前在通讯系统中应 用广泛的直接数字频率合成(DDS)技术,例如 AD9854是一种典型的信号产生方法,但是价格昂贵。
利用单片机通过程序设计方法产生低频信号,其频率底线较低,具有线路简单、结构紧凑、体积小、价格低廉、频率稳定度高、抗干扰能力强、用途广泛等优点,且如需要产生新的波形时,只需对程序进行修改即可。该系统利用单片机STC89C52和D /A 转换器DAC0832 转换数字信号为 0 ~ 5 V 模拟电压信号,并在 LCD1602 显示,通过示波器就能得知产生的信号波形。
第一章 系统设计要求及设计方案
1.1 设计要求
1)、利用单片机采用软件设计方法产生四种波形 2)、四种波形可通过按键选择输出 3)、波形频率可调 4)、需显示波形的频率
1.2 方案设计与论证 1.2.1 信号发生电路方案论证
方案一:通过单片机控制D/A,输出三种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。
方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。
方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。但此方案成本高,程序复杂度高。
以上三种方案综合考虑,选择方案一。
1.2.2 单片机的选择论证
方案一:STC89C52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。
方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。但其价格较贵。
以上两种方案综合考虑,选择方案一
1.2.3 显示方案论证
方案一:采用LED数码管。LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。
方案二:采用LCD液晶显示器1602。其功率小,效果明显,显示编程容易控制,可以显示字母。
以上两种方案综合考虑,选择方案二。
1.2.4 键盘方案论证
方案一:矩阵式键盘。矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。当某一个键闭合时,该键所对应的行线和列线被短路。
方案二:独立点触按键。点触按键体积小,安装方便,成本低。以上两种方案综合考虑,选择方案二。
1.3 系统主要功能
经过考虑,我们确定方案如下:利用STC89C52单片机采用程序设计方法产生锯齿波、正弦波、矩形波锯齿波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过按键来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
第二章 系统的硬件设计
2.1 总体系统设计
该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。将设计任务分解为按键电路、液晶显示电路等模块。下
图2.1为系统的总体框图
图2.1 总体方框图
2.2 硬件实现及单元电路设计
2.2.1 振荡电路
单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产
4(电容和一般取30pF)。这样就构成一个稳定的自激振荡器。
生ALE信号,此时得到的信号时机器周期信号。
振荡电路如图2.2.1所示:
图2.2.1 振荡电路
2.2.2 复位电路设计
复位操作有两种基本形式:一种是上电复位,另一种是按键复位。按键复位具有上电复位功能外,若要复位,只要按图中的RESET键,电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。按键复位电路图如图2.2.2所示。
图2.2.2 复位电路
2.2.3 波形产生模块设计
由单片机采用编程方法产生四种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。
其电路图如下图2.2.3(1):
图2.2.3(1)波形产生电路
如上图2.2.3(1)所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。DAC0832的为八位数据并行输入的,其结构图如下图2.2.3(2):
图2.2.3(2)DAC0832的内部结构
2.2.4显示模块的设计
通过液晶1602显示输出的波形、频率。1602的八位数据端接单片机的P0口,其使能端RS、E分别接单片机的P3.5、P3.4。通过软件控制液晶屏可以显示波形的种类以及波形的频率。
其电路图如下图2.2.4:
图2.2.4 液晶显示
2.2.5 键盘显示模块的设计
其连接电路图如下图2.2.5:
图2.2.5 键盘
图中键盘引出的5跟线分别接单片机的P1口,其中P1.0连接按键1用于切换波形,P1.1、P1.2连接按键2、3用于调节波形的频率的增减,P1.3连接的按键用于占空比的升高。
2.3 软件设计流程
本系统采用STC89C52单片机,用编程的方法来产生四种波形,并通过编程 来切换四种波形以及波形频率的改变。
具体功能有:(1)各个波形的切换;(2)各种参数的设定;(3)频率增减等。
软件调通后,通过编程器下载到STC89C52芯片中,然后插到系统中即可独立完成所有的控制。
软件的流程图如下图2.3:
图2.3 程序流程图
第三章 proteus的简介
3.1 proteus介绍
Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,它组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。
其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARES PCB设计。PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型。支持许多通用的微控制器,如PIC,AVR,HC11以及8051。最新支持ARM。交互的装置模型包括:LED和LCD显示,RS232终端,通用键盘,I2C,SPI器件。强大的调试工具,包括寄存器和存储器,断点和单步模式。IAR C-SPY 和Keil uVision2等开发工具的源层调试。应用特殊模型的DLL界面-提供有关元件库的全部文件。
在完成了函数信号发生器的硬件设计和软件设计以后,便进入系统的调试阶段。系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,我们选用的是Keil软件进行软件调试,用Proteus软件完成硬件调试。
3.1.1 keil调试
3.1.2 proteus仿真调试
3.2 测试过程
1)、当程序下进去时经过初始化,液晶屏的上只显示“Frequency:”和“0050Hz”,默认状态输出波形为正弦波,按一下按键1时输出为方波,按按键1两下时输出为锯齿波,按按键1三下时输出三角波。按键2、3可以调节频率,三种波形的频率可调范围,分别如下: 正弦波:0—535Hz 方 波:0——535Hz 三角波:0——535Hz 锯齿波:0——535Hz 根据示波器的波形频率的显示计算出三种波形的频率计算公式如下:
正弦波:f= 65536-10^6//(512*FREQ)方 波:f= 65336-10^6/(256*FREQ)三角波:f= 65336-10^6/(256*FREQ)锯齿波:f= 100(+-)n*2Hz.2)、四种种波形的仿真波形图如下:
图3.2(1)方波图形
图3.2(2)正弦波图形
图3.2(3)三角波图形 图3.2(4)锯齿波图形
附录一:总电路图
附录二:部分程序
//调节部分——频率 void freq_ud(void){ unsigned int temp;if(freq_d==0){ FREQ--;
} else if(freq_u==0){ FREQ++;} if(cho==1|cho==3)//锯齿波256次中断一周期,否则他的频率是100(+-)n*2Hz.{temp=0xffff-3906/FREQ;//默认为100hz,切换后频率为50HZ65336-10^6/(256*FREQ)TIME0_H=temp/256;TIME0_L=temp%256;} else if(cho==0|cho==3)//正弦波 三角波默认周期50hz 65536-10^6//(512*FREQ){temp=0xffff-1953/FREQ;TIME0_H=temp/256;TIME0_L=temp%256;}}
//调节部分——方波的占空比
void duty_ud(void)//方波也采用512次中断构成一个周期。{ if(duty_d==0&sqar_num>0)sqar_num--;else if(duty_u==0&sqar_num<255)} //波形发生函数 void sint(void){ if(!flag){ cs=0;P2=sin_num[num++];cs=1;if(num==0){num=255;flag=1;} sqar_num++;} else if(flag){
} void square(void){ if(i++ cs=0;P2=num++;cs=1;} void stw(void){ if(~flag){ cs=0;P2=num++;cs=1;if(num==0){num=255;flag=1;} } else if(flag){ } void main(){ TMOD=0X01;TH0=0xff;TL0=0xd9;IT0=1;//设置中断触发方式,下降沿 EA=1;EX0=1;ET0=1;IP=0X01;//键盘中断级别高 init_1602();//初始化lcd write_command(0x80);//液晶显示位置 delay(5); for(i=0;i { } write_data(value1[i]);delay(5);TR0=1;while(1){ show_frequency();} } //按键中断处理程序。void it0()interrupt 0 { if(chg==0){FREQ=50;if(++cho==4){cho=0;num=0;}}//num=0;所有数据从新开始,保证波形的完整性 else if(freq_u==0|freq_d==0){freq_ud();} else if(cho==1&(duty_d==0|duty_u==0)){duty_ud();} else;} 中低频信号发生器设计 一、方案设计: 使用单片机控制DA芯片产生模拟波形是一种产生所需信号的简单方式,但由于受到普通DA芯片的设置时间以及单片机自身晶振频率的限制,产生的波形频率往往难以超过10khz,本设计不使用传统DA芯片而使用模电知识设计频率可变的波形发生器电路,额外添加一个乘法器实现AM调制功能,并使用单片机控制其频率切换。 本设计从总体上可分为三个模块:(1)单片机控制部分(2)波形发生模块(3)AM调制模块 由于大部分工作使用模电完成了,所以单片机部分就相对简单,只需最基本的用于维持单片机工作的分立元件,使用IO口控制模拟部分产生所需波形。 波形发生器模块分为两部分,一部分为正弦波、方波、三角波产生电路,另一部分设计为提供单片机控制上述波形发生电路中的振荡回路中的RC值的接口,以实现对其的频率进行控制。 AM调制模块使用市场上现有的乘法器芯片mc1496,使用该芯片文档中的AM调制电路并适当调节电路参数,即可实现AM调制功能。 二、方案仿真与实现: (一)AM调制模块 Mc1496芯片手册中的AM调制电路: 该电路在仿真和实际电路中都无法实现所需功能,经过反复实验结合网上的资源,得出了如下图的电路,在仿真中该电路载波输入小于100mv时可以输出比较良好的AM调制波形(调制信号不能大于该幅值的1/2),在实际电路中载波输入的峰峰值必须小于70mV。仿真电路: 0R51kΩJ1XFG1Key = A 11J209XFG2C3Key = A 10µF173C2100nF18R121kΩ0R9750ΩR85R10750ΩC4100nFR111kΩ1080VDD5VR1351Ω2IO2IO3IO8IO10IO1IO4IO6IO12R420kΩC110nFR15131kΩ14u26V112 V 0R620kΩR720kΩXSC1Ext Trig+164A+_+_B_IO14IO512mc1496_1R1414kΩ050kΩ6Key=A50%7V28 V 仿真结果: (二)正弦波发生模块 使用文氏桥式振荡电路输出正弦波,使用八路模拟开关CD4051实现振荡回路频率的调节,具体电路见下图: R2100kΩ50%V2Key=A5 V D11N4002GPR3120kΩD2112U1A11N4002GPXSC1Ext Trig+R533kΩ34LM324DR41kΩC2100nFV15 V C1100nFR11kΩ+_A_+B_ 仿真结果: R2100kΩ50%V2Key=A5 V D11N4002GPR3120kΩD2112U1A11N4002GPR533kΩCD4051INPUT34CD4051OUTPUTXSC1Ext Trig+LM324DR41kΩC2100nFV15 V C1100nFR11kΩ+_A_+B_CD4051INPUTJ1AKey = A J2BKey = A J3CKey = A J4DKey = A J6FKey = A J7GKey = A J5EKey = A C3100nFR61kΩC4100nFR71kΩC5100nFR81kΩC6100nFR91kΩC7100nFR101kΩC8100nFR111kΩC9100nFR121kΩ1J8AKey = A J9BKey = A J10CKey = A J11DKey = A J13FKey = A J14GKey = A J12EKey = A C10100nFR131kΩC11100nFR141kΩC12100nFR151kΩC13100nFR161kΩC14100nFR171kΩC15100nFR181kΩC16100nFR191kΩ30 因为CD4051在Mutisim仿真库中没有,只好使用开关表示CD4051的功能,使用单片机控制CD4051的A、B、C三个引脚选择0~7八个开关闭合,使得RC振荡回路的频率可以被 当输出频率较高时波形会产生比较明显的失真,可以使用可编程滤波器改善波形,但考虑到成本因素,在本设计中没有采用这种方案(以上电阻电容和实际电路中的值不同)。正弦波频率的计算公式: f1/(2RC) 方波和三角波产生电路: R110kΩC124V25 V R250kΩ40%Key=AU1AR313XSC1Ext Trig+_A+_+B_50nFR410kΩ81kΩLM358ADR5V15 V 10kΩD11N5759A 方波和三角波频率计算公式: f1/(2*(R1R2)*C1*ln(12*R4/R5)) 正弦波电路中的频率调节电路也可以适用于方波和三角波发生器上,实现利用单片机控制输出频率的目的。 (三)单片机控制模块: 本设计侧重于使用廉价的模拟电路代替高昂的DA芯片实现较高频率波形发生器的功能,对于单片机的控制作用并不是十分依赖,使用单片机可以使得频率的调节更加简单,也可以为进一步开发提供帮助,单片机仿真电路: C2U122pF19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617SINASINBSINCSININHSQU_TRI_ASQU_TRI_BSQU_TRI_CSQU_TRI_INHX1CRYSTAL18C122pFXTAL2C3910uFRSTR110k293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51 SINA、SINB、SINC为正弦波发生电路中用到的CD4051的3位地址,用于选择某一个RC回路作为振荡回路,SININH为正弦波发生电路中用到的CD4051芯片的片选。 SQU_TRI_A、SQU_TRI_B、SQU_TRI_C为方波和三角波发生电路中用到的CD4051的3位地址,用于选择某一个RC回路作为振荡回路,SQU_TRI_INH为为方波和三角波发生电路中用到的CD4051芯片的片选。 用以上八个脚控制输出的正弦波、方波、三角波的频率。 P1.0~P1.3为用户改变电路运行状态的按键,分别为:改变输出波形类型、增大输出频率、降低输出频率、改变AM调制波形输出信号的载波频率。 三、课程设计感想 正如方案设计中所述,这个课程设计的目的是为了克服普通DA+单片机构成的波形发生器电路只能输出低频信号的障碍,在实验中,我发现使用文氏振荡器产生正弦波可以输出频率100khz以上的信号,可以满足本设计要求,但当其输出频率较高时会出现比较明显的失真,这个问题可以使用可编程滤波器滤出所需频率来解决,也可以自建中心频率可变的带通滤波器滤出所需频率,虽然最后由于时间和成本的限制没能够设计出一个符合要求的滤波器,但我找到了一款非常人性化的滤波器设计软件FWP3232,使用该软件可以方便的设计有源滤波器,但要实现中心频率可变需要的模拟开关数目太多(我目前只想到这种使用模拟开关的解决办法),只好放弃这个想法。单片机的设计比较简单,只要在主程序中不断查询几个按键,根据用户的按键操作改变控制模拟开关的管脚电平实现对输出波形频率、类型的控制即可。最麻烦的是乘法器的制作,因为我最开始不知道使用mc1496构成的乘法器用于实现AM调制时载波的峰峰值不能大于70mv,连续两天都看不到AM调制波形还十分匪夷所思的看到类似载波和调制信号叠加的波形;另外,我最开始不知道mc1496的输出幅值和那些参数有关,只是单纯的使用了pdf中的电路,结果怎么也看不到,后来在网上搜集了一些资料才知道我放置在管脚5上的电阻太大了,导致mc1496芯片中的三极管射级输出电流太小,乘法器无法起到相乘的作用,自然无法实现调制。本次课程设计最大的收获在于深化了我对单片机在控制系统中的作用的理解,单片机不一定要承担所有的功能(输出波形、提供菜单、控制外围器件),使用辅助的外围模块实现主要功能,使用单片机提供操作接口,则更可以满足性能需求又可以提供实时高效的服务。第五篇:单片机课程设计——中低频信号发生器设计(范文模版)