一、课程设计目的和任务
设计目的:1、建立微机系统概念加深对微机系统的理解和认识,提高微机系统的应用能力。2、进一步学习和掌握微机程序设计方法,通过应用程序的应用和调试学习程序的调试。3、进一步熟悉微机典型接口芯片的使用,接口及外部设备系统的连接方法。
设计任务:利用D/A设计一个波形发生器,能分别产生三角波、正弦波、锯齿波和方波等其中的三种以上的波形;并利用按键(自行定义)进行输出波形选择,并对应按键选择输出波形,将以上四种波形显示在屏幕上,将当前输出波形代号显示在LED上(左边位):0为锯齿波、1正弦波、2三角波、3方波;设计电路并在实验箱上连接线路同时编程实现其功能。
二、分析与设计
1.设计任务分析:信号发生器是我们在学习,科学研究等方面不可缺少的工具。此外,信号发生器在教学、试验、测控等各个领域有十分广泛的应用,其输出信号的频率范围覆盖了各个频段,从甚低频到甚高频,操作方式也从手动旋钮到程控,产生的波形从传统的正(余)弦波和脉冲波形,发展到现在能产生各种任意波形。以前的信号发生器往往独占一个机箱,而现在的一些应用中,它只是一块插在计算机中的扩展卡,还有一些信号发生器设计成一个的小模块,通过RS-232C或RS-422,RS-485等串行总线和计算机连接。我们知道当我们使用计算机来构成数据采集或者过程控制等系统时,所要采集的外部信号或被控制对象的参数,往往是温度、压力、流量、声音和位移等连续变化的模拟量。但是,计算机只能处理不连续的数字量,即离散的有限值。因此,必须用A/D转换器将模拟信号转换成数字量后才能送入计算机进行处理。
而计算机处理后的结果也必须通过D/A转换器来转换成模拟量后,在示波器上显示结果波形和在记录仪上描述下来,或者是驱动执行部件,才能达到控制目的。可见模数转换和数模转换在构成一个控制系统中起着非常重要的作用。 2。 设计方案论证:D/A转换器产生各种波形的原理:利用D/A转换器输出的模拟量与输入数字量成正比关系这一特点,将D/A转换器作为微机输出接口,CPU通过程序向D/A转换器输出随时间呈现不同变化规律的数字量,则D/A转换器就可输出各种各样的模拟量,如方波、三角波、锯齿波、正弦波等。 8255A实现波形切换的原理:从8255A的B口读入外接开关的信号,CPU读入不同信号值,从而执行不同的代码,向D/A转换器传送不同的数据,控制D/A转换器输出锯齿波、三角波、方波、正弦波。
3.硬件设计:课程设计应用到试验箱,以8088为核心,涉及到芯片有8055A和D/A0832。
(D/A转换器) D/A0832是8位并行输出电流型D/A转换器,其主要参数:转换时间1us,满量程误差土1LSB,参考电压—10V~+10V,供电电压+5V~+15V,输入逻辑电平与TTL兼容。引脚图如下图:
1
(可编程并行接口)8255可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。C口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A/B配合使用,可以用作控制信号输出或作为状态信号输入。8255可编程并行接口芯片工作方式说明: 方式0:基本输入/输出方式。适用于三个端口中的任何一个。每一个端口都可以用作输入或输出。输出可被锁存,输入不能锁存。 方式1:选通输入/输出方式。这时A口或B口的8位外设线用作输入或输出,C口的4条线中三条用作数据传输的联络信号和中断请求信号。方式2:双向总线方式。只有A口具备双向总线方式,8位外设线用作输入或输出,此时C口的5条线用作通讯联络信号和中断请求信号。
2
4.程序流程图和源代码清单:
开始 读入B口的数据 Y AL=1 产生锯齿波 Y AL=1 N AL=2 产生三角波 AL=2 AL=3 产生方波 AL=3 AL=4 产生正弦波 AL=4 AL=5 产生梯形波 AL=5
源代码:
STACK SEGMENT STACK DW DUP(?)
3
STACK ENDS DATA SEGMENT
TAB DB 80H,83H,86H,H,8DH,90H,93H,96H DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H DB 96H, 93H, 90H, 8DH, H, 86H, 83H, 80H DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H DB 256 DUP(?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA
CT8255 EQU 0FFDBH ;8255 的控制寄存器地址 B8255 EQU 0FFD9H ;8255 的B口地址 DA0832 EQU 0FFE0H START: MOV AX,DATA MOV DS,AX
4
MOV AL,82H ;初始化8255,B 口输入,工作在方式0 MOV DX,CT8255 OUT DX,AL BG: MOV DX,B8255 IN AL,DX AND AL,07H CMP AL,01H ;显示锯齿波 JZ JCBB CMP AL,02H ;显示三角波 JZ SJBB CMP AL,03H ;显示方波 JZ FBB CMP AL,04H ;显示正弦波 JZ ZXBB CMP AL,05H ;显示梯形波 JZ TXB JMP BG TXB:JMP TXBB JCBB:PUSH AL MOV AL,06H OUT 60H,AL POP AL MOV AL,00H ;锯齿波 AGAIN1: INC AL MOV DX,DA0832 OUT DX,AL CALL DELAY PUSH AX MOV DX,B8255 IN AL,DX ;再次读入开关信号,进行比较 CMP AL,01H JNZ BG POP AX JMP AGAIN1 SJBB: PUSH AL MOV AL,5BH OUT 60H,AL POP AL MOV AL,00H ;三角波
UP: MOV DX,DA0832 ;启动D/A 转换上升 OUT DX,AL CALL DELAY INC AL CMP AL,0FFH
5
JNZ UP
DEC AL
DOWN: MOV DX,DA0832 ;启动D/A 转换下降 OUT DX,AL CALL DELAY DEC AL CMP AL,00H JNZ DOWN MOV DX,B8255 ;再次读入开关信号,进行比较 IN AL,DX CMP AL,02H JNZ BG JMP SJBB FBB: PUSH AL MOV AL,4FH OUT 60H,AL POP AL MOV AL,00H ;方波
FB1: MOV DX,DA0832 ;写00H,输出低电平 OUT DX,AL PUSH CX MOV CX,00FFH ;低电平延迟 L: CALL DELAY LOOP L POP CX PUSH CX MOV CX,00FFH MOV AL,0FFH MOV DX,DA0832 OUT DX,AL
L1: CALL DELAY ;高电平延迟 LOOP L1 POP CX MOV DX,B8255 ;再次读入开关信号,进行比较 IN AL,DX CMP AL,03H JNZ BG1 JMP FBB BG1: JMP BG ZXBB: PUSH AL MOV AL,66H OUT 60H,AL POP AL
6
LEA BX,TAB MOV CX,0001H
ZX2: MOV AL,[BX] ;将TAB 中的数字一次赋给AL,再输出正弦波 INC BX INC CX MOV DX,DA0832 OUT DX,AL CALL DELAY1 PUSH AX
MOV DX,B8255 ;再次读入开关信号,进行比较 IN AL,DX CMP AL,04H JNZ BG2 POP AX CMP CX,256 JNE ZX2 JMP ZXBB BG2: JMP BG TXBB: PUSH AL MOV AL,6DH OUT 60H,AL POP AL MOV CX,0100H ;梯形波 MOV AL,00H
LL0: MOV DX,DA0832 ;低电平段 OUT DX,AL CALL DELAY1 DEC CX JNZ LL0
LL1: INC AL ;上升段 MOV DX,DA0832 OUT DX,AL CALL DELAY1 CMP AL,0FFH
JNE LL1
MOV CX,0100H LL2: MOV DX,DA0832
OUT DX,AL ;高电平段 CALL DELAY1 DEC CX JNZ LL2
LL3: DEC AL ;下降段 MOV DX,DA0832 OUT DX,AL
7
CALL DELAY1 CMP AL,00H JNZ LL3
MOV DX,B8255 ;再次读入开关信号,进行比较 IN AL,DX CMP AL,05H JNZ BG3 JMP TXBB BG3: JMP BG
DELAY: CMP AL,0D0H
JNB W_END CMP AL,7AH JB W_END MOV CX,180 LOOP $ W_END: RET DELAY1:PUSH CX MOV CX,0090H DEL1: PUSH AX POP AX LOOP DEL1 POP CX RET CODE ENDS END START 三、系统实施
一、实验箱上连线 1.CPU与8255A的连接实验箱已经连接好,8255A的A口、B口、C口、控制口的地址为60H、61H、62H、63H。2.CPU与DAC0832的连接XD0~XD7对连。把D/A区0832片选CS信号线接至8088总线IOY0。将D/A区WR插孔连到总线IOWR插孔。3.8255A的B口的PB0、PB1、PB2口分别与开关K1、K2、K3相连。4、8255A的A口PA0、PA1、PA2连接LED数码管。连接图如下:
IOYO CS
IOWR WR
8088
XD0 D0
. . . ….
. . . ….
XD7
8 D7
PA0 PA1 PA2 8055A PB0 PB1 PB2 LED K1 K2 K3
二、调试修正程序
1.调试程序,改正程序语法错误
2.观察波形,修正程序,使波形更完美。 三、产生的波形
程序运行后,波形会闪现比较快,多添加几个延时程序解决。 四、总结与体会
在设计过程中,首先要查找资料,然后熟悉实验箱,进行对象的分析,按照要求确定方案。然后要进行硬件连线和软件编程,调试运行。通过设计实验,使我掌握了微型机控制系统I/O接口的扩展方法,模拟量输入/输出通道的设计,常用控制程序的设计方法,数据处理以及数字控制器的设计方法。本设计从几个基础的部分着手总结综合运用各种资料最后完成一个函数信号发生器系统。本次课程设计经历了很多次的失败,反复查找资料,反复改正错误,反复调试运行。由于本次课程设计时间太短,所以最终结果并不是完全符合实验要求,不是最理想的:原本设想加入8259和8253,利用中断和定时系统,以便于波形的切换流畅和频率调整,更好的显示波形图。
通过这次课程设计使我懂得了理论与实际相结合的重要性,只有把所学的理 论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己 的实际动手能力和思考的能力。而且在做课程设计的过程中,不仅是考验自 己所学的《微型计算机系统原理及应用》知识,更是要锻炼自己的分析问题和解决问题的能力。计算机是门大学科,我们要及早确定喜欢的方面是偏软还是偏硬件,刻苦钻研,争取有所成就。
五、参考书目
(按“作者,书名,出版社,出版时间”格式逐一列出) [1]潘名莲.微计算机原理.北京:电子工业出版社,2004.7
9
[2]李志民.计算机原理与汇编语言程序设计.长沙:中南大学出版社,2001.8 [3]周明德.微型计算机系统原理及应用北京:清华大学出版社,2007.1
[4]宫云战.微型计算机原理与应用基础教程.北京:机械工业出版社,1999.5 [5]李恩林.微机接口技术300例.浙江.机械工业出版社.2003.5
[6]周荷琴.微型计算机原理与接口技术.合肥.中国科学技术大学出版社.2008.1 [7]Stephen E.Derenzo.微机接口技术实验教程.北京.机械工业出版社.2006.1 [8]荀殿栋.微处理器应用技术与实例.北京:电子工业出版社,1997.11
10
课程设计成绩评定表
学生姓名 设计题目 专业班级 函数发生器设计 指导教师评语及意见: 指导教师评阅成绩: 指导教师签字: 年 月 日 11
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务