单片机课程设计产生三角波、正弦波、方波
- 格式:docx
- 大小:20.37 KB
- 文档页数:14
目录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.由比较器和积分器组成方波—三角波产生电路,比较器输出的方波经积分器得到三角波,三角波到正弦波的变换电路主要由差分放大器来完成。
基于AT89S51单片机的数字信号发生器【摘要】智能仪器的出现,极大地扩充了传统仪器的应用范围。
智能仪器凭借其体积小、功能强、功耗低等优势,迅速地在家用电器、科研单位和工业企业中得到了广泛的应用。
本系统是基于AT89S51单片机设计的数字式波形发生器。
采用AT89S51作为系统的控制核心,外围电路采用数字/模拟转换电路(DAC0832),运放电路(MC1458),按键,ISP接口等。
通过按键控制切换产生正弦波,锯齿波,三角波,方波,各类型信号的频率统一为100HZ,而幅值在-5V~+5V范围内可调。
本设计电路原理简单,性能较好,具有一定的实用性和参考价值。
【关键词】单片机 ,波形发生器,D/A电路DIGITAL SIGNAL GENERATOR DESIGN BASED ON AT89S51【ABSTRACT】The emergence of intelligent machines, which greatly expanded the scope of application of traditional instruments. Intelligent instrument, with its small size, powerful, low-power advantages of home appliances quickly, research institutes and industrial enterprises has been widely used.The system is a digital waveform generator based on single chip computer. AT89S51 is used as a control core. The system is composed by digital/analog conversion (DAC0832),imply circuit (MC1458),button ISP inferface and LED lights. It can generate square triangle and sine wave,with LED display .The frequency of various types of signal unity of 100HZ, but the amplitude in the-5V ~ +5 V range adjustable. The circuit design is simple, better performance, has some practical and reference value.【KEY WORDS】the single chip computer , the signal generator , D/A conversion目录绪论 (9)1. 波形发生器现状 (9)2. 单片机在波形发生器中的运用 (9)第一章系统设计 (10)1. 系统要求 (11)2. 系统方案选择与论证 (11)3. 系统设计原理与思路 (11)第二章硬件电路的设计 (12)1. AT89S51的介绍 (12)2. 资源分配 (15)3. 最小单片机系统的设计 (15)4. 各模块电路的设计 (17)5. ISP接口 (23)第三章软件设计 (24)1. 主程序的设计 (25)2. 锯齿波程序的设计 (25)3. 三角波程序的设计 (26)4. 正弦波程序的设计 (27)5. 方波程序的设计 (28)第四章测试仿真 (29)1. 软件仿真 (29)2. 仿真结论分析 (30)3. 硬件测试结论分析 (31)绪论1.波形发生器现状波形发生器作为一种常用的应用电子仪器设备,传统的波形发生器可以完全用硬件电路搭建,如应用555振荡电路可以产生正弦波,三角波,方波等波形,传统的波形发生器多采用这种方式设计,这种方式不应用单片机,但是这种方式存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点,在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟震动等领域往往需要低频信号源,而由硬件搭建的波形发生器效果往往达不到好的效果,而且低频信号源所需要的RC很大,大电阻,大电容在制作上有困难,参数的精度也难以保证,而且体积大,漏电,体积大是该类波形发生器的显著缺点。
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(); }。
电路综合实习报告课程题目:基于单片机D/A转换设计函数信号发生器摘要:以51单片机为核心设计函数信号发生器,采用程序设计方法产生正弦波,方波,三角波,方波,锯齿波,波形的频率在一定频率范围内可任意改变。
通过键盘来控制四种波形的类型选择与频率变化,并通过液晶屏1602显示其各自的类型及数值。
主要包括信号发生部分、D/A转换部分以及液晶显示部分。
关键词:D/A转换,液晶显示主要内容:1.实习原理2.实习内容1)系统设计●设计要求●方案设计(各模块设计)●软件设计流程2)通过示波器对波形种类及频率进行测试●测试说明●测试过程●测试结果3.实习的心得体会4.附录:源程序1.实习原理:●系统总体框图●主控芯片AT89S52●DAC0832的内部结构:D/A转换原理图DAC0832是双列直插式8位D/A转换器。
能完成数字量输入到模拟量(电流) 输出的转换。
其主要参数如下:分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为-10V~+10V,供电电源为+5V~+15V,逻辑电平输入与TTL兼容。
DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号 /XFER。
●液晶屏的显示●矩阵键盘2.实习内容:1)系统设计利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、方波、三角波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
●设计要求1)基于单片机的D/A转换用软件编程产生四种波形,分别为:锯齿波,正弦波,方波,三角波;2)通过键盘选择四种波形类型;3)波形频率可调;●方案设计论证显示方案论证:方案一:采用LED数码管。
LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。
课程设计一方波-三角波-正弦波函数信号发生器目录1函数发生器的总方案及原理框图.....................................(1)1.1电路设计原理框图 (1)1.2电路设计方案设计 (1)2设计的目的及任务 (2)2.1课程设计的目的 (2)2.2课程设计的任务与要求 (2)2.3课程设计的技术指标 (2)3各部分电路设计 (3)3.1方波发生电路的工作原理 (3)3.2方波一-三角波转换电路的工作原理 (3)3.3三角波一-正弦波转换电路的工作原理 (6)3・4电路的参数选择及计算 (8)3.5总电路图 (10)4电路仿真 (11)4.1方波一-三角波发牛电路的仿真 (11)4.2三角波一-正弦波转换电路的仿真 (12)5电路的安装与调试 (13)5.1方波---三角波发生电路的安装与调试 (13)5.2三角波---正弦波转换电路的安装与调试 (13)5.3总电路的安装与调试 (13)5.4电路安装与调试中遇到的问题及分析解决方法 (13)6电路的实验结果 (14)6.1方波-一三角波发生电路的实验结果 (14)6.2三角波---正弦波转换电路的实验结果 (14)6.3实测电路波形、误差分析及改进方法 (15)7实验总结 (17)8仪器仪表明细清单 (18)9参考文献 (19)1.函数发生器总方案及原理框图1.1原理框图1.2函数发生器的总方案函数发生器一般是指能自动产生正弦波、三角波、方波及锯齿波、阶梯波等电压波形的电路或仪器。
根据用途不同,有产牛三种或多种波形的函数发牛器,使用的器件可以是分立器件如低频信号函数发生器S101全部采用晶体管,也可以采用集成电路如单片函数发生器模块8038 o为进一步掌握电路的基本理论及实验调试技术,本课题采用由集成运算放大器与晶体管差分放大器共同组成的方波一三角波一正弦波函数发生器的设计方法。
产牛正弦波、方波、三角波的方案有多种,如首先产生正弦波,然后通过整形电路将正弦波变换成方波,再由积分电路将方波变成三角波;也可以首先产生三角波一方波,再将三角波变成正弦波或将方波变成正弦波等等。
模拟电路课程设计报告设计课题:设计制作一个产生方波-三角波-正弦波函数转换器专业班级:09电气技术教育学生姓名:莫雪莲学号:090805026指导教师:曾祥华设计时间:2011年1月1日题目:设计制作一个产生方波-三角波-正弦波函数转换器一,设计任务和要求①输出波形频率范围为0.2KHz~20kHz且连续可调;②正弦波幅值为±2V,;③方波幅值为2V;④三角波峰-峰值为2V,占空比可调;⑤用桥式整流电容滤波集成稳压块电路设计电路所需的正负直流电源(±12V)。
二、方案设计与论证本设计要求产生三种不同的波形分别为正弦波\方波\ 三角波。
实现该要求有多种方案,如先产生正弦波,然后通过整形电路将正弦波变换成方波,再由积分电路将方波转换成三角波;也可以先产生三角波——方波,再将三角波变换成正弦波或将方波变换成正弦波。
但该课程设计采用方波——三角波——正弦波,正弦波通过滞回比较器可以转换成方波,方波通过一个积分电路可以转换成三角波,正弦波可以通过RC振荡电路产生。
方案一、㈠直流电源部分以下电路可把220V的交流电变成15V的直流电把220V 的交流电变成15V 的直流电路图㈡、波形产生部分设计一个产生方波—三角波—正弦波函数转换器包括由滞回比较器和RC 电路组成的方波 三角波发生器电路如下:方波——三角波10k¦¸Key=A50%方波转换成三角波电路图三角波——正弦波三角波转换成正弦波电路图方案二直流电源部分及方波-三角波发生电路同上,三角波变为正弦波电路用折线法电路。
电路图如下:方案二产生方波、三角波、正弦波电路图方案论证:我选的是第一个方案,上述两个方案均可以产生三种波形。
方案二的电路过多焊接部方便而且这样浪费了很多元器件,但是方案的在调节的时候比较方便可以很快的调节出波形。
方案一电路简洁利于焊接可以节省元器件,但是在调节波形的时候会比较费力,由于整个电路时一起的只要调节前面部分就会影响后面的波形。
课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目:正弦波-三角波-方波函数发生器初始条件:具备模拟电子电路的理论知识;具备模拟电路基本电路的设计能力;具备模拟电路的基本调试手段;自选相关电子器件;可以使用实验室仪器调试。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、频率范围三段:10~100Hz,100 Hz~1KHz,1 KHz~10 KHz;2、正弦波Uopp≈3V,三角波Uopp≈5V,方波Uopp≈14V;3、幅度连续可调,线性失真小;4、安装调试并完成符合学校要求的设计说明书时间安排:一周,其中3天硬件设计,2天硬件调试指导教师签名:年月日系主任(或责任教师)签名:年月日目录1.综述...........................................................1 1.1信号发生器概论...................................................1 1.2 Multisim简介....................................................21.3集成运放lm324简介...............................................32.方案设计与论证...............................................4 2.1方案一...................................................4 2.2方案二..................................................42.3方案三..................................................53.单元电路设计..............................................6 3.1正弦波发生电路的工作原理...............................6 3.2正弦波变换成方波的工作原理.............................8 3.3方波变换成三角波的工作原理.............................93.4正负12V直流稳压电源的设计............................104.电路仿真................................................124.1总波形发生电路............................................124.2正弦波仿真................................................134.3方波仿真...................................................144.2三角波仿真...............................................145.实物制作与调试..........................................155.1焊接过程.............................................155.2 实物图...............................................155.3调试波形.............................................186.数据记录................................................197.课设总结................................................208.参考书目................................................219.附录....................................................22 本科生课程设计成绩评定表....................................241.综述1.1信号发生器概论在人们认识自然、改造自然的过程中,经常需要对各种各样的电子信号进行测量,因而如何根据被测量电子信号的不同特征和测量要求,灵活、快速的选用不同特征的信号源成了现代测量技术值得深入研究的课题。
波形发生电路的设计一、课题:波形发生电路二、主要技术指标:能输出正弦波、方波、三角波。
正弦波Vpp=10V,f=160HZ;方波Vpp=6V,f=160HZ;三角波Vpp=4V,f=160HZ;方波Vpp=6V,f=160HZ。
三、方案论证及选择:(1)方波:方波产生电路是一种能够直接产生方波或矩形波的非正弦信号发生电路。
由于方波包含了极丰富的谐波,因此,这种电路又成为多谐振荡电路。
这是在迟滞比较器的基础上连了一个积分电路,把输出电压经Rf,C反馈到集成运放的反向端。
在运放的输出端引入限流电阻R和两个背靠背的稳压管就组成了一个双向方波发生的电路。
(2)三角波:三角波产生电路主要是积分电路的正向和反向充放电时间常数相等。
即与锯齿波产生的差别。
积分电路利用虚地的概念,电容C存在的漏电流也是产生误差的原因之一,选用泄漏电阻大的电容器可减少这种误差。
(3)正弦波:从结构上看,正弦波振荡电路就是一个没有输入信号的带选频网络的正反馈放大电路。
振幅平衡和相位平衡是正弦波振荡电路产生持续振荡的两个条件。
四、系统组成框图:系统由三个相对独立的分模块组成。
首先由选频网络选出电路的噪音中频率,符合选频网络的频率特性的一支通过放大然后输出正弦波。
正弦波输出后,以该信号做为信号源作为下一级的输入,从而输出方波。
同理,方波输入下一级积分电路中经过积分电路积分产生三角波。
五、单元电路设计及说明:1.正弦波信号产生单元:下图电路为桥式振荡电路。
该电路由三部分组成,即放大电路、选频网络和反馈网络。
其选频网络的频率特性如下:1211,;11rj cr r j cZ r Z j c j c j c r j c ωωωωωω+=+===++反馈网络的反馈系数为2212();13()v Z j cRF s Z Z j cR j cR ωωω==+++由此可得RC 串并联选频网络的幅频响应即相频响应为2001;3()v F j ωωωω=+-0()arctan;3f ωωωωϕ-=-由上两式知当00112f f rc rc ωωπ====或时,幅频响应的幅值为最大,即max 1;3F =相应的相频响应的相位角为零,即0;f ϕ=此时输出电压的幅值最大,并且输出电压为输入电压的3倍。
题目2:设计方波-三角波-正弦波函数发生器。
(3组9人,或选作题目5)设计任务和要求①输出波形频率范围为10Hz~100Hz;②方波幅值为3V,占空比可调;课题方波-三角波-正弦波函数发生器的设计一、实验名称:方波,三角波发生器的设计。
二、实验目的:(1)学习方波、三角波发生器的设计方法。
(2)进一步培养安装与调试电路的能力。
三、实验仪器:10KΩ电阻五个,6.2KΩ电阻三个, 2.2KΩ电阻两个,22KΩ、5.1 KΩ、75 KΩ、36 KΩ、2 KΩ电阻各一个,324芯片一块,β值为五十附近的NPN型BJT管四个,电位器三个,0.47μF、220μF电容各两个,示波器、直流稳压电压源、信号源各一台。
四、实验要求:(1)已知条件:集成运放324一片,BJT管若干只(2)性能指标要求:频率范围:10Hz~1KHz;输出电压:方波VPP<24V,三角波VPP>3V,正弦波VPP>1V;五、实验原理。
方波、三角波发生器有电压比较器和基本积分器组成。
运算放大器A1与R1、R2、R3及R P1组成电压比较器;运算放大器A2与R4、R P2、C1及C2组成反向积分器,计较器与积分器首尾相连,形成闭环电路,构成能自动产生方波、三角波的发生器。
电路参数:(1)方波的幅度:U o1m=U z(2)三角波的幅度:U o2m=U z(3)方波三角波的频率:f=可改变三角波的幅度,但会影响方波、三角波的频率;调节电位调节电位器Rp1可改变方波、三角波的频率,但不会影响方波、三角波的幅度。
器Rp2六、具体设计思路1、方波-三角波发生器的基本电路图中A1与A2均采用CF324集成运算放大器,其中A1与R1、R2、R3及滑动变阻器组成电压比较器;A2与R4、C1、C2及滑动变阻器组成反相积分器,比较器与积分器首尾相连,形成闭环电路,调节R p1、R p2,使其能自动产生方波-三角波的发生器。
2、正弦波发生器的基本电路七、整体电路设计。
波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。
本次课程设计使用的AT89S51 单片机构成的发生器可产生锯齿波、三角波、正弦波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑等优点。
在本设计的基础上,加上按钮控制和LED显示器,则可通过按钮设定所需要的波形频率,并在LED上显示频率、幅值电压,波形可用示波器显示。
二、系统设计波形发生器原理方框图如下所示。
波形的产生是通过AT89S51 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。
在AT89S51的P2口接5个按扭,通过软件编程来选择各种波形、幅值电压和频率,另有3个P2口管脚接TEC6122芯片,以驱动数码管显示电压幅值和频率,每种波形对应一个按钮。
此方案的有点是电路原理比较简单,实现起来比较容易。
缺点是,采样频率由单片机内部产生故使整个系统的频率降低。
1、波形发生器技术指标1)波形:方波、正弦波、锯齿波;2)幅值电压:1V、2V、3V、4V、5V;3)频率:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;2、操作设计1)上电后,系统初始化,数码显示6个…-‟,等待输入设置命令。
2)按钮分别控制“幅值”、“频率”、“方波”、“正弦波”、“锯齿波”。
3)“幅值“键初始值是1V,随后再次按下依次增长1V,到达5V后在按就回到1V。
4)“频率“键初始值是10HZ,随后在按下依次为20HZ、50HZ、100HZ、200HZ、500HZ、1000HZ循环。
三、硬件设计本系统由单片机、显示接口电路,波形转换(D/A)电路和电源等四部分构成。
电路图2附在后1、单片机电路功能:形成扫描码,键值识别、键处理、参数设置;形成显示段码;产生定时中断;形成波形的数字编码,并输出到D/A接口电路和显示驱动电路。
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(); }。