ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:429.92KB ,
资源ID:7333767      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7333767.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机波形发生器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51单片机波形发生器.docx

1、51单片机波形发生器单片机课程设计报告 题 目 波形发生器 专 业 电子信息科学与技术 班 级 2008级1班 学生姓名 * 学 号 * 指导老师 * 2011年 7 月 8 日 四、方案论证 - 3 -波形发生器一、设计目的(1)利用所学单片机机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。 (2)我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的波形发生器。 (3)掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的单片机应用系统功能器件。 (4)在平时的学习中,我

2、们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。 (5)通过这几个波形进行组合形成了一个波形发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家单片机知识的应用。二、设计的主要内容和要求1.1基本内容和要求(1)设计一款能够产生3种波形的波形发生器;(2)设计波形选择按钮;(3)LED或LCD显示波形代号(如:1为正弦波,2为方波,3为锯齿波,4为三角波);(4)其他功能(创新部分)。1.2创新部分(1)

3、波形频率调节;(2)波形幅值调节;(3)方波占空比调节;(4)滤波。三、整体设计思路3.1设计思路1、课设需要各个波形的基本输出。如输出正弦波、方波、锯齿波、三角波。这些波形的实现的具体步骤:(1)正弦波:通过手动的方法计算出输出各点的电压值,然后在编写程序时以数组的方式给出。当需要时,只要按照顺序进行输出即可。这种方法比在软件中计算速度快且曲线的形状修改灵活。在本设计中将一个周期(360度)分为256个点,则每两个点之间的间隔为1.4度,然后计算出每个点电压对应的数字量,形成数组。只要反复输出这组数据到DAC0832,就可以在系统输出端得到想要的正弦波。(2)方波:按照设定的周期值将输出的电

4、压改变即可。(3)锯齿波:也使用查表法。将三角波的一个周期(360度)分为256个点,相邻点等差,生成数组。反复输出前128个数据到DAC0832,就可以在系统输出端得到想要的锯齿波。(4)三角波:将(3)中的数组256个数据全部输出到DAC0832,循环,就可以在系统输出端得到想要的三角波。2、通过P1口和轻触开关S1-S4相连接来切换波形输出(如按S1键输出正弦波,按S2键产生方波,按S3键产生锯齿波,按S4键产生三角波)。用P0口控制数码管静态显示波形代号。用P2口向DAC0832发送数据,经DAC0832转换后,再把信号放大,最后接到示波器上显示。3.2元件选型单片机AT89S52系统

5、,DAC0832一片,PC机一台,运算放大器。3.3功能原理图四、方案论证波形发生器的实现方法通常有以下几种:方案1:用分立元件组成的波形发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试。方案2:可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。方案3:利用专用直接数字合成DDS芯片的波形发生器:能产生任意波形并达到很高的频率。但成本较高。

6、方案4:采用AT89S52单片机和DAC0832芯片,直接连接键盘和显示。该种方案主要对AT89S52单片机的各个I/O口充分利用。P1口是连接键盘, P0口接显示电路,P2口连接DAC0832输出波形。这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的成本。也对按照系统便携式低频信号发生器的要求所完成。占用空间小,使用芯片少,低功耗。综合考虑,方案4各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案4。五、硬件电路设计5

7、.1 电路连线图通过P1.0-P1.3口和轻触开关S1-S4相连接来切换波形输出(如按S1键输出正弦波,按S2键产生方波,按S3键产生锯齿波,按S4键产生三角波),P1.4、P1.5接方波占空比调节开关,P1.6、P1.7接波形频率调节开关,如图2 所示。用P0口控制数码管静态显示波形代号,如图3所示。用P2口向DAC0832发送数据,经DAC0832转换后,再把信号放大,最后接到示波器上显示如图4所示。图2 按键电路 图3 显示电路图4 DAC0832连接图和幅值调节电路图5 总电路图图6 滤波电路图注:波形的幅值调节,使用硬件方法实现,如图4中DAC0832的VREF口接一滑动变阻器,通过

8、改变DA转换的参考电压来实现波形幅值的改变。5.2主要芯片介绍(1)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 一个片内振荡器和时钟产生电路。图7 51单片机引脚管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能

9、够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在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”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,

10、P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器

11、周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两

12、次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。(2)DAC0832芯片DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。DAC0832输出的是电流,一般要求输出是电压,所

13、以还必须经过一个外接的运算放大器转换成电压。DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。所以这个芯片的应用很广泛,关于DAC0832的引脚功能如下:D0D7:数字信号输入端。ILE:输入寄存器允许,高电平有效。CS:片选信号,低电平有效。WR1:写信号1,低电平有效。XFER:传送控制信号,低电平有效。WR2:写信号2,低电平有效。IOUT1、IOUT2:DAC电流输出端。RfB:是集成在片内的外接运放的反馈电阻。 VREF:基准电压(-1010V)。VCC:是源电压(+5+15V)。GND:地。图8 DAC0832芯

14、片图六、软件设计图9主程序流程图图10 按键部分流程图6.1正弦波的产生过程 通过手动的方法计算出输出各点的电压值,形成数组sintab256,反复顺序输出这组数据到DAC0832,就在系统输出端得到正弦波。6.2方波的产生过程 按照设定的周期值改变输出的电压(分别向DAC0832输0x00或0xff)。6.3锯齿波的产生过程将一个周期(360度)分为128个点,递增,生成数组jctab128,反复顺序输出这组数据到DAC0832,就在系统输出端得到锯齿波。6.4三角波的产生过程将三角波的一个周期(360度)分为256个点,相邻点等差,前128个点递增,后128个点递减,生成数组sjtab25

15、6,反复顺序输出这组数据到DAC0832,就在系统输出端得到三角波。6.5通过开关实现波形切换和调频轻触开关S1-S4切换波形输出(S1键输出正弦波,按S2键产生方波,按S3键产生锯齿波,按S4键产生三角波),S5、S6调节方波占空比,S7、S8调节波形频率。6.7附程序代码#include #include#define uchar unsigned char#define uint unsigned intsbit s1=P10;sbit s2=P11;sbit s3=P12;sbit s4=P13;sbit s5=P14;sbit s6=P15;sbit s7=P16;sbit s8=P

16、17;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,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

17、,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,0xf4,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

18、,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,0x5a,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

19、,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,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

20、,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 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

21、,0x3c,0x3e,0x40,0x42,0x44,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

22、,0xb4,0xb6,0xb8,0xba,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;uchar code sjtab256=0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e,0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22

23、,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,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

24、,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,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

25、,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,0xd8,0xd6,0xd4,0xd2,0xd0,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

26、,0x72,0x70,0x6e,0x6c,0x6a,0x68,0x66,0x64,0x62,0x60,0x5e,0x5c,0x5a,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 dela

27、y (uchar k) uchar j; while(k-)!=0) for(j=0;j=256)n=0;void fangbo() P2=0xff;/方波 delay(d1-p); P2=0; delay(d2-p);void juchi() P2=jctabn; n=n+p; if(n=127)n=0;void sanjiao() P2=sjtabn; n=n+p; if(n=255)n=0;void boxingkey() if(s1=0) P0=0xF9; s=1; n=0;p=4; else if(s2=0) P0=0xA4; s=2; n=0;p=4; else if(s3=0)

28、P0=0xB0; s=3; n=0;p=4; else if(s4=0) P0=0x99; s=4; n=0;p=4; else if(s5=0) /占空比增加 delay(10);/延时消抖 if(s5=0) d1-; d2+; while(!s5);/松手检测,当s5=1(松手)跳出死循环 delay(10);/消抖 while(!s5);/确实松手了 else if(s6=0)/占空比减小 delay(10);/延时消抖 if(s6=0) d1+; d2-; while(!s6);/松手检测,当P1_0=1(松手)跳出死循环 delay(10);/消抖 while(!s6);/确实松手了

29、 else if(s7=0) delay(10); if(s7=0) p=p+1; while(!s7); delay(10); while(!s7); else if(s8=0) delay(10); if(s8=0) p=p-1; if(p=0)p=0; while(!s8); delay(10); while(!s8); void main() d1=10; d2=10; n=0; p=4; P0=0xff; P1=0xff; while(1) boxingkey(); switch(s) case 1:zhengxian();break; case 2:fangbo();break; case 3:juchi();break; case 4:sanjiao();break; 七、调试与仿真6.1正弦波的仿真结果 使用有源低通滤波器,输出波形变得更平滑了,但会出现畸变。这是符合实际情况的。如下图分析。图11 滤波前波形 图12 滤波后波形6.2方波的仿真结果图13 滤波前波形 图14 滤波后波形6.3锯齿波的仿真结果图15 滤波前波形 图16 滤波后波形6.4三角波的仿真结果图17 滤波前波形 图18 滤波后波形八、总结本次的设计中利用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1