1、波形发生器课程设计说明书 精品 课程设计说明书课程设计名称: 专业课程设计 课程设计题目: 波形发生器 学 院 名 称: 信息工程学院 专业 课程设计任务书20 12 20 13学年 第 2 学期分散1周 第 17 周 19 周集中 题目波形发生器内容及要求: (1).能产生正弦波、方波、三角波; (2).输出波形的范围:100HZ1KHZ; (3).输出波形的幅度范围:05VPP且可调;进度安排:(1)第16周17周根据指导老师布置的题目,查资料,设计方案,画出电路图。(2)第17周电子时钟显示与校时设计:软件编程(在试验箱上实现)(3)第18周完成焊接与程序调试。(4)第19周周二检查验收
2、。(5)第19周周五交报告。 学生姓名:齐丕君指导时间 第17周到第19周指导地点:E 楼 505室任务下达2013 年 6 月 17 日任务完成20 13 年 7 月 5 日考核方式1.评阅 2.答辩 3.实际操作 4.其它指导教师 孙成立系(部)主任王忠华 摘要本设计是基于AT89C51单片机的数字式低频信号发生器。采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键等。通过按键控制可产生方波、三角波、正弦波等。其设计简单、性能优好,可用于多种需要低频信号的场所,具有一定的实用性。各种各样的信号是通信领域的重要组成部分,其中正弦波
3、、三角波和方波等是较为常见的信号。在科学研究及教学实验中常常需要这几种信号的发生装置。为了实验、研究方便,研制一种灵活适用、功能齐全、使用方便的信号源是十分必要的。本设计是利用AT89C51单片机和数模转换器件DAC0832产生所需不同信号的低频信号源,其信号幅度和频率都是可以按要求控制的。设计简要介绍了DAC0832数模转换器的结构原理和使用方法,AT89C51的基础理论,以及与设计电路有关的各种芯片。设计中着重介绍了如何利用单片机控制D/A转换器产生上述信号的硬件电路和软件编程。信号频率幅度也按要求可调。本次关于产生不同低频信号的信号源的设计方案,不仅在理论和实践上都能满足实验的要求,而且
4、具有很强的可行性。该信号源的特点是:体积小、价格低廉、性能稳定、实现方便、功能齐全。关键词 :AT89C51 DAC0832 LM324 目录第1章 实验要求及设计思路 5 1.1 设计内容及要求 51.2 设计方案 5第二章 硬件设计及分析 6 2.1 MCS-51单片机的内部结构 6 2.2 D/A转换电路 62.3键盘输入电路 82.4 电压放大电路 8第三章 系统软件设计 10 3.1 软件设计概述 10 3.2 主程序流程 10 3.3 波形的选择 11第四章 系统仿真与原理图 15 4.1 实验仿真电路图 15 4.2 实验仿真波形图 15第五章 实验调试和测试结果与分析 185.
5、1 硬件调试 185.2 软件调试 185.3 测试结果 18第六章 结论与心得 19参考文献 20附录1 元件清单 21附录2 程序清单及注释 22第一章 实验要求及设计思路1.1 设计内容及要求 设计一个波形发生器,要求如下: 1.能产生正弦波、方波、三角波; 2.输出波形的范围:100HZ1KHZ; 3.输出波形的幅度范围:05VPP且可调;1.2设计方案根据设计需要,可采用单片机程序产生3种波形,并通过一片D/A转换器输出。另外,采用一个滑动变阻器来改变参考电压,从而改变输出波形幅值,见图1.1所示。通过按钮或开关来设定波形的类型、频率。 图1.1 波形发生器原理框图 第二章 硬件电路
6、方案设计2.1 MCS-51单片机的内部结构2.1.1 内部结构概述典型的MCS-51单片机芯片集成了以下几个基本组成部分。1 一个8位的CPU2 128B或256B单元内数据存储器(RAM)3 4KB或8KB片内程序存储器(ROM或EPROM)4 4个8位并行I/O接口P0P3。5 两个定时/计数器。6 5个中断源的中断管理控制系统。7 一个全双工串行I/O口UART(通用异步接收、发送器) 8 一个片内振荡器和时钟产生电路。图3.2 单片机引脚2.2 D/A转换电路功能:将波形样值的编码转换成模拟值,完成波形输出。 DAC0832是一个具有两个输入数据寄存器的8位DAC。目前生产的DAC芯
7、片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。另一类芯片内部没有数据寄存器,输出信号随数据输入线的状态变化而变化,因此不能直接与微型计算机接口,必须通过并行接口与微型计算机接口。DAC0832是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,故不需要外加电路。 单片机向0832发送数字编码,产生不同的输出。先利用采样定理对各波形进行抽样,然后把各采样值进行编码,的到的数字量存入各个波形表,执行程序时通过查表方法依次取出,经过D/A转换后输出就可以得到波形。假如N个点构成波形的一个周期,则0832输出N个样值点后,样
8、值点形成运动轨迹,即一个周期。重复输出N个点,成为第二个周期。利用单片机的晶振控制输出周期的速度,也就是控制了输出的波形的频率。这样就控制了输出的波形及其幅值和频率。DAC0832结构: D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);ILE:数据锁存允许控制信号输入线,高电平有效;CS:片选信号输入线(选通数据锁存器),低电平有效;WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;XFER:数据传输控制信号输
9、入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;IOUT2:电流输出端2,其值与IOUT1值之和为一常数;Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;Vcc:电源输入端,Vcc的范围为+5V+15V;VREF:基准电压输入线,VREF的范围为-10V+10V;AGND:模拟
10、信号地DGND:数字信号地DAC0832的工作方式:根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。2.3键盘输入电路键盘在单片机应用系统中能实现向单片机输入数据、传送命令等功能,是人工干预单片机的主要手段。在键闭合测试,检查是否有键闭合去抖动。当测试到有键闭合后,需进行去抖动处理。由于按键闭合时的机械弹性作用,按键闭合时不会马上稳定接通,按键断开时也不会马上断开,由此在按键闭合与断开的瞬间,会出现电压抖动。键盘抖动的时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误,因而必须设法
11、消除抖动的不良后果。通过去抖动处理,可以得到按键闭合与断开的稳定状态。去抖动的方法有硬件与软件两种:硬件方法是加去抖动电路,如可通过RS触发器实现硬件去抖动;软件方法是在第一次检测到键盘按下后,执行一段10ms的延迟子程序后再确认该键是否确实按下,躲过抖动,待信号稳定之后,再进行键扫描。通常多采用软件方法。按照键盘与单片机的连接方式可分为独立式键盘与矩阵式键盘。独立式键盘相互独立,每个按键占用一根I/O口线,每根I/O口在线的按键工作状态不会影响其它按键的工作状态。这种按键软件程序简单,但占用I/O口线较多(一根口线只能接一个键),适用于键盘应用数量较少的系统中,由于本系统设置的按键较少,因此
12、采用的是独立式键盘。2.4电压放大电路DAC0832的输出电压比较小。因此,要将该电压信号在示波器中显示出来,需要有一个放大器将此电信号放大到所需范围之内。由于放大电路的增益是可调的,故运用运算放大电路能将电压信号放大到所要求的范围。第三章 系统软件设计3.1 软件设计概述系统软件由主程序和产生波形的子程序组成,软件设计主要是产生各种波形的子程序的编程,通过编程可得到各种波形。周期的改变可采用插入延时子程序的方法来实现。软件原理流程图如下。图3.1 软件原理流程框图3.2主程序流程系统软件由主程序和产生波形的子程序组成,软件设计重点是设计各种波形的子程序的程序,通过编程可得到各种波形。波形周期
13、的改变可采用插入延时子程序的方法来实现。主程序开始后通过读取按钮状态,判别是哪种波形需求,然后调用相应的子程序,输出相应的波形。利用8位D/A转换器DAC0832,可以将8位数字量转换成模拟量输出。数字量输入的范围为0255,对应的模拟量输出的范围在VREF-到VREF+之间。根据这一特性,可以利用单片机的并行口输出的数字量,产生常用的波形。3.3 波形的选择利用8位D/A转换器DAC0808,可以将8位数字量转换成模拟量输出。数字量输入的范围为0255,对应的模拟量输出的范围在VREF-到VREF+之间。根据这一特性,可以利用单片机的并行口输出的数字量,产生常用的波形。单片机是通过用户键盘输
14、入,选择希望输出的信号波形。本系统中,对用户输入的功能键对应的波形如下规定:1:得到的输出波形为正弦波。2:得到的输出波形为方波。3:得到的输出波形为三角波。 利用单片机控制实现波形输出的程序流程图如图所示图3.3 按键波形选择程序流程图3.3.1 三角波流程三角波产生是通过P0口将00H送入寄存器A中,DAC0832输出A中的内容,通过A中数值的加1递升,同时延时,当A中的内容为0FF时,A中的内容减1递减,从而循环产生三角波。程序流程图如图4.2所示: 图3.4 程序流程图3.3.2 方波流程方波产生是通过P0口将00H输出给DAC0832,输出对应模拟量,然后读取P2口的状态,取反后作为
15、延时常量,延时时间到,将FFH输出时,同样输出对应模拟量,再延时,从而得到方波。流程图如图3.5所示: 图 3.5 方波流程图3.3.3 正弦波流程正弦波波形设计通过查表指令得出。 流程图如3.6所示图3.6 正弦波程序流程图第四章 系统仿真与原理图4.1实验原理仿真图图4.1 系统仿真图4.2 实验波形仿真图先对汇编程序进行编译,生成目标代码文件,然后将目标文件加载到单片机中.单击运行就是全速运行软件中是Play运行按钮,通过模拟示波器可以看到以下波形图。 图4.1 方波波形图 图4.2 三角波波形图4.3 正弦波波形第五章 实验调试和测试结果与分析5.1硬件调试整个硬件调试过程基本顺利,由
16、于采用了分单元模块制作,各个单元电路工作稳定,给调试工作带来很大的方便。放大模块部分在实物模拟时,出现发送信号不稳定、跳变的问题,经过仔细的检查,电路连线路劲和线路连接问题,最终发现电路连接是出现连接未牢固的问题,从而得以解决。5.2软件调试虽然对于单片机的变成较熟悉,但是还存在一些问题,主要有以下问题:(1)在写调幅值的程序时,按照自己的想法写好,下载带单片机中,发现,每按一次键,幅值一次性增大到5V或者一次性减为0V,经过对程序的分析得知,当按下键时,程序循环很多次,为次添加一条键按下时死循环的语句使每次按下键幅值加一次后的只保持住,从而解决了问题。(2)当幅值和显示调试成功后,写调频程序
17、时,在硬件电路中调试时发现,达不到实验要求,经过努力,最后终于解决了这个问题。(3)由于AT89C51本身性能的问题,而且硬件方面又没有用倍频电路,产生的三角波和方波的频率没有达到1KHz,但是方波达到了1KHz。5.3测试结果各项指标均达到要求。测试数据如下: 1)、产生正弦波、方波、三角波基本实现。2)、三种波形的频率在100HZ 1KHZ可调。3) 、输出波形的幅度范围:0 - 5V PP且可调。第六章 结论与心得经过将近三周的单片机课程设计,完成了波形发生器的设计,基本达到设计要求。在本次设计的过程中,笔者发现很多的问题,。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问
18、题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,仔细比较分析其原理以及可行的原因。这就要求对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,笔者在书本理论知识的
19、基础上又有了更深层次的理解。同时在本次设计的过程中,学会了高效率的查阅资料、运用工具书、利用网络查找资料。在同学们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。偶而还会遇到错误的资料现象,这就要求同学们应更加注重实践环节。参考文献1尹建华、张惠群微型计算机原理与接口技术 第2版M 北京:高等教育出版社,20082张先庭. 单片机原理丶接口与C51应用程序设计. 第1版M 北京:国防工业出版社,2011-13孙涵芳MCS-51系列单片机原理及应用M 北京航空航天大学出版社1996-44夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 20015
20、 陈黎娟. 单片机技术实践教程. 南昌:南昌航空大学出版社, 2009-3附录一 元件清单元件序号元件名称型号数量1芯片AT89C511块2滑动变阻器5K1个3芯片LM3242个4芯片DAC08321个5按键开关5个附录二 程序清单及注释#include #include#include #define uchar unsigned char#define uint unsigned intuint d1,d2,d3;uint s;sbit s1=P10;/控制正弦波sbit s2=P11;/控制方波sbit s3=P12;/控制三角波sbit s4=P13;/频率加sbit s5=P14;/
21、频率减uchar code sintab128= 0x7F,0x85,0x8B,0x92,0x98,0x9E,0xA4,0xAA,0xB0,0xB6,0xBB,0xC1,0xC6,0xCB,0xD0,0xD5,0xD9,0xDD,0xE2,0xE5,0xE9,0xEC,0xEF,0xF2,0xF5,0xF7,0xF9,0xFB,0xFC,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFC,0xFB,0xF9,0xF7,0xF5,0xF2,0xEF,0xEC,0xE9,0xE5,0xE2,0xDD,0xD9,0xD5,0xD0,0xCB,0xC6,0xC1,0xBB,
22、0xB6,0xB0,0xAA,0xA4,0x9E,0x98,0x92,0x8B,0x85,0x7F,0x79,0x73,0x6C,0x66,0x60,0x5A,0x54,0x4E,0x48,0x43,0x3D,0x38,0x33,0x2E,0x29,0x25,0x21,0x1C,0x19,0x15,0x12,0x0F,0x0C,0x09,0x07,0x05,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x05,0x07,0x09,0x0C,0x0F,0x12,0x15,0x19,0x1C,0x21,0x25,0x29,0x2E,
23、0x33,0x38,0x3D,0x43,0x48,0x4E,0x54,0x5A,0x60,0x66,0x6C,0x73,0x79;/正弦波数据表采样128个点void delay (uchar k) uchar j; while(k-)!=0) for(j=0;j100;j+); / ; /延时程序void delay1(uchar i) uchar j; for(j=0;ji;j+) _nop_(); /延时程序void zhengxian() uchar i; for(i=0;i128;i+) P2=sintabi; delay1(d3); delay1(d3);/正弦波void fang
24、bo() P2=0xff; delay(d1+d3); P2=0; delay(d2+d3);/方波void sanjiao() uchar temp; for(temp=0;temp0;temp-) P2=temp; delay1(d3); /三角波void boxingkey() if(s1=0) s=1; else if(s2=0) s=2; else if(s3=0) s=3; else if(s4=0) delay(10);/延时消抖 if(s4=0) while(!s4); d3-; else if(s5=0) delay(10); if(s5=0) while(!s5); d3+; void main() d1=10; d2=10; d3=5; P1=0xff; while(1) boxingkey(); switch(s) case 1: zhengxian();break;/转换为正弦波 case 2: fangbo(); break;/转换为方波 case 3: sanjiao(); break;/转换为三角波
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1