竞赛抢答器.docx
《竞赛抢答器.docx》由会员分享,可在线阅读,更多相关《竞赛抢答器.docx(23页珍藏版)》请在冰豆网上搜索。
竞赛抢答器
中文摘要
本次设计微机原理设计的题目是竞赛抢答器,竞赛抢答器是我们生活中经常见到的,我们根据日常抢答的实现的功能,用8255芯片和8254芯片来控制,LED发光二极管、扬声器、数码管和逻辑开关。
并用汇编语言来模拟选手的抢答过程。
设计一个2路的竞赛抢答器。
在主持人侧,设置抢答指示电路和启动,复位按钮。
选手侧各设置1个抢答按钮。
主持人按动启动按钮,可以进行一次抢答,发光二极管亮作允许抢答指示。
竞赛者抢答主持人所提的问题时,按动各自的抢答按钮。
用逻辑开关K0和K1来代表2个抢答按钮。
当开关K0按下表示1好选手,开关K1表示2号选手。
收到第1个抢答信号后,主持人侧红色发光二极管熄灭作抢答提示,在单个LED数码管显示抢先一组的组号,主持人按下复位按钮,指示灯和数码管熄灭。
主持人念完题目后可以按动起动按钮,开始下一次抢答。
关键词微机原理竞赛抢答器延时开关发光二极管
目录
中文摘要……………………………………………………………………………………………………………………………1
1设计思路…………………………………………………………………………………………………………………………3
2系统流程图…………………………………………………………………………………………………………………….4
3主要元件介绍………………………………………………………………………………………………………………..5
3.18255的简介……………………………………………………………………………………………………………5
3.1.18355的内部接口…………………………………………………………………………………………5
3.1.28255的引脚功能…………………………………………………………………………………………6
3.1.38255的三种工作式…………………………………………………………………………………….7
2.1.48255控制字……………………………………………………………………………………………………..8
3.28254简介……………………………………………………………………………………………………………..9
3.2.18254的主要功能………………………………………………………………………………………….9
3.2.28254CPU寄存器结构………………………………………………………………………………….9
3.2.38254工作方式………………………………………………………………………………………………10
2.3LED数码显示管芯片……………………………………………………………………………………………..10
2.3.1LED数码显示管工作原理…………………………………………………………………………..10
2.3.2LED数码显示管外部引脚…………………………………………………………………………..12
2.3.2LED数码显示管内部结构…………………………………………………………………………..12
4接线图……………………………………………………………………………………………………………………………14
5源程序清单……………………………………………………………………………………….………………………….15
设计总结…………………………………………………………………………………………….……………………………19
致谢…………………………………………………………………………………………………………………………………..20
参考文献………………………………………………………………………………………………………………………….21
1设计思路
我们选用可编程并行接口芯片8255A,采用方式0,PA接口做输入,接收抢答信号,并用PB接口做输出通过编程将抢答组号输出到数码管显示。
PC接口用PC0接扬声器通过芯片控制其发声,PC7接口接收开始的脉冲信号,当接收到高电平时开始一轮抢答。
定时器我们选用可编程定时/计数器8254.,采用方式0在计数结束时产生正跃变信号。
我们使用计数器0,其中GATE0接8255的PC1端口,高电平时开始计数,OUT0接8255的PC6,CLK0接试验箱上的频率为1HZ的脉冲发生器,当做1秒计时信号。
编程对8255A初始化后,开始时由脉冲发生器产生一个正脉冲被8255A的PC7接收,8255A则通过PC1输出高电平使定时器8254工作。
当8254开始工作时,8255循环检查PA端口和PC6端口,若有人抢答,则PA端口有高电平输入,此时若PC6仍然低电平,则抢答有效,通过编好的程序判断是第几组抢答,并通过PB端口输出一段01代码使数码管显示组号,同时PC0端口产生高电平使扬声器发声;若循环时PA端口一直低电平而PC6产生高电平,说明时间已到,PC0端口产生高电平使扬声器发声。
2系统流程图
3主要元件介绍
3.18255的简介
8255A具有三个独立的输入/输出端口,每个端口的并行数据宽度为8位。
三个端口分别为A端口,B端口,C端口,可分别与不同的外设进行数据交换,也可联合使用,在中断方式下实现CPU与外设间的数据传递。
8255A提供方式0,方式1,方式2三种工作方式供选择。
3.1.18255的内部接口
并行输入/输出端口,它有三个输入/输出端口,每个端口8位,都可选择为输入或输出。
A端口有一阁位数据输出锁存/缓冲器和一个8位数据输入锁存器;B端口有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器;C端口有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器。
通常A端口和B端口作为输入/输出数据端口,C端口常作为控制或状态信息的端口,它可分为两个4位端口。
在与外设数据传送中需要联络控制线时,C端口分别与A,B端口配合使用,此时,C端口作控制信号输出和状态信号输入。
(1)A组和B组控制电路,8255A内部的三个端口可分为两组:
A组由A口和C口高4位组成;B组由B口和C口低4位组成。
A组和B组分别有自己的控制电路,即A组和B组控制电路。
其功能:
负责接受来自读写控制的逻辑的各种命令,以及来自数字总线的控制字,从而决定A组和B组的工作方式,还可根据CPU的命令对C端口的每一位实现“复位”或“置位”。
(2)读/写控制逻辑,这是8255A内部完成读/写控制功能的部件。
它与6条输入控制线相连,负责接收CPU输入的地址信号和读/写,复位控制信号,转变成各种命令发向A组和B组控制电路。
(3)数据总线缓冲器,这是一个8位双向三态缓冲器,它是8255A与CPU数据总线的接口,由读/写控制其数据传送方向及三态。
8255A与CPU间的数据传送如输入/输出数据,CPU写入8255A的控制字,8255A送给CPU的状态信息,都是经过这个缓冲器传送的。
3.1.28255的引脚功能
引脚功能
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:
读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。
方式0————基本输入输出方式;方式1————选通输入/出方式;方式2————双向选通输入/输出方式;
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时,控制寄存器被选择.
图3.1.18255引脚图
3.1.38255的三种工作方式
方式0---基本输入/输出方式。
这种方式不使用中断,没有规定的联络信号,三个端口的24条引脚均可做为输入/输出线,由程序设定各端口为输入端口或输出端口,完成并行输入/输出操作。
方式1---选通输入/输出方式。
这种方式下,端口A或端口B仍做为数据端口,同时规定了端口C的某些位做为控制或状态信息位,数据的输入/输出操作在联络信号的应答控制下完成,因而,可使用中断,也可使用查询。
方式2---双向传送方式。
这种方式下,外设在单一的8位数据线上,既能发送数据,也能接受数据。
在相应的控制线配合下,用中断方式或程序查询方式输入/输出数据。
端口A可工作于方式0,方式1和方式2,端口B可工作于方式1,端口C通常分成高4位和低4位,分别传送数据或控制,状态信息。
表2.1工作方式表
A组
B组
A口(PA0---PA7)
C口(PC4---PC7)
B口(PB0---PB7)
C口(PC0---PC3)
入
入
入
入
入
入
入
出
入
入
出
入
入
入
出
出
入
出
入
入
入
出
入
出
入
出
出
入
入
出
出
出
出
入
入
入
出
入
入
出
出
入
出
入
出
入
出
出
出
出
入
入
出
出
入
出
出
出
出
入
出
出
出
出
2.1.48255控制字
1.工作方式选择控制字
它可以使8255的三个端口工作于不同的工作方式,如图3.3所示。
图3.1.28255的控制字格式图
当控制字bit=7时,控制字的bit6—bit3这4位用来控制A组,A口的8位和C口的高4位,而控制字的低3位bit2—bit0用来控制B组,包括B口的8位和C口的低四位。
2.C口按位置位/复位控制字
8255的C口具有位控功能,即端口C的8位中的任一位都可通过CPU向8255的控制寄存器写入一个按位置位/复位控制字来置1或清0,而C口中其他位的状态不变。
其格式注意8255的C口按位置位/复位控制字的最高位D7(特征位)应为低电平。
如图2.4所示。
图3.1.3C口按位置位/复位控制字格式
3.28254简介
8254芯片是一款使用十分广泛的可编程定时,计数芯片,我们的微机内的动态存储器刷新电路,系统日时钟的技术以及发声系统的声源都是由8254芯片来完成的。
3.2.18254的主要功能
其主要功能是定时和计数的功能。
3.2.28254内部结构
8254芯片主要由四部分组成:
(1)数据总线缓冲器
数据总线缓冲器是一个三态、双向8位寄存器主要作用是与cpu进行数据交换,8位数据线D7~D0与CPU的系统数据总线连接,构成CPU和8254之间信息传送的通道,CPU通过数据总线缓冲器向8254写入控制命令、计数初始值或读取计数值。
(2)读写逻辑
读写逻辑是芯片的控制部分,编程人员通过控制信号的选择来选择芯片的工作方式。
读/写控制逻辑用来接收CPU系统总线的读、写控制信号和端口选择信号,用于控制8254内部寄存器的读/写操作。
(3)控制字寄存器
控制寄存器是一个只能写不能读的8位寄存器,系统通过指令将控制字写入控制寄存器,设定8254的不同工作方式。
(4)计数器
8254内部有三个结构完全相同而又相互独立的16位减“1”计数器,每个计数器有六种工作方式,各自可按照编程设定的方式工作。
3.2.38254工作方式
8254芯片共有六种工作方式,分别对应与六种不同的用途。
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率发生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
图3.2.18254引脚图
2.3LED数码显示管芯片
2.3.1LED数码显示管的工作原理
led数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等....,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
颜色有红,绿,蓝,黄等几种。
led数码管广泛用于仪表,时钟,车站,家电等场合。
选用时要注意产品尺寸颜色,功耗,亮度,波长等。
下面将介绍常用LED数码管内部引脚图片
图3.3.1这是一个7段两位带小数点10引脚的LED数码
图3.3.1LED数码管引脚定义
每一笔划都是对应一个字母表示DP是小数点.
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
A、静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位*器*进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×8=40根I/O口来驱动,要知道一个89S51单片机可用的I/O口才32个呢。
故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。
B、动态显示驱动:
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。
透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。
2.3.2LED数码显示管外部引脚
七段LED显示器:
由七个发光段构成,每段均为1个LED二极管。
通过控制不同段的点亮和熄灭,显示出16进制数字或字符。
LED数码显示管是一种由LED发光二极管组成显示字符的显示器件,使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称为7段发光二极管数码显示器,外部引脚如图2.7(a)所示。
LED数码显示器有两种连接方法,一种是共阳极接法,把发光二极管的阳极连在一起,构成公共阳极,使用时公共阳极接+5V;另一种是共阴极接法,把发光二极管的阴极连在一起,构成公共阴极,使用时公共阴极地。
这两种解法如图2.7(b)和2.7(c)所示。
(a)(b)(c)
图3.3.37段LED数码显示器
3.3.3LED数码显示管内部结构
1.LED数码显示器的显示段码
为了显示字符,就要为LED显示器提供显示段码,组成一个“8”字形字符的7段,再加上一个小数点位,共计8段。
因此,提供给LED显示器的显示段码为1个字节。
各段码位的对应关系如表2.3所示,而表2.4为十六进制数、空白字符和P的显示段码。
表2.3LED显示器的显示段码
段码
D7
D6
D5
D4
D3
D2
D1
D0
显示
Dp
g
f
e
d
c
b
a
表2.4十六进制数、空白字符和P的显示段码
字型
共阳极段码
共阴极段码
字型
共阳极段码
共阴极段码
0
C0H
3FH
9
90H
6FH
1
F9H
06H
A
88H
77H
2
A4H
5BM
b
83H
7CH
3
B0H
4FH
C
C6H
39H
4
99H
66H
d
A1H
5EH
5
92H
6DH
E
86H
79H
6
82H
7DH
F
84H
71H
7
F8H
07H
空白
FFH
00H
8
80H
7FH
P
8CH
73H
2.LED数码显示器的接口电路
实际使用的LED数码显示器位数较多,为了简化电路、降低成本,大多采用以软件为主的接口方法。
而对于多位的LED数码显示器,通常采用动态扫描显示方法,即逐个循环点亮各位显示器。
这样虽然在任一时刻只有一位显示器被点亮,但由于人言具有视觉残留效应,因此看起来与全部显示器持续点亮的效果基本一样。
如图2.8所示,8086/8088CPU通过8255A与LED数码显示器接口。
图3.3.48255A与LED数码显示器连接图
图中,8255端口A的PA0~PA7引脚通过8路反向驱动与数码显示器相连,用来输出显示字段的7段LED代码,即端口A为LED数码显示器的段控端口。
把要现实的字符的代码组成一个七段代码表,存放在存储器中。
8255端口B的PB0~PB5引脚通过6路反向驱动与LED的位线相连,B端口的PB0~PB5引脚中某一位输出为1(高电平)时,经过反向驱动,便在相应数码管的阴极上加上了低电平,此数码管就可以显示数据了。
4接线图
5源程序清单
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START1:
PUSHDS
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETMIR7
MOVSI,003CH
MOV[SI],AX
MOVAX,CS
MOVSI,003EH
MOV[SI],AX
CLI
POPDS
MOVAL,11H
OUT20H,AL
MOVAL,08H
OUT21H,AL
MOVAL,04H
OUT21H,AL
MOVAL,01H
OUT21H,AL
MOVAL,6FH
OUT21H,AL
STI
AA1:
NOP
MOVAX,OFFSETMIR6
MOVSI,0038H
MOV[SI],AX
MOVAX,CS
MOVSI,03AH
MOV[SI],AX
CLI
POPDS
MOVAL,11H
OUT20H,AL
MOVAL,08H
OUT21H,AL
MOVAL,04H
OUT21H,AL
MOVAL,01H
OUT21H,AL
MOVAL,2FH
OUT21H,AL
STI
START3:
MOVDX,0646H
MOVAL,90H
OUTDX,AL
MOVDX,0640H
INAL,DX
CMPAL,01H
STI
MOVDX,0644H
MOVAL,0F0H
OUTDX,AL
JMPSTART3
MIR7:
STI
MOVDX,0644H
MOVAL,00H
OUTDX,AL
CALLDALLY1
MOVAL,0F0H
MOVDX,0644H
OUTDX,AL
CALLDALLY2
MOVAL,00H
OUTDX,AL
CALLDALLY2
MOVAL,06H
MOVDX,0642H
OUTDX,AL
CALLDALLY2
MOVAL,20H
OUT20H,AL
CALLDALLY1
IRET
MIR6:
STI
MOVDX,0644H
MOVAL,00H
OUTDX,AL
CALLDALLY1
MOVAL,0FH
MOVDX,0644H
OUTDX,AL
CALLDALLY2
MOVAL,00H
OUTDX,AL
CALLDALLY2
OUTDX,AL
MOVAL,5BH
MOVDX,0642H
OUTDX,AL
CALLDALLY2
MOVAL,20H
OUT20H,AL
IRET
DALLY1:
PUSHCX
MOVCX,0F00H
AA0:
PUSHAX
POPAX
LOOPAA0
POPCX
RET
DALLY2:
PUSHCX
PUSHAX
MOVCX,0100H
A10:
MOVAX,0F00H
A9:
DECAX
JNZA10
LOOPA9
POPAX
POPCX
RET
CODEENDS
ENDSTART1
ENDSTART
设计总结
这次实验是一个综合性实验,通过这次实验,使我们将以前我们所学习到的芯片知识综合应用到这个实验上,从结构、功能、用法上都有了全面的认识,并基本达到了能够通过我们小组的讨论完成从构思到设计最后到调试的整个过程,虽然其中遇到了很多困难阻力,