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

下载本文档

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

文档简介

摘要时间:2021.03.05创作:欧阳理本系统是基于STC89c52单片机利用DDS的合鼠原理的低频信号发皮器。束用STC89c52单片机作,控制核芯,外圉采用赵庄/核叔转换电路(DAC0832)、运致电路(LM358)、按诡著相戚卷个系疣。通过按诡控制可产成方波、三命波、正强波、锯齿波不可。微调频率大小。通过上候机可感通过PC可山迄蓿波彬制波形的频率。其世奸荀单、嘏怩优中,频率的褊液由DA和系统时替大小决是,所。很易的实现褊食倜卷,系统的嘏价比裔,可用于多种需要低频信号的场所,房有一关的实用槌。关桂词/STC89C52/DAC0832/关桂词LM358;DDS目录摘要I关键词I.设计任务与要求1.方案设计与论证1系统信号发生的方案设计1系统控制芯片的方案设计13硬件系统模块及理论分析2总体设计框架2最小系统模块电路2DAC0832模块电路3按键电路34.系统软件设计4主流程图5软件模拟仿真643方波仿真图6按键检测原理7总结7参考文献8附件9I源程序9II总电路图17III总图PCB18IV元器件清单18.设计任务与要求①利用单片机组成一个多波信号发生器。②能输出的波形为三角波、锯齿波、方波、正弦波。③输出波形频率f=l〜100Hz、。④输出波形频率通过PC机设置。.方案设计与论证系统信号发生的方案设计方案一、通过专用DDS芯片如AD9850作为信号发生器件,用专用芯片的特点是,产生的信号频率范围宽,可以产生很高的频率,频率的精度高。但是价格比较贵。方案二、通过产生PWM产生方波,通过低通滤波器变为正弦波,在加上其他外围电路可产生三角波、锯齿波、方波、正弦波。可实现题目要求,这种设计价格便,但是外围比较复杂,频率不好控制。方案三、通过单片机外围加上DA芯片代替专用的DDS芯片,同样应用DDS信号合成原理产生任意想要的信号,这样构造的系统简单,用廉价的DAC0832就可产生满足题目要求的低频信号。结论:通过上述三个方案可以知道,用专用DDS芯片合成性能比较高,价格贵,用于本设计就大材小用,用PWM价格便宜,但是性能不好,所以属于中间的DA芯片是理想的选择。系统控制芯片的方案设计方案一、选用STM32作为控制芯片,STM32内部资源丰富,时钟速度快,是一块性价比极高的芯片,用本系统会使得系统速度提升。尽管性价比高,还是比传统51单片机要贵点,控制指令多,相对于51单片机来说程序要比较复杂。方案二、选用STC公司的51单片机,STC89C52是对传统51做了增强,但是与传统51是兼容的,所以指令简单易于欧阳阳理创编 欧阳阳理创编 2021.03.04欧阳阳理创编 欧阳阳理创编 2021.03.04操作,12MHZ的系统完全满足题目涉及要求。结论:通过上述可以知道,STM32,性价比高,性能强大,但是用本系统是大材小用,而STC89c52则完全能满足题目要求而且价格比STM32要便宜,所以本设计选用STC89C52作为控制芯片。3硬件系统模块及理论分析总体设计框架图3.1总体系统框架是由按键、最小系统模块、DAC0832、转串口模块组成,这样就可以实现多函数输出和PC机通信。按键是为了实现波形的切换和频率的大小调节,最小系统是系统的主控制模块,是沟通按键、DAC0832模块、PC机的主控模块,是系统必不可少的模块。转串口模块式为了实现单片机与PC的通信,PC可以通过上位机控制波形的选择和频率大小设置。

最小系统模块电路■CK2--CMS«□€=■CK2--CMS«□€=^□O■cQC=^□O■cQC=*-x= <300 IX:---・quQ图3.2图3.2是STC89C52的最小系统图,组成部分有时钟电路和复位电路。实现的功能是控制DAC0832的模拟输出量的大小和输出的频率,以产生方波、三角波、正弦波、锯齿波,并通过与转串口电路的结合以实现与PC机之间的通信。

3.3DAC0832模块电路上图中DAC0832电路的接法是直通型接法,这种接法的最大特点就是只需要对DAC0832的数据口赋值就可以实现电压的输出,所以操作起来非常方便,而DAC0832输出的并不是电压,而是电流所以要在输出端加上一个运放实现电流到电压的转换。选用LM358的原因是它输出端的电压可以达到负电压,这样就可以实现单电源供电了。按键电路图3.4按键是通过单片机的P0口进行监控,当单片机检查到有按键按下时,单片机就会根据按键对DA输出进行相应的改变,这样就可以实现按键对输出波形的切换和频率的调节。转串口电路图3.5转串口用的芯片是CH340,CH340产家提供有两种接法,一种是可以把PC机串口的电平转变为USB电平,另外一种可以直接把单片机的电平转换为USB电平,本设计选用的是第二种接法,因为这样接就可以省去了MAX232把单片机电平转换外PC机电平,这样设计电路变得更加可靠稳定了,同时也可以节省成本,同样本电路也是需要时钟电路让CH340能正常工作。4.系统软件设计系统软件由主程序和产生波形的子程序组成,软件设计主要是产生各种波形的子程序的编程,通过编程可得到各种波形。周期的改变可采用插入延时子程序的方法来实现。主程序和几种常用波形子程序的流程图如图所示。

主流程图图41由图4.1可以简单的知道,程序的大概思路是,判断按键与上位机是否发送数据来觉得DA的输出量,初始化的时候程序是写输出频率为200HZ的方波信号。软件模拟仿真图4.2锯齿波仿真锯齿波产生是通过P2口将00H送入寄存器A中,DAC0832输出A中的内容,读取P2口的状态,取反后作为延时常数,当A中的内容不为0FFH时,A中的内容加1,当A中的内容等于FFH返回开始,从而输出波形。锯齿波程序voidjuchibo(void)jfbr(num=0;num<256;num++){cs=0;DAC0832=num;cs=l;wlule(a==0);a=0;}方波仿真图方波产生是通过P2口将00H输出给DAC0808,输出对应模拟量,然后读取P2口的状态,取反后作为定时器延时,延时时间到,将FFH输出时,同样输出对应模拟量,再延时,从而得到方波。方波程序如下:voidfangbo(void)sfbr(num=0;num<127;num++){cs=0;DAC0832=0XFF;cs=l;while(a=0);a=0:};fbr(num=127;num>0;num-){cs=0;DAC0832=0X00;cs=l;while(a==0);a=0;};按键检测原理voidchangbo(void)jiif(P32=0);delav(20);if(P32=0)flag++;if(flag>=4)flag=0;}总结通过设计简易的函数发生器,我学会了自己查资料,通过大量的资料结合,最终决定了现在所选用的方案,接下来就是运用之前学习过的Protel99se画板技术,成功的画出了电路图。接着是电路的调试,这一个步骤是最难的,当然遇到的挫折也是最多的,例如开始的时候没有对DAC0832深入了解造成了,电路设计没错就是不能正常工作,最后慢慢的调节,发现原来是自己所选用的参考电压出问题,本来应该选用负电压作为参考电压,按照手册提供的经典电路才能得到一个正电压,但是由于没注意到这点所以画了很多的时间。能够把电路正常的调处来还要感谢同学对我的帮忙,因为他们做过这样给我更加大的信心。调完了电路后接下来的是进行写程序,开始调式程序的时候有点乱,因为没有画完流程图在调,所以思路会比较混乱。不过后来通过参照网上的程序,终于实现了题目所要的功能。参考文献[1]周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2002.341〜364.[2]刘乐善.微型计算机接口技术及应用[M].北京:北京航空航天大学出版社,2001.258-264.[3]童诗白.模拟电路技术基础[M].北京:高等教育出版社,2000.171-202.[4]杜华.任意波形发生器及应用[J].国外电子测量技术,2005.1:38〜40.[5]张友德.单片微型机原理、应用与实践[M].上海:复旦大学出版社,2004.40〜44.[6]程朗.基于8051单片机的双通道波形发生器的设计与实现[J].计算机工程与应用,2004.8:100-103.[7]张永瑞.电子测量技术基础[M].西安:西安电子科技大学出版社,2006.61-101.[8]李叶紫.MCS-51单片机应用教程[M].北京:清华大学出版社,2004.232〜238.附件I源程序/********************************************时间:2013年6月23日15:33:43硬件条件:stc89c521c单片机上项目:函数发生器作者:龙腾跃准备知识:通过DACO832实现信号的发生,DAC0832选用的是直通型输出方式修改:*********************************************/#mchide<REGX52.H>#includeHDelay_time.hM#includeHUart.hH#mclude<intruis.h>//#mcludeHboxmg.hHsbitCS=P3A7;sbitup=P0z0;sbitdown=P0Al;bitflag=0.flagl=0.flag2=Lflag3=0.flag5=0,flag6=l,cont=l;unsignedmtnum4=l70aium3=l88.nuin2=0,numl=0;unsignedchaiinaik=0;unsignedchark=l;unsignedcharN=0x00;unsignedmttmp;unsignedchari=0;unsignedmtt=2;unsignedchaitable[4];voidTnangleQ;〃输出三角波voidSquare。; 〃方波voidsinQ;〃正弦波voidSawtooth。;〃锯齿波voidchaiige();unsignedcharcodesm_tab[]=〃正弦波输出表(0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99.0x9C.0x9F,0xA2,0xA5,0xA&0xAB,0xAE,0xBl,0xB4,0xB7,0xBA.0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8,0xDA,0xDD,0xDF,0xEL0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xFl,0xF2,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA.0xFB,0xFC,0xFD,0xFD,0xFE,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,0xDF,0xDD,0xDA,0xD8,0xD6,0xD4,0xDl,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,0x5A,0x57,0x55,0x51,0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D.0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29.0x27,0x25,0x22,0x20,0xlE,0xlC,0x1A,0xl8,0x16,0x15,0x13,0x11,0x10,OxOE,0x0D,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0xOO.OxOO,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B.0x0D,OxOE,0x10.0x11.0x13,0x15,0x16,0x18,0x1A,OxlC,OxlE,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,0x7Evvoidmaui()sUan_nut();Delayimis(lOOO);send_stnng("作者:龙腾跃Delayimis(lO);Entei();send_string("作品:简易信号发");Delayimis(lO);send_string(“生器)Entei();send_stnng("初始波形为200HZ");Delayimis(lO);send_string("方波)CS=O;up=l;down=l;wlule(l)(if(flag)TuangleQ;Sawtooth。;if(flag2)SquaieQ;if(flag3)SU10;change();if(flag5&&flag6){if(iiiaik==4&&cont)inum4=170-t;flag=O;flagl=O;flag2=0;flag3=l;send_data(num4);}if(iiiaik==3&&cont)jinum3=(200.0/t)*188;flag=O;flagl=O;flag2=l;flag3=0;seiid_stnng("频率:”);send_data(t);send_string(MHZM);}if(maik==2&&cont)ji

nuin2=t;flag=0;flagl=l;flag2=0;flag3=0;send_data(num2);if(inaik==l&&cont)(numl=5-t/10;flag=l;flagl=0;flag2=0;flag3=0;send_data(t);)flag5=O;〃串口中断子函数j〃串口中断子函数voidUan(void)intemipt4using1if(l=RI)〃必须进行判断才可以实现中断的对应响应(RI=0;table[i]=SBUF;1++;t=(table⑵-48)*100+(table[3]-48)*10+(table[0]-48);maik=table[l]-48;flag5=l;TR0=0;1=0;flag6=^flag6;cont=l;产********************************************************输出三角波*********************************************************/voidTnangle()(unsignedchai1;unsignedintj;fbr(l=O;K255;l=l+k)(P2=l;wlule(j<numl)(J++;)J=o;}fbi(l=255;l>l;l=l-k)(wliile(j<numl)(J++;)J=o;P2=l;}j/*********************************************************输出方波函数*********************************************************/voidSquaie()unsignedintj=O;N=~N;P2=N;while(j<num3)J++;}J=o;}/*********************************************************输出正弦波函数*********************************************************/voidsm()unsignedintij=0;fbr(i=O;i<256;i++J=0)J++;}P2=sm_tab[i];)}/*********************************************************输出锯齿波函数********************************************

温馨提示

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

评论

0/150

提交评论