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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(单片机控制之信号发生器(振荡器)毕业设计.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

单片机控制之信号发生器(振荡器)毕业设计.doc

1、 单片机技术课程设计说明书 课题名称

2、 目录 引言 3 一 设计任务 3 1设计内容 3 2设计要求 4 二 芯片功能介绍 4 三 总体功能图和总原理图 5 四 程序流程图 6 1 锯齿波程序流程图 6 2 三角波程序流程图 7 3 梯形波程序流程图 8 4 方波程序流程图 9 5 正弦波程序流程图 11 6 整体程序流程图 12 五 程序设计 13 六 仿真测试 16 七 总结与体

3、会 19 八 参考文献 19 引言 信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。这次的设计分为五个模块:单片机控制及显示模块、数模转换模块、波形产生模块、输出显示模块、电源模块。使用AT98C52作为主控台结合芯片DAC0832产生1HZ-10HZ频率可调的五种信号波(锯齿波、三角波、方波、梯形波、正弦波)。这几种波形有几个开关控制,可以随意进行切换,十分方便。另外,波形的频率和振幅也可以通过开关进行更改。可以说这次的设计操作简单,内容丰富,而且电路快捷明了。 1设计任务 1.1设计内容 以单片机为基础,设计并开发能输出多种波形(正弦波、

4、三角波、锯齿波、梯形波等),且频率、幅度可变的函数发生器。 1.2设计要求 设计借口电路,将这些外设构成一个简单的单片机应用系统,画出接口的连接图和仿真图,并编写出控制波形的程序。 2芯片功能介绍 2.1、DAC0832芯片介绍: DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。DAC0832的内部结构框图如下图所示。 图2.1 DAC0832的内部结构框图 2.2 DAC0832的外部引脚及功能介绍图如下:

5、 图2.2 DAC0832介绍 2.3 DAC0832的应用: DAC0832一是用作单极性电压输出,二是用作双极性电压输出,最后是用作程控放大器。 2.4 DAC0832与8031的连接方式: DAC0832的与单片机的连接方式有三种方式:(1)单缓冲;(2)双缓冲、(3)直通方式。本程序采用的是方式一即单缓冲方式,ILE为高电平,CS、WR1、WR2、XFER为低电平。 图2.4 DAC0832引脚图 3 总体功能图和总原理图 函数发生器的设计 K2 键三角波 K3键梯形波

6、 K4键方波 K5键正弦波 K6 调频调幅 K1 键 锯 齿 波 图3.1 总体功能图 图3.2 总原理图 4 程序流程图 4.1 锯齿波程序流程图 锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。流程图如下所示: 设置初值A MOV A,#00H DPT#8000H MOVX @DPTR,A

7、 加上设定的步数,ADD A,步数 判断A是否已经满了? 否 重新设置初值A 是 开 始 4.2 三角波程序流程图 三角波的实现是设置一个初值,然后进行加数,同样是加到某个数之后再进行减数,减到初值之后就再返回到先前的操作,这个操作跟锯齿波的实现是相似的。此程序输入的VREF的电压是+5V,因此该波形输出的最大频率是初值为00H和最终值为0FFH,且步数为1,这样输出的波形是最大的。 程序流程图如下图所示: 给A设置初值

8、 MOV DPTR,#8000H MOVX @DPTR,A ADD A,步数 判断A是否已满? 否 是 SUBB A,步数 判断是否等于初值? 否/是 开 始 4.3 梯形波程序流程图 梯形波输出跟锯齿波和三角波相似,只不过当加到顶峰

9、后的一段时间内不改变A的值,过了一段时间后再将减少A的值,不过先后的步数可以一样也可以不一样。然后减到初始的值后也要持续一段时间,然后再进行加数,如此循环下去。 程序流程图如下图所示: 开 始 给A设置初值 MOV A,#00H 是 持续一段时间 SUBB A,步数2 判断是否等于初值? 否 是 持续一段时间 MOVX @DPTR,A ADD A,步数1 判断A是否已满? 否

10、 4.4 方波程序流程图 此波形的实现更加简单,只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。流程图如下图所示: 开 始 给A设置初值 MOV DPTR,#8000H MOVX @DPTR,A 设置输出的时间 再设置一个初值放入A中 MOVX @DP

11、TR,A 输出一段时间 4.5 正弦波程序流程图 正弦波的实现则相对比较复杂,因为正弦波的实现是输出各个点的值就行了,可是各个点值则要通过正弦函数来求出,不过这些值直接去网上下载下来使用就可以了。输出的数据刚好是256个数据,这样则可以直接相加就行了。 流程图如下图所示: 4.6 整体程序流程图 如下图所示: 开 始 判断P1.0是否为1? 判断P1.1是否为1?

12、判断P1.2是否为1? 判断P1.3是否为1? 判断P1.4是否为1? 否 否 否 否 否 是 是 是 是 是 输出响应的波形 5 程序设计 //注:51单片机配合DAC0832生成三角波,和正旋波 #include #include #define uint unsigned int #define uchar unsigned char #define LED7 XBYTE[0x9f00] #define LE

13、D6 XBYTE[0x9f01] #define LED5 XBYTE[0x9f02] #define LED4 XBYTE[0x9f03] #define LED3 XBYTE[0x9f04] #define LED2 XBYTE[0x9f05] #define LED1 XBYTE[0x9f06] #define LED0 XBYTE[0x9f07] uint t[]= //共阴数码显示表(89c52) { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40 }; sbit p2

14、7=P2^7; sbit p26=P2^6; sbit p25=P2^5; sbit d0=P0^0; sbit d1=P0^1; sbit d2=P0^2; sbit d3=P0^3; sbit d4=P0^4; sbit d5=P0^5; sbit d6=P0^6; sbit d7=P0^7; unsigned char i; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init() { LED0=0; LED1=0; LED2=0;

15、 LED3=0; LED4=0; LED5=0; LED6=0; LED7=0; } unsigned char flag; //波型输出标置变量 void display() { LED7=t[flag]; } bit time; unsigned char sin(unsigned char x) { unsigned char code sin_tab[]={125,128,131,134,138,141,144,147,150,153,156,159, 162,165,168,171,174,17

16、7,180,182,185,188,191,193,196,198,201,203, 206,208,211,213,215,217,219,221,223,225,227,229,231,232,234,235, 237,238,239,241,242,243,244,245,246,246,247,248,248,249,249,250, 250,250,250,250,250,250,250,249,249,248,248,247,246,246,245,244, 243,242,241,239,238,237,235,234,232,231,229,22

17、7,225,223,221,219, 217,215,213,211,208,206,203,201,198,196,193,191,188,185,182,180, 177,174,171,168,165,162,159,156,153,150,147,144,141,138,134,131, 128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,79,76,73, 70,68,65,62,59,57,54,52,49,47,44,42,39,37,35,33,31,29,27,25,27,29,2

18、7,25,23,21, 19,18,16,15,13,12,11,9,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,1,1,2, 2,3,4,4,5,6,7,8,9,11,12,13,15,16,18,19,21,23,25,27,29,31,33,35,37, 39,42,44,47,49,52,54,57,59,62,65,68,70,73,76,79,82,85,88,97,94,97, 100,103,106,109,112,116,119,122}; return sin_tab[x]; } void D

19、AC0832(unsigned char x) { P1=x; } void keyscan() { p27=1; p26=0; p25=1; if(d1==0) { delay(5); if(d1==0) flag=0; } if(d2==0) { //delay(5); // if(d2==0) flag=1; } if(d3==0) { delay(5); if(d3==0) flag=2; } if(d4==0) { delay(5

20、); if(d4==0) flag=3; } } void main() { init(); //unsigned char i; TMOD=0X02; //定时器0用于控制输出波的频率 TH0=256-40; ET0=1; //按键接于外部中断0,与中断1 IT0=1; IT1=1; EX0=1; EX1=1; EA=1; TR0=1; flag=2; //开始时无输出 i=0; while(1) { keyscan(); display();. if(time=

21、1) { time=0; if(i>249) i=0; else i++; switch(flag) //当按键1的为输出三角波,按键2时输出正弦波 { case 0AC0832(0);break; case 1: if(i>125) DAC0832(250-i); else DAC0832(i); break; case 2:

22、 DAC0832(sin(i)); break; default: break; } } } } void time0() interrupt 1 { time=1; } /* void int0() interrupt 0 { //按键1接于外部中断0 flag=1; } void int1() interrupt 2 //按键2接于外部中断1 { flag=2; } */ 6 仿真测试 现在使用软

23、件Proteus进行仿真测试,下面就相应的仿真效果图: 图5 锯齿波仿真效果图 图6 三角波仿真效果图 图7 梯形波仿真效果图 图8 方波仿真效果图 图9 正弦波仿真效果图 从仿真的效果来看,这次的信号发生器的设计是很成功的。而且波形也产生的很漂亮和标准。 7 总结与体会 经过一系列的努力,终于顺利地完成了这个单片机课程的设计

24、这是一个磨练意志的过程。从课题的选择开始,计算器的设计、硬件和软件系统的设计、到最后的Proteus软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼。一方面通过C51单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用;另一方面在用Proteus软件画电路图时,然后再转换成一维的WORD中进行编辑,这个过程中让我掌握了计算机辅助的设计技术。当然,这是一个需要不断的尝试,不断的校核,不断的修改,最后完成一个合理的设计的过程。需要的是细心和耐心。在很大程度上培养了我拼搏的工作精神。使我受益匪浅,更加明确了自己专业的方向。 在这一次的设计中,我不仅学到了关于单片机技术方面的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的启发,利用好图书馆和网络,是资源的到最好的利用。与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。课设是一个通过思考、发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习,积累经验,不断完善自己,让自己变得更加出色。 参考文献 1、主编:张毅刚,副主编:彭喜元,董继成 《单片机原理及应用》,高等教育出版社 19

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服