logo资料库

8255实现多功能倒计时.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
一.设计功能…………......................................................................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
分享到:
收藏