单片机课程设计产生三角波、正弦波、方波
基于51单片机的波形发生器的设计讲解

目录1 引言 (1)1.1 题目要求及分析 (1)1.1.1 示意图 (1)1.2 设计要求 (1)2 波形发生器系统设计方案 (2)2.1 方案的设计思路 (2)2.2 设计框图及系统介绍 (2)2.3 选择合适的设计方案 (2)3 主要硬件电路及器件介绍 (4)3.1 80C51单片机 (4)3.2 DAC0832 (5)3.3 数码显示管 (6)4 系统的硬件设计 (8)4.1 硬件原理框图 (8)4.2 89C51系统设计 (8)4.3 时钟电路 (9)4.4 复位电路 (9)4.5 键盘接口电路 (10)4.7 数模转换器 (11)5 系统软件设计 (12)5.1 流程图: (12)5.2 产生波形图 (12)5.2.1 正弦波 (12)5.2.2 三角波 (13)5.2.3 方波 (14)6 结论 (16)主要参考文献 (17)致谢....................................................... 错误!未定义书签。
1引言1.1题目要求及分析题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。
1.1.1示意图图1:系统流程示意图1.2设计要求(1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。
(2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。
(3) 系统具有存储波形功能。
(4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。
(5) 系统输出波形幅度范围0~5V。
(6) 系统具有显示输出波形的类型、重复频率和幅度的功能。
2波形发生器系统设计方案设计并制作一个波形信号发生器,能够产生正弦波、方波、三角波的波形,其中不使用DDS和一些专用的波形产生芯片。
并让系统的频率范围在1Hz~1MHZ可调节,在频率范围在1HZ~10KHz时,步进小于或等于10Hz,在频率范围在10KHz~1MHz时,步进小于或等于100Hz,并且电压在0~5V范围,能够实时的显示波形的类型、频率和幅值。
单片机函数波形发生器课程设计报告书

东北石油大学课程设计课程单片机课程设计题目函数波形发生器设计院系电气信息工程学院测控系专业班级测控技术与仪器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课题背景波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。
课程设计 单片机波形发生器

课程设计课程单片机课程设计题目波形发生器设计院系电气信息工程学院测控系专业班级学生姓名学生学号指导教师2011年 4月 6日任务书课程单片机课程设计题目波形发生器设计专业测控技术与仪器姓名学号一、任务设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和锯齿波信号可以在以上基础上任意发挥。
二、设计要求[1] 设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波等。
[2] 通过对AT89S51单片机的编程,了解不同波形的产生原理和设计方案,画出硬件电路图,编程完成软件部分,最后调试观察产生不同类型的波形信号。
[3] 写出详细的设计报告。
[4] 附有电路原理图及程序流程图,以及程序清单。
三、参考资料[1] 杜华.任意波形发生器及应用[J].国外电子测量技术,2005.1:38~40.[2] 程全.基于AT89C52实现的多种波形发生器的设计[J].2005.22(5):57~58.[3] 胡鸿豪,李世红.基于单片机和DDS的信号发生器设[J].设计参考,2006 (12)[4] 徐建军.MCS-51系列单片机应用及接口技术[M ].人民邮电出版社, 2003.[5] 高峰.单片机应用系统设计及实用设计[J].北京:机械工业出版社,2004年:96-100完成期限 2011.3.28至2011.4.8指导教师专业负责人2011年 3月 28 日目录第1章绪论 (3)1.1 波形发生器的概述 (3)1.2 本设计任务 (3)第2章总体方案论证与设计 (4)2.1 总体方案选择与论证 (4)2.2 系统设计基本原理图与分析 (5)第3章系统硬件电路的设计 (6)3.1 单片机最小系统的设计 (6)3.2资源分配 (6)3.3各模块电路的设计 (7)3.4按键和波形指示灯电路 (8)3.5电流电压转换电路 (9)第4章系统的软件设计 (10)4.1主程序模块 (10)4.2锯齿波程序模块 (11)4.3三角波程序模块 (11)第5章系统调试与测试结果分析 (13)5.1软件仿真 (13)5.2仿真结论分析 (14)5.3硬件测试结果分析 (14)结论 (15)参考文献 (16)附录1 程序 (17)附录2 整体电路原理图 (24)附录3 仿真效果图 (25)第1章绪论波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。
单片机课程设计———波形发生器

课程设计任务书题目波形发生器专业、班级学号姓名主要内容:设计一个产生各种波形的波形发生器基本要求:利用单片机P1.0引脚输出频率范围1Hz – 1000Hz的正弦波、方波、三角波、梯形波、锯齿波,并用示波器观察。
目录一、设计目的及意义 ........................................................................... - 3 -1.1设计目的 (3)1.2设计意义 (3)二、方案论证 ....................................................................................... - 3 -2.1设计要求 (3)2.2方案论证 (4)三、硬件电路设计 ............................................................................... - 4 -3.1设计思路、元件选型 (4)3.2原理图 (5)3.3主要芯片介绍 (5)3.4硬件连线图 (8)四、软件设计 ....................................................................................... - 9 -4.1锯齿波的产生过程 (10)4.2梯形波的产生过程 (11)4.3三角波的产生过程 (13)4.4方波的产生过程 (14)4.5正弦波的产生过程 (15)五、调试与仿真 ................................................................................. - 16 -六、总结.............................................................................................. - 19 -七、参考文献: ................................................................................. - 19 -一、设计目的及意义1.1设计目的(1)利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
设计能产生方波、三角波、正弦波的函数信号发生器电路

目录1 课程设计的目的与作用 (1)2 设计任务及所用multisim软件环境介绍 (1)2.1设计任务 (1)2.2所用multisim软件环境介绍 (1)2.2.1 Multistim 10简介 (1)2.2.2 Multistim 10主页面 (2)2.2.3 Multistim 10元器件库 (2)2.2.4 Multistim 10虚拟仪器 (3)2.2.5 Multistim 10分析工具 (3)3 电路模型的建立 (3)3.1原理分析 (3)3.2函数信号发生器各单元电路的设计 (5)3.2.1方波产生电路图 (5)3.2.2方波—三角波转换电路图 (5)3.2.3正弦波电路图 (6)3.2.4方波-三角波-正弦波函数发生器整体电路图 (6)4 理论分析及计算 (7)4.1方波发生电路 (7)4.2方波—三角波 (7)4.3正弦波 (7)5 仿真结果分析 (8)5.1仿真结果 (8)5.1.1方波、三角波产生电路的仿真波形如图所示 (8)5.1.2方波—三角波转换电路的仿真 (10)5.1.3三角波—正弦波转换电路仿真 (11)5.1.4方波—三角波—正弦波转换电路仿真 (12)5.2结果分析 (13)6 设计总结和体会 (133)7 参考文献 (144)I1 课程设计的目的与作用1.巩固和加深对电子电路基本知识的理解,提高综合运用本课程所学知识的能力。
2.培养根据课题需要选学参考书籍,查阅手册、图表和文献资料的自学能力。
通过独立思考,深入钻研有关问题,学会自己分析并解决问题的方法。
3.通过电路方案的分析、论证和比较,设计计算和选取元器件;初步掌握简单实用电路的分析方法和工程设计方法。
4.了解与课题有关的电子电路以及元器件的工程技术规范,能按设计任务书的要求,完成设计任务,编写设计说明书,正确地反映设计与实验的成果,正确地绘制电路图等。
5.培养严肃、认真的工作作风和科学态度2 设计任务及所用multisim软件环境介绍2.1 设计任务设计能产生方波、三角波、正弦波的函数信号发生器电路1)输出各种波形工作频率范围:10—100Hz,100—1KHz,1K—10KHz。
方波发生器程序(单片机课程设计)

单片机硬件用实习任务书这个设计中要完成波形发生器。
能够产生三角波、方波、正弦波。
当按A键时输出三角波,按B键时输出方波,按C键时输出正弦波,调节电位器能改变波形的频率,并用四位LED显示当前输出的是什么波形,频率是多少。
具体任务:●单片机芯片的选择●存贮器的设计●输入/输出接口的设计●键盘和显示器的设计●制作原理图与印刷电路板图●利用仿真器来调试电路板●程序编写与调试第一阶段:完成器件选择,原理图的绘制。
第二阶段:完成程序编写,仿真器的调试。
总成绩分为三部分: 1、原理图、硬件图的绘制 30%2、仿真器调试 40%3、设计报告 30%目录1 实习内容与要求.................................................................................. 错误!未定义书签。
2 总体方案设计...................................................................................... 错误!未定义书签。
3 硬件设计.............................................................................................. 错误!未定义书签。
3.1 单片机系统硬件设计................................................................ 错误!未定义书签。
3.2 显示模块硬件设计.................................................................... 错误!未定义书签。
3.3 键盘模块硬件设计.................................................................... 错误!未定义书签。
正弦波、方波、三角波的发生电路设计

正弦波﹑方波﹑三角波的发生电路设计摘要现今世界中电子技术与电子产品的应用越加广泛,人们对电子技术的要求也越来越高。
因此如何根据实际要求设计出简便实用的电子技术物品便显得尤为重要。
灵活、快速的选用不同特征的信号源成了现代测量技术值得深入研究的课题。
能将简单的易获取的信号转换为自己所需的复杂信号是一项必不可少的技术。
我们有必要做好这相关方面的研究,为被测电路提供所需要的信号及各种波形,以便完成各种相关试验。
信号源在各种试验应用和实验测试处理中,仿真各种测试信号,提供给被测电路,用来满足实验的各种要求。
关键词:单片机,信号发生器,波形ABSTRACT:The application of electronic technology and electronic products in today's world increasingly extensive, people also more and more high to the requirement of electronic technology. According to actual requirements so how to design simple and practical electronic technology items, it becomes very important. Flexible, fast, choose different characteristics of the signal source is worth studying deeply the modern measuring technology. Can be simple, easy to obtain signal can be converted into their complex signal is an essential technology. It is necessary for us to do the related research, to provide the required signal circuit under test and various waveform, to complete various related experiment. Signal source in various test application and test processing, simulation of testing signal, provided to the circuit under test, to satisfy the requirements of the experiments.KEY WORDS:Microcontroller, signal generator, waveform毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
正弦波-方波-三角波发生电路(模拟电子技术课程设计)

正弦波-方波-三角波发生电路(模拟电子技术课程设计)一设计实验目的(1)掌握电子系统的一般设计方法(2)掌握模拟IC器件的应用(3)会运用EDA工具对所作出的理论设计进行模拟仿真测试,进一步完善理论设计(4)通过查阅手册和文献资料,熟悉常用电子器件的类型和特性,并掌握合理选用元器件的原则(5)掌握模拟电路的安装\测量与调试的基本技能,熟悉电子仪器的正确使用方法,能力分析实验中出现的正常或不正常现象(或数据)独立解决调试中所发生的问题(6)学会撰写课程设计报告(7)培养实事求是,严谨的工作态度和严肃的工作作风(8)培养综合应用所学知识来指导实践的能力(9)完成一个实际的电子产品;进一步提高分析问题、解决问题的能力设计一个正弦波-方波-三角波发生电路(1)正弦波-方波-三角波的频率在100HZ~20KHZ范围内连续可调;(2)正弦波-方波的输出信号幅值为6V。
三角波输出信号幅值为0~2V连续可调(3)正弦波失真度≦5%。
二实验中的仪器设备三实验所用电路调节方波脉冲宽度调节正弦波失真程度调节方波电压大小调节反馈电路的放大倍数四实验结果1.正弦波-方波-三角波的频率在28.6HZ~28.6KHZ范围内连续可调;对应的28.6HZ时,对应的电容大小为1uf;对应的28.6KHZ时,对应的电容大小为0.01uf2.方波的输出幅值为6V;正弦波的一级输出幅值为2.8V,二级输出幅值为3.6V;三角波峰值在0~4V内连续可调3.正弦波失真度一讨论1.实验中发生的问题(1) 我们由一级电路得到的方波峰峰值达到24V左右,后通过分压电路得到所需要的方波电压峰值为6V(2) 正弦波也可以通过负反馈电路适当放大2.建议或其它555电路产生方波,通过RC电路得到三角波,也可以通过积分器得到三角波,三角波到正弦波的转化,可以通过RC电路,或者通过低通滤波器,另外频率的调节可以通过可调电容!器件清单表:数量LM358芯片 1电阻R8=R9 22kΩ 2R1 1kΩ 1R2 62kΩ 1R3 100Ω 1R4=R5=R6=10k 3可调电阻 A 20k 1R10 100k 1电容 C3=470nF 1C4=C5=10nF 2可调电容 A=B=20nF 2直流电源 Vcc=6v 1555电路板 1接地线总结:利用555电路完成相应的三种波形的转换,具有一定频率的方波转换得到相应的正弦和三角!但对三角波和正弦波的失真率不能有充分的保证!幅值也不能达到相应的标准.后面接一个负反馈放大电路,使得三角波幅值可调,通过改变滑动变阻器R10.由比较器和积分器组成方波—三角波产生电路,比较器输出的方波经积分器得到三角波,三角波到正弦波的变换电路主要由差分放大器来完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STC89C51单片机产生正弦波、方波、三角波LED显示频率源程序#include <stdio.h>#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit LATCH1=P2^6;//定义锁存使能端口段锁存sbit LATCH2=P2^7;// 位锁存unsigned char TempData[8]; //存储显示值的全局变量unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code DuanMa2[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};// 显示段码值0~9unsigned char code DuanMa1[3]={0x77,0x7c,0x39};unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码#define DataPort P0sbit keyA=P3^3;sbit keyB=P3^4;sbit keyC=P3^5;sbit wc=P1^0;sbit scl=P1^1;sbit sda=P1^2;sbit scl1=P1^3;sbit sda1=P1^4;sbit p5=P1^5;sbit p6=P1^6;sbit p7=P1^7;uint sign,ad;uchar temp[10], temp1[3];//定义显示区域临时存储数组uchar voltage; //定义浮点变量uchar l=0,m=100,n=0;uchar code sin[200] = {52,53,55,56,58,59,61,62,64,65,67,68,70,71,73,74,75,77,78,79,81,82,83,84,85,86,88,89,90,90,91,92,93,94,95,95,96,96,97,97,98,98,98,99,99,99,99,100,100,100,100,100,9 9,99,99,99,98,98,98,97,97,96,96,95,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,79,7 8,77,75,74,73,71,70,68,67,65,64,62,61,59,58,56,55,53,52,50,48,47,45,44,42,41,39,38,3 6,34,33,32,30,29,27,26,24,23,22,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,5,4,4,3,2,2,2,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,2,2,2,3,4,4,5,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,26,27,29,30,32,33,35,36,38,39,41,42,44,45,47,48,50};void DelayUs2x(unsigned char t){while(--t);}void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}void delay(){ ;; }void delay1(uchar x){uchar a,b;for(a=x;a>0;a--)for(b=110;b>0;b--);}void Delay2(unsigned int t){while(--t);}void Display(){uchar i;for(i=0;i<4;i++){DataPort=WeiMa[i]; //取位码LATCH2=1; //位锁存LATCH2=0;if(i==0) DataPort=DuanMa1[sign-1];else if(i==1) DataPort=DuanMa2[temp1[i]];else DataPort=DuanMa[temp1[i]]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0;Delay2(500); // 扫描间隙延时,时间太长会闪烁,太短会造成重影}}//pcf8591void init1(){sda1=1;delay();scl1=1;delay();}void start1() //开始信号{sda1=1;delay();scl1=1;delay();sda1=0;delay();}void stop1() //停止{sda1=0;delay();scl1=1;delay();sda1=1;delay();}void respons1() //应答{uchar i;scl1=1;delay();while((sda1==1)&&(i<250))i++;scl1=0;delay();}void write_byte1(uchar date) {uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl1=0;delay();sda1=CY;delay();scl1=1;delay();}scl1=0;delay();sda1=1;delay();}uchar read_byte1(){uchar i,k;scl1=0;delay();sda1=1;delay();for(i=0;i<8;i++){scl1=1;delay();k=(k<<1)|sda1;scl1=0;delay();}return k;}void write_add1(uchar date) //写入DA{start1();write_byte1(0x90);respons1();write_byte1(0x40);respons1();write_byte1(date);respons1();// delay1(100);stop1();}uchar read_add1( uchar address ) //读AD值{uchar date;start1();write_byte1(0x90);respons1();write_byte1(0x40|address);respons1();start1();write_byte1(0x91);respons1();date=read_byte1();stop1();return date;}//键盘void keyscan(){if(keyA==0){delay1(10);if(keyA==0)sign=1;while(!keyA);}if(keyB==0){delay1(10);if(keyB==0)sign=2;while(!keyB);}if(keyC==0){delay1(10);if(keyC==0)sign=3;while(!keyC);}}//eepromvoid start() //开始信号{sda=1;delay();scl=1;delay();sda=0;delay();}void stop() //停止{sda=0;delay();scl=1;delay();sda=1;delay();}void respons() //应答{uchar i;scl=1;delay();while((sda==1)&&(i<250))i++;scl=0;delay();}void init(){sda=1;delay();scl=1;delay();}void write_byte(uchar date){uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;sda=CY;delay();scl=1;delay();}scl=0;delay();sda=1;delay();}uchar read_byte(){uchar i,k;scl=0;delay();sda=1;delay();for(i=0;i<8;i++){scl=1;delay();k=(k<<1)|sda;scl=0;delay();}return k;}void write_add(uchar date[],uchar address ) {uchar i,*pdate;pdate=date;for(i=0;i<2;i++){write_byte(0xae);respons();write_byte(address+i);respons();write_byte(*(pdate+i));respons();stop();}}void read_add(uchar date[] ,uchar address ) {uchar i,*pdate;pdate=date;for(i=0;i<2;i++){start();write_byte(0xae);respons();write_byte(address+i);respons();start();write_byte(0xaf);respons();*(pdate+i)=read_byte();stop();}}void sj(){if(l<100){write_add1(l);l++;}if(l>=100&m>0){write_add1(m);m--;}if(l>=100&m<=0){l=0;m=100;}p5=0;p6=1;p7=1;}void zx(){if(l<200){write_add1(sin[l]);l++;}if(l>=200)l=0;p6=0;p7=1;p5=1;}void fb(){if(l<100){write_add1(255);l++;}if(l>=100&n<100){write_add1(0);n++;}if(l>=100&n>=100){l=0;n=0;}p7=0;p5=1;p6=1;}void main(){uchar i,num,tab[2];//定义显示区域临时存储数组wc=0;num=0;tab[0]=0;tab[1]=0;TMOD=0x21;//设置定时器1为工作方式2定时器0为工作方式1 TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;init();init1();for(i=0;i<5;i++)num=read_add1(0);read_add(tab,1);sign=tab[0];ad=(uint)num*100;TH0=(65536-ad)/256;TL0=(65536-ad)%256;ET0=1; //定时器中断打开TR0=1;while(1){keyscan();for(i=0;i<5;i++)num=read_add1(0);voltage=500/num;ad=(uint)num*100;tab[0]=sign;tab[1]=ad;write_add(tab,1);num=read_add1(0);voltage=500/num;temp1[0]=voltage/100;temp1[1]=(voltage%100)/10;temp1[2]=voltage%1000;Display();}}void ser() interrupt 4{RI=0;sign=SBUF;}void T0_time() interrupt 1{ad=(uint)read_add1(0)*100;TH0=(65536-ad)/256;TL0=(65536-ad)%256;if(sign==1) sj(); if(sign==2) zx(); if(sign==3) fb(); }。