收藏 分销(赏)

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

上传人:快乐****生活 文档编号:11233144 上传时间:2025-07-09 格式:DOC 页数:19 大小:261KB 下载积分:8 金币
下载 相关 举报
单片机课设波形发生器.doc_第1页
第1页 / 共19页
单片机课设波形发生器.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
单片机课设波形发生器 单片机课程设计报告 题 目 波形发生器 专 业 电气工程及其自动化 班 级 电气081 学生姓名 张 洁 学 号 3080421018 指导老师 王水鱼 西安理工大学 2010年秋季学期 起止时间: 2011年1月10日至2011年1月14日 目 录 1。 设计目的……………………………………2 2. 设计任务……………………………………2 3。 设计指标及技术要求………………………2 4.总体设计思路………………………………2 5。 总体设计及各模块功能分析………………3 5.1 硬件部分……………………………………3 5.2 软件部分……………………………………6 6。 仿真结果…………………………………16 7. 系统调试及问题分析……………………16 8。 设计总结…………………………………17 9。 参考文献…………………………………18 波形发生器设计 一.设计目的 培养理论联系实际的设计思路,训练综合运用电路设计和有关必修课程的理论,结合生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识和能力。 通过本次课程设计,应加强培养学生如下的能力: (1) 加强自身独立的动手能力和思考解决问题的能力 (2) 提高学生的创造能力 (3) 学会使用PROTEUS软件 二.设计任务 设计一个波形发生器,能产生三角波,锯齿波,方波,正弦波. 三.设计指标及技术要求 1.使用MSC—51单片机系统 2.设计电路使其能产生三角波,锯齿波,方波,正弦波。 3.采用D/A转换器 4.编写程序并进行调试 四.总体设计思路 本次课程设计的要求是设计一个波形发生器,可以产生方波,三角波,锯齿波和正弦波四种不同的波形。根据要求,首先需要一个开关选择电路,进行四种波形的选择,一个开关对应一个波形,选择好所要产生的波形后,接下来就是要设计能产生该波形的电路,根据要求使用MSC—51单片机来执行某一波形的发生程序,产生输出波形的数字量,再向D/A转换器的输入端发送数据,将其转化成模拟量,再经过滤波电路进行滤波,然后将滤波后的波形送入示波器,从而可直观的看到该电路产生的波形,并判断输出结果及预期的结果是否一致. 五.总体设计及各模块功能分析 5。1.硬件部分 1.总体设计电路及原理图 示波器 开关 单 片 机 MSC-51 输出波形 D/A转换器 运放转换电路 示波器 图1 如图1所示为波形发生器的总体设计电路图,首先有一个开关选择电路,由此可选择波形发生器所产生的波形,不同的开关对应不同的波形;之后再由 MSC—51产生输出波形的数字量,然后再经过一个由D/A转换器构成的转换电路,将单片机产生的波形的数字量转换成模拟量,再经过滤波电路将其送入示波器进行显示. 如图2所示为总体设计原理图: 图2 2.各模块功能分析及说明 (1)开关选择电路 在该部分中,可通过不同的开关,选择不同的波形。首先分别将四个开关及P1口的低四位相连,之后可通过开关的开或者关状态向P1口对应端口输入高低电平,开关打开时向P1口输入低电平信号,开关闭合时向P1口输入高电平信号. (2)AT89C51单片机控制系统 在该电路中,P0口及D/A转换器相连接;P2。0—P2。6及数码管相连接,构成数字显示电路(注:此时需加一个三极管驱动电路进行驱动),即1是三角波,2是锯齿波,3是方波,4是正弦波,P2。7及D/A转换器的片选端CS相连接进行片选;P1口的低四位及开关选择电路连接,进行不同波形的选择,同时,P3。6及D/A转换器的WR端相连接。 (4) 数码管及示波器显示电路 &。数码管显示电路:在开关选择电路的基础上,当查询到P1口的某一端口为低电平时,即可调用相应的子程序,并点亮相应的数码管段,正确的显示数字,即1是三角波,2是锯齿波,3是方波,4是正弦波.由于使用的是共阳极数码管,故数码管应用三极管做驱动,此时三极管的基极接相应的P2并行口,发射极接数码管相应的段选端,集电极均接高电平。数码管显示电路如图3所示: 图3 &.示波器显示电路:如图4所示为示波器及运算放大器构成的电路: 图4 当开关选择电路查询到P1口的低四位的某一端口为低电平时,随即转向相应的产生波形的子程序,显示出相应的波形,即可直观的观察到波形的变化并进行相应的调整。 (5) DAC0832转换电路 如下图所示为DAC0832芯片,DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。DAC0832芯片具备双缓冲,单缓冲和直通三种输入方式,以便适应于各种电路的需要。因为系统只要求一路D/A转换,故我们采用的是单缓冲方式。DAC0832输出的是电流,而在该电路中要求输出电压,所以应先将输出电流转换成电压,再将其输出,此时可经过一个外接的运算放大器将电流转换成电压,再将转化后的电压输出。连线时其片选端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 循环,再调用keyscan子函数,并将返回值赋给temp,在使用switch语句进行判断,若为case 0xfe,则调用triangle子函数,显示三角波;若为case 0xfd,则调用rectangle子函数,显示方波;若为case 0xfb,则调用juchi子函数,显示锯齿波;若为case 0xf7,则调用sine子函数,显示正弦波; (2)显示波形的子函数 由于要显示波形编号,在子函数中还应有显示波形序号的功能.若为1号波,则数码管的高两段亮,以此类推。在triangle,juchi,sine子函数中,均使用for循环,若循环次数小于255,则调用DAconvert子函数产生相应的波形,而在rectangle子函数中,调用DAconvert子函数和delay延时子函数,产生方波。在调用一个对应的子函数后,再返回主函数中继续判断,由此便可实现波形的相互转化。需要注意的是,在产生正弦波时,由于正弦波是非线性变化的,所以只能提前写好正弦波的各个点的值,并存放在dat[]中,之后才能正确调用. (3)延时子函数 在产生方波时要有一定的延时才能显示波形,所以要调用延时子函数。在延时子函数中,使用for循环进行实现。 3. 源程序 #include〈reg52.h〉 #include〈absacc.h> #define uchar unsigned char #define uint unsigned int #define DOUT XBYTE[0x7fff] uchar 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,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,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,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,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;y〉0;y——); } //延时函数 uchar keyscan() { // uchar key; 注:若将key没有设为全局变量,则每次扫描都会给key赋0!! if (P1!=0xff) { delay(500); //软件防抖 if (P1!=0xff) { key=P1; } } while(P1!=0xff); return key; //key若不是全局变量,key的返回值在松手的时候还原 } DAconvert(uchar k) { DOUT=k; delay(15); } triangle() //产生三角波函数 { uchar a; for(a=0;a〈255;a++) DAconvert(a); for( ;a〉0;a--) DAconvert(a); } rectangle() //产生方波子函数 { DAconvert(0x00); delay(100); DAconvert(0xff); delay(100); } juchi() //产生锯齿波子函数 { uchar b; for(b=0;b〈255;b++) DAconvert(b); } sine() //产生正弦波子函数 { uchar c; for(c=0;c<255;c++) DAconvert(dat[c]); } 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=0x4E; } break; } default:break; } } } 六.仿真结果 经过系统仿真,可以正确的得到三角波,方波,锯齿波和正弦波,如下图所示,数码管显示1时,示波器产生的是三角波 七.系统调试及问题分析 1.在连接好电路之后开始进行系统调试,在仿真的过程中,当按下开关时,发现数码管显示的数字和预期的波形编号不一样,由此可见是AT89C51单片机输出的高低电平不对,可以确定是程序出现了问题,即向P2口写的数据错误,改正之后再继续仿真。此时应注意,该电路中所采用的是共阳极数码管,高电平有效。 2.在D/A转换电路中,连线时应将DAC0832的XFER和WR2端均接地,而WR1端和AT89C51的WR端相连,在接线时应注意.同时,在该电路中用AT89C51单片机的P2。7口作为片选端. 八.设计总结 通过为期一周的单片机课程设计,我从中学到了很多知识,并且掌握了重要的实践经验,虽然在课程设计的过程中,遇到了各种各样的问题,但在老师的悉心指导下和同学的协力合作之下,最终成功的完成了此次课程设计的任务,并且,通过本次设计的学习,使我对单片机以及汇编语言有了更深层次的理解,这对以后的学习和工作奠定了良好的基础. 本次课程设计使我认识到: (1) 设计思路是一切设计进行的基础,一个良好的设计思路,是电路实现的灵魂,如果没有一个正确的设计思路,那么后面的工作将只能是浪费时间,没有效果.所以,在着手进行电路设计之前,一定要仔细斟酌,确保设计思路的正确性,这对以后工作的进行奠定了扎实的基础. (2) 在进行设计的过程中,学会将理论及实际相结合,活学活用,书本上的只是永远是基础,而基础正是你想高层次迈进的扎实阶梯,如果没有这个基础,就无法实现技术上的提高和跨越,只有拥有扎实的基础,才有可能做到灵活运用,才能更好的将理论知识运用到实践中去。 九.参考文献 单片机课程设计任务书 单片机课程设计指导书 《单片机原理及应用》 18 / 19
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服