微机原理课程设计抢答器

微机原理课程设计抢答器
微机原理课程设计抢答器

西安邮电大学

硬件课程设计报告题目:抢答器

院系名称:计算机学院

专业名称:

班级:

学生姓名:

学号(8位):

指导教师:

设计起止时间

一. 设计目的

用逻辑开关模拟竞赛抢答器按钮(共8个开关:K0 ~ K7)当某个逻辑开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号(0~7)显示出来,若为0表示无人抢答。从键盘上按空格键开始下一轮抢答,按 键退出程序。

二. 设计内容

1.选用元器件:

(1)、并行接口8255:通过编程来指定它要完成的功能,是并行数字设备与微机间的接口。8255用于输入抢答信息,并输出正确的序号给数码管,以及控制LED灯的亮灭。本设计中8255A的地址范围设置为1400H—1403H,其中控制口地址为1403H。而且使用了8255A的A口,B口和C口。它们均工作在方式0下,其中A口和C口为输出,B口为输入。

(2)、数码管:指示先抢答的组号。

(3)、二极管:指示抢答。

(4)、开关:作为抢答者的按钮。

2.基础实验一:8255基本输入输出

能够在自行设计的接口开发板上,实现拨动开关控制LED的亮灭。(软件代码命名为:,代码要求用小写字母,且必须经过优化,源代码小于<95行,每条指令算1行,伪指令也算1行)

3.基础实验二:流水灯设计实现

能够在自行设计的接口开发板上,实现拨动不同开关控制LED灯的变化。例如,K1从左往右,K2从右往左,K3从中间向两边,K4从两边向中间依次亮灭变化,按主机键盘任意键退出。(软件代码命名为:,代码要求用小写字母,且必须经过优化,源代码小于<85行,每条指令算1行,伪指令也算1行)

4.基础实验三:数码管应用

能够在自行设计的接口开发板上,上电数码管显示0到7,实现拨动不同开关,数码管显示该开关位置值(1-8);若同时拨动两个以上开关,则数码管显示“E”。(软件代码命名为:,代码要求用小写字母,且必须经过优化,源代码小于<100行,每条指令算1行,伪指令也算1行)

5.抢答器:

用逻辑开关模拟竞赛抢答器按钮(共8个开关:K0 ~ K7)当某个逻辑开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号(0~7)显示出来,若为0表示无人抢答。从键盘上按空格键开始下一轮抢答,按 键退出程序。三.概要设计

1.功能模块图;

2.所用芯片8255引脚图

3.抢答器电路图

四.详细设计

1. 实验步骤

(1)、在实验箱上连接8255的WR、CS、RD、D0-D7、A1A0以及8255输入输出端口A,B,C口连接到led灯、8段数码管、开关上。硬件电路搭建完毕。

(2)、在TD—PIT上篇写汇编程序,进行测试。

(3)、在Proteus 上按照需求连接电路,为验证电路正确性,为其加入输入,进行模拟。模拟结果正确后,将电路图保存。

(4)、制作硬件电路

2、遇到的问题:

(1)、在8255的使用过程中,由于对控制字的使用错误,导致不能从A、B口输出信息,最后通过检查,改变控制字,实现了功能。

(2)、汇编语言的运用。由于平时较少使用汇编语言,用汇编语言编写程序方面存在不小的障碍,通过知识回顾复习,对汇编进一步的了解后,熟练运用。

(3)、汇编语言要求短小精悍,由于程序过长,在使用jnz指令时,出现错误:Relative jump out of range byte XXXXh bytes。通过二度跳转,解决了这个问题。

五.调试情况,设计技巧及体会

通过对抢答器这一课题的设计和实现,使我更好的将理论与实践相结合,我更加深入地理解了微机原理课程上讲到的并行芯片8255的功能,以及引脚的作用,同时加深了对于该芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程。更重要的是通过这个实验,进一步掌握了程序设计的合理结构。但要达到这样的程度其首要条件还是要学好课本上的基础知识,理解每一条指令的意义。让我感到很欣慰的是,与搭档的合作下高效地、顺利地完成本次实验。

六.参考文献

《微机接口技术及其应用》---李育贤

《微型计算机原理》---王忠民

七.附录:源代码(电子版)

一、8255基本输入输出

data segment

data ends

code segment

assume cs:code, ds:data

start:

mov dx,1403h

mov al,b

out dx,al

read:

mov dx,1400h

in al,dx

mov dx,1401h

out dx,al

mov ah,1

int 16h

jz read

mov ah,4ch

int 21h

code ends

end start

二、流水灯设计实现

data segment

my8255_a equ 1400h ;8255的A口地址

my8255_b equ 1401h ;8255的B口地址

my8255_c equ 1402h ;8255的C口地址

my8255_mode equ 1403h ;8255的控制寄存器地址mode_a db b ;控制字

left db 0feh

data ends

code segment

assume cs:code,ds:data

start:

MOV DX, 1406H ;写控制口

MOV AL, 90H

OUT DX, AL

READ:

MOV DX, 1400H ;写A端口

IN AL, DX

MOV DX, 1402H ;写B端口

AND AL, 01H

JZ key1

AND AL, 02H

JZ key2

AND AL, 04H

JZ key3

AND AL, 08H

JZ key4

JMP READ

相关主题
相关文档
最新文档