Chinaunix首页 | 论坛 | 博客
  • 博客访问: 380946
  • 博文数量: 71
  • 博客积分: 3226
  • 博客等级: 中校
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 14:55
文章分类

全部博文(71)

文章存档

2012年(8)

2011年(12)

2010年(11)

2008年(29)

2007年(11)

分类:

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汇编语言程序设计  沈美明等  清华大学出版社

阅读(3652) | 评论(3) | 转发(1) |
0

上一篇:2008元旦祝福

下一篇:银行家算法及流程图

给主人留下些什么吧!~~

chinaunix网友2008-01-07 20:23:05

我想和你做个朋友,我是合肥的。 QQ348570769

dragonfly04272008-01-06 14:30:58

^_^ 流程图, 你们看不到, 硬件线路图看不到, 我不地道他们怎么上床, 他们我使用WPS的线条做的。 o(∩_∩)o...哈哈, 自己慢慢去研究吧。