简易波形发生器_第1页
简易波形发生器_第2页
简易波形发生器_第3页
简易波形发生器_第4页
简易波形发生器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、成绩 南京工程学院实习报告 题 目 课 程 名 称 院(系、部、中心) 专 业 班 级 学 生 姓 名 学 号 设 计 地 点 起 止 日 期 指 导 教 师 目 录一、设计任务 3二、总体方案设计3三、系统模块详细设计与调试4四、设计总结11五、参考文献12六、附件材料12一、设计任务1、设计能够至少发生方波、三角波、锯齿波三种波形的发生器;2、通过按键进行波形之间的切换;3、波形de 频率和幅度能够通过按键进行更改;4、根据自己的想法设计其它功能。二、总体设计方案本设计所用到的硬件模块有:1、基本模块,即STC89C52单片机;2、DAC0832数模转换模块;3、按键模块;4、示波器或万用

2、表用来检测。所采用的开发板为TX-1C型开发板,其中所用到的用硬件模块如下原理图所示。由于受限于开发板IO口设计,本方案仅采用S2,S3,S5按键进行操作,其中S2按键用于切换波形,S3按键用于切换每个波形的幅值,S5按键用于切换波形的频率大小。DAC032的输入口为P0口,输出口为0+5V,通过LED接于GND。三、系统模块详细设计与调试1.各功能电路设计(1)STC89C52单片机。作为控制模块,其P0口作为DAC0832的输入端,P3.2口为DAC0832的片选信号输入端,P3.6口为写选通信号输入端。由于P0口同时也是实验板数码管的输入端,因此在对P0进行赋值输出之前应将数码管的段选端

3、P2.6和片选端P2.7封锁使得发生波形时数码管没有乱码。(2)DAC0832数模转换模块 DAC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0到5V之间。据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。转换方式共三种,即直通式、单缓冲式和双缓冲方式。根据设计功能和简便性的要求,DAC0832数模转换模块的转换方式为直通式,即只要将数字量输入

4、到DAC0832的D0-D7口就会立即被转换成模拟量输出。这样就使得程序的设计与编写都简单了很多。模块中共有三个输出口,分别是0+5V、-5V+5V、-8V+8V。三个模拟口的数字量关系为Vo=-Vr*(输入数字量)/256。当采用-5V+5V或者输入的数字量为有符号数,当采用0+5V时输入数字量为无符号数。所以可以知道当输入数字量小于128时,-5V+5V和-8V+8V输出口输出的模拟量为负值,当输入数字量大于128时输出模拟量为正值。而0+5V输出一直为正值。各个管脚功能如下: D10D17:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错) 

5、ILE:数据锁存允许控制信号输入线,高电平有效; CS:片选信号输入线(选通数据锁存器),低电平有效; WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存; XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效; WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER 的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而

6、变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。 IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; IOUT2:电流输出端2,其值与IOUT1值之和为一常数; Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度; Vcc:电源输入端,Vcc的范围为+5V+15V; VREF:基准电压输入线,VREF的范围为-10V+10V; AGND:模拟信号地 DGND:数字信号地。(3)按键模块由于矩阵键盘和DAC0832公用部分P3口,所以矩阵键盘使用并不方便。本方案使用三个独立键

7、盘用于波形的切换和幅度频率的改变,分别接于P3.4,P3.5,P3.7口,不使用P3.6口的原因是P3.6口被DAC082的片选端所占用。而设计三个按键刚好满足设计需求。(4)示波器在没有示波器的情况下也可直接观察LED的亮度和变化频率,分别对应波形的幅度和频率。2.主程序流程图 3.模块流程图4.调试过程可以看出,通过按键的调节,方波的幅度与频率都发生了改变。 通过以上图片可以看出,波形的类型以及每个波形的幅度与频率都得到了相应的调整。5.问题及解决方法(1)一开始为了持续输出波形,在每段波形程序中使用的是while(1)语句,结果导致陷入死循环,无法切换波形。后来改用while(key1)

8、使得波形持续输出,key1为切换波形的按键,当没有按下切换波形键时,key1始终为1,可以持续输出,而当按键按下后,key1=,跳出当前正在执行的波形,巧妙地切换到下一个波形。例如:while(key1)P0=keytestfwavefudu(); /方波幅度delay(keytestfwavepinlv(); /方波频率P0=10;delay(keytestfwavepinlv();(2)当P0口输入达到70左右后再增加P0输入的数值,DAC0832输出端电压几乎就不再改变,导致三角波和锯齿波在波形到达顶峰时没有立即下降,而是保持较长的相对高电压,根据推测,可能是由于DAC0832的精度导致

9、该现象。最终将P0口的最大值改为70,而不是255,使得波形更加容易观察。四、设计总结经过一学期单片机的学习,我对这门课有了基本的了解,尤其是对波形发生器有了进一步认识。 这次课程的设计,让我得到了一次用所学的知识去分析问题和解决问题的机会,使我在单片机的基本原理,单片机的硬件构成,单片机应用的掌握方面都有进一步的提高,尤其是对单片机的波形发生器有了更进一步的认识。 实验过程中,遇到很多问题,如如何通过软件使硬件更加简单,一些编程方法,扩展思维。查表、各种波形子程序让我收获很大。在验收时,老师问我DAC0832的输出电压范围,由于硬件模块的知识储备的不足,我竟然连这一简单的

10、问题都回答不上来,实在是有些遗憾。不过对于软件编程的熟练度,个人感觉颇有自信。这更加提醒我,无论是硬件还是软件,对于单片机的水平都有着重要的作用。51作为入门单片机更是需要熟练掌握。五、参考文献【1】 单片机原理与接口技术 北京大学出版社 李升【2】 新概念51单片机C语言教程 电子工业出版社 郭天祥【3】 微处理器综合实训系统模块化设计应用指导手册 南京工程学院 戴建六、附件材料源程序:#include<reg52.h>sbit dula=P26;sbit wela=P27;sbit dacs=P32;sbit dawr=P36;sbit key1=P34; /切换波形sbit

11、keyfudu=P35; /幅度调节按键sbit keypinlv=P37; /频率调节按键keytestfwavefudu();keytestfwavepinlv();keytestswavefudu();keytestswavepinlv();keytestjwavefudu();keytestjwavepinlv();keytestsinwavepinlv();static int ffudu=70;static int fpinlv=200;static int sfudu=70;static int spinlv=10;static int jfudu=70;static int j

12、pinlv=10;static int sinpinlv=10;static int keybuf=1;unsigned char code sin120=0x87,0x8D,0x94,0x9B,0xA1,0xA8,0xAE,0xB4,0xBA,0xC0,0xC6,0xCB,0xD1,0xD5,0xDB,0xDF,0xE3,0xE7,0xE8,0xEF, 0xF2,0xF5,0xF7,0xFA,0xFC,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFC,0xFA,0xF7,0xF5,0xF2,0xEF, 0xE8,0xE7,0xE3,0xDF,

13、0xDB,0xD5,0xD1,0xCB,0xC6,0xC0,0xBA,0xB4,0xAE,0xA8,0xA1,0x9B,0x94,0X8D,0x87,0x80, 0x79,0x73,0x6C,0x65,0x5F,0x58,0x52,0x4C,0x46,0x40,0x3A,0x35,0x2F,0x2A,0x25,0x21,0x1D,0x18,0x15,0x11, 0x0E,0x0B,0x08,0x06,0x04,0x03,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x06,0x09,0x0B,0x0E,0x11, 0x15,0x18,0x1D,0x

14、21,0x25,0x2A,0x2F,0x35,0x3A,0x40,0x46,0x4C,0x52,0x58,0x5F,0x65,0x6C,0x73,0x79,0x80;void delay(unsigned int xms)unsigned int a,b;for(a=xms;a-;a>0)for(b=40;b-;b>0);void fwave() /方波while(key1)P0=keytestfwavefudu();delay(keytestfwavepinlv();P0=10;delay(keytestfwavepinlv();void swave() /三角波while(ke

15、y1)unsigned int i,j,d; /i调节幅度,d调节频率i=keytestswavefudu();d=keytestswavepinlv(); for(j=10;j<i;j+)P0=j;delay(d);for(j=i;j>10;j-)P0=j;delay(d);void jwave() /锯齿波while(key1)unsigned int i,j,d; /j为幅度i=keytestjwavefudu();d=keytestjwavepinlv(); /d调节频率for(j=10;j<=i;j+)P0=j;delay(d);void sinwave()/正弦波

16、while(key1)unsigned int j,d;d=keytestsinwavepinlv();for(j=0;j<120;j+)P0=sinj/4;delay(d);keytestfwavefudu() /方波幅度调节if(keyfudu=0)delay(10);if(keyfudu=0)ffudu-=5;if(ffudu<10)ffudu=70;while(!keyfudu); return ffudu;keytestfwavepinlv() /方波频率调节if(keypinlv=0)delay(10);if(keypinlv=0)fpinlv-=10;if(fpinl

17、v<10)fpinlv=200;while(!keypinlv);return fpinlv;keytestswavefudu() /三角波幅度调节if(keyfudu=0)delay(10);if(keyfudu=0)sfudu-=4;if(sfudu<10)sfudu=70;while(!keyfudu);return sfudu; keytestswavepinlv()/三角波频率调节 if(keypinlv=0)delay(10);if(keypinlv=0)spinlv-=1;if(spinlv<0)spinlv=10;while(!keypinlv);return

18、 spinlv;keytestjwavefudu() /锯齿波幅度调节if(keyfudu=0)delay(10);if(keyfudu=0)jfudu-=4;if(jfudu<10)jfudu=70;while(!keyfudu);return jfudu;keytestjwavepinlv() /锯齿波频率调节if(keypinlv=0)delay(10);if(keypinlv=0)jpinlv-=1;if(jpinlv<0)jpinlv=10;while(!keypinlv); return jpinlv;keytestsinwavepinlv() /正弦波频率调节if(keypinlv=0)delay(10);if(keypinlv=0)sinpinlv-=1;if(sinpinlv<0)sinpinlv=10;w

温馨提示

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

评论

0/150

提交评论