波形发生器实验报告_第1页
波形发生器实验报告_第2页
波形发生器实验报告_第3页
波形发生器实验报告_第4页
波形发生器实验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课程设计报告设计题目 波形发生器学生姓名 学 号 专业班级 指导教师 2014 年 02 月23日1、 用户需求 1、产生三角波、方波、正弦波信号2、 输出信号的频率和幅度可以通过按键来改变,,分析波形产生的最高频率。2、 设计任务 基于AT89C51的波形发生器主要功能如下: (1)可以三产生角波、方波、正弦波信号并通过按键控制。(2)输出信号的频率和幅度可以通过按键来改变,分析波形产生的最高频率。(3)以单片机为核心,经过D/A转换和放大电路的处理,最后输出信号。3、原理框图及说明根据设计任务,设计如下框图: 电源电路复位振荡电路显示电路AT89C51主控电路 D/A转换及放大电路按

2、键电路输出电路幅度调节电路图1、原理框图电源部分,为单片机提供5V稳压电源;8位按键提供给用户用来选择需要输出的波形,以及修改频率及方波占空比;数码管显示所选择的的波形代号,1代表正弦波,2代表方波,3代表锯齿波,4代表三角波;幅度调节电路用来调节输出波形的幅度;D/A转换及放大电路可以将数字信号转换成模拟信号输出我们所需要的波形;显示电路则是将波形显示在屏幕上。89C51上电后,扫描P1口,判断是否有键按下,进行相应的操作。 根据原理框图,设计电路图如附件1.设置的3位按键分别为S1代表正弦波,S2代表方波,S3代表锯齿波,S4代表三角波,S5代表增加方波占空比,S6代表减小方波占空比,S7

3、代表增加频率,S8代表减小频率。4、主要电路说明、元件选择及参数计算简易函数信号发生器原件清单如下:原件名称型号数量个用途原件名称型号数量个用途单片机AT89S521控制核心集成块DAC08321数模转换晶振12MHz1晶振电路集成块uA4701放大电路电容30pF2晶振电路电阻100K2放大电路电解电容22uF10V1复位电路电阻50K1放大电路电阻10K1复位电路电源12V/0.5A1放大电路排阻10K*101电源+5V/0.5A1提供+5V按键9选择波形、复位键、调节方波空占比、调节频率4.1主控芯片单片机的介绍(1)AT89C51的引脚如图2.2所示。图 2.2 引脚排列图 AT89C

4、51单片机的40个引脚可分为:电源引脚2根、时钟引脚两根、控制引脚4根、输入/输出引脚32根。各引脚功能描述如下:(1)主电压引脚 VCC:电源端,正常工作时接+5V电源 VSS:接地端(2)时钟引脚 XTAL1:内部振荡电路的反相放大器的输入端,接外部晶振和微调电容的一端。采用外部时钟电路时,对HMOS型工艺的单片机而言,此引脚应接地;对CHMOS型而言,此引脚应接外部时钟的输入端。 内部振荡电路的反相放大器的输出端,接外部晶振和微调电容的另一端。采用外部时钟电路时,对HMOS型工艺的单片机而言,此引脚应接外部时钟的输入端;对CHMOS型而言,此引脚悬空。(3)控制引脚 RST/VPD:复位

5、信号/备用电源输入引脚。当振荡运行时,RST引脚保持2个机器周期的高电平后,就可以使8051完成复位工作。该引脚的第二功能是VPD,即备用电源的输入端,具有掉电保护功能。在主电源VCC掉电期间,该引脚可接+5V备用电源,由VPD向内部RAM提供备用电源,保持内部RAM中的数据不丢失。 ALE/PROG:地址锁存允许信号/编程脉冲输入端。当CPU访问片外存储器时,ALE输出信号控制锁存P0口的低8位地址,从而实现P0口的数据与低位地址的分时复用。当8051上电正常工作后,ALE端以不变频率(振荡器频率的fosc/6)周期性地输出正脉冲信号。该脉冲可用作对外输出的时钟,或用于定时目的。该引脚的第二

6、功能PROG是做编程脉冲的输入端。 PSEN:外部程序存储器读选通信号端,低电平有效。 EA/Vpp:内部ROM和外部ROM选择端/编程电压输入端。当EA接高电平时,CPU访问片内ROM,但当PC值超过0FFFH时,将自动转去执行片外ROM指令;当EA接低电平时,CPU访问片外ROM。该引脚的第二功能是Vpp是作为编程电压的输入端。(4)输入/输出引脚 P0.0P0.7:P0口的8位口线。P0口是一个8位漏极开路型双向I/O,既可作地址/数据总线使用,又可作通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,P0口能以吸收电流的方式驱动8个LSTTL电

7、路。 P1.0P1.7:P1口的8位口线。P1口是一个带有内部上拉电阻的8位准双向I/O口。作为通用的I/O口,它能驱动4个LSTTL负载。 P2.0P2.7:P2口的8位口线。P2口是一个带有内部上拉电阻的的8位准双向I/O口。当CPU访问片外存储器时,P2口输出高8位地址总线,与P0口配合,组成16位片外存储器单元地址。P2口驱动4个LSTTL负载。(5)DAC0832是8位CMOS数/模转换芯片,其特点如下: 分辨率8位的并行D/A转换器。 双列直插式(DIP)封装,CMOS低功耗(功耗为20mW)器件。 单电源供电。参考电压为-10V+10V,从+5V+15V均可正常工作。 电流输出型

8、芯片,需外接运算放大器。 电流建立时间为1us。 片内二级数据缓存,数据输入可采用双缓冲、单缓冲和直通方式。数/模转换器DAC0832由1个8位数据寄存器、1个8位DAC寄存器、1个8位D/A转换器和控制逻辑组成。DAC0832各引脚功能: D7D0:8位数字量输入端,接CPU数据线D7D0。 IOUT1:模拟电流输出端1,输出值随DAC寄存器内容线性变化。 IOUT2模拟电流输出端2,IOUT1 + IOUT2 =常数。一般情况下,在单极性输出时,IOUT2接地,在双极性输出时IOUT2接运算放大器。 Vref:参考电压输出端。Vref可以外接一个正电压,也可以接一个负电压,范围为-10V+

9、10V。参考电压决定数字量0255(00HFFH)转化出来的模拟量电压值的幅度。 Rfb:反馈电阻输出引脚。DAC0832是电流输出,为了取得电压输出,需在电流输出端接运算放大器,构成I/V转换电路。DAC0832内部已经有反馈电阻,所以Rfb端可以直接与外部运算放大器相连,相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。 Vcc:电源电压。AGND:模拟量地。DGND:数字量地。 CS:片选信号,低电平有效。当CS=0时,DAC0832工作。 ILE:输入锁存器允许信号,高电平有效。 WR1:写控制信号1,低电平有效。WR2:写控制信号2,低电平有效。 XFER:数据传送信号,低电平

10、有效。4.2复位与振荡电路对于MCS-51一般的晶振可以在1.2MHZ12MHZ之间选择,这是电容C可以对应的选择10pf-30Pf。一条引脚接在XTAL1,另一条接在XTAL2。复位电路如图2,由C3和R1构成。由于51单片机为低电平复位,图示电路利用电容的特性,在刚刚外加5V电源时RST脚的电压为低。选择12MHz晶体,C1、C2、C3选择30pF电容,R1选择10K电阻。图2、复位与振荡电路4.3显示电路 显示元件选择8段LED数码管,共阳极。段选信号经过上拉电阻接到51的P0口,位选信号由按键接至P1.0到P1.3提供,因此得到数码管L1显示分别为1、2、3、4.显示数码管与P0口对应

11、表显示数码管显示1显示2显示3显示4P0口0xF90xA40xB00x99图2、显示电路4.4按键电路由于89C51的P1口内部有上拉电阻,为简化电路,用按键开关直接接对应引脚P1.0、至P1.7到地。其中P1.0接正弦波按键,p1.1接方波按键,p1.2接锯齿波按键,p1.3接三角波按键,p1.4接增加方波占空比按键,p1.5接减小方波占空比按键,p1.6接增加频率按键,p1.7接减小频率按键。当按键按下,P1口为零,进行选择。图4、按键电路4.5D/A转换及放大电路 为了将数字信号转换成模拟信号得到我们需要的波形,在P2口接入用于D/A转换的DAC0832芯片,并接入uA741运放用于将信

12、号放大。图5、输出驱动电路4.6调幅电路通过滑动变阻器的调节,调节电压,从而使波形的振幅发生变化。5、软件规划5.1软件流程图 开始 初始化按键设置 设置波形各点输出电压值 波形函数 键盘控制函数 主函数 调用波形函数 结束 5.2软件划分根据设计要求,先定义按键对应的端口,在定义各波形输出点的电压值,编写波形函数及按键控制函数,完成程序的设计。设计的全局变量:(1) 定义按键变量:sbit s1=P10; sbit s2=P11; sbit s3=P12; sbit s4=P13; sbit s5=P14; sbit s6=P15; sbit s7=P16; sbit s8=P17; (2)

13、 定义全局变量:uint d1,d2;uint s,p; uint n; (3) 定义正弦波各个输出点的电压值: uchar code sintab256(4) 定义锯齿波各输出点的电压值uchar code jctab128(5) 定义三角波各输出点的电压值uchar code sjtab256(6) 初始化变量:d1=10; d2=10; n=0; p=4; P0=0xff; P1=0xff;设计函数如下:(1)主函数 main() ,调用各函数 显示输出的波形。 程序循环。(2) 延时函数delay (uchar k) 功能:等待显示器反应(3)产生正弦波函数sin() 功能:扫描P2口

14、,产生正弦波。(4) 产生方波函数fang() 功能:扫描P2口,产生方波。(5)产生锯齿波juchi() 功能:扫描P2口,产生锯齿波。(6)产生三角波 tran() 功能:扫描P2口,产生三角波(7) 键盘控制函数 boxingkey() 功能:设置按键的控制功能,返回到具体的函数中。6、测试(测试方案设计、测试记录、结果分析)制作完成后,进行如下测试,结果合格。功能要求功能描述测试结果(1)按键是否满足设计的功能S1按下,显示正弦波数码管显示1,示波器显示正弦波S2按下,显示方波数码管显示2,示波器显示方波S3按下,显示锯齿波数码管显示3,示波器显示锯齿波S4按下,显示三角波数码管显示4

15、,示波器显示三角波S5按下,方波占空比增加方波占空比增加S6按下,方波占空比减小方波占空比减小S7按下,频率增加波形频率增加S7按下,频率减小波形频率减小幅度是否能调节调节滑动变阻器,幅度改变波形幅度能够改变测试结果:1、 按下按键1,数码管显示1,示波器输出正弦波 2、 按下按键2,数码管显示2,示波器输出方波。3、 按下按键3,数码管显示3,示波器输出锯齿波4、 按下按键4,数码管显示4,示波器输出三角波。5、 按下按键5,方波占空比增加。6、 按下按键6,方波占空比减小。7、 按下按键7,波形频率增加,以正弦波为例。8、 按下按键8,波形频率减小,以正弦波为例。9,使用调节幅度变阻器,可

16、使波形幅度发生改变,以正弦波为例。7、体会与感想 一周的课程设计结束了,本次课程设计的题目是波形发生器,虽然时间不是很长,但在这短短的时间里,我学到了很多的东西,首先学会了用keil软件来编程以及用proteus软件来仿真,也知道了一个单片机的工作过程,还复习了单片机的一系列内容,包括:复位电路、时钟电路、数码管与单片机的接口等。对于一些器件的工作原理也有了进一步的了解,如:89C51单片机,数码管等。对于软件程序和硬件电路的结合,更加深刻体会了单片机系统的妙处。与此同时,还在对一些硬件的使用上,电路板的设计上有了很大的进步,对今后的学习有很大的帮助。 在实验过程中,我遇到了一些问题(1) 初

17、次使用keil软件及proteus软件,对其熟练地掌握有一些困难,在电路原理图的设计过程中总是出现错误,对元件的名称有许多的不了解。但在同学和老师的帮助下找到了正确的元件。(2) 在程序的设计上也遇到了问题,对于C语言掌握的不是特别熟练,导致出现了许多的 语法错误,在一些细节上也出现了错误,丢失了一些符号。(3) 在仿真过程中,程序与电路图不对应,需要对照着修改,电路图也可能不能实现自己所需要的功能。(4) 在连接电路过程中,总是出现波形失真或不稳定的现象,但在我们的共同努力下,调出了一个较好的方波。 但本次课程设计我学会了很多,明白了更多的道理,总的来说有以下收获:(1)对波形发生器有了深刻

18、的认识,明白了波形器的原理,了解了我们所用的函数发生器的原理,我们生活中的许多事物都可以通过自身实践来明白(2)通过对电路的设计,对51系列单片机的原理和功能有了进一步的了解,学到了更多的电路知识,如复位电路的原理,晶振电路的作用,上拉电阻的功能,熟悉了DAC0832芯片的原理和功能,认识了uA741运放器,并且能对其进行应用。(3)通过原理图的绘制,学会了proteus软件的使用,并且能用它完成一些简单的电路设计,并且对元器件的封装有了一定的了解和认识。(4)通过自己动手设计,增强了自身的实践动手能力,对电路原理的应用有了更深刻的认识。(5)在仿真阶段,尤其是在硬件电路的检查阶段,有很深的体

19、会,有时候一个简单的错误就有可能造成电路无法正常工作,通过找错排错,更加熟悉了电路的原理和51单片机的工作原理。通过本次课程设计,我看到了自身还存在许多不足,在实践动手能力方面比较弱,对一些电路知识掌握得不是很好,对程序设计有很多的缺陷,还好在寻求别的同学和老师的帮助下,完成了课程设计。附1、原理图附2、程序清单#include <reg52.h> #include<absacc.h> #define uchar unsigned char #define uint unsigned int sbit s1=P10; / 输出正弦波sbit s2=P11; /输出方波s

20、bit s3=P12; /输出锯齿波sbit s4=P13; /输出三角波sbit s5=P14; /增加方波正占空比sbit s6=P15; /增加方波负占空比sbit s7=P16; /增加频率sbit s8=P17; /减小频率uint d1,d2; uint s,p; uint n; uchar code sintab256= /正弦波各个输出点的电压值0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96, 0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0

21、xc5, 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, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd, 0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6, 0xf5,0xf

22、4,0xf2,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,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69, 0x66,0x63,0x60,0x5d,0

23、x5a,0x57,0x55,0x51, 0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a, 0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27, 0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16, 0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02, 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01

24、,0x02, 0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15, 0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25, 0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38, 0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e, 0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66, 0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 ; uchar

25、 code jctab128= /设定锯齿波各输出点的电压值 0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e, 0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e, 0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e, 0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e, 0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e, 0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e, 0x60,0x62,0x64,0x66,0x6

26、8,0x6a,0x6c,0x6e, 0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e, 0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e, 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e, 0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae, 0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe, 0xc0,0xc2,0xc4,0xc6,0xc8,0xca,0xcc,0xce, 0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0

27、xde, 0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee, 0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe ; uchar code sjtab256= /设定三角波各输出点的电压值 0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e, 0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e, 0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e, 0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e, 0x40,0x42,0x

28、44,0x46,0x48,0x4a,0x4c,0x4e, 0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e, 0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e, 0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e, 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e, 0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae, 0xb0,0xb2,0xb4,0xb6,0xb8,0

29、xba,0xbc,0xbe, 0xc0,0xc2,0xc4,0xc6,0xc8,0xca,0xcc,0xce, 0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde, 0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee, 0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe, 0xfe,0xfc,0xfa,0xf8,0xf6,0xf4,0xf2,0xf0, 0xee,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0, 0xde,0xdc,0xda,0xd8,0xd6,0xd4,0xd2,0xd0

30、, 0xce,0xcc,0xca,0xc8,0xc6,0xc4,0xc2,0xc0, 0xbe,0xbc,0xba,0xb8,0xb6,0xb4,0xb2,0xb0, 0xae,0xac,0xaa,0xa8,0xa6,0xa4,0xa2,0xa0, 0x9e,0x9c,0x9a,0x98,0x96,0x94,0x92,0x90, 0x8e,0x8c,0x8a,0x88,0x86,0x84,0x82,0x80, 0x7e,0x7c,0x7a,0x78,0x76,0x74,0x72,0x70, 0x6e,0x6c,0x6a,0x68,0x66,0x64,0x62,0x60, 0x5e,0x5c,0

31、x5a,0x58,0x56,0x54,0x52,0x50, 0x4e,0x4c,0x4a,0x48,0x46,0x44,0x42,0x40, 0x3e,0x3c,0x3a,0x38,0x36,0x34,0x32,0x30, 0x2e,0x2c,0x2a,0x28,0x26,0x24,0x22,0x20, 0x1e,0x1c,0x1a,0x18,0x16,0x14,0x12,0x10, 0x0e,0x0c,0x0a,0x08,0x06,0x04,0x02,0x00 ; void delay (uchar k) /延时函数 uchar j; while(k-)!=0) for(j=0;j<125;j+); / ; void sin() /产生正弦波 P2=sintabn; n=n+p; if(n>=256) n=0; void fang() /产生方波 P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论