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

加入VIP,免费下载资源
 

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

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

下载须知

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

版权提示 | 免责声明

本文(信号发生器报告.doc)为本站会员(风****)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

信号发生器报告.doc

1、电子设计竞赛函数信号发生器的设计与总结报告函数信号发生器的设计与总结报告摘要 以STC89C52单片机为控制核心,外围采用模拟/数字转换电路(DAC0832)、运放电路(OP37)、倍频电路(HCF4046)、按键和1602显示电路等。P1口接DACO832信号输入并数模转换,程序控制产生三种波形,通过P3口接8个按键,控制频率、幅值,由按键选择三种波形输出。由OP37运放实现DAC0832输出电流到电压的转换,通过CD4046与CD4060组成的100倍频电路,尽量达到题目频率要求。在LCD1602上实时显示频率与幅值,波形在示波器上显示。关键词: 单片机 倍频 发生器 OP37 LCD16

2、02一:方案设计与论证本题目要求设计一个函数信号发生器,基本要求是能够产生正弦波,三角波和方波,波形输出频率范围在11MHz之间,波形无明显失真,无明显噪声,具体要求如下:1、频率步进:110KHz,步进不大于10Hz,10KHz1MHz,步进不大于100Hz;2、输出电压:05V可调,步进不大于0.1V,测试条件为负载50,输出频率1KHz;3、能实时显示输出信号类型,频率,电压。显示和实测误差不大于5%;4、能够通过按键或其他方法直接设置频率和电压。即不用按步进慢慢调,直接输入。5、不得使用现成的DDS信号和信号产生芯片。综合考虑,本系统大体可分为以下几个部分:信号发生部分、显示部分、后级

3、电压转换部分、输出信号切换部分、倍频部分下面对重要模块进行方案比较1、信号发生部分 方案1:采用模拟分立元件或单片压控函数发生器模拟分立元件或单片压控函数发生器可产生正弦波,方波,三角波,通过调整外部元件可改变输出频率,但采用模拟器件由于元件分散性太大,即使使用单片函数发生器,参数也一与外部元件有关,外接的电阻电容对参数影响很大,因而产生的频率稳定性较差,精度低,抗干扰能力低,成本也高,而且灵活性较差,不能实现任意波形以及波形运算输出等智能化的功能。方案2:采用锁相式频率合成方案。锁相式频率合成是一个高稳定度和精确度的大量离散频率的技术,它在一定程度上解决了既要频率稳定精确,又要频率在较大范围

4、可变的矛盾。但频率受VCO可变频率范围的影响,高低频率比不可能做的很高,而且只能产生方波或正弦波,不能满足任意波形的要求。方案3:采用单片机和数模/转换DAC0832实现波形的产生。波形的产生是通过STC89C52执行正弦波波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。通过CD4046与CD4518分频实现倍频,已达到最高1MHz的频率。在89C52的P3口接8个按扭,通过软件编程来选择各种波形、幅值电压和频率,每种波形对应一个按钮。此方案的特点是电路原理比较简单,实现起来比较容易。方案论证:经比较,方案三能更好地实现题目要求,三种波

5、形的产生可由程序控制,并通过按键选择波形输出,在示波器上显示波形。波形的幅值与频率步进也可以用程序改变,具有线路简单、结构紧凑等优点。在本设计的基础上,通过按钮设定所需要的波形频率,并在LCD1602上显示频率、幅值和信号源,输出波形稳定,精度高,滤波好,抗干扰效果好,连接简单,性价比高。因此我们设计中采用方案三。方案选定:方案32、显示部分方案1:数码管显示由于本题要求实时显示输出信号的幅度,频率,而数码管不能显示字符。同时数码管静态显示占用过多的I/O口,动态显示又得进行扫描,占用系统资源大。方案2:LED点阵显示LED点阵显示虽然能显示字符和数字,但显示效果不好,目不易编程。方案3:LC

6、D1602显示LCD液晶编程简单,可以同时显示字符和数字,信息量较大,用串行通讯可减少I/O口的占用量。而且1602的成本中等,是值得考虑的选择。方案论证:结合本题要求和LCD1602的优良特性即不但能显示字符和数宇,而且显示效果较好,容易编程实现。方案选定:方案33、后级电压转换部分前级的信号输出的幅度会由于频率的改变而改变,难以定量控制。可以通过后级电压转换达到题目的输出要求。方案1:用晶体管搭成放大电路分立的晶体管构成的放大电路,有动态范围广、通频带较宽、灵敏度高、能承受的较大的功率等特点。但是,分立元件组成的电路元件参数的计算麻烦,电路调试困难,而且在高频段抗干扰能力不足。方案2:用运

7、算放大器构成放大电路运算放大器搭成的放大电路简单,调试简单,可靠性高。根据信号的频率要求,一定要采用低噪声,宽频带的高速运放。OP37具有较高的频带,用来作末级放大,则可达到题目提出的高指标。方案3:用数字电位器控制采用数字电位器代替机械电位器,结合运放。此方案便于数字控制,自动化程度高。但成本高且精度低。方案论证:用运算放大器构成的放大电路调试简单,可靠性高,再字电位器代替机械电位器,精度更高,可以很好的达到要求。方案选定:方案3。二:电路设计1、信号发生单元电路设计(1)软件设计信号发生部分我们依靠STC89C52采用查表法实现正弦波,然后再经过软件编程实现矩形波和三角波。在按键的选择作用

8、下,输出三种波形,并且幅度和频率都可以通过外部按键控制。信号发生单元总的信号流图如图1-1。查表格送数据给P2口b+1bP2=0xff*ANYYN开始按键扫描Nchoice=1?Ychoice=2?Y给P2赋值产生三角波上升部分c129?NY给P2口赋值产生三角波下降部分c+1cd129?P2=0x00choice=3?d+1d结束N图 1-11)正弦波程序设计DAC0832是8位的D/A转换器件,其工作电压是0-5V,当输入00数字量的时候,输出为0V电压;当输入80数字量的时候,输出为2.5V电压;当输入FF数字量的时候,输出为5V电压。将一个周期内的正弦波形等分为256份,那么第1点的角

9、度为0,对应的正弦值为Asin0;第2点的角度为360/256,对应的正弦值为Asin (360/256 ) ,如此计算下去,将这些模拟量正弦值都转换为单极性方式下的数字量,就可以得到一张按照点号顺序排列的正弦波波形数据表格。其实在计算正弦波形数据的时候,并不需要算出整个0-2区间的每一个值,而只需计算出0-1/2中的值就行,其他区间的值都可以通过对0-1/2中的值取不同的变换。比如1/2-的值可以和0-1/2值一一对应,而-2的值可以对0-区间的值取反得到。计算值可以用C语言编程得到。幅度公式为(N=0,1,264)相应的Y值数字化后的递增量那么每一个点相对于前一个点的递增率为 (Y2当前的

10、点,Y1为前一个点)所以每一个点的数字量与递增率A成一一对应关系。数字量化C程序:#includemain()int n,i=0,j,k; float y=0, a=3.1415926,b=0,c=2.5000,d=0; for(n=0;n=64;n+) y=2.5*sin(a*n/128)+2.5; b=y; /b,y为当前幅度值 d=b-c; /d为递增率 j=d/0.0196; /j为数字递增率,0.0196为 k=128+j; /k为数字量 printf(“%d,%f,%f,%d,%dn”,i,y,d,j,k); i+;在得到正弦波波形数据后,通过查表实现之。2)三角波程序设计通过c中

11、数值加一递升,赋给DAC0832即P2口,当c的值为128时,再逐次递减至0,从而循环产生三角波。流程图为上图choice等于2部分。3)方波程序设计通过d值的加一递升,当d值小于129时,赋给DAC0832即P2口0x00,当d值大于128时,d再逐次递减,赋给DAC0832即P2口0xff,直至d为0,从而循环产生方波。流程图为上图choice等于3部分。(2)信号发生部分电路设计信号发生部分部分采用STC89C52单片机和8位DAC0832芯片。单片机将处理好的数据通过P2口赋给0832,由于0832被接成直通形式,数字量一旦输入,就直接进入D/C寄存器,进行D/A转换。图1-2为其单元

12、电路。图 1-22、显示部分单元电路设计显示部分采用LCD1602显示相应的信号源、电压、频率。相应的信号源、电压、频率可由外部按键控制,通过void dsiplay()函数及时在1602上得以显示,形成一个友好的人机交互界面。单元电路如图1-3。图 1-33、后级电压转换部分单元电路设计由于DAC0832是电流输出型的D/A,故要在示波器上观看相关信号时需要将变化的电流转换成电压形式。我们在0832的Iout端口的输出级加了一级OP37运算放大器,该款运放性能优秀,输入失调电压只有10nV、低漂移、高开环增益,它能够最大程度的捕捉小电流并把它转换成电压形式。运放的6输出端即为本设计的输出电压

13、Uout端。C4、C5用于去除电源噪声,防止干扰。单元电路如图1-4。图 1-4对于这个8位D/A转换器,当反馈电阻为Rf=R/2时,输出电压的计算公式可写成上式表明输出的模拟电压正比于输入的数字量Dn,从实现了从数字量到模拟量的转换。可通过改变参考电压Vref的极性使输出电压为正或负。4、倍频电路部分单元电路设计CD4016是通用的CMOS锁相环集成电路,其特点是电源电压范围宽(3V-18),输入阻抗高(约100M),动态功耗小,在中心频率f0为10kHz下功耗仅为600uw,属微功耗器件。CD4518是一个同步加计数器,在一个封装中含有两个可互换二/十进制计数器,其功能引脚分别为1-7和9

14、-15.该CD4518计数器是单路系列脉冲输入(1脚或2脚;9脚或10脚),4路BCD码信号输出(3脚-6脚;11脚14脚)。由锁相环CD4046与计数器CD4518实现100倍倍频。当从14l脚输入频率f1l的信号时,在3脚(相位比较信号输入信号)、4脚(压控振荡器输出信号)之间接计数器4518,输出端4脚频率f2=100f1,实现100倍频,使输出频率达到题日要求。具体电路连接如图1-5。图 1-55、软件设计总体流程图本软件设计过程中主要实现利用按键来控制不同波形的输出以及频率和幅值的控制。当按键1按下时,函数发生器就进行以10Hz为最小单位的频率步进升;当按键2按下时,函数发生器就进行

15、以10Hz为最小单位的频率步进降;当按键3按下1次时,函数发生器就输出正弦波,按下2次时,输出三角波,按下3次时,输出方波;KEY4、KEY5实现以0.1V为最小单位的电压步进;KEY6、KEY7、KEY8键用于实现对输出信号频率和电压的任意控制;同时这些变化都会实时的显示在液晶上,经过信号发生部分的处理后也会实时的显示在示波器上。NNYNYNYNYNYYNYNY开始KEY1?KEY6?KEY3?KEY2?KEY8?KEY4?KEY7?KEY5?频率步进升调波频率步进降电压步进升电压步进降位升位降调位图 1-66 总体电路图电路总体电路图如图1-7所示。图 1-7三:测试方法与测试结果1、测试

16、仪器:万用表UT52、示波器TDS754A。2、测试方法:将焊出的函数信号发生器直接连接到示波器上,通过按键3调出各个信号,在每个信号下分别通过按键1、2、6、7、8设置出50Hz、100Hz、200Hz、500Hz、1KHz、5KHz、10KHz、20KHz测试频率,在示波器上测出实际频率。再通过按键4、5、6、7、8设置出1V、1.5V、2V、2.5V、3V、3.5V、4V、4.5V、5测试幅值,在示波器上测出实际峰峰值。获取测试数据后,列表整理并和理论值进行比较,计算出误差,评估函数信号发生器的性能。3、测试结果:正弦波测试数据 表 1-1设定频率 / Hz50100200实际频率 /

17、Hz48.995.2195.0实际峰峰值 / V5.05.05.0方波测试数据 表 1-2设定频率 / Hz50100200实际频率 / Hz49.5100.3198实际峰峰值 / V555三角波测试数据 表 1-3设定频率 / Hz50100200实际频率 / Hz49.4100.4197实际峰峰值 / V555四:讨论经过测试,本函数信号发生器基本达到了题设要求,但是精度不高,经过仔细分析产生误差的原因应该由于以下原因造成:(1)51单片机处理速度太慢,由于我们采用软件方法产生信号,所以输出信号频率不高,后期处理时,求和运放部分没有进行滤波,带来干扰,导致最后输出的信号产生失真(2)为了节

18、省成本,采用了低成本的元器件,导致倍频电路的外围元器件参数值与原设计值产生误差,未能到100倍频,经过放大后,也对信号的失真产生了影响改进措施:采用速度更快的单片机或使用FPGA,信号产生部分采用纯硬件搭建或使用专用信号发生器DDS,而不是利用软件。采用更精确的元器件,在求和运放后后加上滤波电路,相信这些措施能够改善电路,使其达到理想效果。参 考 文 献1郭天祥.51单片机C语言教程M.北京;电子工业出版社,20092谢嘉奎.电子线路M.北京;高等教育出版社,20063百度文库.OP37中文资料EB/OL. 4豆丁文库.函数信号发生器EB/OL. 附:程序源代码word文档 可自由复制编辑#i

19、nclude #define uchar unsigned char#define uint unsigned intsbit keyup=P30; /频率升sbit keydown=P31; /频率降sbit keychoose=P32; /波形选择sbit vkeyup=P33;/幅值sbit vkeydown=P34;sbit fkeyup=P35; /调位升sbit fkeydown=P36;/调位降sbit fkeywei=P37;/调位sbit rs=P10; /时钟读命令sbit lcden=P11; /时钟使能端uint n=20;uchar cch=50; /频率计数ucha

20、r num=0,sjbo=0,jcbo=0,keynum=0,qq=0,bb=0,ss=2,gg=0,vgw,vsw,vbw;bit sjbobit=0,squnum=0,flag; uint old_f,t,f,v;/频率标志位,频率值uchar old_choose,choose = 0;/波行选择uchar code title=SIGNAL:;/0x80+9uchar code content=fre:;/0x80+0x40+4uchar code content1=V:;/0x80+0x40+10uchar code signal_type=sin tri squ;unsigned

21、char code sin=0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE,0xB1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8,0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0

22、xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,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,0

23、x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80,0x80,0x7C,0x79,0x78,0x72,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x55,0x51,0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,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,0

24、x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,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,0

25、x48,0x4C,0x4E,0x51,0x55,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x80; /正弦波的值void Delay(unsigned int ts) unsigned int x,y; for(x = ts;x 0;x-) for(y = 110;y 0;y-); void write_com(uchar com) /时钟写指令rs = 0;lcden = 0;P0 = com;Delay(5);lcden = 1;Delay(5);lcden = 0;void write_dat(uc

26、har dat) /时钟写数据rs = 1;lcden = 0;P0 = dat;Delay(5);lcden = 1;Delay(5);lcden = 0;void display(uchar adress,uchar date)write_com(0x80+0x40+adress);write_dat(0x30+date);void fkeycheck(void)/频率位调节if(fkeyup&fkeydown&fkeywei)=0)TR0=0;if(fkeywei=0)Delay(5);keynum+;if(fkeywei=0)switch(keynum)case 1:write_com

27、(0x80+0x47);write_com(0x0f);break;case 2: write_com(0x80+0x46);break;case 3: write_com(0x80+0x45);break; case 4: write_com(0x80+0x44);break;case 5: write_com(0x80+0x4f);break;case 6: write_com(0x80+0x4e);break;case 7: write_com(0x80+0x4c);break;case 8: keynum=0;write_com(0x0c);break;default:break;wh

28、ile(fkeywei=0);if(fkeywei!=0) qq=f/1000; bb=f%1000/100; ss=f%100/10; gg=f%10;if(fkeyup=0) Delay(5);if(fkeyup=0) switch(keynum)case 1:gg+;if(gg=10)gg=0;display(7,gg);break;case 2: ss+;if(ss=10)ss=0;display(6,ss);break;case 3: bb+;if(bb=10)bb=0;display(5,bb);break; case 4: qq+;if(qq=10)qq=0;display(4,

29、qq);break;case 5: vgw+;if(vgw=10)vgw=0;display(15,vgw);break;case 6: vsw+;if(vsw=10)vsw=0;display(14,vsw);break;case 7: vbw+;if(vbw=10)vbw=0;display(12,vbw);break;default:break;while(fkeyup=0); if(fkeydown=0)Delay(5);if(fkeydown=0)switch(keynum) case 1:gg-;if(gg=-1)gg=9;display(7,gg);break;case 2: s

30、s-;if(ss=-1)ss=9;display(6,ss);break;case 3: bb-;if(bb=-1)bb=9;display(5,bb);break; case 4: qq-;if(qq=-1)qq=9;display(4,qq);break;case 5: vgw-;if(vgw=-1)vgw=9;display(15,vgw);break;case 6: vsw-;if(vsw=-1)vsw=9;display(14,vsw);break;case 7: vbw-;if(vbw=-1)vbw=9;display(12,vbw);break;default:break;whi

31、le(fkeydown=0);n=qq*1000+bb*100+ss*10+gg;v=vbw*100+vsw*10+vgw;TR0=1;void keycheck(void) if(keyup&keydown&keychoose) = 0)TR0=0;if(keyup = 0) Delay(5); if (keyup=0) n=n+10;if(n= 2000)n=20;while(keyup = 0); else if(keydown=0) Delay(5); if (keydown=0) n=n-10; /频率值的减if(n2) choose=0;while(keychoose=0); /判

32、断键是否按下 TR0=1;void Lcd_Init()unsigned char i;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(i=0;i7;i+)write_dat(titlei);write_com(0x80+9);for(i=0;i3;i+)write_dat(signal_typei);write_com(0x80+0x40);for(i=0;i4;i+)write_dat(contenti);write_com(0x80+0x40+10);for(i=0;i

33、2;i+)write_dat(content1i);void Write_signal() /写信号的名字unsigned char i;write_com(0x80+9);switch(choose)case 0:for(i = 0;i 3;i+)write_dat(signal_typei);break;case 1:for(i = 4;i 7;i+)write_dat(signal_typei);break;case 2:for(i = 8;i 11;i+)write_dat(signal_typei);break;default:break; void Write_frequent(u

34、int dat) /写入频率值uchar qian,bai,shi,ge;qian=dat/1000;bai=dat%1000/100;shi=dat%100/10;ge=dat%10;write_com(0x80+0x40+4);write_dat(0x30+qian);write_dat(0x30+bai);write_dat(0x30+shi);write_dat(0x30+ge); void Write_volt(uint dat) /写入电压幅值值uchar bw,sw,gw;bw=dat/100;sw=dat%100/10;gw=dat%10;write_com(0x80+0x40

35、+12);write_dat(0x30+bw);write_dat(.);write_dat(0x30+sw);write_dat(0x30+gw);void display1()if(flag=1)flag=0;if(num=256)num=0;switch(choose) case 0:P2=sinnum;break;case 1:if(num128)P2=2*num;elseP2=(255-num)*2;break;case 2:if(num128)P2=0xff;elseP2=0x00;break;/调用完后又重新调用default:break; void main() Lcd_Ini

36、t(); f=n; t=1000000/(f*256); TMOD =0x02; /自动重装8位计数,设置为定时方式 TH0 =256-t; TL0 =256-t; TR0 = 1; ET0 = 1; EA = 1;/开中断 while(1) f=n;if(f!= old_f)TR0=0;t=1000000/(f*256); Write_frequent(f); /写入频率Write_volt(v);old_f = f;TH0 =256-t; TL0 =256-t;TR0=1;if(choose!=old_choose)Write_signal();old_choose=choose; keycheck(); /频率加减和波形选择fkeycheck();display1(); void timer0(void) interrupt 1 /定时器0产生信号函数 num+;flag=1;

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922