《多功能波形发生器设计.pdf》由会员分享,可在线阅读,更多相关《多功能波形发生器设计.pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 引言波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设 计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形。在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技 术领域,经常需要用到各种各样的信号波形发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。用集成电路实现的信号波形发生器 与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。利用单片机采用程序设计方法来产生低频信号,其频率底线很低。具 有线路相对简单,结构紧凑
2、,价格低廉,频率稳定度高,抗干扰能力强,用途广泛 等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求。只要对 电路稍加修改,调整程序,即可完成功能升级。2 方案设计与分析2.1设计目的本设计包括确定控制任务、系统总体方案设计、硬件系统设计、软件程序的设计等,使学生进一步学习与理解计算机控制系统的构成原理、接口电路与应用程序,巩固与综合专业基础知识和相关专业课程知识,提高学生运用理论知识解决实际问题的实践技能;2.2设计内容及要求设计由微机(单片机)控制的多功能波形发生器,该发生器在操作人员控制下 输出正弦波,方波,三角波,或锯齿波波形。波形的极性,周期和占空比(对矩形波而言)等可
3、由操作人员设置和修改。具体要求:(1)可预先在内存数据内中建立各种波形的一个周期的输出数据表。然后每 一次定时中断信号或每延时一定时间,循环的依次从表中取一个数据输出,便可以得到相应的波形。(2)对于方波,锯齿波和三角波等脉冲波形的产生,可直接根据波形的特点,依次将每点输出数据加/减一数或在上、下限值上交替变换来实现。(3)采用预置和修改上下限来实现波形幅度变化。改变上、下限值输出延时时间,可改变矩形波的占空比。2.3设计方案及原理系统的核心采用AT89S51该单片机具有加密性强、超强抗干扰能力,超低 功耗,运行速度快等特点,以及在系统可编程等特点,该芯片内部集成看门狗电路,不用外接看门狗电路
4、,因此满足了本系统开发的需要。单片机负责控制信号发生单元的工作状况,根据外部键盘的输入改变程序的运行状态,使信号发生单元能产生 所需的波形。波形数据为一系列的二进制数,通过D/A转换和放大输出。当前的波 形名称、频率、幅值及占空比通过显示单元显示。图 2.1 总体设计流程图3 硬件的设计3.1硬件接线的设计键盘输入部分主要用于选择波形。键盘共设4个键,用于选择三角波、矩形波、锯齿波、正弦波4种不同的波形,89C51单片机用来执行某一波形发生程序,向D/A转换器的输入端发送数据,将其转化成模拟量,并通过运算放大器调节波形的 幅值,经过滤波器的滤波,从而在输出端得到所需的波形。3.2总体程序流程图
5、3.3各主要模块的功能3.31 AT89C511单片机图 3.1 总体电路图图 3.2 总体程序流程图XTAL1XTAL13fiXTALI.J.J_ _XTAL2XTAL2PD.l/ADlPD.l/ADlP0J/AD2P0J/AD2P0.3/AD3P0.3/AD3P0.4/AMP0.4/AMP0.5/AD5P0.5/AD5P0.6/ADSP0.6/ADSRSTRSTP0.7/AD?P0.7/AD?XTAL2RSTAIMAT69限呃2S_-A/Vrn-+F谢 虹可C5130,3LjfM-EjfM-E罠F2.2/AWF2.2/AWP2_3mi 1P2_3mi 1P2.4/A12P2.4/A12FE
6、DGPP2J5/A1JP2JS/A14P2JS/A14P2.7/A15P2.7/A15P3.0/RXDP3.0/RXDP3.1/DaP3.1/Dpismipismi 旧颇 H H1 1P3.7WP3.7W创缈 if if 匹罔 H H 軍5 软件设计5.1流程图的设计5.1.1方波程序流程图此波形的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输 出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时 的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就 相当于一个脉冲波了5.1.2正弦波程序流程图DFTDFT DPTK+iDPTK+i幵料5.1
7、.3三角波程序流程图三角波的实现是设置一个初值,然后进行加数,同样是加到某个数之后再进行 减数,减到初值之后就再返回到先前的操作。H图1一1角波发空程序流程图5.1.4锯齿波的程序流程图锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。设置初值 A AMOV DPTRMOV DPTRMOVX DPTRMOVX DPTR,A A使 A A 一直加一到重新设置初值 A A5.2程序清单IOYOEQU3800H;MY8255 _EQUIOYO+00H*2_AMY8255 _EQUIOYO+00H*2_BMY8255 _EQUIOYO+00H*2_CMY8255
8、_MODE EQU IOYO+00H*2MY0832 EQU 3819H;STACK1 SEGMENT STACK片选8255对应端口的始地址的A口地址;8255;8255;8255;8255的B口地址的C口地址的控制寄存器地址片选DAC0832寸应的端口地址DW 256 DUPSTACK1 ENDSDDATA SEGMENTflag DB 2 DUP(?);存放将要转换的波形的的类型,0FH代表直线;0EH代表方波,0DH代表锯齿波;0BH代表三角波;07H代表正弦波TEMP DB 2 DUP(?);存放三角波的走向,0代表上上升,1代表下降BUF1 DB 00H,00H,0FFH,0FFH
9、;矩形波的预置数BUF4 DB 7FH,8CH,98H,0A4H,0B0H,0BCH,0C6H,0D0HDB 0DAH,0E2H,0E9H,0F0H,0F5H,0F9H,0FCH,0FEHDB 0FFH,0FEH,0FCH,0F9H,0F5H,0F0H,0E9H,0E2HDB 0DAH,0D0H,0C6H,0BCH,0B0H,0A4H,98H,8CHDB 7FH,73H,67H,5AH,4FH,43H,39H,2FHDB 25H,1DH,15H,0FH,0AH,05H,02H,01HDB 00H,01H,02H,05H,0AH,0FH,15H,1DHDB 25H,2FH,39H,43H,4FH
10、,5AH,67H,73HDDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:MOV AX,DDATAMOV DS,AXMOV SI,OFFSET flag;初始化输出的波形类型MOV CL,00HMOV SI,CLMOV DX,MY8255_MODE初始化8255的工作方式MOV AL,90H;OUT DX,ALDANDS:PUSH AX;PUSH DIPUSH SICALL DALLYCALL KEYSCANPOP SI;POP DIPOP AXLine:MOV CL,00H;CMP SI,CLJZ NEXT0;MOV SI,CLMOV DI
11、,00HNEXT0:MOV DX,MY0832MOV AL,00HOUT DX,AL JMPDANDS;工作方式0,A口输入保存各个寄存器的值延时并扫描恢复各个寄存器的值判断上次输出的波形是不是直线如果是则继续,不是则把波形变换成直线输出直线返回扫描按键recta ngular:MOV CL,01H;判断上次输出的波形是不是方波CMP SI,CLJZ NEXT1;如果是则继续,不是则把波形变换成方波MOV SI,CLMOV DI,0000HNEXT1:MOV DX,MY0832MOV BX,OFFSET BUF1;从内存娶数据并输出MOV AL,BX+DIOUT DX,ALINC DICMP
12、DI,03H;判断是否一个周期已经结束返回扫描按键NATIA01MOVDI,00HTIAO1:JMPDANDS;sawtooth:MOVCL,02H;判断上次输出的波形是不是锯齿波如果是则继续,不是则把波形变换成锯齿波输出波形返回扫描按键判断上次输出的波形是不是三角波如果是则继续,不是则把波形变换成三角波CMP将三角波初始化为上升SNEXT3:MOV DX,MY0832;输出波形IOUT DX,ALMOV DI,OFFSET TEMP判断三角波是不是出于下降阶段MOV CL,01HCMP DI,CLJZ DOWN;如果为下降阶段则跳到DOWN如果为上升阶段,UP:INC ALINC AL如果上
13、升到最顶端,则转变为下降JNZ TIAO3MOV DI,OFFSET TEMPMOV CL,01H阶段MOV DI,CLDOWN:DEC ALDEC ALJNZ TIAO3MOV DI,OFFSET TEMPMOV CL,00HMOV DI,CL如果下降到最低端,则转为上升阶段 返回扫描按键TIAO3:JMP DANDS;sin判断上次输出的波形是不是正弦波e:MOV CL,04H;CMP SI,CLJZ NEXT4;如果是则继续,不是则把波形变换成正弦波MOV SI,CLMOV DI,0000HMOV AL,00HNEXT4:MOV DX,MY0832;从BUF4取数据并输出MOV BX,O
14、FFSET BUF4MOV AL,BX+DI OUT DX,ALINC DICMP DI,40HJNZ TIAO4MOV DI,00H TIAO4:JMPDANDS判断输出的中周期是否结束返回扫描按键KEYSCAN PROC;定义键盘扫描子程序SCAN:MOV DX,MY8255_A;读A口IN AL,DXAND AL,0FHMOV AH,ALCMP AH,0FH;判断是否有按键按下JNZ P1;如果没有按键按下,输出一条直线JMP li ne;下面的程序如果有按键按下,判断哪一个按键按下P1:CMP AH,0EH;判断第一个按键有没有按下JNZ P2;如果第一个按键按下,则输出矩形波JMP
15、recta ngularP2:CMP AH,0DH;判断第二个按键有没有按下JNZ P3;如果第二个按键按下,则输出锯齿波JMP sawtoothP3:CMP AH,0BH;判断第三个按键有没有按下JNZ P4;如果第三个按键按下,则输出三角波JMP tria ngleCMP AH,0EH;判断第四个按键有没有按下JNZ P4;如果第四个按键按下,则输出正弦波JMP si neP4:MOV AH,1;判断电脑键盘是否有按键按下INT 16HJZ SCAN;无按键按下则跳回继续扫描,有则退出QUIT:MOV AX,4C00H;结束程序退出INT 21HDALLY PROC NEAR软件延时子程序
16、KEYSCAN ENDPPUSH CX;将变量值CX,AX的值压入堆栈PUSH AXMOV CX,0FFFH D1:MOV延时AX,0FFFHD2:DEC AXJNZ D2LOOP D1POP AX;将变量AX,CX的值弹出堆栈POP CXRETDALLY ENDPCODE ENDS;结束代码段END START6 课程设计体会通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出 了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通 过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在课程
17、设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最 终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程 设计终于顺利完成了,在设计中遇到了很多问题,最后在各种努力下,终于游逆而 解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到 要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成 功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不 可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可。参考文献1.顾德英.计算机控制技术(第二版).北京邮电大学出版社,20052.李顺增,吴国东,赵河明.微机原理及接口技术.机械工业出版社,20043徐爱华 单片机应用技术教程机械工业出版社2003.74谢宜仁,谢炜,谢东辰 单片机实用技术问答 人民邮电出版社2003.25何立民 单片机应用技术选编6潘永雄新编单片机原理与应用实验北京航空航天大学出版社1997.10西安电子科技大学出版社2005.97夏继强,沈德金 单片机实验与实践教程 北京航空航天大学出版1999.12
限制150内