八路抢答器汇编程序 微机课程设计.docx

上传人:b****8 文档编号:9122939 上传时间:2023-02-03 格式:DOCX 页数:27 大小:224.40KB
下载 相关 举报
八路抢答器汇编程序 微机课程设计.docx_第1页
第1页 / 共27页
八路抢答器汇编程序 微机课程设计.docx_第2页
第2页 / 共27页
八路抢答器汇编程序 微机课程设计.docx_第3页
第3页 / 共27页
八路抢答器汇编程序 微机课程设计.docx_第4页
第4页 / 共27页
八路抢答器汇编程序 微机课程设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

八路抢答器汇编程序 微机课程设计.docx

《八路抢答器汇编程序 微机课程设计.docx》由会员分享,可在线阅读,更多相关《八路抢答器汇编程序 微机课程设计.docx(27页珍藏版)》请在冰豆网上搜索。

八路抢答器汇编程序 微机课程设计.docx

八路抢答器汇编程序微机课程设计

 

课程设计报告

 

课程微机原理课程设计

题目竞赛抢答器

系别物理与电子工程学院

年级09级专业电子信息工程

班级1班学号160409105,6,7,8

学生姓名

指导教师职称

设计时间

目录

第一章关于抢答器的概述及设计要求2

1.1数字抢答器的简介2

1.2课程设计要求2

1.3实现功能3

第二章总体设计4

2.1功能需求分析4

2.2可行性分析4

2.3硬件总体设计4

2.3.1硬件器材4

2.3.2内存单元地址4

2.4软件流程图5

第三章硬件设计6

3.1所选芯片介绍6

3.1.1可编程并行接口接口芯片8255A6

3.1.2可编程定时器/计数器82537

3.2系统所选用各芯片的连接8

3.2.1各芯片与CPU的连接8

3.2.2各芯片之间的连接和与外设的连接8

第四章软件设计9

4.1程序流程9

4.2子程序清单9

4..2.1芯片8255初始化:

9

4..2.2芯片8253初始化:

9

4..2.3获取选手号码子程序:

9

4.2.4数码管显示子程序:

10

4.2.5扬声器鸣叫时间:

11

第五章结果分析12

结束语13

附录14

参考文献14

主程序清单14

第一章关于抢答器的概述及设计要求

1.1数字抢答器的简介

抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答

者的机器。

通过抢答者的指示灯显示、数码显示和警示显示等手段指示出第一抢答者。

随着科学技术的不断发展,促使人们学科学,学技术,学知识的手段多种多样,抢答器作为一种强大工具,已经广泛应用于各种知识能力竞赛场合,例如选拔人才、评选优胜及各种智力竞赛等。

目前知识竞赛之类的活动愈加频繁,凡是有知识竞赛类的活动那么也就必然离不开抢答器。

针对主持人提出的问题,各组一般要进行必答和抢答,对于抢答,要判定哪组先按键,为了公正,这就要有一种逻辑电路抢答器作为裁判员。

这种数字抢答器杜绝了人为因素的影响,实现了抢答公平公正的原则。

所以操作简单、经济实用的小型数字抢答器将流行于各类竞赛中,成为小规模知识竞赛的首选。

 

1.2课程设计要求

内容:

用微机原理实验箱,在外接8个按键的抢按下,让7段LED数码管显示抢答者编号,并使喇叭响一下。

具体要求:

(1)通过实验箱上8255芯片接收来自实验箱按键的信息,将该信息送入8088CPU,由CPU判断是哪个按键按下;

(2)8088CPU将判断出的按键信息转换为7段显示码,并通过8255芯片发送到7段显示模块显示;

(3)在显示按键信息的同时通过实验箱上8253芯片产生一定频率的方波信号发送到音频功放模块,发出声音;

(4)提高要求:

能对几乎同时发生的按键进行判别,找到先按的键。

 

1.3实现功能

当没有选手按下按键时,LED数码管显示“-”符号,表示此时可以进行抢答,当抢答开始,选手按下8路抢答器中的任何一路开关时,8段LED数码管上显示最先按开关的选手的号码,同时蜂鸣器鸣叫一段时间以示已经有人抢答成功。

当一位选手抢答成功时,数码管上显示这位选手的号码,此时其他选手再按下按键不会产生任何作用,系统进入锁死状态,当抢答成功的选手退下按键时,LED数码管显示“-”符号,表示系统已经初始化,可以进行下一轮抢答。

第二章总体设计

2.1功能需求分析

系统必须准确判断抢答者的信息,根据按键信息判断被按下的按键的序号,在LED数码管上显示相应的数字反映抢答信息,同时蜂鸣器响一声以示有选手抢答成功。

2.2可行性分析

将8个抢答器按键连接到8255芯片的PA0~PA7,当8组均未按下抢答按钮时,送入到并行接口的8位抢答状态都是0,当检测到按键发生变化时,即微机采样到这8位数据不为0时,微机通过该并行输入口循环对8路抢答信号进行采样。

当采样到哪一组的抢答信号已经发出,则记录下该组的组号,从PB口输出组号所对应的LED数码管段码,同时PC7端口连接至定时器的门控信号端口,使定时器工作,输出端连接到蜂鸣器,蜂鸣器鸣叫一段时间后关闭,若系统检测到按键信息全为0时,表明选手已经把按键退下,则系统重新开始检测按键状态,进入下一个抢答环节。

2.3硬件总体设计

2.3.1硬件器材

所需器件:

可编程并行接口芯片8255、可编程定时器/计数器8253,扬声器,一个LED显示器,8个按键。

2.3.2内存单元地址

①可编程并行接口接口芯片8255A的端口地址为0ff28H、0ff29H、0ff2AH、0ff2BH。

②可编程定时器/计数器8253的端口地址为0040H、0041H、0042H、0043H。

 

2.4软件流程图

显示“-”符号

从8255A口读取按键状态

Y

Y

无按键按下

Y

N

LED显示1

按键1按下

LED显示3

LED显示4

LED显示5

LED显示6

LED显示7

LED显示2

Y

N

按键2按下

N

按键3按下

Y

Y

N

按键4按下

N

Y

按键5按下

Y

N

按键6按下

N

按键7按下

N

LED显示8

Y

按键8按下

蜂鸣器响一声

检测PA口是否全为0

N

按键全为0

Y

图1系统软件流程图

第三章硬件设计

3.1所选芯片介绍

3.1.1可编程并行接口接口芯片8255A

①8255A内部结构

8255A芯片是一个采用NMOS工艺制造的40引脚双列直插式(DIP)封装组件。

8255A有3个8位数据端口,即A口、B口及C口,它们都可以分别作为输入口或输出口使用;A组控制与B组控制;读/写控制逻辑;数据总路线缓冲器。

②8255A主要的外部引脚

图28255A引脚图

PA7~PA0:

A口的8条I/O线。

8条线只能同时作为输入或输出,不能分开使用,可设置成双向口,也只有A口允许这样做。

PB7~PB0:

B口的8条I/O线。

不可以设置成双向口,其它和A口一样。

PC7~PC0:

C口的8条I/O线。

不可以设置成双向口,但它可以分拆为两组即高4位和低4位,这两组可以任意设置为输入或输出。

除了作为独立的I/O线外,C口还经常为A口、B口服务,配合A口、B口作联络线使用。

A1、A0:

端口地址选择信号。

用于选择8255A的3个数据端口和一个控制口。

当A1A0=00时,选择端口A;为01时,选择端口B;为10,选择端口C;为11时,选择控制口。

③8255A工作方式

方式0:

基本的输入/输出方式。

A口、B口、C口都可以工作在些方式下。

④8255A方式控制字格式

表18255方式控制字

D7

D6、D5

D4

D3

D2

D1

D0

1

A口

A口

C口高4位

B口

B口

C口低4位

00方式0

01方式1

1x方式2

0输出

1输入

0输出

1输入

0方式0

1方式1

0输出

1输入

0输出

1输入

3.1.2可编程定时器/计数器8253

①8253的内部结构

8253采用NMOS工艺制成,有24个引脚,所有输入、输出端均TTL电平兼容,单一电源(Vcc=+5V)供电,最高计数速率为2.6MHz。

它包括3个计数器(即计数器0、1、2)、数据总路线缓冲器、读/写逻辑以及控制寄存器等4个部分。

②8253的外部引脚

图38253引脚图

A1、A0:

地址输入线,用来址8253内部的4个端口,即3个计数器和1个控制字寄存器与CPU系统地址线相连。

CLK0、CLK1、CLK2:

时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。

CLK可以是系统的时钟脉冲,也可以由系统时钟分频或者其他脉冲源提供。

当用于定时时,这个脉冲必须是均匀的、连续的、周期精确的,而用于计数时,这个脉冲可以是不均匀的、断续的、周期不定的。

GATE0、GATE1、GATE3:

门控输入端,用于外部控制计数器的启动计数和停止计数的操作。

两个或两个以上计数器连用时,可用此信号同步,也可用于与外部某信号的同步。

OUT0、OUT1、OUT2:

计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出相应的信号。

③8253的工作方式

方式0:

减1计数到0,产生中断请求信号。

方式3:

减1计数到初值的1/2,方波发生器。

④8253方式控制字格式

表28253方式控制字

D7D6

D5D4

D3D2D1

D0

00选计数器0

01选计数器1

10选计数器2

00计数器锁存

01只读写低8位

10先读写高8位

11先读写低8位

再读写高8位

000方式0

001方式1

X10方式2

X11方式3

100方式4

101方式5

0二进制计数

1BCD计数

3.2系统所选用各芯片的连接

3.2.1各芯片与CPU的连接

8255A、8253的数据总线D7~D0端、

端、

端、

端、

端、INT端分别与CPU的D7~D0数据总线、片选端、

端、

端、

端、INTR端。

8255A、8253的A1、A0端分别与CPU地址线的A1、A0端相连。

3.2.2各芯片之间的连接和与外设的连接

8255A的A口的PA7~PA0依次接“按键1”~“按键8”,B口的PB7~PB0通过驱动器1接到LED显示器,8253的GATE0端接PC7端口,CLK0接1MHz,OUT0的输出接入接扬声器。

第四章软件设计

4.1程序流程

设定好8255、8253的方式控制字后,根据读取8255PA端口的状态值,获取选手的具体号码,从而转到相应程序,将号码所对应的段码输出到PB端口进行数码管显示。

同时将PC7置1,使相连的GATE0门控信号为1,通道0进行计数,输出到扬声器进行鸣叫。

4.2子程序清单

4..2.1芯片8255初始化:

PORT_AEQU0FF28H

PORT_BEQU0FF29H

PORT_CEQU0FF2AH

PORT_CTLEQU0FF2BH

MOVAL,90H;8255控制字A组方式0输入

MOVDX,PORT_CTL;B组方式0输出C口输出

OUTDX,AL

4..2.2芯片8253初始化:

MOVAL,00110110B;8253控制字计数器0读写字

MOVDX,43H;工作方式方式3

OUTDX,AL

MOVAX,5000;计数器初值

MOVDX,40H

OUTDX,AL

MOVAL,AH

OUTDX,AL

4..2.3获取选手号码子程序:

在硬件电路中,8255的PA端口连接开关按键,根据读取PA的状态可以判断出按下的是哪个键(按下为高电平),根据进行移位操作,可得出选手的具体号码。

MOVDX,PORT_A;读取A口状态(按键状态)

INAL,DX

CMPAL,00000000B;无按键按下返回LED1

JELED1

CMPAL,00000001B;按键1

JELP1

CMPAL,00000010B;按键2

JELP2

CMPAL,00000100B;按键3

JELP3

CMPAL,00001000B;按键4

JELP4

CMPAL,00010000B;按键5

JELP5

CMPAL,00100000B;按键6

JELP6

CMPAL,01000000B;按键7

JELP7

CMPAL,10000000B;按键8

JELP8

JMPLED1;返回

4.2.4数码管显示子程序:

根据获取得到选手的号码,跳转相应程序,将段码输出给PB端口。

LP1:

MOVDX,PORT_B;数码管显示1

MOVAL,11111001B

OUTDX,AL

LP2:

MOVDX,PORT_B;数码管显示2

MOVAL,10100100B

OUTDX,AL

LP8:

LED的管脚

对应的字形

dp、g、f、e、d、c、b、a

11111001

10100100

10110000

10011001

10010010

11100010

11111000

10000000

1

2

3

4

5

6

7

8

4.2.5扬声器鸣叫时间:

PUSHDX

PUSHAX

MOVAL,00001111B;8255PC7口置1,使蜂鸣器工作

MOVDX,PORT_CTL

OUTDX,AL

POPAX

POPDX

MOVBL,00000000B

MOVCX,0FFFFH;延时一段时间

LPP2:

LOOPLPP2

MOVCX,0FFFH

LPP3:

LOOPLPP3

PUSHDX

PUSHAX

MOVAL,00001110B;8255PC7口置0,蜂鸣器停止工作

MOVDX,PORT_CTL

OUTDX,AL

POPAX

POPDX

 

第五章结果分析

连接硬件电路后,控制程序输出得到相应结果:

 

 

图5硬件显示结果

由上结果可看出,当按键3按下的时候,数码管显示数字3,扬声器进行鸣叫,在无按键按下时,LED数码管显示符号“-”,可得程序设计及硬件连接能达到题目要求。

结束语

转眼间一周微机课程设计转眼就结束了,通过这次课程设计,我学会了许多课本上学不到的东西,同时也加强了我的动手、思考和解决问题的能力,受益匪浅。

课程设计过程中,我觉得是对课本知识的巩固和加强,由于课本上的知识太多,同时平时课间又没有好好的运用额理解个芯片的功能,而且考试的内容有限,所以在这次课程设计过程中,我们了解很多元件的功能,对其在电路中的使用有更多的认识。

从前的学习过程过于浮浅,只是流于表面的理解,而现在要做课程设计,就不得不要求我们对所用到的知识有更深层次的理解。

因为课程设计的内容比及书本中的理论知识而言,更接近于现实生活,而理论到实践的转化往往是一个艰难的过程,它犹如一只拦路虎,横更在我们的面前。

但是我们毫不畏惧,因为我们相信我们能行。

前几天的主要任务是设计程序。

虽然在设计中会遇到这样那样的问题,有时认为是正确的,而在仿真中却出现了这样那样的问题。

软件部分做好了,下面就是接线啦,这可是一个比较麻烦的事。

在接线的时候要细心和耐心、恒心,这样才能做好事情。

同时接好了一步电路以后,最为重要的是检查这部分是不是接对了。

在做硬件测试的时候,八个数字基本能显示,但还是有点缺陷,比如显示数字1的时候,显示的不对,后来在老师帮助下解决了这个问题。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。

最后,我要感谢给予我们精心辅导的老师。

 

附录

参考文献

[1].朱金钧麻新旗·《微型计算机原理及应用技术》[M]·北京:

机械工业出版社

主程序清单

PORT_AEQU0FF28H

PORT_BEQU0FF29H

PORT_CEQU0FF2AH

PORT_CTLEQU0FF2BH

CODESEGMENT

ASSUMECS:

CODE

ORG11B0H

START:

MOVAL,90H;8255控制字A组方式0输入

MOVDX,PORT_CTL;B组方式0输出C口输出

OUTDX,AL

MOVAL,00110110B;8253控制字计数器0读写字

MOVDX,43H;工作方式方式3

OUTDX,AL

MOVAX,5000;计数器初值

MOVDX,40H

OUTDX,AL

MOVAL,AH

OUTDX,AL

LED1:

MOVBL,00000001B;设置全局变量BL

MOVAL,00001110B;PC7端口置0

MOVDX,PORT_CTL

OUTDX,AL

MOVDX,PORT_B;在数码管显示符号"-"

MOVAL,10111111B

OUTDX,AL

MOVDX,PORT_A;读取A口状态(按键状态)

INAL,DX

CMPAL,00000000B;无按键按下返回LED1

JELED1

CMPAL,00000001B;按键1

JELP1

CMPAL,00000010B;按键2

JELP2

CMPAL,00000100B;按键3

JELP3

CMPAL,00001000B;按键4

JELP4

CMPAL,00010000B;按键5

JELP5

CMPAL,00100000B;按键6

JELP6

CMPAL,01000000B;按键7

JELP7

CMPAL,10000000B;按键8

JELP8

JMPLED1;返回

LP1:

MOVDX,PORT_B;数码管显示1跳转LP9

MOVAL,11111001B

OUTDX,AL

JMPLP9

LP2:

MOVDX,PORT_B;数码管显示2跳转LP9

MOVAL,10100100B

OUTDX,AL

JMPLP9

LP3:

MOVDX,PORT_B;数码管显示3跳转LP9

MOVAL,10110000B

OUTDX,AL

JMPLP9

LP4:

MOVDX,PORT_B;数码管显示4跳转LP9

MOVAL,10011001B

OUTDX,AL

JMPLP9

LP5:

MOVDX,PORT_B;数码管显示5跳转LP9

MOVAL,10010010B

OUTDX,AL

JMPLP9

LP6:

MOVDX,PORT_B;数码管显示6跳转LP9

MOVAL,10000010B

OUTDX,AL

JMPLP9

LP7:

MOVDX,PORT_B;数码管显示7跳转LP9

MOVAL,11111000B

OUTDX,AL

JMPLP9

LP8:

MOVDX,PORT_B;数码管显示8跳转LP9

MOVAL,10000000B

OUTDX,AL

JMPLP9

LP9:

MOVDX,PORT_A;读取按键状态

INAL,DX

CMPBL,00000001B;全局变量BL与1比较相同时跳转

JEDELAY2

CMPAL,00000000B;检测按键是否清零,清零时跳DELAY1

JEDELAY1

JMPLP9;重复检测A口状态

DELAY1:

MOVCX,0FFFFH;延时返回LED1

LPP1:

LOOPLPP1

JMPLED1

DELAY2:

;PC7口置1,8253开始工作

PUSHDX

PUSHAX

MOVAL,00001111B

MOVDX,PORT_CTL

OUTDX,AL

POPAX

POPDX

MOVBL,00000000B

MOVCX,0FFFFH;延时一段时间后,8253停止工作

LPP2:

LOOPLPP2

MOVCX,0FFFH

LPP3:

LOOPLPP3

PUSHDX

PUSHAX

MOVAL,00001110B;PC7口置0,8253停止工作

MOVDX,PORT_CTL

OUTDX,AL

POPAX

POPDX

JMPLP9;返回LP9

CODEENDS

ENDSTART

 

课程设计独创性声明:

 

学生签名:

指导教师评语:

 

课程设计成绩:

指导教师签名:

教研室意见:

 

教研室主任签名:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1