一.设计功能…………......................................................................3
二. 设计原理及原理图....................................................................3
2.1 使用 8255 实现倒计时功能.......................................................3
2.2 使用数码管实现两位数字的显示功能.....................................6
2.3 设计在数码管上倒计时数字的递减功能................................7
2.4 数码管上的数字减为零时,流水灯依次循环亮起................7
2.5 数码管上的数字减为零时,声控单元发出蜂鸣.....................7
2.6 用外部开关控制数码管.............................................................8
三、程序流程图………. .................................................................9
四、源程序.......................................................................................10
五、试验结果 ………………........................................................17
六、总结 …....................................................................................19
七、8086/88 计算机主板图……….................................................21
1
数字倒计时
一 设计功能
采用 8255、数码管、开关、蜂鸣器、流水灯组成的一个倒计时器。电路具有时
间显示功能,能在两位位数码管上从自己设定的时间开始递减,每隔 1 秒钟,计
时器减 1。有外部开关能控制其暂停、复位,在倒计时为零 0 时发出声光警报。
发出警报后根据屏幕提示输入相应字母可实现重新计时或退出功能。具体的设计
功能要求如下:
(1) 使用 8255 芯片完成倒计时功能。
(2) 在数码管上显示倒计时的时间,用两位七段数码管。
(3) 倒计时的时间要自己能输入进去,要求自己手动控制。
(4) 在倒计时的过程中,要求要有外部开关控制数码管显示的数字能暂停
/连续递减功能。
(5) 在倒计时的过程中,要求要有外部开关对数码管显示的数字进行复位
更新的功能。
(6) 当数码管上显示的数字减为 0 时,流水灯要依次循环亮起,直到有按
键按下。
(7) 当流水灯亮着的同时,要求声控单元发出蜂鸣。
二 设计原理及原理图
2.1 使用 8255 实现倒计时功能
(1)8255 有 3 个 8 位数据接口,即接口 A、接口 B 和接口 C。使用者可以根
端口 A:
一个 8 位数据输入锁存器和一个 8 位数据输出锁存器/缓冲器,用来传送数据。
据自己的情况用软件使它们分别作为输入端口或输出端口。
数据输入均被锁存。
端口 B:一个 8 位数据输入缓冲器和一个 8 位数据输出锁存器/缓冲器,用来传
送数据。数据输入时不被锁存,数据输出时被锁存。
端口 C:一个 8 位数据输入缓冲器和一个 8 位数据输出锁存器/缓冲器。用作输
入端口时,数据不被锁存;而作为输出端口是,数据被锁存。
(2)A 组控制和 B 组控制
在本次课程设计中 A 组控制数码管输出的功能,将数据输出到数码管上,B 组
2
控制输入功能,C 的低四位控制控制数码管的选中功能,选哪几个数码管显示数
据。PC4---PC5 连接到发声报警系统,实现蜂鸣功能,PC6---PC7 连接到 K14 和
K15,实现控制复位和暂停的功能。在流水线显示的时候,A B C 三口都是输出,
实现流水灯的显示和发声报警功能。
读/写控制逻辑电路负责管理 8255 的数据传输过程。它接收来自系统总线的信
号 A1,A0 和控制总线信号 RESET、WR、RD,将这些信号组合后,得到 A 组
控制部件和 B 组控制部件的控制命令,并将命令发给这两个部件,完成对数据、
状态信息的传输。
数据总线缓冲器这是个双向三态 8 位数据缓冲器,8255 通过它与系统数据总线
相连。输入数据、输出数据、CPU 发给 8255 的控制字都是通过这个缓冲器传递
的。
(3)8255 的引脚信号
图 2.3 8255A 引脚
图 2.3
与外部设备端相连的引脚
a. PA7-PA0:A 端口的输入/输出引脚。
b. PB7-PB0:B 端口的输入/输出引脚。
c. PC7-PC0:C 端口的输入/输出引脚。
(4)与 CPU 相连的引脚
a. RESET:复位信号,低电平有效。当 RESET 信号来到时,所有内部寄存
器都被清 0,同时 3 个端口被自动设为输入端口。
b. D7-D0:8255 的数据线,和系统数据总线相连。
3
c. CS:芯片选择信号。只有当 CS 有效时,读出信号 RD 和写入信号 WR 才
对 8255 有效。
d. RD:读出信号。CPU 通过 IN 指令使 RD 有效,将数据或状态信息从 8255
中读到 CPU。
e. WR:写入信号。CPU 通过 OUT 指令使 WR 有效,将数据或状态信息从 CPU
中写道 8255.
f. A1,A0:端口选择信号。8255 内部有 3 个数据端口和 1 个控制端口,共 4
个端口。规定 A1,A0 为 00、01、10 和 11 时,分别选中端口 A、端口 B、端口
C 和控制端口。
(5)8255 的控制字
a. 方式选择控制字把 A、B、C 三个端口分为 A、B 两组来设定工作方式。A
组包括端口 A 和端口 C 的上半部,B 组包括端口 B 和端口 C 的下半部。
b. 端口 A 可工作于 3 种方式中的任何一种:端口 B 只能工作于方式 0 和方式
1;而端口 C 除用作输入、输出口(方式 0)外,通常用来配合端口 A 和端口 B
提供联络控制信号和状态信号。在同一组的两个端口可分别作为输入端口或输出
端口,不要求同为输入或输出。
c. C 口按位置位/复位控制字 8255 的 C 口置位/复位控制字。端口 C 按位置位
/复位控制字尽管是对端口 C 进行操作的,但此控制字必须写入控制口,而不写
入端口 C。一个控制字只能完成端口 C 中某一位置的置 1 或置 0,要对多位置 1
或置 0,必须使用多个控制字。
2.2 使用数码管实现两位数字的显示功能
要使用数码管显示数字,首先,要选中数码管的哪几位,其次,确定
4
8255 的哪个口将要显示的数字输出到数码管中,在本次设计中,让 8255 的 A 口
将要显示的数据输出到数码管中。让 8255 的 C 口的低四位选中数码管,在此次
设计中,选中的是 X3 和 X4。数码管中只是显示的是字符,从 A 中输出的值要
是数字字符,否则,不能实现理想的显示数据。
要选中数码管比较容易,让其实现一位数码管的显示,只要将 8255 的
输出端口插入到选中的数码管中,将其输出值放入到一位七段数码管的地址中,
就能实现显示功能。但是要让两位七段数码管显示不同的值,需要定义两个缓冲
区来存放要显示的数字字符,一个 SI 和【SI+1】分别存放两位倒计时的数字值。
倒计时要显示两位数据值,数据值每隔一秒要减一,所以要对两位数码管进行不
同程度的刷新。个位数字是比较好判断的,让它实现从 9 减到 1 的功能即可,而
十位数必须经过判断,当个位数减到 0 时,它才能减一,所以对其的刷新频率要
比个位的刷新频率小。
一般七段 LED 显示器的内部结构和引脚如图 2.4(a)所示。每段都是一个
发光二极管,通过点亮不同的字段,可以显示多种数字、字母以及其它符号。其
内部各发光二极管之间的连接方法有共阴极和共阳极两种,如图 2.4(b)和图 2.4(c)
所示。
(a)结构和引脚
(B)共阴极接法
图 2.4 七段 LED 显示器
(C)共阳极接法
共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时共阴极接地,
这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。
实验中使用的 LED 显示器为共阴极接法
5
共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接
+5V。 这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则
不点亮。
为了显示数字或符号,要为 LED 显示器提供代码,因为这些代码是为显示字
形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。
因此提供给 LED 显示器的字形代码正好一个字节。若 a、b、c、d、e、f、g、dp
8 个显示段依次对应一个字节的低位到高位,即 D0、D1、D2、D3、D4、D5、
D6、D7,则用共阴极 LED 数码管显示十六进制数时所需的字形代码如下表所示。
表 1 8 段 LED 显示字形段码
字型 共阴极字形
字型
共阴极字形
字型 共阴极字形
代码
代码
代码
0
1
2
3
4
5
3FH
06H
5BH
4FH
66H
6DH
6
7
8
9
A
b
7DH
07H
7FH
6FH
77H
7CH
C
d
E
F
灭
39H
5EH
79H
71H
00H
2.3 设计在数码管上倒计时数字的递减功能
此功能要通过对 8255 编程来实现,因为数码管只是接受数字字符,所以要
先将输入的字符,让它的十位乘上数字十再加上各位数,将此值存入 SEC 变量
中,用 SEC 来存入倒计时的数值。首先将 SEC 赋值给 AL,将 AL 中的数值通过
除法,把除后的商和余数分别显示在数码管的 X3 和 X4 中。在通过 DEC SEC 实
现倒计时数值的减一,将减法后的结果在进行除法,输出到数码管中。
2.4 当数码管上的数字减为零时,流水灯依次循环亮起
当倒计时的数值减到零时,程序要调用流水灯的显示子程序 OUTPUT1,因
为当程序进入到 OUTPUT 1 中,8255 的 A B C 三个端口全为输出,但是只有 B
端口接到流水灯 D0----D7,所以在程序运行时只有这几个灯亮。
2.5 当数码管上的数字减为零时,声控单元发出蜂鸣
当倒计时的数值减为零,需要声控单元发出蜂鸣,需将 8255 的 C 端口的
PC4-----PC5 连接到声控单元,如果将其代码直接写出来,也能实现功能,但是
6
不能和流水灯一起,美观效果不好。所以就应该将其嵌入到流水灯显示的子程序
中,效果更加。
2.6 用外部开关控制数码管上显示的数字暂停/连续递减功能和复位更新的功
能
用外部开关进行控制暂停与复位,以实现修改的功能。将 8255 端口的
PC6----PC7 连接到 K14 和 K15,当 K15 按下时,实现暂停功能,当 K14 按下时,
实现复位功能。当按下一个键时,8255 的 C 端口收到一个输入,对其进行比较,
对比按下的键是否和设置的相等,若相等实现功能,若不等继续往下执行。此功
能也可通过键盘输入的键值来判断,但是 PC 机接受键盘的数值比接受唐都仪器
的值慢,所以会出现一些错误,经过分析,用唐都仪器上输入的值比较的合理。
三 程序流程图
开始
7
输入
显示
暂停
否
复位
否
倒计时减 1
是否到 0
是
声光报警
R? E?
E
返回 DOC
是
是
否
R
(流程图箭头请自己加上!!)
8