基于单片机的波形发生器_第1页
基于单片机的波形发生器_第2页
基于单片机的波形发生器_第3页
基于单片机的波形发生器_第4页
基于单片机的波形发生器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

波形发生器设计摘要波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波〔含方波〕、正弦波的电路。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。通过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。目前使用的信号发生器大局部是函数信号发生器,且特殊波形发生器的价格昂贵。所以本设计使用的是DAC0832芯片构成的发生器,可产生三角波、方波、正弦波等多种特殊波形和任意波形,波形的频率可用程序控制改变。在单片机上加外围器件距阵式键盘,通过键盘控制波形频率的增减以及波形的选择,并用了LCD显示频率大小。在单片机的输出端口接DAC0832进行D/A转换,再通过运放进行波形调整,最后输出波形接在示波器上显示。本设计具有线路简单、结构紧凑、价格低廉、性能优越等优点。本设计制作的波形发生器,可以输出多种标准波形,如方波、正弦波、三角波、锯齿波等,还可以输出任意波形,如用鼠标创立的一个周期的非规那么波形或用函数描述的波形等,输出的波形的频率、幅度均可调,且能脱机输出。设计的人机界面不但清晰美观,而且操作方便。关键词:波形发生器;DAC0832;单片机;波形调整目录一、设计目的及意义-3-1.1设计目的-3-1.2设计意义-3-二、方案论证-4-2.1设计要求-4-2.2方案论证-4-三、硬件电路设计-5-3.1设计思路、元件选型-5-3.2原理图-5-3.3主要芯片介绍-6-3.4硬件连线图-10-四、软件设计-10-4.1锯齿波的产生过程-11-4.2三角波产生过程-13-4.3方波的产生过程-14-4.4正弦波的产生过程-16-4.5通过开关实现波形切换和调频、调幅-18-五、调试与仿真-20-5.1仿真结果-21-六、总结-22-七、参考文献:-23-一、设计目的及意义1.1设计目的〔1〕利用所学微机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。

〔2〕我们这次的课程设计是以微机为根底,设计并开发能输出多种波形〔正弦波、三角波、锯齿波、方波、梯形波等〕且频率、幅度可变的函数发生器。

〔3〕掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。

〔4〕在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。

〔5〕通过这几个波形进行组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家微机知识的应用。1.2设计意义波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最根本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。二、方案论证2.1设计要求使用计算机和数模转换器构成信号发生器,可以产生方波、三角波、锯齿波和正弦波等多种波形,波形的周期、频率可调。要求完成计算机和DAC的选型,了解不同波形的产生原理和设计方案,画出硬件电路图,并编程完成软件局部,最后调试观察产生不同类型的波形信号。〔1〕课程设计论文内容要正确,概念要清楚;〔2〕完成任务书所规定的内容;〔3〕附有电路原理图及程序流程图,以及程序清单;〔4〕文字要通顺,书写要工整,设计图纸必须符合标准2.2方案论证信号发生器的实现方法通常有以下几种:方案一:用分立元件组成的函数发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试。方案二:可以由晶体管、运放IC等通用器件制作,更多的那么是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。方案三:利用专用直接数字合成DDS芯片的函数发生器:能产生任意波形并到达很高的频率。但本钱较高。方案四:采用AT89C51单片机和DAC0832芯片,直接连接键盘和显示。该种方案主要对AT89C51单片机的各个I/O口充分利用.P1口是连接键盘以及接显示电路,P2口连接DAC0832输出波形.这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的本钱.也对按照系统便携式低频信号发生器的要求所完成.占用空间小,使用芯片少,低功耗。综合考虑,方案四各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分表达了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比拟大,所以本设计采用方案四。三、硬件电路设计3.1设计思路、元件选型设计思路:〔一〕、课设需要各个波形的根本输出。如输出锯齿波、三角波、方波、正弦波。这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加1,当溢出后又重初值开始加起,就这样循环下去。三角波的实验过程是先加后减,实现方法是先是从00H开始加1直到溢出后就执行减1操作,就这样不断调用这个循环。方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性。正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。〔二〕、通过P1口和开关K0-K4相连接来控制各个波形的输出。能根据k0-k5键状态进行波形切换,开关键向上接“1〞,产生波形,向下拔接“0〞,无波形输出。如K0键向上拔,K1-K4键向下拔,产生锯齿波;K1键向上拔,K0、K2-K4键向下拔,产生三角波;……以此类推。元件选型:单片机AT89C51系统,DAC0832一片,PC机一台,运算放大器3.2原理图3.3主要芯片介绍〔1〕、DAC0832芯片介绍:0832采用双缓冲接口方式,其传送控制端接地,输入所存允许断ILE与+5V电源相连,利用一个地址码进行二次输出操作,完成数据的传送和冲动转换,第一次操作室P2.6为高电平,将P0口数据线上的数据锁存于DAC0832的输入存放器中。第二次操作是写控制信号由效,传送控制端为低电平,将输入存放器中的内容锁存入0832的DAC存放器中,D/A转换器便开始对锁存于DAC存放器的8位数据进行转换,约经过1/2时钟周期后,在输出端〔IOUT2、IOUT1〕建立稳定的电流输出。运放的作用是将0832输出的模拟电流信号转换为电压波形。DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。DAC0832的内部结构框图如下列图所示。图2-2DAC0832工作原理图DAC0832的外部引脚及功能介绍图如下:图2-3DAC0832引脚图DAC0832内部结构资料:芯片内有两级输入存放器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。D/A转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反应电阻可通过RFB端引用片内固有电阻,还可以外接DI0~DI7:数据输入线,TLL电平。ILE:数据锁存允许控制信号输入线,高电平有效。CS:片选信号输入线,低电平有效。WR1:为输入存放器的写选通信号。XFER:数据传送控制信号输入线,低电平有效。WR2:为DAC存放器写选通输入线。Iout1:电流输出线。当输入全为1时Iout1最大。Iout2:电流输出线。其值与Iout1之和为一常数。Rfb:反应信号输入线,芯片内部有反应电阻.Vcc:电源输入线(+5v~+15v)Vref:基准电压输入线(-10v~+10v)AGND:模拟地,摸拟信号和基准电源的参考地.DGND:数字地,两种地线在基准电源处共地比拟好〔2〕单片机AT89C51介绍:AT89C51是一种带4K字节闪存可编程可擦除只读存储器〔FPEROM—FlashProgrammableandErasableReadOnlyMemory〕的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下列图所示:图3.4AT89C51引脚图AT89C51管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流〔ILL〕这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,那么在此期间外部程序存储器〔0000H-FFFFH〕,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP〕。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.4硬件连线图图3.5硬件连线图四、软件设计总体方框图函数发生器的设计函数发生器的设计K2键三角波K3键方波K4键正弦波K0键锯齿波总体设计功能图4.1锯齿波的产生过程锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少那么根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。流程图如下所示定义变量iuchari定义变量iucharifor(i=0;i<255;i++)P0=i判断按键是否为0否重新设置变量i是开始图3-1锯齿波产生流程图锯此波发生子程序如下:MOVDPTR,#7FFFH;端口地址7FFFH—间址存放器MOVR7,#0;R7为0DASAW:MOVA,R7;A清零MOVX@DPTR,A;写RAMINCR7;R7存放器加一NOP;空操作NOPNOPSJMPDASAW;转移END4.2三角波产生过程三角波的实定义变量iuchari定义变量iucharifor(i=0;i<255;i++)for(i=255;i>0;i--)判断p0是否已满否是延时否/是开始流程图如下列图所示:判断按键是否为0判断按键是否为0三角波发生子程序如下:MOVDPTR,#7FFFH;设置D/A转换器的端口地址L1:MOVR7,#00H;A清零MOVA,R7L2:MOVX@DPTR,A;写外部存储器NOP;延时NOPNOPINCA;A加1JNZL1;不等与零那么转L1L3:MOVX@DPTR,A;写外部存储器4.3方波的产生过程此波形的实现更加简单,只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。流程图如下列图所示:开始开始循环开始给p0赋值0x00延时给p0赋值0xff延时判断按键是否为0图3-3方波产生流程图方波发生子程序:MOVDPTR,#7FFFH;设置D/A转换器的端口地址MOVR7,#FFH;将#FFH送R7FANGB:MOVA,R7;给A赋值MOVX@DPTR,A;写RAMACALLDELAY;调用延时子程序CPLA;A取反MOVX@DPTR,A;写RAMACALLDELAY;调用延时子程序SJMPFANGB;返回FANGBDELAY:MOVR7,#200;延时50msDEL1:MOVR6,#123NOPDEL2:DJNZR6,DEL2DJNZR7,DEL1RETEND; 程序结束4.4正弦波的产生过程正弦波的实现那么相比照拟复杂,因为正弦波的实现是输出各个点的值就行了,可是各个点值那么要通过正弦函数来求出。输出的数据刚好是256个数据,这样那么可以直接相加就行了开始开始定义变量i定义变量i循环开始循环开始如果i=0;++i=128如果i=0;++i=128把p0定义为数组tab【i判断按键是否为0延时为0那么终止图3-4正弦波产生流程图正弦波发生子程序如下:MOVDPTR,#SINTAB;正弦表写入内部RAM6DH-7FHMOVR0,#6DHLOOP:CLRAMOVCA,@A+DPTRMOV@R0,AINCDPTRINCR0CJNER0,#80H,LOOPMOVDPTR,#7FFFH;设置D/A转换器的端口地址MOVR0,#6DH;设置正弦表指针LOOP1:MOVA,@R0;查表MOVX@DPTR,A;D/A转换ACALLDELAY;延时,等待转换结束DECR0;正弦表位移量增量CJNER0#6DH,LOOP1;第一象限输出完?LOOP2:MOVA,@R0;查表MOVX@DPTR,A;D/A转换ALCALLDELAY;延时,等待转换结束DECR0;正弦表位移量减量CJNER0#6DH,LOOP2;第二象限输出完?LOOP3:MOVA,@R0;查表CPLA;表值取反MOVX@DPTR,A;D/A转换ACLALLDELAY;延时,等待转换结束INCR0;正弦表位移量增量CJNER0,#7FH,LOOP3;第三象限输出完?LOOP4:MOVA,@R0;查表CPLA;表值取反MOVX@DPTR,A;D/A转换ALCALLDELAY;延时,等待转换结束DECR0;正弦表位移量减量CJNER0,#6DH,LOOP4;第四象限输出完?SJMPLOOP1DELAY:MOVR7,#200;延时50msDEL1:MOVR6,#123NOPDEL2:DJNZR6,DEL2DJNZR7,DEL1RETSINTAB:DB7FH,89H,94H,9FH,0AAH,0B4H,0C8H,0D1H,0D9HDB0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,,OFEH,0FFHEND4.5通过开关实现波形切换和调频、调幅通过开关实现波形的切换比拟简单只需通过输出波形后不断返回到检测开关的子程序中,判断是否有别的开关拨动,如果有别的开关拨动那么执行别的程序,否那么输出原来的波形,不过如果要能够识别别的开关发生变化,必须将此开关关掉否那么会识别不了别的键按下。当然开关的调频和调幅的实现也一样,不过首先先输出一个波形,然后再检测开关是否需要调频或者调幅,如果需要那么转入到相应的程序中,最后再重新输出波形。下面是调频和调幅:开始开始判断是否为1?否是输出各种波形调整一下数字量图3-5输出波形原理下列图式实现各种波形通过开关的切换的流程图,按下开关通过P1.0为1那么输出锯齿波,P1.1为1输出三角波,P1.2为1输出方波,P1.3为1输出正弦波。开始开始判断P1.0是否为1判断P1.1是否为1判断P1.2是否为1否否否否是是是是输出响应的波形判断P1.3是否为1图3-6开关切换波形原理五、调试与仿真本次的设计主要应用了protues和keilc软件进行系统设计和仿真,经过仿真后,结果较好,示波器可以正确的输出方波、正弦波、三角波、锯齿波,并且频率可调。5.1仿真结果三角波和正弦波的仿真结果如下,其他波形省略。图4-1三角波仿真结果图4-2正弦波仿真结果六、总结本次的设计中利用AT89C51和DAC0832以及放大器完成电路的设计,用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。在这次的软件设计中,程序设计采用的是汇编语言。汇编语言具有速

温馨提示

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

最新文档

评论

0/150

提交评论