单片机波形发生器报告
单片机课程设计报告———波形发生器
设计题目:波形发生器学生姓名:系别:专业:班级:学号:指导教师:2011年12月22日郑州轻工业学院课程设计任务书题目波形发生器专业、班级学号姓名薛茹主要内容:设计一个产生各种波形的波形发生器基本要求:利用单片机P1.0引脚输出频率范围1Hz – 1000Hz的正弦波、方波、三角波、梯形波、锯齿波,并用示波器观察。
目录一、设计目的及意义................................................................ - 3 -1.1设计目的 (3)1.2设计意义 (3)二、方案论证.......................................................................... - 3 -2.1设计要求 (3)2.2方案论证 (3)三、硬件电路设计 ................................................................... - 3 -3.1设计思路、元件选型 (3)3.2原理图 (3)3.3主要芯片介绍 (3)3.4硬件连线图 (3)四、软件设计.......................................................................... - 3 -4.1锯齿波的产生过程 (3)4.2梯形波的产生过程 (3)4.3三角波的产生过程 (3)4.4方波的产生过程 (3)4.5正弦波的产生过程 (3)五、调试与仿真 ...................................................................... - 3 -六、总结................................................................................. - 3 -七、参考文献: ...................................................................... - 3 -一、设计目的及意义1.1设计目的(1)利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
波形发生器实验总结
波形发生器实验总结1. 引言波形发生器是电子实验中常用的仪器之一。
它能够产生各种不同类型的波形信号,包括正弦波、方波、三角波等。
在电路设计、通信系统等领域中,波形发生器发挥着重要的作用。
本文将总结我在进行波形发生器实验时的经验和收获。
2. 实验背景波形发生器实验旨在通过搭建相应的电路,利用电子元件的特性来产生特定的波形信号。
不同的波形形式有不同的应用场景,因此具备一个可调节的波形发生器对于电子工程师而言是非常重要的。
3. 实验目的本次实验的目的是掌握波形发生器的原理和使用方法,并能够成功产生出不同类型的波形信号。
4. 实验步骤以下是我在实验中所采取的步骤:4.1 搭建电路首先,我搭建了一个基础的波形发生器电路。
该电路包括一个电源、一个信号发生电路和一个输出接口。
电源用于提供所需的电压,信号发生电路则根据不同的需要产生不同类型的波形信号。
4.2 调节参数接下来,我根据实验要求,调节信号发生电路中的参数,以产生不同类型的波形。
例如,我可以调节频率、幅度等参数来生成不同频率和振幅的波形信号。
4.3 观察输出信号在调节参数之后,我连接示波器,观察并记录输出信号的波形。
通过不断调节参数,我可以得到所需的波形信号,并进行进一步的实验和测试。
5. 实验结果与分析在实验中,我成功产生了正弦波、方波和三角波等不同类型的波形信号。
通过调节参数,我还可以改变波形的频率和幅度。
这对于电子工程师而言非常重要,因为不同的应用场景需要不同类型和特性的波形信号。
在实验过程中,我注意到波形发生器的频率范围、输出阻抗等参数对于产生稳定且准确的波形信号十分重要。
此外,使用示波器可以帮助我们观察和分析波形信号的特征,并进行进一步的实验和测试。
6. 实验总结通过本次波形发生器实验,我深入了解了波形发生器的原理和使用方法。
我能够熟练搭建相应的电路,并根据需要调节参数来产生不同类型的波形信号。
此外,我还掌握了使用示波器观察和分析波形信号的方法。
单片机函数波形发生器课程设计报告书
东北石油大学课程设计课程单片机课程设计题目函数波形发生器设计院系电气信息工程学院测控系专业班级测控技术与仪器11—1 学生任建伟学生学号 110601240123 指导教师路敬祎岩2014年 7 月 8日东北石油大学课程设计任务书课程单片机课程设计题目函数波形发生器设计专业测控技术与仪器任建伟学号 110601240123一、任务设计一款基于AT89C51单片机的函数波形发生器。
二、设计要求要求:利用D/A芯片产生峰峰值为5V的锯齿波、三角波、梯形波、正弦波和方波。
控制功能:使用5个拨动开关进行功能切换。
当K0接高电平时输出锯齿波;当K1接高电平输出梯形波;当K2接高电平输出三角波;K3接高电平输出正弦波;K4接高电平输出方波。
使用的主要元器件:8031、6MHz的晶振、74LS373、74LS138、2764、DAC0832、LM324、拨动开关K0、K1、K2、K3、K4等。
输出波形的验证方法:使用示波器测量输出波形。
三、参考资料[1]志旺,亮。
51单片机快速上手。
机械工业。
[2]薛定宇。
控制系统计算及辅助设计——MATLAB语言与应用(第2版)。
清华大学。
[3]邹虹。
单片机波形发生器的设计。
邮电学院学报。
[4]毅刚,彭喜元。
单片机原理与应用设计。
电子工业。
[5]素行.模拟电子技术基础简明教程(第三版)[M].北京:高等教育, 2006.[6] Altium Designer原理图与PCB设计 [M].北京:电子工业2009.完成期限 2014.6.30 至 2014.7.9指导教师路敬祎岩专业负责人曹广华2014年 6月 30 日目录第一章绪论 (1)1.1课题背景 (1)1.2本系统研究的国外现状 (2)1.3本文主要研究容和工作 (2)第二章方案论证 (3)2.1方案一纯硬件设计法 (3)2.2方案二纯软件设计法 (3)2.3方案三软硬件结合法 (4)第三章系统硬件设计 (5)3.1部结构概述 (5)3.2P0~P3口结构及功能 (5)3.3时钟电路和复位电路 (6)3.4系统硬件总体设计 (8)3.5DAC0832的引脚及功能 (8)3.674LS373的引脚及功能 (9)3.7系统硬件原理 (9)第四章系统的软件设计 (11)4.1主程序流程图 (11)4.2波形的产生 (12)第五章系统调试与仿真结果 (14)5.1系统调试 (14)5.2仿真结果 (14)结论 (15)参考文献 (16)附录一程序 (17)附录二仿真效果图 (22)第一章绪论1.1课题背景波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。
单片机课设,波形发生器实验报告
单片机课程设计波形发生器实验报告姓名:*** 07291198电气0706指导老师:***摘要:波形发生器是一种常用的信号源,广泛的应用于电子电路、自动控制系统和教学实验等领域。
本次课程设计基于89S51单片机构成的,利用PWM波技术制作可产生方波、三角波、梯形波、锯齿波、正弦波等多种波形。
设计要求:基于89S52单片机,利用单片机产生PWM波产生要求波形。
要求波形发生器能够产生4种以上波形,如方波、三角波、梯形波、锯齿波、正弦波方波。
能够调整输出波形的频率、幅值、水平分量。
一,技术基础利用PWM技术设计波形发生器脉宽调制(PWM:(Pulse Width Modulation)是利用Array微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
简而言之,PWM是一种对模拟信号电平进行数字编码的方法。
PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。
让信号保持为数字形式可将噪声影响降到最小。
噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。
下面就PWM技术实现波形发生器的原理方法进行简单阐述。
采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形.按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。
二,系统原理框图三,硬件电路图四,程序流程图1软件部分由以下几个部分构成:系统主程序流程图波形子程序流程图五,参数调整程序的编程思路:a 频率的调节应用PWM技术时,要调节输出波形的频率,只需要在生成前一个具体模拟信号的电平和生成下一个之间加上一个给定的延时,这样输出波形的频率就会发生变化。
波形发生器的设计实验报告
波形发生器的设计实验报告波形发生器是一种用于产生各种波形信号的仪器或设备。
它常常被用于电子实验、通信系统测试、音频设备校准等领域。
本文将介绍波形发生器的设计实验,并探讨其原理和应用。
波形发生器的设计实验主要包括以下几个方面:电路设计、元件选择、参数调整和信号输出。
首先,我们需要设计一个合适的电路来产生所需的波形。
常见的波形包括正弦波、方波、三角波等。
根据不同的波形要求,我们可以选择适当的电路结构和元件组成。
例如,正弦波可以通过RC电路或LC电路实现,方波可以通过比较器电路和计数器电路实现,三角波可以通过积分电路实现。
在元件选择方面,我们需要根据设计要求来选择合适的电阻、电容、电感等元件。
这些元件的数值和质量对波形发生器的性能和稳定性起着重要的影响。
因此,我们需要仔细考虑每个元件的参数,并选择合适的品牌和型号。
参数调整是波形发生器设计实验中的关键步骤之一。
我们需要根据设计要求来调整电路中各个元件的数值和工作状态,以确保所产生的波形符合要求。
参数调整需要依靠实验数据和仪器测量结果来进行,同时也需要运用一定的电路分析和计算方法。
信号输出是波形发生器设计实验的最终目标。
在设计过程中,我们需要确保所产生的波形信号能够正确输出,并具有稳定性和准确性。
为了实现这一目标,我们可以使用示波器等仪器来对输出信号进行检测和分析,并根据需要进行调整和优化。
波形发生器具有广泛的应用领域。
在电子实验中,波形发生器常常被用于产生各种测试信号,用于测试和验证电路的性能和功能。
在通信系统测试中,波形发生器可以产生各种模拟信号,用于测试和校准通信设备。
在音频设备校准中,波形发生器可以产生各种音频信号,用于校准音频设备的频率响应和失真特性。
波形发生器的设计实验是一个涉及电路设计、元件选择、参数调整和信号输出的复杂过程。
在实验中,我们需要仔细考虑每个步骤的要求,并根据实际情况进行调整和优化。
通过合理的设计和实验验证,我们可以获得稳定、准确的波形信号,满足各种应用需求。
单片机课程设计--简易波形发生器
单片机课程设计--简易波形发生器电气与电子信息工程学院《单片机》课程设计报告题目:简易波形发生器专业班级:电气学号: 123456姓名:王刚指导教师:胡蔷、汤立刚设计时间:2013年12月9日—2013年12月13日设计地点: K2-407单片机、微机原理实验室2013年11月20日单片机课程设计成绩评定表答辩或质疑记录:1、该设计能产生几种波形?分别是哪几种?答:能产生4种波形,三角波,方波,锯齿波以及正弦波。
2、DAC0832有几种工作方式?哪几种?各有什么特点?该设计中DAC0832用的是哪一种方式?答:3种,单缓冲方式、双缓冲方式以及直通方式:(1)单缓冲方式此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。
方法是控制输入寄存器同时接收数据,或者只用输入寄存器而把DAC寄存器接成直通方式。
(2)双缓冲方式此方式适用于多个DAC0832同时输出的情形。
方法是先分别使这些DAC0832的输入寄存器接收数据,再控制这些DAC0832同时传送数据到DAC寄存器以实现多个D/A转换同步输出。
〔3〕直通方式此方式适用于连续反馈控制线路中。
方法是:数据不通过缓冲器,即-WR1,-WR2, -XFER, -CS 均接地,ILE接高电平。
此时必须通过I/O接口与微处理器连接,以匹配微处理器与D/A的转换。
该设计中DAC0832用的是单缓冲方式。
成绩评定依据:课程设计考勤情况(5%):课程设计仿真测试情况(15%)课程设计答辩情况(30%):完成设计任务及报告规范性(50%):最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字:2013 年12 月日课程设计任务书2013~2014 学年第 1 学期专业班级:电气指导教师:胡蔷汤立刚工作部门:电气与电子信息工程学院电气自动化教研室一、课程设计题目单片机课程设计二、课程设计内容(含技术指标)1.设计目的及要求(1)根据具体设计课题的技术指标和给定条件,以单片机为核心器件,能独立而正确地进行方案论证和电路设计,完成仿真操作。
波形发生器设计报告
波形发生器设计报告摘要波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。
函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路。
函数信号发生器在电路实验和设备检测中具有十分广泛的用途。
通过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。
目前使用的信号发生器大部分是函数信号发生器,且特殊波形发生器的价格昂贵。
所以本设计使用的是DAC0832、ICL8038构成的发生器,可产生方波、正弦波等多种特殊波形和任意波形,波形的频率可用程序控制改变。
在单片机上加外围器件独立式键盘,通过键盘控制波形频率的增减、波形幅度的大小以及波形的选择,并用了LCD显示频率大小、波形的种类。
在单片机的输出端口接DAC0832进行D/A转换,通过运放进行波形调整,再通过ICL8038函数发生器,最后输出波形。
本设计具有线路简单、结构紧凑、价格低廉、性能优越等优点。
本设计制作的波形发生器是基于STC89C54RD+单片机可调频发生器,可以输出多种不同频率方波、正弦波,输出的波形的频率、幅度均可调,且操作方便。
关键词:波形发生器;DAC0832;IC8038;单片机一、方案论证 (4)1.1设计要求 (4)1.2方案论证 (4)二、硬件系统的设计 (5)2.1整体框架图 (5)2.2电源模块设计 (5)2.2.1 电源原理 (5)2.2.2 芯片介绍 (6)2.3输入模块设计 (7)2.3.1按键控制模块 (7)2.3.2时钟复位电路 (7)2.4 输出模块设计 (10)2.4.1 LCD显示模块原理 (10)2.4.1 LCD1602芯片介绍 (10)2.5 DA转换模块设计 (11)2.5.1 DA转换模块原理 (11)2.5.2 DAC0832芯片介绍 (12)2.6 ICL8038函数信号发生模块设计 (13)2.6.1 ICL8038函数信号发生模块原理 (13)2.6.2 ICL8038芯片介绍 (14)三、软件设计 (16)3.1输入模块编程 (16)3.2 输出模块编程 (17)3.3 DA转化模块编程 (17)四、仿真与调试 (19)4.1硬件调试 (19)4.1.1电气调试 (19)4.1.2 波形调试 (19)4.1.3波形频率范围调试 (20)4.1.4 波形幅度范围调试 (20)4.1.5 失真度调试 (20)4.2 软件调试 (21)五、心得体会 (22)附录一: (23)一、方案论证1.1设计要求1)信号发生器能产生正弦波、方波;2)输出的频率在100HZ-100KHZ的范围内可调;3)在1000欧负载的条件下,输出正弦波信号的电压峰-峰值Vopp在0-5V的范围可调;4)输出信号的波形无明显失真;5)可实时显示输出信、幅度、频率和频率步进值;1.2方案论证信号发生器的实现方法通常有以下几种:方案一:用分立元件组成的函数发生器,通常是单函数发生器且频率不高,其工作不很稳定,不易调试。
单片机波形发生器报告_课程设计报告 精品
单片机课程设计报告东莞理工学院课程单片机课程设计题目多波形发生器院系电子工程学院专业班级2011级电子信息工程2班2013年6月27日目录第一部分1.1波形发生器的概述 (3)1.2 本设计任务 (3)第2 部分2.1本设计的意义 (4)2.2 设计要求 (4)2.3 设计原理 (4)2.4 硬件设计 (4)2.5 软件设计 (8)第三部分3.1 心得 (19)3.2参考文献 (19)第一部分1.1波形发生器的概述波形发生器:顾名思义,一个能产生各种波形的仪器。
波形发生器可通过以下方法产生:(1):利用模拟电路的运放电路,可以产生三角波、锯齿波、正弦波。
用数字电路的555电路可以产生方波。
这方法的电路元件数量不多,焊接简单,但不稳定难以调试,产生的波形也不理想。
(2):利用市面上可以购得的专用直接数字合成DDS芯片的波形发生器:能产生任意波形。
而且可以达到很高的频率,其他方法很难做到这一点,所产生的的波形频率不高。
但这方法成本高,而且课程设计用这些芯片就没意思了。
(3):用AT89c51单片机和DAC0832芯片,用轻触按键组成的键盘来控制波形的选择以及各种扩展功能。
P1口连接按键键盘,作为波形的选择和其他扩展功能的输入口。
P0口连上上拉电阻后,接上数码管,用来显示所选择波形的类型。
这方法较上面两种方法好。
调试主要通过编辑89c51的程序,而且89c51、DAC0832、LM339这几个芯片的价格不贵。
至于编程方面,锯齿波、三角波、正弦波这三种分段后呈单调性的波形,可以通过等差增减来实现。
但是经过Proteus 7 Professional仿真后,所产生的波形不理想。
所以通过手动的方法计算出输出各点的电压值,然后在编写程序时以数组的方式给出。
当需要时,只要按照顺序进行输出即可。
1.2 本设计任务设计要求:一、基本功能:1 、可产生多种波形,如正弦波、三角波、锯齿波、方波;2 、各种波形可通过按键选择;二、扩展功能:1 、可调节信号的频率、占空比等参数;2 、其他自行增加的功能;扩展部分:按键s5、s6分别是控制方波的占空比增、减;s7、s8分别是控制波形的频率增、减。
单片机方波发生器实验报告
单片机方波发生器实验报告实验报告,单片机方波发生器。
实验目的:本实验旨在通过单片机实现方波发生器电路,了解方波发生器的工作原理,并掌握单片机的IO口控制。
实验器材:1. 单片机(如STC89C52)。
2. 电源。
3. 适配器。
4. 电阻、电容。
5. 示波器。
6. 连接线。
实验原理:方波发生器是一种能够产生方波信号的电路或设备。
在本实验中,我们将通过单片机的IO口控制来实现方波信号的产生。
单片机作为控制核心,通过对IO口的高低电平控制,可以实现方波信号的产生。
通过改变IO口的输出频率和占空比,可以产生不同频率和占空比的方波信号。
实验步骤:1. 连接电路,按照电路图连接单片机、电源、电阻、电容和示波器。
2. 编写程序,使用C语言或汇编语言编写单片机控制程序,配置IO口的输出模式和控制方波的频率和占空比。
3. 烧录程序,将编写好的程序通过编程器烧录到单片机中。
4. 实验验证,连接示波器,观察输出的方波信号的频率和占空比是否符合预期。
实验结果与分析:经过实验验证,我们成功实现了单片机方波发生器电路。
通过改变程序中的参数,我们可以得到不同频率和占空比的方波信号。
通过示波器观察,我们可以清晰地看到产生的方波信号波形,验证了实验的成功。
实验总结:通过本次实验,我们深入了解了方波发生器的原理和单片机的IO口控制。
掌握了单片机方波发生器的设计和实现方法,提高了我们对单片机应用的理解和实践能力。
同时,实验中也加深了我们对方波信号的理解,对信号发生器的应用有了更深入的认识。
以上就是本次单片机方波发生器实验的实验报告,希望能对你有所帮助。
波形发生器设计实验报告(推荐阅读)
波形发生器设计实验报告(推荐阅读)第一篇:波形发生器设计实验报告波形发生器设计实验报告一、设计目的掌握用99SE软件制作集成放大器构成方波,三角波函数发生器的设计方法。
二、设计原理波形发生器:函数信号发生器是指产生所需参数的电测试信号的仪器。
按信号波形可分为正弦信号、函(波形)信号、脉冲信号和随机信号发生器等四大类。
而波形发生器是指能够输出方波、三角波、正弦波等多种电压波形的信号源。
它可采用不同的电路形式和元器件来实现,具体可采用运算放大器和分立元件构成,也可用单片专用集成芯片设计。
设计原理图:三、设计元件电阻:R1 5.1K、R2 8.2K、R3 680、R4 3K、R5 39KR6 1K、R7 39K、R8 39K 电容:C 1uF 运算放大器:U1A LM324、U1B LM324 二极管:D1 3.3V、D23.3V 滑动变阻器:RW1 10K 接口:CON3 地线、GND四、设计步骤大概流程图1、打开99SE,建立Sch文件。
绘制原理图。
绘制原理图时要注意放大器的引脚(注意引脚上所对应的数字)和二极管的引脚(注意原理图和PCB中的引脚参数是否一致)。
元件元件库代码电阻:RES2 滑动变阻器:POT2电容:CAP 放大器:OPAMP 二极管:ZENER3 元件封装代码电阻: AXIAL0.4 滑动变阻器:VR5 放大器:DIP14二极管:DIODE0.4 电容:RB.2/.42、生成网络表格本步骤可完成建立材料清单(可执行report中的Bill of Material)、电器规则检查(Tools中ERC)、建立网络表(Design中Create Netlist,点击OK即可)3、PCB文件的设置建立PCB文件单双面板设置:Design中Options进行设置单双面板,及面板大小(8cm*7cm)建立原点(Edit中Origin中的set)并在KeepOutLayer层中制板4、引入网络表执行Design中Load Nets载入网络表,屏幕弹出对话框,点击Browse按钮选择网络表文件(*net),载入网络表,单机Execute,便成功引入网络表。
基于51单片机的波形发生器的设计汇总
基于51单片机的波形发生器的设计汇总波形发生器是电子领域中常用的一种设备,用于产生各种不同形式的波形信号。
本文将基于51单片机的波形发生器的设计进行汇总。
设计思路如下:一、基本原理波形发生器的基本原理是通过控制数字信号的高低电平来产生不同的波形。
在这个设计中,我们将使用51单片机作为控制器来产生波形信号。
二、硬件部分1.时钟电路:使用一个晶体振荡器作为时钟源,提供稳定的时钟脉冲给51单片机。
2.电源电路:使用稳压电源提供稳定的电压给51单片机和其他电路。
3.单片机电路:将51单片机与其他电路进行连接,包括输入输出端口和相应的外部电路。
4.波形输出电路:根据需要产生不同的波形,设计相应的输出电路,包括滤波器、电阻、电容等元器件。
三、软件部分1.系统初始化:在系统上电后,进行相应的初始化工作,包括设置引脚功能、中断,设置计时器等。
2.波形生成算法:根据用户的选择,使用合适的算法生成相应的波形信号。
常见的波形有正弦波、方波、三角波等。
3.输出控制:根据生成的波形信号,通过设置相应的输出引脚,将波形信号输出到波形输出电路中。
4.用户界面:设计一个简单的用户界面,让用户可以选择不同的波形、调整频率、幅度等参数。
5.中断处理:使用中断功能来处理波形输出频率的控制,实现较高的输出稳定性。
四、设计考虑1.精度要求:根据具体应用场景,确定波形发生器的精度要求。
如果需要较高的精度,可能需要采用更复杂的算法和更精密的输出电路。
2.输出负载:考虑波形发生器的输出负载情况,选择合适的输出电路,以确保波形信号的准确性和稳定性。
3.电源稳定性:电源的稳定性对波形发生器的性能也有影响,需要注意电源供电的稳定性。
五、测试与优化完成波形发生器设计后,进行相应的测试与优化。
包括波形信号的频率、幅度等测试,以及对输出电路、算法等进行优化。
最后,通过以上的设计思路,我们可以完成基于51单片机的波形发生器的设计。
根据具体的应用需求,可能需要对硬件和软件进行相应的调整和优化。
单片机波形发生器
单片机课程设计报告书课题名称 波形发生器设计姓 名 段永乐 学 号 20106475 院、系、部 电气工程系 专 业 电子信息工程 指导教师高迎霞、孙秀婷2013年7 月8日 波形发生器设计20106475 段永乐一、设计目的本次设计是以单片机为基础,设计输出多种波形的波形发生器。
联系使用各个接口芯片(如STC89C52、DAC0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。
二、设计要求1、设计一个能产生方波、三角波、梯形波、锯齿波、正弦波的波形发生器。
2、产生指定波形可以通过DAC 来实现,不同波形产生实质上是对输出的二进制数字量进行相应改变来实现的。
方波信号可以利用定时器中断产生的,每次中断时,将输出的信号按位反即可;三角波信号是将输出的二进制数字信号依次加1,达到0xff 时依次减1,并实时将数字信号经D/A 转换得到;锯齿波信号是将输出的二进制数字信号依次加1,达到0xff 时置为0x00,并实时将数字信号经D/A 转换得到的;梯形波是将输出的二进制数字信号依次加1,达到0xff 时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A 转换得到的;正弦波可以预先写出正弦波表,通过读出表中的值然后经D/A 转换后输出。
3、用按键来控制输出的波形,如课设计5个按键S0、S1、S2、S3、S4,按一次S1键不断输出三角波等。
※※※※※※※※※ ※※ ※※ ※※※※※※※※※※※2010级单片机 课程设计4、用一位数码管显示波形代码:如输出方波,显示代码“1”。
三、硬件电路设计3.1系统结构框图波形发生器系统主要由主单片机芯片、按键数码管显示以及D/A 转换几部分组成。
系统结构框图如图3-1所示。
波形选择按键模块:通过外部中断0计数来选择波形的种类。
频率选择按键模块:通过外部中断1计数来选择波形的延时时间来实现。
数码管显示模块:采用共阴极数码管,段码高电平有效,位码低电平有效。
(波形发生器) 单片机课程设计报告
单片机原理及系统课程设计专业:自动控制班级:姓名:学号:指导教师:评语:平时(40)修改(30)报告(30)总成绩兰州交通大学自动化与电气工程学院年月日波形发生器1 引言本系统是基于STC89C51单片机的波形发生器。
采用STC89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)和按键等。
通过按键控制可产生方波、三角波、正弦波和锯齿波。
其设计简单、性能优良,具有一定的实用性。
文中简要介绍了DAC0832数模转换器的结构原理和使用方法,STC89C51的基础理论,着重介绍了如何利用单片机控制D/A转换器产生上述信号的硬件电路和软件编程。
2 设计方案及原理2.1设计原理及元件选型(1)设计原理该设计设计一个低频信号发生器,我们采用的是AT89C51 单片机用软件实现信号的输出。
该单片机是一个微型计算机,包括中央处理器CPU,RAM,ROM、I/O 接口电路、定时计数器、串行通讯等,是波形设计的核心。
该信号发生器原理框图如图1,总体原理为:利用A T89C51 单片机构造低频信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过汇编语言对单片机的编程即可产生相应的波形信号,并可以通过键盘进行各种功能的转换和信号频率的控制,当输出的数字信号通过数模转换成模拟信号也就得到所需要的信号波形,通过运算放大器的放大输出波形,同时让显示器显示输出的波形信息。
通过P1口和开关K0-K3相连接来控制各个波形的输出。
能根据k0-k4键状态进行波形切换,当某一按键按下时,输出相对应的波形。
(2) 元件选型单片机AT89C51系统,DAC0832一片,PC机一台,运算放大器2.2设计方案(1)总体方框图:单片机AT89C51DAC0832转换放大电路输出波形键盘输入接口电路图1 总体设计功能图(2)设计思路利用中断,当5个开关中有任意一个闭合时,跳转至中断程序,在中断程序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断开,则结束中断程序。
单片机波形发生器实习报告(优秀)
基于单片机双通道的多波形发生器摘要:利用单片机控制灵活的特点,采用软件方式实现信号生成,系统采用查表法基本工作原理,使用片内ROM 波形查询表实现相幅转换. 系统采用80C51 单片机实现数据处理, DAC0832 实现D/ A转换, 采用拨码开关设置频率的参数,采用按键选取波形。
使用LED七段数码管作为波形的代号。
实现了正弦波、方波、三角波信号生成、幅值和频率调节,各种波形信号的参数控制,根据按键的设置可以同时输出两列波。
关键词:查表法,数字频率合成技术,单片机,可调波形,双通道引言信号发生器输出的常规波形,常应用于电子电路的性能测试和参数测量。
但常规的波形发生器一般是只能同时产生一种可控的波形,为此设计一种基于单片机控制的信号波形发生器,以满足设计需求。
一、设计方案论述:本课题的设计方案有四种:(1)采用函数信号发生器ICL8038集成模拟芯片,它是一种可以同时产生方波、三角波、正弦波的专用集成电路。
但是这种模块产生的波形都不是纯净的波形,会寄生一些高次谐波分量,采用其他的措施虽可滤除一些,但不能完全滤除掉。
(2)传统的直接频率合成技术(DS)。
该类方法能实现快速频率变换,具有低相位噪声以及所有方法中最高的工作频率。
但由于采用大量的倍频、分频、混频和滤波环节,导致其结构复杂、体积庞大、成本昂贵,而且容易产生过多杂散分量。
(3)锁相环式频率合成器( PLL)。
该类技术具有良好窄带跟踪特性,可选择所需频率信号,抑制杂散分量,且省去大量滤波器,有利于集成化和小型化。
但由于锁相环本身是个惰性环节,锁定时间较长,因而频率转换时间较长,且由模拟方法合成的正弦波的参数(如幅度、频率和相位等)都难以定量控制。
(4)直接数字式频率合成器(Direct Digital Frequency ,DDS)。
该类方法具有高频率稳定度、高频率分辨率以及极短的频率转换时间。
此外,全数字化结构便于集成,输出相位连续,频率、相位和幅度均可实现程控,而且理论上能够实现任意波形。
单片机课程设计--简易波形发生器
单片机课程设计--简易波形发生器电气与电子信息工程学院《单片机》课程设计报告题目:简易波形发生器专业班级:电气学号: 123456姓名:王刚指导教师:胡蔷、汤立刚设计时间:2013年12月9日—2013年12月13日设计地点: K2-407单片机、微机原理实验室2013年11月20日单片机课程设计成绩评定表答辩或质疑记录:1、该设计能产生几种波形?分别是哪几种?答:能产生4种波形,三角波,方波,锯齿波以及正弦波。
2、DAC0832有几种工作方式?哪几种?各有什么特点?该设计中DAC0832用的是哪一种方式?答:3种,单缓冲方式、双缓冲方式以及直通方式:(1)单缓冲方式此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。
方法是控制输入寄存器同时接收数据,或者只用输入寄存器而把DAC寄存器接成直通方式。
(2)双缓冲方式此方式适用于多个DAC0832同时输出的情形。
方法是先分别使这些DAC0832的输入寄存器接收数据,再控制这些DAC0832同时传送数据到DAC寄存器以实现多个D/A转换同步输出。
〔3〕直通方式此方式适用于连续反馈控制线路中。
方法是:数据不通过缓冲器,即-WR1,-WR2, -XFER, -CS 均接地,ILE接高电平。
此时必须通过I/O接口与微处理器连接,以匹配微处理器与D/A的转换。
该设计中DAC0832用的是单缓冲方式。
成绩评定依据:课程设计考勤情况(5%):课程设计仿真测试情况(15%)课程设计答辩情况(30%):完成设计任务及报告规范性(50%):最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字:2013 年12 月日课程设计任务书2013~2014 学年第 1 学期专业班级:电气指导教师:胡蔷汤立刚工作部门:电气与电子信息工程学院电气自动化教研室一、课程设计题目单片机课程设计二、课程设计内容(含技术指标)1.设计目的及要求(1)根据具体设计课题的技术指标和给定条件,以单片机为核心器件,能独立而正确地进行方案论证和电路设计,完成仿真操作。
单片机波形发生器报告资料
《单片机原理及应用》课程设计报告课题名称波形发生器学院自动控制与机械工程专业电气工程及其自动化班级姓名学号时间2015年7月目录一、设计任务及要求 (1)1.设计任务概述 (1)2.系统主要功能及要求 (2)二、系统总结结构及工作原理说明 (2)1.系统总体结构框图 (2)2.工作原理说明 (3)三、各模块电路设计 (3)1.所用元器件简介及引脚功能 (3)2.模块电路原理图 (8)四、软件设计 (11)1.主程序流程图 (11)2.各个子程序流程图 (13)五、软件调试过程及调试方法 (19)1.锯齿波 (19)2.梯形波 (20)3.三角波 (20)4.方波 (21)5.正弦波 (21)六、总结 (22)参考文献 (23)附录 (24)一、设计任务及要求1.设计任务概述(1)课程设计目的单片机原理及应用课程设计作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完《单片机原理及应用》课程后,并在进行相关课程设计基础上进行的一次综合练习。
单片机课程设计过程中,学生通过查阅资料、接口设计、程序设计、安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并具有综合功能的小应用系统设计。
使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。
使学生增进对单片机的感性认识,加深对单片机理论方面的理解,加深单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O接口、串行口等。
使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。
提高学生在单片机应用方面的实践技能和科学作风;培育学生综合运用理论知识解决问题的能力。
(2)课程设计要求课程设计应以学生认知为主体,充分调动学生的积极性和能动性,重视学生自学能力的培养。
单片机课程设计波形发生器报告
目录第一章概述 (2)第二章设计任务 (3)第三章硬件设计 (3)3.1系统主体构造 (3)3.2硬件元件概述 (3)3.3硬件连接 (9)3.4硬件参数简介 (10)第四章软件设计 (10)4.1锯齿波程序设计 (11)4.2三角波程序设计 (12)4.3正弦波程序设计 (13)第五章系统功能描述和功能 (15)第六章设计心得 (16)第七章参考文献 (16)附录 (16)程序设计 (20)第一章概述课程设计是一项重要的实践性教育环节,是学生在完成本专业所有课程学习后必须接受的一项结合本专业方向的、系统的、综合的工程训练。
在教师指导下,运用工程的方法,通过一个较复杂课题的设计练习,可使学生通过综合的系统设计,熟悉设计过程、设计要求、完成的工作内容和具体的设计方法,掌握必须提交的各项工程文件。
课程设计的基本目的是:培养理论联系实际的设计思想,训练综合运用电路设计和有关先修课程的理论,结合生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识。
课程设计的主要任务是运用所学微控制器技术、微机原理等方面的知识,设计出一台以AT89C51为核心的单片机数据采集、通讯或测控系统,完成信息的采集、处理、输出及人机接口电路等部分的软、硬件设计。
多功能波形发生器设计课题需要充分灵活运用编程语言所提供的各种指令语句,巧妙利用软硬件实现以上所要求的功能,在程序逻辑设计上也要求正确,合理的对项目进行分解分块,合理的逻辑设计可以起到事半功倍的效果,是整个项目当中最富有创新性和挑战性的部分。
第二章设计任务本次设计要求采用单片机和DAC设计波形发生器,具体要求如下:(1)利用单片机和DAC0832产生三角波、正弦波等波形。
(2)完成DAC与运放的连接,输出可供示波器显示。
(3)用按键改变波型的种类,同时显示波形的代号,波形的幅值与频率。
第三章硬件设计3.1 系统主体构造芯片方面选用AT89C51与DAC0832为主要芯片,根据要求采用键盘选择产生的波形的类型,所以基本电路有键盘电路,数模转换电路。
单片机研究报告书波形发生器
目录1、课程设计目地12、课程设计题目和实现目标13、设计方案14、Proteus仿真原理图15、程序流程图16、程序代码17、调试总结18、设计心得体会19、参考文献11、课程设计目地《单片机原理及应用》课程设计是与《单片机原理及应用》课程相配套地实践教学环节.《单片机原理及应用》是一门实践性很强地专业基础课,通过课程设计,达到进一步理解单片机地硬件、软件和综合应用方面地知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过地知识,并能不断接受新地知识.培养大胆发明创造地设计理念,为今后就业打下良好地基础.通过课程设计,掌握以下知识和技能:1.单片机应用系统地总体方案地设计;2.单片机应用系统地硬件设计;3.单片机应用系统地软件程序设计;4.单片机开发系统地应用和调试能力2、课程设计题目和实现目标本次课程设计地题目是;制作一个波形发生器,产生单极性、幅度可调、周期可调地方波、锯齿波、三角波、正弦波信号,不同波形用不同符号显示在一个LED上,用一个LCD 显示幅值和频率.本次课程设计地目标:设计一个波形发生器,带有四个按钮,分别是波形选择、增加频率、减少频率、调节幅度,并带有一个LCD和一个LED,LED用来显示波形地符号LCD 用来显示频率、幅值.波形符号用1表示正弦波,2表示三角波,3表示方波,4表示锯齿波.频率地调节幅度是10HZ,幅值调节幅度分别是0.2V,0.02V,0.3V,0.4V.3、设计方案本次设计采用AT89C51及其外围扩展系统和PCF8591,软件方面主要是应用C语言设计程序.系统以AT89C51为核心,配置相应地外设及接口电路,用Keil C及Proteus等软件开发,用C语言编程,组成一个多功能信号发生器.用户通过按键选择输出实验室中经常使用到地几种基本波形:方波、锯齿波、正弦波和三角波.方波由AT89C51单片机将最大值和最小值输出给D/A进行转换,并由用户通过键盘选择波形周期.可采用单片机程序产生以上4种波形,并通过一片D/A转换器输出.另外,采用一片D/A转换器来控制前一片D/A转换器地参考电压,从而可以改变输出波形幅值.通过外接键盘来设定波形地类型、幅值和频率.总体方案结构图a. 单片机地选择AT89C51是美国ATMEL公司生产地低电压、高性能CMOS8位单片机,片内含4Kbytes地可反复擦写地只读程序存储器(PEROM)和128bytes地随机抽取数据存储器(RAM),器件采用ATMEL公司地高密度、非易失性存储技术生产.兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大.AT89C51单片机可为您提供许多高性价比地应用场合,可灵活应用于各种控制领域.AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路.同时,AT89C51可降至0Hz地静态逻辑操作,并支持两种软件可选地节电工作方式.空闲工作方式停止CPU地工作,但允许RAM,定时器/计数器串口通信及中断系统继续工作,掉电方式保存RAM中地内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.AT89C51方框图PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件.PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口.PCF8591地3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外地硬件.在PCF8591器件上输入输出地地址、控制和数据信号都是通过双线双向I2C总线以串行地方式进行传输.PCF8591地功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换.PCF8591地最大转化速率由I2C总线地最大速率决定.PCF8591原理图b.输入电路键盘地接口电路在单片机控制系统中,为了实现人对系统地操纵控制及向系统输入参数,都需要为系统设置按键或键盘.键盘是一组按键地集合.键盘所使用地按键一般都是具有一对常开触点地按键开关,平时不按键时,触点处于断开(开路)状态,当按下按键时,触点才处于闭合(短路)状态,而当按键被松开后,触点又处于断开状态.C. 各部分组成(1)控制部分由单片机AT89C51作为系统地主核心,包括四个按钮,按钮用来选择波形、调节频率和幅值.(2)转换部分由PCF8591组成,作为D/A转换地芯片;(3)显示部分由一片LCD 和一片LED组成,LCD用来显示频率和幅值,LED用来显示数字“1,2,3,4”,数字1代表着此时输出地波形是正弦波,数字2代表输出波形是三角波,数字3代表输出是方波,数字4代表输出是锯齿波.4、Proteus仿真原理图正弦波与仿真电路图三角波与仿真电路图方波与仿真电路图锯齿波与仿真电路图5.程序流程图6、程序代码#include<reg52.h>#define uchar unsigned char#define uint unsigned int#include <I2C.H>#define PCF8591 0x90 //PCF8591 地址sbit key=P3^2;uchar wavecount; //'抽点'计数uchar THtemp,TLtemp;//传递频率地中间变量//uint T_temp;uchar judge=1; //在方波输出函数中用于简单判别作用uchar waveform; //当其为0、1、2,3时,分别代表三种波uint total_freq; //总频率uchar code freq_unit[4]={10,10,10,10}; //三种波地频率单位uchar idata wavefreq[4]={1,1,1,1}; //给每种波定义一个数组单元,用于存放单位频率地个数uchar idata lcd_hang1[16]={" V"};uchar idata lcd_hang2[16]={"f= Hz . V"};uint volt;//电压uchar ADdata;uchar k,p;/*******************************************************************DAC 变换, 转化函数*******************************************************************/bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val){Start_I2c(); //启动总线SendByte(sla); //发送器件地址if(ack==0)return(0);SendByte(c); //发送控制字节if(ack==0)return(0);SendByte(Val); //发送DAC地数值if(ack==0)return(0);Stop_I2c(); //结束总线return(1);}/*******************************************************************ADC发送字节[命令]数据函数*******************************************************************/bit ISendByte(unsigned char sla,unsigned char c){Start_I2c(); //启动总线SendByte(sla); //发送器件地址if(ack==0)return(0);SendByte(c); //发送数据if(ack==0)return(0);Stop_I2c(); //结束总线return(1);}/*******************************************************************ADC读字节数据函数*******************************************************************/unsigned char IRcvByte(unsigned char sla){ unsigned char c;Start_I2c(); //启动总线SendByte(sla+1); //发送器件地址if(ack==0)return(0);c=RcvByte(); //读取数据0Ack_I2c(1); //发送非就答位Stop_I2c(); //结束总线return(c);}/***********这两组数组很重要,需要根据波形来调试,选择合适地值,使输出波形达到频率要求************/uchar code waveTH[]={0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe};uchar code waveTL[]={0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, //正弦波频率调整中间值0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde, //三角波频率调整中间值0x88,0x50,0x90,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c};/*************************************************************************** **********************/uchar code triangle_tab[]={ //每隔数字8,采取一次三角波0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78, 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff ,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00}; uchar codesan_tab[]={0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x7 0,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff };uchar code sine_tab[256]={//输出电压从0到最大值(正弦波1/4部分)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,//输出电压从最大值到0(正弦波1/4部分)0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0 xf2,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,0x9 0,0x8d,0x89,0x86,0x83,0x80,//输出电压从0到最小值(正弦波1/4部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4 e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x 1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x 00,0x00,0x00,0x00,0x00,0x00,//输出电压从最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0 x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x 33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x 6f,0x72,0x76,0x79,0x7c,0x80};void delay(uchar z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void triangle_out() //三角波输出{// DAdata=triangle_tab[wavecount++];DA 数据DACconversion(PCF8591,0x40,triangle_tab[wavecount++] ); //DAC 数模转换if(wavecount>64) wavecount=0;}void sine_out() //正弦波输出{DACconversion(PCF8591,0x40,sine_tab[wavecount++]); //DAdata=sine_tab[wavecount++];if(wavecount>256) wavecount=0;}void square_out() //方波输出{judge=~judge;if(judge==1) DACconversion(PCF8591,0x40,0xff);else DACconversion(PCF8591,0x40,0x00);}void san_out()//{DACconversion(PCF8591,0x40,san_tab[wavecount++]);//DAdata=sine_tab[wavecount++];if(wavecount>32) wavecount=0;}/************1602液晶地相关函数*************/#define lcd_ports P1sbit rs=P2^2;sbit rw=P2^3;sbit lcden=P2^4;void write_com(uchar com){rs=0; //置零,表示写指令lcden=0;lcd_ports=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date){rs=1; //置1,表示写数据(在指令所指地地方写数据)lcden=0;lcd_ports=date;lcden=1;delay(5);lcden=0;}void disp_lcd(uchar addr,uchar *temp1){uchar num;write_com(addr);delay(1); //延时一会儿???for(num=0;num<16;num++){write_date(temp1[num]);//或者这样写write_date(*(temp1+num));delay(1);}}void init_lcd(){//uchar num;lcden=0; //可有可无rw=0; //初始化一定要设置为零,表示写数据write_com(0x38); //使液晶显示点阵,为下面做准备write_com(0x0c); //初始设置write_com(0x06); //初始设置write_com(0x01); //清零write_com(0x80); //使指针指向第一行第一格// disp_lcd(0x80,&lcd_hang1[4*16]); //在第一行显示//disp_lcd(0xc0,&lcd_hang1[4*16]); //在第二行显示}/********************1602液晶函数声明结束*********************/ void main(){uchar i=0;init_lcd();waveform=0;P0=0x00;TMOD=0x01; //设置定时器0为16位工作方式IT0=1; //设置外部中断0为下降沿触发ET0=1; //开定时器中断EA=1;k=100;while(1){// disp_lcd(0xc0,lcd_hang2); //在第一行显示// disp_lcd(0xc0,lcd_hang2); //在第二行显示};}void timer0() interrupt 1{TH0=THtemp;TL0=TLtemp;if(waveform==0){ P0=0xf9;p=10;sine_out();}else if(waveform==1){P0=0xa4;p=1;triangle_out();}else if(waveform==2){P0=0xb0;p=15;square_out();}else if(waveform==3){P0=0x99;p=20;san_out();}}//void AD() interrupt 2//{}void key_int0() interrupt 0{uchar keytemp;EA=0; TR0=0; //关总中断与定时器delay(5); //延时够吗if(key==0) //确实有按键按下而引发中断{keytemp=P3&0xf0; //获取P3口高四位地值switch(keytemp){case 0xe0: //选择波形waveform++;if(waveform>3) waveform=0;break;case 0xd0: //频率按规定单位依次增加wavefreq[waveform]++;if(wavefreq[waveform]>10) wavefreq[waveform]=1; // /*这边要用“>10”,因为它比“=11”可靠break; // 性更高,使加数有个上限,不会一直加下去*/case 0xb0: //频率按规定单位依次衰减wavefreq[waveform]--;if(wavefreq[waveform]<1) wavefreq[waveform]=10; //这边要用“<1”,因为它比“=0”可靠性break;case 0x70: //调节输出波形幅度PO口数据k=k+p; //调节输出幅度break;}THtemp=waveTH[waveform*10+(wavefreq[waveform]-1)]; //方括号中选取第几个数后,并把该值赋给T_tempTLtemp=waveTL[waveform*10+(wavefreq[waveform]-1)];total_freq= wavefreq[waveform] * freq_unit[waveform]; //求输出频率(个数*单位)lcd_hang2[5]=total_freq%10+0x30; //在液晶中显示个位,(0x30 在液晶显示中表示数字0)total_freq/=10; lcd_hang2[4]=total_freq%10+0x30; //在液晶中显示时十位total_freq/=10; lcd_hang2[3]=total_freq%10+0x30; //在液晶中显示时百位total_freq/=10; lcd_hang2[2]=total_freq%10+0x30; //在液晶中显示时千位// ISendByte(PCF8591,0x41);//ADdata=IRcvByte(PCF8591)*2; //ADC0 模数转换1volt=20*k;volt/=10;lcd_hang2[12]=volt%10+0x30;volt/=10;lcd_hang2[11]=volt%10+0x30;volt/=10;lcd_hang2[9]=volt%10+0x30;// disp_lcd(0x80,lcd_hang1); //在第一行显示disp_lcd(0xc0,lcd_hang2); //在第二行显示}wavecount=0; //'抽点'计数清零while(!key);EA=1; TR0=1; //开启总中断与定时器}7、调试总结一个单片机应用系统经过方案论证、硬件设计、软件地编制,通常不可能一次成功,不可避免地要出现一些错误,这就要靠调试来解决.调试地次序一般是先易后难,后面地调试应尽可能采用以前已调好地电路,各单元电路都调好以后,再进行系统总调.对于本波形发生器,其硬件电路地调试可以按如下步骤进行1)硬件电路地总体检查2)单元电路调试3)波形输出电路调试(1)在D/A转换中,为了改变每个输出波形地幅值,需要通过一个可调滑动变阻器来改变初值,进而通过PCF8591转换成相应地模拟量输出. (2)最后,利用PROTUES 和KEIL软件对所编写地主程序进行联调仿真,通过PROTUES中地模拟示波器观察到仿真结果.首先,通过按按键1,看是否有出现所需要地4种波,通过示波器观察;其次,通过按按键2和3,观察是否有相应地增加和减少频率,结果通过LCD来显示;最后通过按按键4来调节幅值.8、设计心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力地重要环节,是对学生实际工作能力地具体训练和考察过程.随着科学技术发展地日新日异,单片机已经成为当今计算机应用中空前活跃地领域,在生活中可以说得是无处不在.因此作为二十一世纪地大学来说掌握单片机地开发技术是十分重要地.在实训过程中遇到相当多地难题.一开始大家都是一头雾水,不知道从哪里下手,而且知识严重匮乏,大家只好分工合作,纷纷查找各种资料,并且成立了一个讨论小组,共同来研究这次地课设.经过两周地努力和合作终于把这次地课设完成了.可谓苦尽甘来.通过这次单片机课程设计,我不仅加深了对单片机理论地理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们坚持不懈和合作精神,让我们不断超越自己.课堂上没有见过真正地单片机,只是从理论上去理解,枯燥乏味,这次地实训,让我大开眼界,提高了单片机知识地理解和运用水平,从选题到定稿,从理论到实践,在整整两星期地日子里,可以学到很多很多地地东西,同时不仅可以巩固了以前所学过地知识,而且学到了很多在书本上所没有学到过地知识.通过这次课程设计我也发现了自身存在地不足之处,虽然感觉理论上已经掌握,但在运用到实践地过程中仍有意想不到地困惑,经过一番努力才得以解决.我认为这个收获应该说是相当大地.一开始我们从参考书上找来了课题,但是毕竟是参考书,做到后来发现很多程序都是不完整地,这让我们伤透了脑筋.看着别地小组都弄得有模有样了,可是我们连一个课题都还没有定好.好不容易又找到了课题,可是结果还是很不尽人意.程序接线什么地都弄好了,调试也没有问题,可是就是无法达到预期想要地结果.参考书毕竟只是一个参考,设计这种东西最后还是要靠自己动脑筋.然后我们大家一起齐心协力,从平时做地实验﹑老师上课地举例﹑书本上地知识以及老师地辅导和其他同学地帮助下终于完成了.另外在课程设计地过程中,当我们碰到不明白地问题时,指导老师总是耐心地讲解,给我们地设计以极大地帮助,使我们获益匪浅.因此非常感谢老师地教导.通过这次设计,我懂得了学习地重要性,了解到理论知识与实践相结合地重要意义,学会了坚持、耐心和努力,这将为自己今后地学习和工作做出了最好地榜样.我觉得作为一名工程专业地学生,这次课程设计是很有意义地.更重要地是如何把自己平时所学地东西应用到实际中.虽然自己对于这门课懂地并不多,很多基础地东西都还没有很好地掌握,觉得很难,也没有很有效地办法通过自身去理解,但是靠着这一个多礼拜地“学习”,在小组同学地帮助和讲解下,渐渐对这门课逐渐产生了些许地兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它.最后再次感谢老师和同学们地帮助.9、参考文献参考文献[1] 肖看,李群芳.单片机原理、接口及应用——嵌入式系统技术基础(第二版).清华大学出版社2010.9[2] 竺可桢.物理学.北京:科学出版社,1997.56-60.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.xS0DO。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计报告东莞理工学院课程单片机课程设计题目多波形发生器院系电子工程学院专业班级2011级电子信息工程2班学生姓名莫日朗学生学号201141301227指导教师胡必武2013年6月27日目录第一部分1.1波形发生器的概述 (3)1.2 本设计任务 (3)第2 部分2.1本设计的意义 (4)2.2 设计要求 (4)2.3 设计原理 (4)2.4 硬件设计 (4)2.5 软件设计 (8)第三部分3.1 心得 (19)3.2参考文献 (19)第一部分1.1波形发生器的概述波形发生器:顾名思义,一个能产生各种波形的仪器。
波形发生器可通过以下方法产生:(1):利用模拟电路的运放电路,可以产生三角波、锯齿波、正弦波。
用数字电路的555电路可以产生方波。
这方法的电路元件数量不多,焊接简单,但不稳定难以调试,产生的波形也不理想。
(2):利用市面上可以购得的专用直接数字合成DDS芯片的波形发生器:能产生任意波形。
而且可以达到很高的频率,其他方法很难做到这一点,所产生的的波形频率不高。
但这方法成本高,而且课程设计用这些芯片就没意思了。
(3):用AT89c51单片机和DAC0832芯片,用轻触按键组成的键盘来控制波形的选择以及各种扩展功能。
P1口连接按键键盘,作为波形的选择和其他扩展功能的输入口。
P0口连上上拉电阻后,接上数码管,用来显示所选择波形的类型。
这方法较上面两种方法好。
调试主要通过编辑89c51的程序,而且89c51、DAC0832、LM339这几个芯片的价格不贵。
至于编程方面,锯齿波、三角波、正弦波这三种分段后呈单调性的波形,可以通过等差增减来实现。
但是经过Proteus 7 Professional仿真后,所产生的波形不理想。
所以通过手动的方法计算出输出各点的电压值,然后在编写程序时以数组的方式给出。
当需要时,只要按照顺序进行输出即可。
1.2 本设计任务设计要求:一、基本功能:1 、可产生多种波形,如正弦波、三角波、锯齿波、方波;2 、各种波形可通过按键选择;二、扩展功能:1 、可调节信号的频率、占空比等参数;2 、其他自行增加的功能;扩展部分:按键s5、s6分别是控制方波的占空比增、减;s7、s8分别是控制波形的频率增、减。
自行增加的功能:制作电路的时候,扩展了通过数码管显示1、2、3、4,分别对应所选的波形是正弦波、方波、锯齿波、三角波。
又通过带源可调电位器来改变DAC0832的参考电压Vref的值,从而做到改变所产生波形的幅值。
Vref 的值越大,波形的幅值越大。
第2 部分2.1本设计的意义(1)通过为期一个星期的集中实验,将平时所学的理论知识结合到实际中。
实践中体会理论知识的用途和检验其是否真实。
制作电路的时候,发现模电书的运放输出都没接上拉电阻,还有89c51的P0口输出也没接上拉电阻。
虽然理论上是正确的,但是在实践时发现这会导致所期望的的效果不明显。
(2)学习了如何使用DAC0832、LM339芯片和用Proteus 7 Professional仿真。
(3)将平时学的分散的知识系统地组合一次,锻炼了系统的思维。
2.2 设计要求设计要求:一、基本功能:1 、可产生多种波形,如正弦波、三角波、锯齿波、方波;2 、各种波形可通过按键选择;二、扩展功能:1 、可调节信号的频率、占空比等参数;2 、其他自行增加的功能;2.3 设计原理课程设计要求输出正弦波、方波、锯齿波、三角波。
这些波形的实现的具体步骤:(1)正弦波:通过手动的方法计算出输出各点的电压值,然后在编写程序时以数组的方式给出。
当需要时,只要按照顺序进行输出即可。
将一个周期(360度)分为256个点,则每两个点之间的间隔为1.4度,然后计算出每个点电压对应的数字量,相邻的变化4,形成数组。
重复输出这组数据到DAC0832,就可以在系统输出端得到想要的正弦波。
(2)方波:按照设定的周期值将输出的电压改变,先输出0xff,延时,再输出0x00,延时。
(3)锯齿波:也使用查表法。
将三角波的一个周期(360度)分为256个点,相邻点等差,生成数组。
反复输出前128个数据到DAC0832,然后==0,就可以在系统输出端得到想要的锯齿波。
(4)三角波:将(3)中的数组256个数据全部输出到DAC0832,循环,就可以在系统输出端得到想要的三角波。
通过P1口和轻触开关S1-S4相连接来切换波形输出,P1内带上拉电阻,按键接地,按下后输入0到对应的P1口。
(如按S1键输出正弦波,按S2键产生方波,按S3键产生锯齿波,按S4键产生三角波)。
用P0口控制数码管静态显示波形代号,P0.0==0,显示1(0XF9);P0.1==0,显示2(0xA4);P0.2==0,显示3(0XB0);P0.3==0,显示4(0x99)。
用P2口向DAC0832发送数据,经DAC0832转换后,再把信号放大,最后接到示波器上显示。
2.4 硬件设计设计图示:仿真的总电路图仿真的正弦波效果图:方波的效果图:锯齿波的效果图:三角波的效果图:焊接出来的成品:所用到的电子元件介绍:(1)51单片机的内部结构基本组成部分:1 一个8位的CPU2 128B或256B单元内数据存储器(RAM)3 4KB或8KB片内程序存储器(ROM或EPROM)4 4个8位并行I/O接口P0~P3。
5 两个定时/计数器。
6 5个中断源的中断管理控制系统。
7 一个全双工串行I/O口UART(通用异步接收、发送器)8 一个片内振荡器和时钟产生电路。
图7 51单片机引脚管脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH 编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA 将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
(2)DAC0832芯片DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛,关于DAC0832的引脚功能如下:D0~D7:数字信号输入端。
ILE:输入寄存器允许,高电平有效。
CS:片选信号,低电平有效。
WR1:写信号1,低电平有效。
XFER:传送控制信号,低电平有效。
WR2:写信号2,低电平有效。
IOUT1、IOUT2:DAC电流输出端。
RfB:是集成在片内的外接运放的反馈电阻。
VREF:基准电压(-10~10V)。
VCC:是源电压(+5~+15V)。
GND:地。
图8 DAC0832芯片图(3)LM339芯片LM339引脚图These comparators are designed for use in level detection, low–level sensing and memory applications in consumer automotive and industrialelectronic applications.•Single or Split Supply Operation•Low Input Bias Current: 25 nA (Typ)•Low Input Offset Current: ±5.0 nA (Typ)•Low Input Offset V oltage: ±1.0 mV (Typ) LM139A Series•Input Common Mode V oltage Range to Gnd•Low Output Saturation V oltage: 130 mV (Typ) @ 4.0 mA•TTL and CMOS Compatible•ESD Clamps on the Inputs Increase Reliability without Affecting Device Operation(4)一位共阳极数码管由于单片机的P0口带负载的能力不高,所以连接数码管的时候要接上上拉电阻提高负载能力。