毕业设计基于单片机的波形发生器设计.doc
《毕业设计基于单片机的波形发生器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于单片机的波形发生器设计.doc(51页珍藏版)》请在冰豆网上搜索。
黄冈职业技术学院(论文)
毕业设计
题目基于单片机的波形发生器设计
学生姓名
学号
专业应用电子技术
班级电子200904班
指导教师
完成日期 2011 年11月20日
目录
1绪论 5
1.1选题背景及意义 5
1.1.1本课题的研究现状 5
1.1.2选题目的及意义 6
1.2设计任务及要求 6
1.2.1设计的基本要求 7
1.2.2本文结构安排 7
2函数发生器系统设计 8
2.1设计方案的比较 8
2.2系统模块设计 8
2.2.1控制模块:
8
2.2.2按键及其显示模块:
9
2.2.3波形产生模块 9
2.2.4D/A转换 10
2.3系统总体框图 11
2.4理论分析 12
2.4.1电路的理论计算 12
2.4.2波形产生相关理论 14
2.5单片机软件开发系统 15
3系统硬件电路的设计 17
3.1单片机最小系统 17
3.2单片机的接口电路 18
3.3幅度控制模块 22
3.3.1单片机与DAC0832的接口 22
3.3.2DAC0832与运放的连接 22
4系统软件设计 25
4.1系统软件设计方案 25
4.2系统软件流程图 25
4.3信号产生程序 26
4.3.1正弦波产生 27
4.3.2三角波产生 27
4.3.2方波产生 28
4.3.4锯齿波的产生 30
5系统调试与测试 31
5.1调试 31
5.2测试 34
6结论与展望 37
6.1结论 37
6.2展望 37
致谢 38
参考文献 50
附录 39
附录一系统软件部分源程序 39
附录二系统原理图 48
附录三系统PCB图 49
基于单片机的波形发生器的设计
学生:
李利刚
指导老师:
李敏
(黄冈职业技术学院)
摘要:
函数发生器是一种用于产生标准信号的电子仪器,它广泛用于工业生产、科研和国防等各个领域中,所以论文选题具有一定的实用意义。
本文介在绍了函数发生器的基本概念及原理的基础上,采用AT89C51单片机为核心,完成了简易的DDS函数发生器的硬件设计和软件编程,并通过调试实现了其功能和主要技术指标。
在系统的硬件部分,设计了由单片机最小系统为核心、通过接口设计,扩展了DAC转换模块、按键和LED显示模块。
其中,采用两片DAC0832实现了全数字化的频率合成器(简称DDS)。
系统的软件设计是在keiluVision4的集成开发环境下,采用C语言完成了应用系统软件编程,包括主程序、产生四种常用信号的程序、按键功能和显示子程序等电脑模块;模块化的编程使得程序具有可读性和易于维护的特点。
关键词:
信号发生器单片机keilc51
BasedonSCMwaveformgeneratordesign
Abstract:
Functiongeneratorisusedtoproduceastandardsignalelectronicinstrument,itiswidelyusedinindustrialproduction,scientificresearchandnationaldefense,andotherfields,sothethesishascertainpracticalsignificance.Thispaperinshaoxinginterfacethefunctiongeneratorofbasicconceptsandprinciples,andonthebasisoftheAT89C51microcontrollerasthecore,thecompletionofthesimpleDDSfunctiongeneratorhardwaredesignandsoftwareprogramming,andthroughthedebuggingrealizeditsfunctionandthemaintechnicalindexes.Inthesystemhardwarepart,designedbysinglechipminimizesystemasthecore,throughtheinterfacedesign,expandedtheDACconversionmodule,keysandLEDdisplaymodule.Amongthem,thetwopiecesofDAC0832realizedthefulldigitalfrequencysynthesizer(hereinafterreferredtoasDDS).ThesoftwaredesignisinthesystemofthekeiluVision4integrateddevelopmentenvironment,usingClanguagecompletedapplicationsystemsoftwareprogramming,includingthemainprogram,producefourcommonsignalprocedures,keyfunctionsanddisplaysubroutinescomputermodule;Modularprogrammingmakestheprogramhasareadableandeasymaintenancecharacteristic.
Keywords:
SignalgeneratorSingle-chipmicrocomputerkeilc51
1绪论
1.1选题背景及意义
函数发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。
各种波形曲线均可以用三角函数方程式来表示。
能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。
在通信、广播、电视系统,在工业、农业、生物医学等领域内,函数信号发生器在实验和设备检测中具有十分广泛的用途。
1.1.1本课题的研究现状
函数发生器既可以构成独立的信号源,也可以是高性能网络分析仪、频谱仪及其它自动测试设备的组成部分。
函数发生器的关键技术是多种高性能仪器的支撑技术,因为它能够提供高质量的精密信号源及扫频源,可使相应系统的检测过程大大简化,降低检测费用并极大地提高检测精度。
美国安捷伦生产的33250A型函数任意波形发生器可以产生稳定、精确和低失真的任意波形,其输出频率范围为1μHz~80MHz,而输出幅度为10mVpp~10Vpp;该公司生产的8648D射频信号发生器的频率覆盖范围更可高达9kHz~4GHz。
国产SG1060数字合成信号发生器能双通道同时输出高分辨率、高精度、高可靠性的各种波形,频率覆盖范围为1μHz~60MHz;国产S1000型数字合成扫频信号发生器通过采用新技术、新器件实现高精度、宽频带的扫频源,同时应用DDS和锁相技术,使频率范围从1MHz~1024MHz能精确地分辨到100Hz,它既是一台高精度的扫频源,同时也是一台高精度的标准信号发生器。
还有很多其它类型的信号发生器,他们各有各的优点,但是函数发生器总的趋势将向着宽频率覆盖、高频率精度、多功能、多用途、自动化和智能化方向发展。
目前,市场上的信号发生器多种多样,一般按频带分为以下几种:
超高频:
频率范围1MHz以上,可达几十兆赫兹。
高频:
几百KHZ到几MHZ。
低频:
频率范围为几十HZ到几百KHZ。
超低频:
频率范围为零点几赫兹到几百赫兹。
超高频信号发生器,产生波形一般用LC振荡电路。
高频、低频和超低频信号发生器,大多使用文氏桥振荡电路,即RC振荡电路,通过改变电容和电阻值,改变频率。
用以上原理设计的信号发生器,其输出波形一般只有两种,即正弦波和脉冲波,其零点不可调,而且价格也比较贵,一般在几百元左右。
在实际应用中,超低频波和高频波一般是不用的,一般用中高频,即几十HZ到几MHZ。
用单片机AT89C51,加上一片DAC0832,就可以做成一个简单的信号发生器,其频率受单片机运行的程序的控制。
我们可以把产生各种波形的程序,写在ROM中,装入本机,按用户的选择,运行不同的程序,产生不同的波形。
再在DAC0808输出端加上一些电压变换电路,就完成了一个频率、幅值、零点均可调的多功能信号发生器的设计。
这样的机器体积小,价格便宜,耗电少,频率适中。
1.1.2选题目的及意义
函数发生器是一种经常使用的设备,由纯粹物理器件构成的传统的设计方法存在许多弊端,如:
体积较大、重量较沉、移动不够方便、信号失真较大、波形种类过于单一、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等的要求,研究设计出一种具有频率稳定、准确、波形质量好、输出频率范围宽、便携性好等特点的波形发生器具有较好的市场前景,以满足军事和民用领域对信号源的要求。
本次设计的主要目标是学习和运用单片机的C语言和汇编语言,利用单片机AT89C51和8位D/A转换芯片DAC0832共同实现正弦波,方波,三角波,锯齿波这四种常见波形的发生,并且可以接收外接键盘输入而在一定范围内改变频率。
在无标准函数发生仪器时,本设计可以作为简单的函数发生器使用。
本次设计准备在成本较低廉的前提下完成,主要是用AT89C51单片机,DAC0832,性能指数都不是很高,所以对此信号源的基本要求是能发生几种常见的波形,正弦波,方波,三角波,锯齿波,并且能够在一定的范围内改变频率。
通过该课题的设计掌握以AT89C51为核心的单片机系统的软硬件开发过程和基本信号的产生原理、测量及误差分析方法,同时掌握函数发生器系统的设计流程;培养我们综合运用所学的基本知识、基本理论和基本技能的能力,学习解决一般工程技术和有关专业问题的能力,学习工程设计和科学研究的基本方法,完成对所学知识的综合训练。
1.2设计任务及要求
本设计采用AT89C51及其外围扩展系统,软件方面主要是应用C语言设计程序。
系统以AT89C51单片机为核心,配置相应的外设及接口电路,用C语言开发,组成一个多功能信号发生系统。
该系统的软件可运行于WindowsXP环境下,硬件电路设计具有典型性。
同时,本系统中任何一部分电路模块均可移植于实用开发系统的设计中,电路设计具有实用性。
1.2.1设计的基本要求
(1)功能要求
1.能产生正弦波、方波、三角波、锯齿波等4种周期性波形,并且可通调节变形成其它相关波形。
2.用键盘输入可生成正弦波的基波及各次谐波单独的波形,也可生成基波和各次谐波线形组合的波形。
3.输出波形的频率范围为1MHz~1Hz;可以通过键盘输入粗调频率。
4.输出波形幅度范围为0~5V(峰-峰值),可调整。
5.具有显示输出波形类型、及其粗调频率和幅度的功能。
1.2.2本文结构安排
全文共分为6章,第1章绪论(介绍设计的研究现状、选题意义及设计的任务与要求);第2章系统总体的设计原理;第3章系统的硬件设计;第4章系统的软件设计;第5章系统的调试与测试;第6章总结与展望
2函数发生器系统设计
2.1设计方案的比较
函数发生器的设计方案可用多种方案来完成。
在设计前对各种方案进行了比较:
方案一:
用差分放大电路实现三角波到正弦波以及集成运放组成的电路实现函数发生器。
波形变换的原理是利用差分放大器的传输特性曲线的非线性,传输特性曲线越对称,线性区域越窄越好;三角波的幅度应正好使晶体接近饱和区域或者截至区域。
方案二:
用二极管折线近似电路以及集成运放组成的电路实现函数发生器。
根据二极管折线近似电路实现三角波——正弦波的变换频率调节部分设计时,可先按三个频率段给定三个电容值:
1000pF、0.01mf、0.1μF然后再计算R的大小。
手控与压控部分线路要求更换方便。
为满足对方波前后沿时间的要求,以及正弦波最高工作频率(1MHz)的要求,在积分器、比较器、正弦波转换器和输出级中应选用Sr值较大的运放(如LF353)。
为保证正弦波有较小的失真度,应正确计算二极管网络的电阻参数,并注意调节输出三角波的幅度和对称度。
输入波形中不能含有直流成分。
方案三:
利用单片机AT89C51和8位D/A转换芯片DAC0832共同实现正弦波,方波,三角波,锯齿波这四种常见波形的发生,并且可以接收外接键盘输入而在一定范围内改变频率。
可行性分析:
上面三种方案中,方案一与方案二中三角波——正弦波部分原理虽然不一样,但是他们有共通的地方就是都要认为地搭建波形变换的电路图。
而方案三利用单片机构成的应用系统有较大的可靠性。
系统扩展、系统配置灵活。
容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。
单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。
综上所述我们选择了第三种设计方案
2.2系统模块设计
该函数发生器有以下几部分组成:
(1)控制模块
(2)按键及其显示模块(3)D/A转换模块。
2.2.1控制模块:
方案一:
用单片AT89C51作为系统的主控核心。
具有体积小,使用灵活的,易于人机对话和良好的数据处理,单指令周期和35M高速运算功能等优点。
且单片机功耗低,价格低廉的优点。
方案二:
用单片AT89C51作为系统的主控核心。
具有价格低廉的优点,但处理速度较慢(1/12M),AT89C51是它的35倍。
方案三:
用FPGA等可编程器件作为控制模块。
FPGA可以实现各种复杂的逻辑功能,密度高,速度快,稳定性好等许多有点。
FPGA在掉电后会丢失数据上电后须进行一次配置,因此FPGA在应用中需要配置电路和一定的程序。
并且FPGA作为数字逻辑器件,竞争、冒险是数字逻辑器件较为突出的问题,因此在使用时必须注意毛刺的产生、消除及抗干扰性。
在次系统中,采用单片机作为控制比采用FPGA实现更简便。
基于综合性价比,确定选择方案一.
2.2.2按键及其显示模块:
方案一:
采用传统的独立式按键;用传统的LED段选位选的方式进行波形的切换及显示。
这种方式占用系统资源较多,并且效率低,程系编写大量而复杂。
方案二:
为了提高单片机的资源利用率和运行的效率,按键显示部分我们直接使用zlg7289扩展键盘,键盘与单片机连接。
zlg7289芯片与单片机之间通信方便,而且由zlg7289对键盘进行自动扫描,可以去抖动,充分的提高了单片机的工作效率。
在次系统中,我们直接采用zlg7289扩展键盘实现更简便,确定选择方案二。
2.2.3波形产生模块
方案一:
使用锁相环通过分频运算实现频率的步进,这种方案频率稳定度高,但程控比较困难,而且步进范围过大,鉴于锁相环技术比较复杂,没有采用这种方案。
方案二:
使用专用函数发生电路,如ICL8038或MAX038,通过D/A转换调整函数发生器控制电压实现频率的控制,这种方案可以使频率连续可调,省却了波形转换电路,但控制电压与频率的变化不是严格的线性关系,如果不加频率负反馈则频率无法稳定准确,加上频率负反馈将使电路大大复杂,稳定度也会下降,而且如果要实现比较大的带宽,就需要不断更换振荡电容,电路复杂程度进一步增加。
为避免调试困难,没有采用这种方案。
方案三:
使用单片机的定时器设置定时时间,每半个周期对I/O口取反一次,从而实现频率输出。
这种方案虽然在高频频段误差比较大,但是编程简单控制容易,权衡以上利弊,我们选择了方案三。
2.2.4D/A转换
单片输出的是数字信号,必须通过D/A转换后才能模拟信号。
方案一:
采用D/A转换器AD7543。
AD7543是一种串行的D/A转换器,与单片机之间的连线少,布线方便,而且又是12位的D/A转换器,精度高。
但串行数据传输速度慢,当频率较高时,必须减少每周期输出的点数,这将会导致阶梯现象更加明显,因此,此方案不宜使用。
方案二:
采用DAC0832。
这是8位的并行D/A转换器,转换速度快。
方案三:
采用2片DAC0832。
由其中一芯片的输出电压作为另一芯片的参考电压,这样就可以方便的控制最大输出电压。
若采用方案二,在输出电压较低的情况下,比如为1V时,输出的最大电压只有参考电压的1/5,这将会使精度降低,而方案三刚好可以解决这个问题,因此,本系统选择了方案三。
DAC0832芯片介绍
DAC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。
由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。
学习并使用DAC0832可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。
DAC0832具有以下特点:
·8位分辨率;
·双通道A/D转换;
·输入输出电平与TTL/CMOS相兼容;
·5V电源供电时输入电压在0到5V之间;
·电流建立时间1μS;
·一般功耗仅为15mW;
·8P、14P—DIP(双列直插)、PICC多种封装;
·商用级芯片温宽为0°C到+70°C,工业级芯片温宽为−40°C到+85°C;
芯片接口说明:
·CS片选使能,低电平芯片使能。
·CH0模拟输入通道0,或作为IN+/-使用。
·CH1模拟输入通道1,或作为IN+/-使用。
·GND芯片参考0电位(地)。
·DI数据信号输入,选择通道控制。
·DO数据信号输出,转换数据输出。
·CLK芯片时钟输入。
·Vcc/REF电源输入及参考电压输入(复用)。
DAC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。
其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0到5V之间。
据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。
通过DI数据输入端,可以轻易的实现通道功能的选择。
单片机对DAC0832的控制原理:
正常情况下DAC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
当DAC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。
当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。
在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能
当此2位数据为“1”、“0”时,只对CH0进行单通道转换。
当2位数据为“1”、“1”时,只对CH1进行单通道转换。
当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。
当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。
到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。
直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。
也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。
随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。
最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
作为单通道模拟信号输入时DAC0832的输入电压是0到5V且8位分辨率时的电压精度为19.53mV。
如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。
但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。
2.3系统总体框图
本系统是以单片机AT89C51和8位D/A转换芯片DAC0832以及zlg7289键盘及显示共同实现正弦波,方波,三角波,锯齿波这四种常见波形的产生及显示相互切换的功能。
系统原理框图如图2-1
图2-1系统框图
2.4理论分析
2.4.1电路的理论计算
由图3-6可知到U5的输出将作为DAC0832
(2)的基准电压。
假设运放U6的输入为;DAC0832
(2)的内部的电阻为。
设U5的输入电压为;DAC0832
(2)的内部的电阻为。
下面进行讨论计算:
(1)U6为一个反相比例器:
(2)U5也为一个反相比例器:
这是U4的输入为,记为V
由于,这是U4实际上为为一个反响跟随器,即:
所以:
2.本设计中的运放的连接的第二部分如图3-6
如图3-6中的U2输入中的为图3-7中U4的输出。
对于本运放组成的电路分析采用叠加法:
设U2的输出为。
<1>当电源全部接地时,有如下:
此时的运放实际为一个反相比例器:
(2-1)
<2>当-12V和接地时:
(2-2)
<3>当12V和接地时:
(2-3)
所以综上所述:
为,,三者之和。
即:
下面对的结果作一些辅助说明:
特例:
当时(2-4)
以下进行代入数据的具体的分析:
于是对于将图3-6与图3-7及连在一起时,波形输出与调节部分的理论计算。
当单片机分别向DAC0832
(1)和DAC0832
(2)输入数据和时
(2-5)
(2-6)
其中,,代入以上各式,得
(2-7)
或者 (2-8)
由(2-7)式可知,当在0~255之间变化时,可在~之间
变化,即输出信号的峰峰值可由控制。
该电路由102电位器串接2个1电阻实现调节直流偏移,电位器触头在最右端和最左端时,电位器输出的电压分别为-5v和+5v,电位器的电压与通过一个加法器后,实现直流偏移的调节。
2.4.2波形产生相关理论
DAC0832是8位的D/A转换器件,其工作电压是0—5V,当输入