多功能波形发生器多功能波形发生器精选.docx

多功能波形发生器多功能波形发生器精选.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多功能波形发生器多功能波形发生器精选

1.设计选题及任务设计题目:多功能波形发生器任务与要求:设计一个由单片机控制的波形发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。基本要求:1.产生方波、三角波、锯齿波、正弦波可通过开关选择2.波形幅值调范围80H~FFH,两档。周期两档3.有波形指示幅值周期档显示功能。2.系统概述及硬件简介随着科技的发展和现代科研的需要,信号发生器已经成为了很多行业进行研究测试不可或缺的工具,但目前使用波形发生器大部分体积大,可靠性差,准确度低。因此为了实验研究方便,研制一种体积小、可靠性强、准确性高的波形发生器显得尤为重要。方案总体设计框图 图2.1总体电路图见附录2。由于proteus单片机已默认连接复位电路、晶振电路、以及电源,所以本设计中没有这几个模块的具体电路。3.软件的实现系统软件由主程序和外部中断程序,定时器中断程序以及键值判断子程序,显示子程序子程序组成,波形的产生主要通过定时器中断来完成。波形的转换通过改变波形标志位实现。周期的改变可通过定时器的初值改变的方法来实现。幅值可通过初始值的改变而方法来实现,由LCD1602完成显示部分。具体如下所述3.1波形的产生原理将各种波形的每个周期平均分成255份,把每份的值依次发给P0口,每份的时间间隔通过开启定时器0来控制,当定时时间到时单片机就产生中断,在中断服务程序里面通过P0口将每份的值发出去,这个值通过DAC0832转换为模拟量。如图3.1图3.13.2波形的产生过程3.2.1正弦波的产生过程对正弦波的一个周期进行等间隔的采样,采样次数为255次,将所采样的数值转化为8位二进制数存放在数组tosin[255]里面。然后定义一个无符号型变量b,当定时器产生一次中断,单片机就将tosin[b]值赋予P0引脚,同时变量b自加1,并且当b加到255时会自动变为0,因为无符号型变量的范围是0~255。程序如下:switch(fun){case0://fun==0正弦波{ P0=tosin[b] ;b++; }break;3.2.2三角波的产生过程定义一个无符号变量c,每当定时器定时时间到达时,如果c值大于0而小于128,c自加1,将c值赋予P0口;如果c值大于128,则用255减去c值赋予P0口;程序如下:case1:// fun==1三角波{ if(c128) P0=2*c; else P0=2*(255-c); c++; } break;给赋值结果乘以2,因为不乘2的话,锯齿波中的变量e最大可以加到255,但三角波中赋予P0口的最大值只有128,为了让输出电压幅值统一期间,我们对其乘以2。图3.33.2.3方波的产生过程方波较其它波的产生原理较简单,它也是定义一个无符号字符变量d,当定时器产生一次中断则d自动加1。当d小于128时,将0xff赋予P0口;当d大于128时,将0x00赋予P0口;程序如下:case2://fun==2 方波 { d++; if(d=128) P0=0x00; else P0=0xff; }break;图图3.43.2.4锯齿波的产生过程锯齿波的产生是定义一个变量e,每当定时器中断一次,则把n值赋予P0口。同时n自加1。在此处当e加到255时则会自动溢出变为0。程序如下:case3: //fun==3锯齿波{ if(n255) {P0=n;} n++; }break;图3.53.3波形的选择及调频调幅的实现波形的选择及调频调幅通过P1口按键选择来实现,具体如下所述3.3.1波形的选择在本方案中,我们通过1#按键进行波形选择。具体方法是定义一个变量fun,当1#按键按下一次时,其就自动加1。其不同的数值代表不同的波形。具体如下:fun==0代表正弦波fun==1代表三角波fun==2代表方波fun==3代表锯齿波3.3.2调幅功能的实现本方案对波形的幅值可以调节为5V、4V、3V、2V、1V;在这里我们定义一个变量“chu”,并且将赋予P0端口的值5等分,也就是把那个值先除以5,再乘以变量“chu”,所以在这里只要改变变量“chu的值就可以改变输出波形的幅值。在方案中是通过2#按键改变变量的。void key2(void) //选择幅值{ chu++;if(chu==11)chu=0x01;}具体的调压方式以正弦波说明如下: case0://fun==0正弦波{ P0=tosin[b]/5*chu; b++; }break;也就是说,调压功能把将要赋给P0口的值除以5乘以“chu”即可实现。3.3.3调频功能的实现由于波形的输出

您可能关注的文档

文档评论(0)

vshoulrengb3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档