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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机课设波形发生器.docx

1、单片机课设波形发生器 单片机课程设计报告 题 目 波形发生器 专 业 电气工程及其自动化 班 级 电气081 学生姓名 张 洁 学 号 3080421018 指导老师 王水鱼 西安理工大学 2010年秋季学期起止时间: 2011年1月10日至2011年1月14日 目 录1. 设计目的22. 设计任务23. 设计指标与技术要求24总体设计思路25. 总体设计及各模块功能分析3 5.1 硬件部分3 5.2 软件部分66. 仿真结果167. 系统调试及问题分析168. 设计总结179. 参考文献18 波形发生器设计一设计目的 培养理论联系实际的设计思路,训练综合运用电路设计和有关必修课程的理论,结合

2、生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识和能力。 通过本次课程设计,应加强培养学生如下的能力:(1) 加强自身独立的动手能力和思考解决问题的能力(2) 提高学生的创造能力(3) 学会使用PROTEUS软件二设计任务 设计一个波形发生器,能产生三角波,锯齿波,方波,正弦波。三设计指标与技术要求 1.使用MSC-51单片机系统 2设计电路使其能产生三角波,锯齿波,方波,正弦波。 3采用D/A转换器 4编写程序并进行调试四总体设计思路 本次课程设计的要求是设计一个波形发生器,可以产生方波,三角波,锯齿波和正弦波四种不同的波形。根据要求,首先需要一个开关选择电路,进行

3、四种波形的选择,一个开关对应一个波形,选择好所要产生的波形后,接下来就是要设计能产生该波形的电路,根据要求使用MSC-51单片机来执行某一波形的发生程序,产生输出波形的数字量,再向D/A转换器的输入端发送数据,将其转化成模拟量,再经过滤波电路进行滤波,然后将滤波后的波形送入示波器,从而可直观的看到该电路产生的波形,并判断输出结果与预期的结果是否一致。五总体设计及各模块功能分析 5.1硬件部分 1总体设计电路及原理图开关 图1如图1所示为波形发生器的总体设计电路图,首先有一个开关选择电路,由此可选择波形发生器所产生的波形,不同的开关对应不同的波形;之后再由 MSC-51产生输出波形的数字量,然后

4、再经过一个由D/A转换器构成的转换电路,将单片机产生的波形的数字量转换成模拟量,再经过滤波电路将其送入示波器进行显示。 如图2所示为总体设计原理图: 图2 2各模块功能分析及说明 (1)开关选择电路 在该部分中,可通过不同的开关,选择不同的波形。首先分别将四个开关与P1口的低四位相连,之后可通过开关的开或者关状态向P1口对应端口输入高低电平,开关打开时向P1口输入低电平信号,开关闭合时向P1口输入高电平信号。 (2)AT89C51单片机控制系统 在该电路中,P0口与D/A转换器相连接;P2.0-P2.6与数码管相连接,构成数字显示电路(注:此时需加一个三极管驱动电路进行驱动),即1是三角波,2

5、是锯齿波,3是方波,4是正弦波,P2.7与D/A转换器的片选端CS相连接进行片选;P1口的低四位与开关选择电路连接,进行不同波形的选择,同时,P3.6与D/A转换器的WR端相连接。(4) 数码管及示波器显示电路 &.数码管显示电路:在开关选择电路的基础上,当查询到P1口的某一端口为低电平时,即可调用相应的子程序,并点亮相应的数码管段,正确的显示数字,即1是三角波,2是锯齿波,3是方波,4是正弦波。由于使用的是共阳极数码管,故数码管应用三极管做驱动,此时三极管的基极接相应的P2并行口,发射极接数码管相应的段选端,集电极均接高电平。数码管显示电路如图3所示: 图3 &.示波器显示电路:如图4所示为

6、示波器及运算放大器构成的电路: 图4当开关选择电路查询到P1口的低四位的某一端口为低电平时,随即转向相应的产生波形的子程序,显示出相应的波形,即可直观的观察到波形的变化并进行相应的调整。(5) DAC0832转换电路如下图所示为DAC0832芯片,DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。DAC0832芯片具备双缓冲,单缓冲和直通三种输入方式,以便适应于各种电路的需要。因为系统只要求一路D/A转换,故我们采用的是单缓冲方式。DAC0832输出的是电流,而在该电路中要求输出电压,所以应先将输出电流转换成电压,再将其输出,此时可经过一个外接的运算放大器将电流转换成

7、电压,再将转化后的电压输出。连线时其片选端CS与P2.7相连,WR1与P3.6相连接,ILE和VCC接高电平,GND,WR2和XFER均接地,输出口IOUT1和IOUT2接运算放大电路的输入端。 (6)运放转换电路 如图4所示为运放的转换电路,可将输入电流转化为输出电压。在该部分中,运算放大器的反相输入端接DAC0832的IOUT1端,正相输入端接DAC0832的IOUT2端,并接地,同时其出端口接示波器的B输入端。 5.2. 软件部分1. 主程序流程图 如上图所示为主函数流程图 2. 程序设计(1) 主程序的设计在main中,先将temp定义为无符号数,在使用while 循环,再调用keys

8、can子函数,并将返回值赋给temp,在使用switch语句进行判断,若为case 0xfe,则调用triangle子函数,显示三角波;若为case 0xfd,则调用rectangle子函数,显示方波;若为case 0xfb,则调用juchi子函数,显示锯齿波;若为case 0xf7,则调用sine子函数,显示正弦波;(2)显示波形的子函数由于要显示波形编号,在子函数中还应有显示波形序号的功能。若为1号波,则数码管的高两段亮,以此类推。在triangle,juchi,sine子函数中,均使用for循环,若循环次数小于255,则调用DAconvert子函数产生相应的波形,而在rectangle子

9、函数中,调用DAconvert子函数和delay延时子函数,产生方波。在调用一个对应的子函数后,再返回主函数中继续判断,由此便可实现波形的相互转化。需要注意的是,在产生正弦波时,由于正弦波是非线性变化的,所以只能提前写好正弦波的各个点的值,并存放在dat中,之后才能正确调用。(3)延时子函数 在产生方波时要有一定的延时才能显示波形,所以要调用延时子函数。在延时子函数中,使用for循环进行实现。3. 源程序 #include#include#define uchar unsigned char#define uint unsigned int#define DOUT XBYTE0x7fffuch

10、ar key;char code dat=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfd

11、,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,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

12、,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,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13

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

14、,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;delay(uint x)uint y;for(y=x;y0;y-); /延时函数uchar keyscan()/ uchar key; 注:若将key没有设为全局变量,则每次扫描都会给key赋0! if (P1!=0xff) delay(500); /软件防抖 if (P1!=0xff) key=P1; while(P1!=0xff)

15、;return key; /key若不是全局变量,key的返回值在松手的时候还原 DAconvert(uchar k)DOUT=k;delay(15); triangle() /产生三角波函数uchar a;for(a=0;a0;a-) DAconvert(a); rectangle() /产生方波子函数DAconvert(0x00);delay(100);DAconvert(0xff);delay(100); juchi() /产生锯齿波子函数uchar b;for(b=0;b255;b+)DAconvert(b);sine() /产生正弦波子函数uchar c;for(c=0;c255;c

16、+)DAconvert(datc);main()uchar temp;while(1) temp=keyscan(); switch(temp) case 0xfe: while(keyscan()=0xfe) triangle(); P2=0x06; break; case 0xfd: while(keyscan()=0xfd) rectangle(); P2=0x75; break; case 0xfb: while(keyscan()=0xfb) juchi(); P2=0x67; break; case 0xf7: while(keyscan()=0xf7) sine(); P2=0x

17、4E; break; default:break; 六仿真结果 经过系统仿真,可以正确的得到三角波,方波,锯齿波和正弦波,如下图所示,数码管显示1时,示波器产生的是三角波七系统调试及问题分析 1在连接好电路之后开始进行系统调试,在仿真的过程中,当按下开关时,发现数码管显示的数字和预期的波形编号不一样,由此可见是AT89C51单片机输出的高低电平不对,可以确定是程序出现了问题,即向P2口写的数据错误,改正之后再继续仿真。此时应注意,该电路中所采用的是共阳极数码管,高电平有效。 2在D/A转换电路中,连线时应将DAC0832的XFER和WR2端均接地,而WR1端和AT89C51的WR端相连,在接线

18、时应注意。同时,在该电路中用AT89C51单片机的P2.7口作为片选端。八设计总结 通过为期一周的单片机课程设计,我从中学到了很多知识,并且掌握了重要的实践经验,虽然在课程设计的过程中,遇到了各种各样的问题,但在老师的悉心指导下和同学的协力合作之下,最终成功的完成了此次课程设计的任务,并且,通过本次设计的学习,使我对单片机以及汇编语言有了更深层次的理解,这对以后的学习和工作奠定了良好的基础。 本次课程设计使我认识到:(1) 设计思路是一切设计进行的基础,一个良好的设计思路,是电路实现的灵魂,如果没有一个正确的设计思路,那么后面的工作将只能是浪费时间,没有效果。所以,在着手进行电路设计之前,一定要仔细斟酌,确保设计思路的正确性,这对以后工作的进行奠定了扎实的基础。(2) 在进行设计的过程中,学会将理论与实际相结合,活学活用,书本上的只是永远是基础,而基础正是你想高层次迈进的扎实阶梯,如果没有这个基础,就无法实现技术上的提高和跨越,只有拥有扎实的基础,才有可能做到灵活运用,才能更好的将理论知识运用到实践中去。 九参考文献 单片机课程设计任务书 单片机课程设计指导书 单片机原理及应用

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2