分类:
2008-01-06 14:27:17
汇编及接口技术课程设计
题目:竞赛抢答器的设计与实现
班 级:
学 号:
姓 名:
时 间:
目录
1. 目录----------------------------1
2. 正文内容------------------------2
(一) 设计任务与要求---------------------------3
(二) 设计方案---------------------------------3
(三) 硬件线路设计-----------------------------3
(四) 软件设计------------------------------5
(五) 源程序-----------------------------------5
(六) 调试过程---------------------------------7
(七) 总结-------------------------------------8
3. 参考资料------------------------8
2.正文内容:
(一)设计任务与要求:
一、设计任务
1. 了解微机控制的竞赛抢答器的基本原理。
2. 进一步熟练8255的使用。
二、设计要求
设计一个7路的智力竞赛抢答器。能够满足以下几点要求:
1、在主持人侧,设置抢答指示电路和启动/复位开关。选手侧各设置1个抢答按钮。
2、使用开关K8代表启动/复位开关,K8向上拨时,表示启动一次抢答,绿色发光二极管亮作允许抢答指示。此时选手侧可以按动各自的抢答按钮。
3、使用实验仪的逻辑电平开关K1-K7来代表7个抢答按钮。当开关向上拨时表示按下按钮。
4、收到第1个抢答信号后,主持人侧红色发光二极管亮(绿色发光二极管灭)作抢答指示,并且在单个LED数码管显示抢先一组的组别。
5、主持人向下拨K8,代表复位操作,指示灯和数码管熄灭。
6、主持人可以再次向上拨动K8,启动下一次抢答。
7、通过8255完成设计。
(二)设计方案设计方案
1、设计思路:首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED数码管全灭;否则启动下一次抢答,使绿色发光二极管亮,当8255的输入口A有不为0的数据时,则使红色发光二极管点亮、并判断先拨动开关的组号,在LED上显示出其组号。
2、使用到的芯片:8255、键盘显示部件、LED显示、开关
3、各个芯片的作用:
a、8255A口通过接收开关数据;B口控制红绿灯;C口显示开关的那个键被选中。
b、键盘与LED灯连接,
c、LED显示开关选中状态
d、开关是选择
(三)、硬件线路设计
1、硬件电路设计:
1)8255的端口C(PC0-PC7)通过驱动连接到LED的a~h各段。
2)8255的端口A(PA0-PA7)和开关K1-K8相连。
3)8255的端口B(如PB2、PB1)分别和发光二极管L2(绿)、L1(红)连接。
4)8255模块的WR、RD分别连到ISA总线的接口IOWR、IORD。
5)8255的模块选通线CE连到ISA总线接口模块的IOY0。
6)运行程序,观察数码管的变化。
2、原理及连线图如下:
首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED数码管全灭;否则启动下一次抢答,使绿色发光二极管亮,当8255的输入口A有不为0的数据时,则使红色发光二极管点亮、并判断先拨动开关的组号,在LED上显示出其组号。
(四)软件设计程序的流程图如下:
N
Y
Y
N
(五)源程序(要有注释)
DATA SEGMENT
P8255A DW 0C400H
P8255B DW 0C401H
P8255C DW 0C402H
P8255MODE DW 0C403H
LED DB 0F9H,0A4H,0B0H,099H,092H,82H,0F8H ;0~7对应段码
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,P8255MODE
MOV AL,90H ;初始化8255控制字A入,B、C出
OUT DX,AL
START1: MOV DX,P8255A
IN AL,DX
AND AL,80H ;开关是复位还是启动
JNZ START2 ;不等于零或非零转移
MOV DX,P8255B
MOV AL,03H ;让红绿灯灭
OUT DX,AL
MOV DX,P8255C
MOV AL,0FFH ;LED全灭
OUT DX,AL
MOV SI,0 ;新的一次抢答开始,不屏蔽抢答者
JZ START1 ; 继续检测主持人开关 START2: MOV DX,P8255B
MOV AL,02H ;让绿灯亮表示可以开始抢答
OUT DX,AL
START3: MOV DX,P8255A
IN AL,DX
TEST AL,7FH ;判断是否有人抢答
JN START3 ;若无人抢答跳转继续检测
START4: MOV BX,0040H
MOV CX,7
TEST AL,BL ;判断K7是否抢答
JNZ START5 ;若抢答跳转
SHR BL,1 ;逻辑右移依次检测首次抢答者
LOOP START4
JZ START4 ;若第一次没检测到抢答者返回继续检测
START5: MOV DX,P8255B ;让B口的红灯亮,表示有人抢答
MOV AL,0DH
OUT DX,AL
CMP SI,1 ;屏蔽以后抢答者
JGE START6
DEC CX ;记录第一个抢答者的组别
MOV BX,CX
MOV DX,P8255C ;将第一个抢答者的组别送C口LED显示
MOV AL,LED[BX]
OUT DX,AL
MOV SI,0 ;屏蔽后来的抢答者
INC SI
START6: JMP START1
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
(六)调试过程
1、根据(三)硬件线路设计将硬件的线路连好。具体如下:
1)8255的端口C(PC0-PC7)通过驱动连接到LED的a~h各段。
2)8255的端口A(PA0-PA7)和开关K1-K8相连。
3)8255的端口B(如PB2、PB1)分别和发光二极管L2(绿)、L1(红)连接。
4)8255模块的WR、RD分别连到ISA总线的接口IOWR、IORD。
5)8255的模块选通线CE连到ISA总线接口模块的IOY0。
2、根据软件设计的程序流程图编好原程序。
3、将程序在PC机上编译通过,并将PC机与硬件连好,进行连接和运行调试。
4、调试过程中的问题。
出现问题:在调试过程中当接受到第一个抢答者后,LED数码管上显示正确的,你在按下比他小的数据时LED显示正确,比它大时就显示比他大的那个数,没有屏蔽。
解决方法:经过分析后,原因是在K8是启动状态下,一直在循环检测A口,所以就出现了以上问题。经过分析,将程序在送抢答者的组别到C 口的LED是设计一个标志,只要第一个抢答者的组别送到C口,标志就改变,下次在有抢答者的组别送来就直接跳过。不送C口显示。
(七)总结
通过本次试验,对于汇编语言、8255芯片等有了更深刻的认识和学习。进一步学习了程序的设计、流程图,会使用简单的计算机芯片做简单的设计,通过自己独立设计程序和同学之间的讨论和学习,更一步加深对微型计算机原理及接口技术知识的认识、理解、学习。
在程序的书写、错误的调试、问题的解决等问题,基本解决了在接口方面的动手能力的不足。通过本次试验是自己加深了对8255的认识,学习课本知识同时增强动手设计编写程序的能力,锻炼自我。
3.参考资料:
1.微型计算机原理及接口技术 裘雪红等 西安电子科技大学出版社
2.微机原理及接口技术实验指导书 茹媛等
3.IBM-PC汇编语言程序设计 沈美明等 清华大学出版社
dragonfly04272008-01-06 14:30:58
^_^ 流程图, 你们看不到, 硬件线路图看不到, 我不地道他们怎么上床, 他们我使用WPS的线条做的。 o(∩_∩)o...哈哈, 自己慢慢去研究吧。