基于51单片机的信号发生器学年论文.doc_第1页
基于51单片机的信号发生器学年论文.doc_第2页
基于51单片机的信号发生器学年论文.doc_第3页
基于51单片机的信号发生器学年论文.doc_第4页
基于51单片机的信号发生器学年论文.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古大学本科学年论文 第21页学校代码 10126 学号 分 类 号 密级 本科学年论文(设计)基于51单片机的信号发生器 学 院 电子信息工程学院 专业名称 通信工程 年 级 学生姓名 指导教师 摘要本文是基于单片机的信号发生器的设计,以89C51单片机为核心,通过扩展D/A转换器,得到能输出方波、锯齿波、三角波和正弦波等常用波形的函数信号发生器的设计方案。用这种方法设计的函数信号发生器能够实现各种波形的选择,并且可以调节其幅度和频率,能够较好地满足一般电子系统设计和调试等要求。关键词:单片机,信号发生器, D/A 转换器目录第一章 绪论 -3 1.1设计要求-3 1.2设计方案 -3第二章 硬件框图及模块设计-4 2.1硬件设计框图-4 2.2信号产生与复位电路-42.3波形选择电路-52.4幅频调节电路-62.5数模转换电路-62.6系统电路总图 -7第三章 程序设计及电路仿真结果-83.1方波的产生- -83.2锯齿波的产生-103.3三角波的产生-123.4正弦波的产生-143.5主程序的设计-17第四章 设计总结-19致谢 -20参考文献-21第一章 绪论1.1设计要求设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、锯齿波、三角波和正弦波等,该信号发生器所产生的波形的幅度和频率均可调节。1.2设计方案 方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。方案二:NE555数字芯片结合外围电路,组成波形发生器,能够产生方波,三角波,正弦波,电路简单,频率和幅值都能调节,但频率往往不够稳定。 方案三:利用单片机设计一个函数发生器,可以产生正弦波、方波等。该设计操作简单,易于实现,并能实现幅度和频率的调节。 经比较,方案三既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比高,所以采用该方案。 第二章 硬件框图及模块设计2.1 硬件设计框图实际中的函数信号发生器,通常要求输出信号的幅度在05v,频率在10020000Hz,而单片机89C51的外部要求与系统频率正好与之匹配。利用振荡电路、复位电路与单片机一起构成一个单片机系统,各种波形由单片机编程产生,波形数据通过P0口送D/A转换,D/A转换后经过放大滤波后输出,具体设计框图如图2-1所示。 +15V 振荡 电路XTAL1XTAL2 P0 RST 单片机P2P3 P1 VREF+ VREF- D/A 转换D/A转换器 复位电路 GND 波形 输出滤波放大频率调整波形切换 波形指示 图 2-1 电路设计方案框图2.2信号产生与复位电路由89C51单片机外接12MHz的石英晶体,选择2个30pF左右的微调电容和内部时钟电路一起构成12MHz的晶体振荡器。89C51在启动时需要复位电路选择上电自动复位电路,使89C51和系统的各个部件处于一种确定的初始状态。复位信号从89C51的RST引脚输入,高电平有效,其有效电平应维持至少2个机器周期。若采用12MHz的晶振,则复位信号至少应持2s以上,才可以保证可靠复位。具体连接图如图2-2所示。图2-2 信号产生与复位电路2.3波形选择电路利用4位DIP开关,接在P1口,单片机每发送完一个完整的波后接下来读DIP数据,再根据DIP的数据决定产生下一步输出的波形。具体电路图如2-3所示。图2-3 波形选择电路2.4幅频调节模块DAC0832的模拟量输出范围在VREF()到VREF(+)之间,因此,调节VREF的值,即可实现调节输出波形的幅度。频率控制是通过调整输出数据之间的间隔时间实现的。为了达到在线调节频率的目的,P3口每送一个数据,接下来从P2口读入控制延时的参数,从而实现频率调节。图2-4 幅频调节连线2.5数模转换模块图2-5为DAC0832与89C51单片机组成的D/A转换电路。图中, 89C51通过线选法扩展D/A转换芯片DAC0832,将DAC0832的数据端通过总线与89C51的P0口相连。图2-5 DAC0832与89C51接口图2.6 系统电路总图 图2-6 总电路图 第三章 程序设计及电路仿真结果3.1 方波的产生 设R0=0P0=0口输出0FFH读P2状态,取反后存入R3以R3为延时常数,延时R0=R0+2NR0=254 YR0清零P0口输出00H读P2状态,取反后存入R3以R3为延时常数,延时R0=R0+2NR0=254 Y返回图3-1 方波程序流程图方波程序代码:SQUARE: MOV R0,#00H J11: MOV P0,#0FFH ;P0口输出0FFH MOV P2,#0FFH MOV A,P2 ;读P2口状态 CPL A ;取反 MOV R3,A L11: DEC R3 CJNE R3,#255,L11 ;比较若R3不等于255,转向L11 INC R0 INC R0 CJNE R0,#254,J11 ;比较若R0不等于254,转向J11 MOV R0,#00H ;R0清零 J12: MOV P0,#00H ;P0口输出00H MOV P2,#0FFH MOV A,P2 CPL A MOV R3,A L12: DEC R3 CJNE R3,#255,L12 ;比较若R3不等于255,转向L12 INC R0 INC R0 CJNE R0,#254,J12 ;比较若R0不等于254,转向J12 MOV R0,#00H RET图3-2 方波仿真结果3.2 锯齿波的产生R7、ACC清零R0=R7读P2状态,取反后存入R3以R3为延时常数,延时R7=R7+1NR7=255 Y返回 图3-3 锯齿波程序流程图锯齿波程序代码:SAWTOOTH:CLR A MOV R7,A J21: MOV P0,R7 ;P0口输出00H MOV P2,#0FFH MOV A,P2 CPL A MOV R3,A L21: DEC R3 CJNE R3,#255,L21 INC R7 CJNE R7,#255,J21 RET图3-4 锯齿波仿真结果33三角波的产生设R7=0R0=R7读P2状态,取反后存入R3以R3为延时常数,延时R7=R7+2N R7=254YR7=R0读P2状态,取反后存入R3以R3为延时常数,延时R7=R7+2NR7=254 Y返回图3-5 三角波程序流程图三角波程序代码:TRIANG: MOV R7,#00H J31 :MOV P0,R7 ;P0口输出00H MOV P2,#0FFH MOV A,P2 CPL A MOV R3,A L31:DEC R3 CJNE R3,#255,L31 INC R7INC R7CJNE R7,#254,J31J32:MOV P0,R7 MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL32:DEC R3 CJNE R3,#255,L32 DEC R7DEC R7CJNE R7,#00,J32RET图3-6 三角波仿真结果3.4 正弦波的产生R0指向正弦数据表头根据R0 查表,输出数据R0=R0+1读P2状态,取反后存入R3以R3为延时常数,延时NR0=92 YR0=R0-1 根据R0 查表,输出数据读P2状态,取反后存入R3以R3为延时常数,延时NR0=0 Y返回 图3-7 正弦波仿真结果正弦波程序代码:SINWAVE: MOV R0,#00H ;R0指向正弦数据表头 K41 : MOV A,R0 MOVC A,A+DPTR ;查表 MOV P0,A ;输出数据 INC R0 MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL41:DEC R3 CJNE R3,#255,L41 CJNE R0,#92,K41K42:DEC R0 MOV A,R0 MOVC A,A+DPTR MOV P0,A MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL42:DEC R3 CJNE R3,#255,L42 CJNE R0,#0,K42 RETSIN_TAB: DB 0,0,0,0,1,1,2,3,4,5,6,8,9,11 DB 13,15,17,19,22,24,27,30,33,36,39 DB 42,46,49,53,56,60,64,68,72,76,80 DB 84,88,92,97,101,105,110,114,119,123 DB 128,132,136,141,145,150,154,158,163 DB 167,171,175,179,183,187,191,195,199 DB 202,206,209,213,216,219,222,225,228 DB 231,233,236,238,240,242,244,246,247,249 DB 250,251,252,253,254,254,255,255,255图3-8 正弦波仿真结果3.5主程序的设计开始初始化,设置常量及指针Y调出方波输出程序,输出一个周期的方波点亮SQU_LSQU_K按下N熄灭SQU_L Y调出锯齿波输出程序,输出一个周期的锯齿波点亮SAW_LSAW_K按下N熄灭SAW_LY调出三角波输出程序,输出一个周期的三角波点亮TRI_LTRI_K按下N熄灭TRI_L调出正弦波输出程序,输出一个周期的正弦波Y点亮SIN_LSIN_K按下NSINI_L图3-9 主程序流程图系统资源定义:SQU_K BIT P3.4 ;方波选择端设为P3.4SAW_K BIT P3.5 ;锯齿波选择端设为P3.5TRI_K BIT P3.6 ;三角波选择端设为P3.6SIN_K BIT P3.7 ;正弦波选择端设为P3.7SQU_L BIT P1.0 ;方波指示端设为P1.0SAW_L BIT P1.1 ;锯齿波指示端设为P1.1TRI_L BIT P1.2 ;三角波指示端设为P1.2SIN_L BIT P1.3 ;正弦波指示端设为P1.3主程序代码:ORG 0000HSTART: MOV P1,#0FFH ;将P1初始化为0FFHMOV P2,#0FFHMOV P3,#0FFHMOV DPTR,#SIN_TAB ;将DPTR指向正弦数据表头MAIN: MOV P0,#00H ;将P0初始化为00H JNB SQU_K,S1 ;检测方波选择端SQU_K,若SQU_K=0,程序转向S1 SETB SQU_L ;将SQU_L置1 JNB SAW_K,S2 SETB SAW_L JNB TRI_K,S3 SETB TRI_L JNB SIN_K,S4 SETB SIN_L SJMP MAIN S1: CLR SQU_L ;清除SQU_L LCALL SQUARE ;调用方波子程序 SJMP MAINS2: CLR SAW_L LCALL SAWTOOTH ;调用锯齿波子程序 SJMP MAINS3: CLR TRI_L LCALL TRIANG ;调用三角波子程序 SJMP MAINS4: CLR SIN_L LCALL SINWAVE ;调用正弦波子程序 SJMP MAIN第六章 设计总结在这次学年论文的设计中,不但使我提高了独立思考、解决问题和软件编程的能力,同时也使我对课本的知识进行了巩固和加强。通过这次学年论文的设计,使我从根本上了解了很多知识点,并且对于它们在实际中的应用有了更多的认识。写学年论文是一个不断学习的过程,从最初对所面临问题的模糊认识到最后能够对该问题有深刻的认识,我体会到实践对于学习的重要性,以前只是明白理论,没有经过实践,因此对知识的理解不够明确,通过这次学年论文的设计,真正做到了理论与实践相结合。总之,通过本次学年论文的设计,我深刻体会到要做好一个完整的事情,需要有系统的思维方式和方法,对待要解决的问题,要耐心、要善于运用已有的资源来充实自己。同时我也深刻的认识到:在对待一个新事物时,一定要从整体考虑,完成一步之后再作下一步,这样才能更加有效。致谢在这次学年论文的设计中,特别要感谢我的导师刘跃平老师给了我莫大的帮助。他的严格要求在我的学习生活中有着很大的帮助,让我养成用自己独立思考、完成任务的习惯,通过这次的论文使我对函数信号发生器有了初步的认识,学会了proteus的基本使用方法,收获了很多书本以外的知识。刘老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使

温馨提示

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

评论

0/150

提交评论