波形发生器
- 格式:doc
- 大小:450.55 KB
- 文档页数:21
波形发生器1.课程设计的目的为了巩固《微型计算机技术》课程学到的相关知识,通过对本课程所学知识的综合运用,使学生融会贯通课程中所学的理论知识,加深对计算机系统各个部分的工作原理及相互联系的认识,加深对接口的理解,清晰地建立计算机系统的概念,培养学生进行微机应用系统硬件和软件开发的实践工作能力。
2.设计方案论证2.1 方案概述以8086CPU为核心,CPU中央处理器(英文Central Processing Unit,CPU)是一台计算机的运算核心和控制核心。
CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。
其功能主要是解释计算机指令以及处理计算机软件中的数据。
CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。
差不多所有的CPU 的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。
CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。
所谓的计算机的可编程性主要是指对CPU的编程。
CPU包括运算逻辑部件、寄存器部件和控制部件等。
运算逻辑部件,可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。
寄存器部件,包括通用寄存器、专用寄存器和控制寄存器。
控制部件,主要负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。
将8255作为波形转换器接口,通过DAC0832芯片的数模转换,制作一个波形发生器,通过示波器观察所得到的信号波形,实现方波、梯形波、正弦波、三角波、锯齿波这5种波形的转换的功能,通过按键对输出波形进行切换。
要求设计制作出硬件电路。
2.2可编程并行接口芯片8255A2.2.1 8255的内部结构图如图1即所示,作为主机与外设的连接芯片, 8255必须提供与主机相连的3个总线接口,即数据总线接口、地址总线接口、控制总线接口。
同时,为了实现一定的功能,它必须具有与外设连接的接口A、接口B、接口C。
由于8255是可编程芯片,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU 连接部分、与外设连接部分、控制部分。
图1 8255的内部结构图2.2.2 8255引脚及其功能如图2即所示,8255的引脚中除了第26脚+5V电源引脚和第7脚是地线引脚之外其他的引脚分为两组。
沈阳大学图2 8255引脚图与CPU相连的引脚:RESET:芯片复位信号输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式,即高电平有效。
/CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输即低电平有效。
/RD:读信号线,低电平有效,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
/WR:写入信号,低电平有效,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
与外设相连的引脚:PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
'A1、A0:端口译码信号,由CPU地址总线或译码电路产生。
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。
当A1=0,A0=0时,PA口被选择; 当A1=0,A0=1时,PB口被选择; 当A1=1,A0=0时,PC口被选择; 当A1=1.A0=1时,控制寄存器被选择。
其中对控制口只能进行写操作。
2.2.3 8255工作方式8255有3种工作方式,用户可以通过编程来设置。
方式0 简单输入/输出-----查询方式;A,B,C三个端口均可。
方式1 选通输入/输出-----中断方式;A,B,两个端口均可。
方式2 双向输入/输出-----中断方式;只有A端口才有。
方式0:基本输入/输出(A,B,C口均有);相当于三个独立的8位简单接口;各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出;C端口可以是一个8位的简单接口,也可以分为两个独立的4位端口;常用于连接简单外设(适于无条件或查询方式)。
方式1:选通输入/输出(A,B口具有);利用一组选通控制信号控制A端口和B端口的数据输入输出;A口、B口作输入或输出口,C口的部分位用作选通控制信号;A口、B口在作为输入和输出时的选通信号不同。
方式1主要用于中断控制方式下的输入输出;C口的8位除用作选通信号外,其余位可工作于方式0下,作为输入或输出口。
方式2:双向选通输入/输出(A口具有);双向输入输出方式可以既作为输入口,又作为输出口。
只有A端口可工作在方式2下,可使A端口作为双向端口,用于中断控制方式;当A口工作于方式2时,B口可工作于方式1(此时C口的所有位都用作选通控制信号的输入输出),也可工作于方式0(这时候C口的剩余位也可工作于方式0)。
2.3 DAC0832芯片2.3.1 DAC0832芯片的内部结构图如图3即所示,DAC0832芯片是一个8位的数/模转换器,它是T型转换网络,由8位输入锁存器,8位DAC寄存器,8位D/A转换电路及转换控制电路组成。
图3 DAC0832内部结构图2.3.2 DAC0832引脚图及其功能如图4即所示,DAC0832的各个引脚的功能:图4 DAC0832引脚图DI0~DI7:数据输入线,TLL电平。
ILE:数据锁存允许控制信号输入线,高电平有效。
/CS:片选信号输入线,低电平有效。
/WR1:为输入寄存器的写选通信号。
XFER:数据传送控制信号输入线,低电平有效。
/WR2:为DAC寄存器写选通输入线。
Iout1:电流输出线。
当输入全为1时Iout1最大。
Iout2: 电流输出线。
其值与Iout1之和为一常数。
Rfb:反馈信号输入线,芯片内部有反馈电阻。
Vcc:电源输入线 (+5v~+15v)。
Vref:基准电压输入线 (-10v~+10v)。
AGND:模拟地,摸拟信号和基准电源的参考地。
DGND:数字地,两种地线在基准电源处共地比较好。
2.3.3 DAC0832的工作方式根据对DAC0832的输入锁存器和DAC寄存器不同的控制方法,DAC0832有如下3种工作方式:(1)单缓冲方式。
单缓冲方式是控制输入锁存器和DAC寄存器同时接收资料,或者只用输入锁存器而把DAC寄存器接成直通方式。
此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。
(2)双缓冲方式。
双缓冲方式是先使输入锁存器接收资料,再控制输入锁存器的输出资料到DAC寄存器,即分两次锁存输入资料。
此方式适用于多个D/A转换同步输出的情节。
(3)直通方式。
直通方式是资料不经两级锁存器锁存,即 /CS,/XFER ,/WR1 ,/WR2 均接地,ILE接高电平。
此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。
2.4 硬件接线图在设计中,由于要利用开关来控制波的频率和波形,因而需要I/O 接口芯片8255 将开关的状态读入到8255 的B 口,从而写入到寄存器中。
具体的外部接线图如图5即所示:沈阳大学图5 硬件接线图3.设计的过程与分析3.1整体程序流程图整体程序是将开关的信号读入到8255 的B 口的低四位,通过读取开关的状态,与设定的数值进行比较,若两数值相等时则转入到相应的程序段,分别产生三角波、梯形波、正弦波、锯齿波以及方波。
沈阳大学图6 整体程序流程图3.2子程序流程图3.2.1梯形波沈阳大学图7 梯形波流程图3.2.2锯齿波图8 锯齿波流程图3.2.3三角波图9 三角波流程图3.2.4方波图10 方波流程图3.2.5正弦波沈阳大学图11 正弦波流程图3.3程序在具体设备上只有B 口可用,因而在8255 初始化写入的方式选择控制字是82H (10000010B), 此时定义B 口输入,工作在方式0 状态。
程序主要是将开关的信号读入到8255 的B 口的低四位,通过读取开关的状态,与设定的数值进行比较,若两数值相等时则转入到相应的程序段,分别产生三角波、梯形波、正弦波、锯齿波以及方波。
基本的波形选择和波形发生IOY0 EQU 00H ;片选IOY0 对应的端口始地址CT8255 EQU 63H ;8255 的控制寄存器地址B8255 EQU 61H ;8255 的b 口地址DA0832 EQU IOY0+00H*4 ;DA0832 的端口地址DA TA SEGMENTTAB DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8HDB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9HDB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5HDB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDHDB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6HDB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAHDB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H沈阳大学DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99HDB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80HDB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69HDB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51HDB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AHDB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27HDB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16HDB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AHDB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7HDB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99HDB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7HDB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99HDB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80HDB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69HDB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51HDB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AHDB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27HDB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16HDB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AHDB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02HDB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02HDB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09HDB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15HDB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25HDB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38HDB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EHDB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66HDB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80HDA TA ENDSSSTACK SEGMENT PARA STACK 'STACK'DB 256 DUP(?)CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:SSTACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AL,82H ;初始化8255,B 口输入,工作在方式0OUT CT8255,AL沈阳大学BG: IN AL,B8255CMP AL,01H ;显示锯齿波JZ JCBBCMP AL,02H ;显示三角波JZ SJBBCMP AL,03H ;显示方波JZ FBBCMP AL,04H ;显示正弦波JZ ZXBBCMP AL,05H ;显示梯形波JZ TXBBCMP AL,0FHJZ QITJMP BGJCBB: JMP JC0 ;转至锯齿波子程序SJBB: JMP SJ0 ;转至三角波子程序FBB: JMP F0 ;转至方波子程序ZXBB: JMP ZX0 ;转至正弦波子程序TXBB: JMP TX0 ;转至梯形波子程序QIT: JMP EXIT ;转至调用DOS 子程序,推出程序JC0 PROC FARSCB: MOV AL,0FFH ;锯齿波AGAIN1: INC ALMOV DX,DA0832OUT DX,ALCALL DELAYPUSH AXMOV DX,B8255IN AL,DX ;再次读入开关信号,进行比较CMP AL,01HJNZ BGPOP AXJMPAGAIN1 RETJC0 ENDPSJ0 PROC FARSJB: MOV AL,00H ;三角波UP: MOV DX,DA0832 ;启动D/A 转换上升OUT DX,ALCALL DELAYINC AL沈阳大学CMP AL,7FHJNZ UPMOV DX,B8255 ; 再次读入开关信号,进行比较IN AL,DXCMP AL,02HJNZ BGDEC ALDOWN: MOV DX,DA0832 ;启动D/A 转换下降OUT DX,ALCALL DELAYDEC ALCMP AL,00HDEC ALDOWN: MOV DX,DA0832 ;启动D/A 转换下降OUT DX,ALCALL DELAYDEC ALCMP AL,00HJNZ DOWNMOV DX,B8255 ;再次读入开关信号,进行比较IN AL,DXCMP AL,02HJNZ BGJMP SJBSJ0 ENDPF0 PROC FARFB: MOV AL,00H ;方波FB1: MOV DX,DA0832 ;写00H,输出低电平OUT DX,ALPUSH CXMOV CX,00FFH ;低电平延迟L: CALL DELAYLOOP LPOP CXPUSH CXMOV CX,00FFHMOV AL,0FFHMOV DX,DA0832OUT DX,ALL1: CALL DELAY ;高电平延迟LOOP L1POP CX沈阳大学课程设计说明书 NO.16MOV DX,B8255 ;再次读入开关信号,进行比较IN AL,DXCMP AL,03HJNZ BG1JMP FBBG1: JMP BGF0 ENDPZX0 PROC FAR ;正弦波ZXB: LEA BX,TABMOV CX,0001HZX2: MOV AL,[BX] ;将TAB 中的数字一次赋给AL,再输出正弦波INC BXINC CXMOV DX,DA0832OUT DX,ALCALL DELAYPUSH AXMOV DX,B8255 ;再次读入开关信号,进行比较IN AL,DXCMP AL,04HJNZ BG2POP AXCMP CX,256JNE ZX2JMP ZXBBG2: JMP BGZX0 ENDPTX0 PROC FAR ;梯形波LOOP1: MOV CX,0100HMOV AL,00HLL0: MOV DX,DA0832 ;低电平段OUT DX,ALCALL DELAYDEC CXJNZ LL0LL1: INC AL ;上升段MOV DX,DA0832沈阳大学OUT DX,ALCALL DELAYCMP AL,7FHJNE LL1MOV CX,0100HLL2: OUT 00H,AL ;高电平CALL DELAYDEC CXJNZ LL2LL3: DEC AL ;下降段MOV DX,DA0832OUT DX,ALCALL DELAYCMP AL,00HJNZ LL3MOV DX,B8255 ;再次读入开关信号,进行比较IN AL,DXCMP AL,05HJNZ BG3JMP LOOP1BG3: JMP BGTX0 ENDPEXIT: MOV AH,4CH ;调用DOS,推出INT 21HDELAY PROC NEAR ;延迟程序PUSH CXMOV CX,0090HDEL1: PUSH AXPOP AXLOOP DEL1POP CXRETDELAY ENDPCODE ENDSENDSTART4.设计体会通过这次为期一周的课程设计,让我深深体会到了“实践出真知”的道理。