精品八路竞赛抢答器毕业论文Word格式文档下载.docx
《精品八路竞赛抢答器毕业论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《精品八路竞赛抢答器毕业论文Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。
若无人抢答,当主持人按下复位按钮时,屏幕显示清零,等待下一轮抢答。
本课题设计了一种采用8255芯片和汇编语言制作的多功能抢答器,实验箱中的开关区和数码显示区共同完成。
主要功能:
1.倒计时2.用LED数码管显示1-8号选手先按下键者的号码。
它除了具有基本的抢答功能之外,和数显的功能,当抢答开始后,系统会自动倒计时,并且时间是可以预设的,期间有人抢答的话系统会停止计时,如果期间没人抢答,系统自动锁存直到主持人按下复位键。
关键字:
中断优先级可编程定时器/计数器数码管
八路竞赛抢答器的设计
1八路竞赛抢答器的设计要求与设计方案
1.1八路竞赛抢答器的方案选择与比较
本设计以微机原理及接口技术为基础,以实验箱为工具,完成P智能抢答器设计。
该智能抢答器包括8086最小应用系统整体设计模块、键盘处理模块(DOS调用)、答题计时模块、LED数码管显示模块。
选用8086作为微处理器、扩展可编程并行I/O接口8255A芯片、可编程定时计数芯片8253(或不用)、可编程中断控制器8259A(或不用)、LED数码管及键盘和发光二极管等元件,制定方案如下:
方案一选用8255A,8253,8259,实验箱键盘显示区
1.8253作为定时器使用。
2.8259利用IR0端作为定时到的中断引入端,IR2端作为开始键按下的中断引入端,IR3端作为清零键按下的中断引入端,IR4端作为暂停键按下的中断引入端。
3.8255作为并行输入输出,A口键盘接显示区,C口接清零键和开始键,B口8个抢答开关
4.盘显示区由四个LED数码管和10个按键组成。
方案二选用8255,实验箱键盘显示区
1.8255作为并行I/O接口,A口接8个抢答开关,B口显示区,C口清零键和开始键。
2.用软件编程进行定时功能
方案选择:
方案二采用扫描,没有用到8259,8253程序编制简单,但是cpu耗费了更多的时间在扫描,效率相对来说较低。
方案一采用中断,程序结构化更为清晰,且cpu少了循环扫描的时间,效率较高。
但是多用了一个8259中断控制芯片,一个8253定时/计时芯片,程序编制上涉及到中断服务子程序的编写,稍显复杂,且硬件相应增多,费用也相应较多。
经比较采用方案二。
1.2八路竞赛抢答器的元件选择
1)处理器的选择
微型机具有体积小、重量轻、耗电少、价格低廉、可靠性高、结构灵活等特点,所以选择8086系统
2)显示电路
显示可通过彩灯和数码管来实现。
如果用彩灯作为显示功能,则不是很直观。
而数码管具有显示亮度高,使用寿命长,且能直观方便的看到倒计时数字,和选手编号,因此选用数码管显示。
3)芯片选择
8255作为并行I/0接口,能满足10个输入按键的输入功能,声音系统的输出,和LED数码管的输出。
并且8255的每个接口还有锁存和数据缓冲作用。
所以选择8255芯片。
2八路竞赛抢答器的硬件设计
2.1八路竞赛抢答器的硬件框图
图2.1八路竞赛抢答器硬件框图
2.2显示电路设计
8255芯片的PB0至PB7分别与数码管的八个引脚相连。
将8255芯片中需要显示的信息通过B口送入数码显示区,由数码管的亮灭显示出来。
如图2.2所示。
图2.2显示电路
2.3电路设计
8255芯片的PA0至PA7分别与8个拨码开关相连,将八位选手的抢答信号(由拨码开关控制)通过A口送入8255芯片。
如图2.3所示。
图2.3抢答电路
2.4开始和复位电路
8255芯片的PC0口对应开始按键,PC3口对应复位按键。
将抢答开始和结束的信号(由开始按键和复位按键控制)通过C口送入8255芯片。
图2.4开始和复位电路
2.5总电路
设计总电路如图2.5所示。
图2-5总电路
2.6可编程并行接口8255及其引脚说明
图2-68255A引脚图
引脚功能
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;
/CS=1时,8255无法与CPU做数据传输。
RD:
读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
'
A1,A0:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
当A1=0,A0=0时,PA口被选择;
当A1=0,A0=1时,PB口被选择;
当A1=1,A0=0时,PC口被选择;
当A1=1.A0=1时,控制寄存器被选择。
8255端口地址如表2-1所示。
表2-18255端口地址
端口
地址
PA口
60H
PB口
61H
PC口
62H
控制口
63H
2.78086及引脚说明
图2-68086引脚图
2.7.1名称和功能相同的32个引脚
1、VCC、GND:
电源、接地引脚(3个),8086CPU采用单一的+5V电源,但有两个接地引脚。
2、AD15—AD0(AddressDataBus):
地址/数据复用信号输入/输出引脚(16个),分时输出低16位地址信号及进行数据信号的输入/输出。
3、A19/s6—A15/s3(AddressStatusBus):
地址/状态复用信号输出引脚(4个),分时输出地址的高4位及状态信息,其中s6为0用以指示8086CPU当前与总线连通;
s5为1表明8086/8088CPU可以响应可屏蔽中断;
s4、s3共有四个组态,用以指明当前使用的段寄存器,如表9-5所示,00—ES,01—SS,10—CS,11—DS。
4、NMI(Non-MaskableInterrupt)、INTR(InterruptRequest):
中断请求信号输入引脚
(2),引入中断源向CPU提出的中断请求信号,高电平有效,前者为非屏蔽中断请求,后者为可屏蔽中断请求信号。
5、(Read):
读控制输出信号引脚
(1),低电平有效,用以指明要执行一个对内存单元或I/O端口的读操作,具体是读内存单元,还是读I/O端口,取决于控制信号。
6、CLK/(Clock):
时钟信号输入引脚
(1),时钟信号的方波信号,占空比约为33%,即1/3周期为高电平,2/3周期为底电平,8086/8088的时钟频率(又称为主频)为4.77MHz,即从该引脚输入的时钟信号的频率为4.77MHz。
7、Reset(Reset):
复位信号输入引脚
(1),高电平有效。
8088/8086CPU要求复位信号至少维持4个时钟周期才能起到复位的效果,复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。
8、READY(Ready):
“准备好”状态信号输入引脚
(1),高电平有效,“Ready”输入引脚接收来自于内存单元或I/O端口向CPU发来的“准备好”状态信号,表明内存单元或I/O端口已经准备好进行读写操作。
该信号是协调CPU与内存单元或I/O端口之间进行信息传送的联络信号。
9、(Test):
测试信号输入引脚
(1),低电平有效,TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,当TEST引脚输入低电平时,系统脱离等待状态,继续执行被暂停执行的指令。
10、MN/MX(Minimum/MaximumModelControl)最小/最大模式设置信号输入引脚
(1),该输入引脚电平的高、低决定了CPU工作在最小模式还是最大模式,当该引脚接+5V时,CPU工作于最小模式下,当该引脚接地时,CPU工作于最大模式下。
11、/S7(BusHighEnable/Status):
高8位数据允许/状态复用信号输出引脚
(1),输出。
分时输出有效信号,表示高8为数据线D15—D8上的数据有效和S7状态信号,但S7未定义任何实际意义。
利用信号和AD0信号,可知系统当前的操作类型,具体规定见表2-2所示。
表2-2和A0的代码组合和对应的操作
A0
操作
所用数据引脚
从偶地址单元开始读/写一个字
AD15~AD0
1
从奇地址单元或端口读/写一个字节
AD15~AD8
从偶地址单元或端口读/写一个字节
AD7~AD0
无效
--
从奇地址开始读/写一个字(在第一个总线周期将低8位数据送到AD15~AD8,下一个周期将高8位数据送到AD7~AD0)
在8088系统中,该引脚为,用来与、一起决定8088芯片当前总线周期的读写操作,如表2-3所示。
表2-3总线周期读写操作组合
性能
中断响应
读I/O端口
写I/O端口
暂停(Halt)
取指令操作码
读存储器
写存储器
无源
2.7.2最小模式下的24--31引脚
当8086CPU的引脚固定接+5V时,CPU处于最小模式下,这时候剩余的24—31共8个引脚的名称及功能如下:
1、(InterruptAcknowledge)中断响应信号输出引脚
(1),低电平有效,该引脚是CPU响应中断请求后,向中断源发出的认可信号,用以通知中断源,以便提供中断类型码,该信号为两个连续的负脉冲。
2、ALE(AddressLockEnable):
地址锁存允许输出信号引脚
(1),高电平有效,CPU通过该引脚向地址锁存器8282/8283发出地址锁存允许信号,把当前地址/数据复用总线上输出的是地址信息,锁存到地址锁存器8282/8283中去。
注意:
ALE信号不能被浮空。
3、(DataEnable):
数据允许输出信号引脚,低电平有效,为总线收发器8286提供一个控制信号,表示CPU当前准备发送或接收一项数据。
4、(DataTransmit/Receive):
数据收发控制信号输出引脚
(1),CPU通过该引脚发出控制数据传送方向的控制信号,在使用8286/8287作为数据总线收发器时,信号用以控制数据传送的方向,当该信号为高电平时,表示数据由CPU经总线收发器8286/8287输出,否则,数据传送方向相反。
5、(Memory/Input&
Output):
存储器/I/O端口选择信号输出引脚
(1),这是CPU区分进行存储器访问还是I/O访问的输出控制信号。
当该引脚输出高电平时,表明CPU要进行I/O端口的读写操作,低位地址总线上出现的是I/O端口的地址;
当该引脚输出低电平时,表明CPU要进行存储器的读写操作,地址总线上出现的是访问存储器的地址。
6、(Write):
写控制信号输出引脚
(1),低电平有效,与配合实现对存储单元、I/O端口所进行的写操作控制。
7、HOLD(HoldRequest):
总线保持请求信号输入引脚
(1),高电平有效。
这是系统中的其它总线部件向CPU发来的总线请求信号输入引脚。
8、HLDA(HoldAcknowledge):
总线保持响应信号输出引脚,高电平有效,表示CPU认可其他总线部件提出的总线占用请求,准备让出总线控制权。
2.7.3最大模式下的24--31引脚
当8086CPU的引脚固定接地时,CPU处于最大模式下,这时
候剩余的24—31共8个引脚的名称及功能如下:
1、QS1、QS0(InstructionQueueStatus):
指令队列状态信号输出引脚
(2),
这两个信号的组合给出了前一个T状态中指令队列的状态,以便于外部88086CPU内部指令队列的动作跟踪,如表2-4所示.
表2-4QS1、QS0组合表
性 能
无操作
从指令队列的第一个字节取走代码
队列为空
除第一个字节外,还取走了后续字节中的代码
2、、、:
总线周期状态信号输出引脚(3),低电平的信号输出端,
这些信号组合起来,可以指出当前总线周期中,所进行数据传输过程的类型,总线控制器8288利用这些信号来产生对存储单元、I/O端口的控制信号。
、、与具体物理过程之间的对应关系,如表2-5所示。
表2-5~的状态编码
暂停
取指
无作用
这里对无源状态(在的最小模式中也存在,见P19)作一说明:
从表中可以看出,每一种的组合都对应一个具体的总线操作,除111外,其余都称为有源状态。
也就是说,在有源状态(对应前一个总线周期的和本总线周期的和状态)中,至少有一个信号为0,当时(对应总线周期的和且READY=1),也就是一个总线操作即将结束,另一个总线周期还未开始时,称为无源状态,很显然,这时中任一信号的改变,都意味着一个新的总线周期的开始。
3、(Lock):
总线封锁输出信号引脚
(1),低电平有效,当该引脚输出低电平时,系统中其它总线部件就不能占用系统总线。
信号是由指令前缀LOCK产生的,在LOCK前缀后面的一条指令执行完毕之后,便撤消信号。
此外,在8086的2个中断响应脉冲之间,信号也自动变为有效的低电平,以防止其它总线部件在中断响应过程中,占有总线而使一个完整的中断响应过程被中断。
4、、(Request/Grant):
总线请求信号输入/总线允许信号输出引脚
(2)。
这两个信号端可供CPU以外的两个处理器,用来发出使用总线的请求信号和接收CPU对总线请求信号的应答。
这两个引脚都是双向的,请求与应答信号在同一引脚上分时传输,方向相反。
其中比的优先级高。
3八路抢答器的软件设计
软件的设计的重点在延时,显示倒计时和选手编号和按键抢搭、开始和清零的实现。
延时采用嵌套循环的方式实现。
3.1主程序流程图
N
Y
YN
Y
NY
图3.1--主程序流程图
3.2显示模块程序设计
基本显示模块设计的重点是由显示代码取得相应的段码,通过锁存器控制输出给相应的数码管显示。
图3.2--显示模块程序流程图
3.3延时模块程序设计
延时模块的关键是计算计算机一秒能执行多少指令,再通过循环控制。
图3.3—延时模块程序流程图
3.4开始模块程序设计
图3.4--开始模块程序设计流程图
3.5复位模块程序设计
图3.5--清零模块程序设计流程图
3.6程序清单
DATASEGMENT
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
OUT63H,AL
MAIN:
INAL,62H
TESTAL,01H
JZMAIN
MOVAL,00H
OUT61H,AL
B1:
MOVAL,77H
OUT61H,AL
CALLA1
MOVAL,6FH
OUT61H,AL
MOVAL,7FH
CALLA1
MOVAL,07H
MOVAL,7DH
MOVAL,6DH
MOVAL,66H
MOVAL,4FH
MOVAL,5BH
MOVAL,06H
MOVAL,3FH
CALLAA
AAPROC
INAL,62H
TESTAL,08H
JZC1
JMPAA
C1:
MOVAL,00H
JMPMAIN
RET
AAENDP
A1PROC
MOVCX,0100H
BB1:
MOVBX,00B0H
BB2:
INAL,60H
JZAA1
JZAA2
JZAA3
JZAA4
JZAA5
JZAA6
JZAA7
JZAA8
DECBX
JNZBB2
LOOPBB1
A1ENDP
AA1:
MOVDX,61H
MOVAL,06H
OUTDX,AL
AA2:
MOVDX,61H
MOVAL,5BH
OUTDX,AL
JMPAA
AA3:
MOVAL,4FH
AA4:
MOVAL,66H
AA5:
AA6:
MOVAL,7DH
AA7:
MOVAL,07H
AA8:
MOVAL,7FH
CODEENDS
ENDSTART
设计体会与小结
在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。
另外,要做好一个课程设计,就必须做到:
在设计程序之前,对所用的8086有一个系统的了解,知道8086内有哪些资源;
要有一个清晰的思路和一个完整的的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
参考文献
[1]彭虎、周佩玲、傅忠谦,《微机原理里与接口技术》(第2版),电子工业出版社
[2]冯博琴,《微型计算机原理及接口技术》,清华大学出版社
[3]艾德才,《微型计算机原理与接口技术》,高等教育出版社
[4]沈美明,《IBM-PC汇编语言程序设计》,清华大学出版社
[6]尹建华,微型计算机原理与接口技术,高等教育出版社
[7]刘乐善,微型计算机接口技术及应用,华中科技大学出版社
[8]李继灿,新编16/32位微型计算机原理及应用,清华大学出版社
[9]BarryB.Brey.TheIntelMicroprocessors
[10]M.A.Mazidi,J.G..Mazidi,80x86IBM