多功能波形发生器设计.doc_第1页
多功能波形发生器设计.doc_第2页
多功能波形发生器设计.doc_第3页
多功能波形发生器设计.doc_第4页
多功能波形发生器设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

中北大学计算机控制课程设计说明书1 引言 波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形。在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号波形发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。利用单片机采用程序设计方法来产生低频信号,其频率底线很低。具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求。只要对电路稍加修改,调整程序,即可完成功能升级。2 方案设计与分析2.1 设计目的本设计包括确定控制任务、系统总体方案设计、硬件系统设计、软件程序的设计等,使学生进一步学习与理解计算机控制系统的构成原理、接口电路与应用程序,巩固与综合专业基础知识和相关专业课程知识,提高学生运用理论知识解决实际问题的实践技能;2.2 设计内容及要求设计由微机(单片机)控制的多功能波形发生器,该发生器在操作人员控制下输出正弦波,方波,三角波,或锯齿波波形。波形的极性,周期和占空比(对矩形波而言)等可由操作人员设置和修改。 具体要求:(1)可预先在内存数据内中建立各种波形的一个周期的输出数据表。然后每一次定时中断信号或每延时一定时间,循环的依次从表中取一个数据输出,便可以得到相应的波形。(2)对于方波,锯齿波和三角波等脉冲波形的产生,可直接根据波形的特点,依次将每点输出数据加/减一数或在上、下限值上交替变换来实现。(3)采用预置和修改上下限来实现波形幅度变化。改变上、下限值输出延时时间,可改变矩形波的占空比。2.3 设计方案及原理 系统的核心采用AT89S51,该单片机具有加密性强、超强抗干扰能力,超低功耗,运行速度快等特点,以及在系统可编程等特点,该芯片内部集成看门狗电路,不用外接看门狗电路,因此满足了本系统开发的需要。单片机负责控制信号发生单元的工作状况,根据外部键盘的输入改变程序的运行状态,使信号发生单元能产生所需的波形。波形数据为一系列的二进制数,通过D/A转换和放大输出。当前的波形名称、频率、幅值及占空比通过显示单元显示。图2.1 总体设计流程图3 硬件的设计3.1 硬件接线的设计键盘输入部分主要用于选择波形。键盘共设4个键,用于选择三角波、矩形波、锯齿波、正弦波4种不同的波形,89C51单片机用来执行某一波形发生程序,向DA转换器的输入端发送数据,将其转化成模拟量,并通过运算放大器调节波形的幅值,经过滤波器的滤波,从而在输出端得到所需的波形。图3.1总体电路图3.2总体程序流程图 图3.2 总体程序流程图3.3各主要模块的功能3.31 AT89C511单片机图3.3AT89C51引脚图 如果按功能划分,它由8个部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、I/O口(P0口、P1口、P2口、P3口)、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)的集中控制方式。各功能部件的介绍:1)数据存储器(RAM):片内为128个字节单元,片外最多可扩展至64K字节。 2)程序存储器(ROM/EPROM):ROM为4K,片外最多可扩展至64K。 3)中断系统:具有5个中断源,2级中断优先权。 4)定时器/计数器:2个16位的定时器/计数器,具有四种工作方式。 5)串行口:1个全双工的串行口,具有四种工作方式。 6)特殊功能寄存器(SFR)共有21个,用于对片内各功能模块进行管理、监控、监视。 7)微处理器:为8位CPU,且内含一个1位CPU(位处理器),不仅可处理字节数据,还可以进行位变量的处理。 8)四个8位双向并行的I/O端口,每个端口都包括一个锁存器、一个输出驱动器和一个输入缓冲器。这四个端口的功能不完全相同。A、P0口既可作一般I/O端口使用,又可作地址/数据总线使用;B、P1口是一个准双向并行口,作通用并行I/O口使用;C、 P2口除了可作为通用I/O使用外,还可在CPU访问外部存储器时作高八位地址线使用;D、P3口是一个多功能口除具有准双向I/O功能外,还具有第二功能。控制引脚介绍:1)电源:单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。 2)时钟引脚XTAL1、XTAL2时钟引脚外接晶体与片内反相放大器构成了振荡器,它提供单片机的时钟控制信号。时钟引脚也可外接晶体振荡器。 3)RST:当振荡器运行时,在此引脚外加上两个机器周期的高电平将使单片机复位(RST)。 4)ALE:当访问单片机外部存储器时ALE(地址锁存允许)输出脉冲的负跳沿用于16位地址的底8位的锁存信号。即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率约为时钟振荡器的1/6。但是每当访问外部数据存储器时,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲。因此,严格来说,用户不能用ALE做时钟源或定时。ALE端可以驱动8个TTL负载 5)/PSEN(29脚):此脚的输出是单片机访问外部程序存储器的读选通信号。在由外部程序存储器取指令(或常数)期间,每个机器周期PSEN两次有效。 6)/EA/VPP(31脚):当EA端保持高电平时,单片机访问内部存储器,但在PC值超过0FFFH时,讲自动转向执行外部存储器内的程序。当/EA保持低电平时,则只访问外部程序存储器,不管是否有内部存储器。3.32 DAC0832芯片图3.4 DAC0832芯片图DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。所以这个芯片的应用很广泛,关于DAC0832的引脚功能如下:D0D7:数字信号输入端。ILE:输入寄存器允许,高电平有效。CS:片选信号,低电平有效。WR1:写信号1,低电平有效。XFER:传送控制信号,低电平有效。WR2:写信号2,低电平有效。IOUT1、IOUT2:DAC电流输出端。RfB:是集成在片内的外接运放的反馈电阻。 VREF:基准电压(-1010V)。Vcc:是源电压(+5+15V)。AGND:模拟地 NGND:数字地,可与AGND接在一起使用。4 proteus仿真图5 软件设计5.1 流程图的设计5.1.1方波程序流程图此波形的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了. 开 始给A设置初值MOV DPTR,#07FFFH MOVX DPTR,A设置输出的时间再设置一个初值放入A中MOVX DPTR,A输出一段时间5.1.2正弦波程序流程图5.1.3三角波程序流程图三角波的实现是设置一个初值,然后进行加数,同样是加到某个数之后再进行减数,减到初值之后就再返回到先前的操作。5.1.4锯齿波的程序流程图锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。 设置初值AMOV DPTR,#07FFFHMOVX DPTR,A使A一直加一到0FFH判断A是否已经满了?否重新设置初值A是开 始5.2程序清单IOYO EQU 3800H ;片选8255对应端口的始地址MY8255_A EQU IOYO+00H*2 ;8255的A口地址MY8255_B EQU IOYO+00H*2 ;8255的B口地址MY8255_C EQU IOYO+00H*2 ;8255的C口地址MY8255_MODE EQU IOYO+00H*2 ;8255的控制寄存器地址MY0832 EQU 3819H ;片选DAC0832对应的端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDDATA SEGMENT flag DB 2 DUP(?) ;存放将要转换的波形的的类型,0FH代表直线;0EH代表方波,0DH代表锯齿波;0BH代表三角波;07H代表正弦波 TEMP DB 2 DUP(?) ;存放三角波的走向,0代表上上升,1代表下降 BUF1 DB 00H,00H,0FFH,0FFH ;矩形波的预置数 BUF4 DB 7FH,8CH,98H,0A4H,0B0H,0BCH,0C6H,0D0H DB 0DAH,0E2H,0E9H,0F0H,0F5H,0F9H,0FCH,0FEH DB 0FFH,0FEH,0FCH,0F9H,0F5H,0F0H,0E9H,0E2H DB 0DAH,0D0H,0C6H,0BCH,0B0H,0A4H,98H,8CH DB 7FH,73H,67H,5AH,4FH,43H,39H,2FH DB 25H,1DH,15H,0FH,0AH,05H,02H,01H DB 00H,01H,02H,05H,0AH,0FH,15H,1DH DB 25H,2FH,39H,43H,4FH,5AH,67H,73H DDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DDATASTART: MOV AX,DDATA MOV DS,AX MOV SI,OFFSET flag ;初始化输出的波形类型 MOV CL,00H MOV SI,CL MOV DX,MY8255_MODE ;初始化8255的工作方式 MOV AL,90H ;工作方式0,A口输入 OUT DX,ALDANDS: PUSH AX ;保存各个寄存器的值 PUSH DI PUSH SI CALL DALLY ;延时并扫描 CALL KEYSCAN POP SI ;恢复各个寄存器的值 POP DI POP AXLine: MOV CL,00H ;判断上次输出的波形是不是直线 CMP SI,CL JZ NEXT0 ;如果是则继续,不是则把波形变换成直线 MOV SI,CL MOV DI,00H NEXT0:MOV DX,MY0832 ;输出直线 MOV AL,00H OUT DX,AL JMP DANDS ;返回扫描按键 rectangular: MOV CL,01H ;判断上次输出的波形是不是方波 CMP SI,CL JZ NEXT1 ;如果是则继续,不是则把波形变换成方波 MOV SI,CL MOV DI,0000H NEXT1:MOV DX,MY0832 MOV BX,OFFSET BUF1 ;从内存娶数据并输出 MOV AL,BX+DI OUT DX,AL INC DI CMP DI,03H ;判断是否一个周期已经结束 JNA TIAO1 MOV DI,00H TIAO1:JMP DANDS ;返回扫描按键sawtooth: MOV CL,02H ;判断上次输出的波形是不是锯齿波 CMP SI,CL JZ NEXT2 ;如果是则继续,不是则把波形变换成锯齿波 MOV SI,CL MOV DI,0000H MOV AL,00H NEXT2:MOV DX,MY0832 ;输出波形 OUT DX,AL INC AL INC AL JMP DANDS ;返回扫描按键 triangle: MOV CL,03H ;判断上次输出的波形是不是三角波 CMP SI,CL JZ NEXT3 ;如果是则继续,不是则把波形变换成三角波 MOV SI,CL MOV AL,00H MOV DI,OFFSET TEMP MOV CL,00H ;将三角波初始化为上升 MOV DI,CL NEXT3:MOV DX,MY0832 ;输出波形 OUT DX,AL MOV DI,OFFSET TEMP ;判断三角波是不是出于下降阶段 MOV CL,01H CMP DI,CL JZ DOWN ;如果为下降阶段则跳到DOWN,如果为上升阶段, UP: INC AL INC AL JNZ TIAO3 ;如果上升到最顶端,则转变为下降阶段 MOV DI,OFFSET TEMP MOV CL,01H MOV DI,CL DOWN:DEC AL DEC AL JNZ TIAO3 MOV DI,OFFSET TEMP ;如果下降到最低端,则转为上升阶段 MOV CL,00H MOV DI,CL TIAO3:JMP DANDS ;返回扫描按键 sine:MOV CL,04H ;判断上次输出的波形是不是正弦波 CMP SI,CL JZ NEXT4 ;如果是则继续,不是则把波形变换成正弦波 MOV SI,CL MOV DI,0000H MOV AL,00H NEXT4:MOV DX,MY0832 ;从BUF4取数据并输出 MOV BX,OFFSET BUF4 MOV AL,BX+DI OUT DX,AL INC DI CMP DI,40H ;判断输出的中周期是否结束 JNZ TIAO4 MOV DI,00H TIAO4:JMP DANDS ;返回扫描按键 KEYSCAN PROC ;定义键盘扫描子程序SCAN: MOV DX, MY8255_A ;读A口 IN AL,DX AND AL,0FH MOV AH,AL CMP AH,0FH ;判断是否有按键按下 JNZ P1 ;如果没有按键按下,输出一条直线 JMP line ;下面的程序如果有按键按下,判断哪一个按键按下 P1: CMP AH,0EH ;判断第一个按键有没有按下 JNZ P2 ;如果第一个按键按下,则输出矩形波 JMP rectangularP2: CMP AH,0DH ;判断第二个按键有没有按下 JNZ P3 ;如果第二个按键按下,则输出锯齿波 JMP sawtooth P3: CMP AH,0BH ;判断第三个按键有没有按下 JNZ P4 ;如果第三个按键按下,则输出三角波 JMP triangle CMP AH,0EH ;判断第四个按键有没有按下 JNZ P4 ;如果第四个按键按下,则输出正弦波 JMP sine P4: MOV AH,1 ;判断电脑键盘是否有按键按下 INT 16H JZ SCAN ;无按键按下则跳回继续扫描,有则退出QUIT: MOV AX,4C00H ;结束程序退出 INT 21HKEYSCAN ENDPDALLY PROC NEAR ;软件延时子程序 PUSH CX ;将变量值CX,AX的值压入堆栈 PUSH AX MOV CX,0FFFH ;延时D1: MOV AX,0FFFHD2: DEC AX JNZ D2 LOOP D1 POP AX ;将变量AX,CX的值弹出堆栈 POP CX

温馨提示

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

评论

0/150

提交评论