《计算机原理及接口技术》
课程综合实验报告
题 目 倒计时牌设计
学 院 电子与控制工程学院 专 业 建筑设施智能技术 班 级 320601 学生姓名 学 号
指导教师
前言
微机原理和接口技术是一门实践性强的学科,其中很多的原理、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。在进行课程设计的过程中,可以让学生体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程,从而帮助学生系统地掌握微机原理的接口技术的相关知识,达到将知识融会贯通的目的。本次设计的基于单片的倒计时器相较传统机械式倒计时器具有可以灵活可调、性价比高等优点,有在现实生活中得到广泛应用的发展潜力。本课程设计由共同设计。
摘要
本次设计采用的是8255A、8253、5255、数码管以及按键开关组成的一个实现具有天、时、分、秒倒计功能的倒计时器。电路具有时间显示功能,能在八位数码管每隔1秒钟,计时器减1。有外部键盘能输入初始值,在倒计时为整数小时出现声光报警
目录
一.引言
本次计算机原理及接口技术课程综合实验我们的课题是:倒计时牌设计。综合性实验设计能够很好地培养学生综合运用所学知识的能力,提高学生解决实际问题的能力;培养学生查阅资料,使用工程设计标准、手册及编写设计技术的能力;培养学生初步掌握设计开发产品的能力,了解微机控制系统的一般设计方法;提高学生的计算机绘图能力。
倒计时牌的设计应该满足以下要求:
(1)显示倒计时天数以及小时、分钟、秒(各2位)。 (2)参数可手动设置
(3)每当剩余时间为整数个小时时,声光报警提示
设计基于Protues仿真的8086、8253、8255等和EMU8086汇编完成设计要求。 二. 设计方案阐述 1、方案整体思想
本系统设计以8086微处理器作为CPU,用8253做定时计数器产生时钟脉冲,8255做可编程并行接口显示时钟和键盘电路,8259做中断
控制器产生中断,接LED显示倒计时天数以及小时、分钟、秒(各2位)和扩展调整键盘。
2、程序设计
(1)设计一个1s时钟,作为时间的基准。可通过定时器来实现,由于定时限制,我们设定定时时钟为50ms中断一次,然后用一个计数器计数20次。
(2)由于实际应用中要求显示为十进制数,而在程序中处理的数据都为十六进制,因此在程序中要对显示缓冲区的数据进行十进制调整。
(3)在设计时,LED显示应1秒跳动一次。
(4)当计时器倒计时为零时,即定时时间到,显示为零,同时发出声光报警信号。 3、设计原理
利用定时器8253、8255和8259以及键盘和数码显示电路,设计一个倒计时牌,由8253中断定时,小键盘控制倒计时牌的启停及初始值的预置。
在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。即每隔1min,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到60次数后,CPU即处理,使液晶显示器上的时间发生变化。其中8259只需初始化ICW1,
其功能是向8259表明IRx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送CPU处理。
电子日历的显示格式年:天、时、分、秒,且循环显示
要求设计一个定时显示装置,用八个数码管显示时间,用小键盘控制计时,设置和显示时间。系统一运行就从99天23时59分59秒开始计时,并在数码管上显示当前值,而且,可以用键盘设置当前时间。 基本工作原理:每1秒对寄存器的内容减一,当减60次时,分减一,秒恢复到59;当分减60次时,时减一,分恢复到59;当时减24次时,天减一,时恢复到23;八个数码管动态显示天、时、分、秒的当前值,并3s一次循环切换显示倒计时。 4、倒计时的硬件框图 框图如下:
声光报警 控制电路 8255 8个数码管显示电路
三.硬件部分
(一)硬件连接测试部分
系统分为5个功能模块,分别为:主程序模块,定时模块,中断模块,小键盘控制模块,LED显示模块。 1、主程序模块
主控模块是其心模块,对8253、8255和8259进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理。主要由软件实现。它的主要功能是调用其它模块对系统工作进行协调,读小键盘输入键值并执行要做的工作。 2、定时模块
定时模块是为8259提供中断请求信号的。由一片8253实现,选用定时器0,工作在方式2,显示应1秒跳动一次,其输出信号可作为8259的中断请求信号。
3、中断处理模块
中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每1秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每过1秒秒显示减一,从而达到动态显示的效果。
4、小键盘模块
小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。本课题只考虑去抖动。执行一个约10ms的延时程序后再扫描键盘,若F0=1表示真正有键按下,从而消除了抖动影响。
5、LED显示模块
显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由八个字节构成,分别保存天的高位和低位,时的高位和低位,分的高位和低位,秒的高位和低位。硬件上由八个LED构成,软件上由扫描显示的方法实现。
其中,由于实际应用中要求显示为十进制数,而在程序中处理的数据都为十六进制,因此在程序中要对显示缓冲区的数据进行十进制调整
(二)硬件部分主要芯片简介 1. 硬件芯片
8086CPU:作为微处理器
8255并行接口:用做接口芯片,和小键盘相连
8253定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2
8259中断控制器:用于产生中断
LED:八个LED灯用于显示天、时、分、秒倒计时牌 发光二极管、小喇叭:用于实现声光报警 小键盘:用16键控制设置 2.主要芯片介绍 8086CPU
8086微处理器的主要特点:8086为16位微处理器,数据总线16位,地址总线20位,可寻址1MB存储空间,时钟频率为5~10MHz。8086 CPU的内部结构由执行单元EU(execution unit)和总线接口部件BIU(bus interface unit)两部分组成。 8086CPU外部引脚图如图所示。
图9 8086CPU外部引脚图
AD7~AD0——八条地址/数据复用线; A15~A8——单一的地址线;
SS0——状态信号线。该引脚在最大工作方式下保持高电平,在最小方式下等效于最大方式下S0的作用,它与IO/M、DT/R组合以确定当
前的总线周期;
A19/S6~A16/S3——地址/状态总线; MN/MX——最小/最大方式控制; RD——读控制; TEST——等待测试控制; READY——等待状态控制; NMI——不可屏蔽中断请求; INTR——可屏蔽中断请求; CLK——系统时钟; Vcc——+5V电源; GND——接地。
8086微处理器的工作方式:
(1) 最小工作方式。当8086CPU的MN/MX引脚接+5V电源时,8086CPU工作于最小方式,用于构成小型的单处理机系统。
(2) 最大工作方式。当8086CPU的MN/MX引脚接地时,8086CPU工作于最大方式,用于构成多处理机和协处理机系统。 最小方式信号: HOLD——保持请求; HLDA——保持响应; WR——写控制;
IO/M——IO/存储器控制; DT/R——数据发送/接收;
DEN——数据允许; ALE——地址锁存允许; INTA——中断响应; 最大方式信号:
RQ/GT1,0——请求/允许总线访问控制; LOCK——总线优先权锁定控制 S2S1S0——总线周期状态; QS1、QS0——指令队列状态; 8255芯片
(1)内部结构及引脚
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作: 方式0—基本输入/输出方式
方式1—选通输入/输出方式 方式2—双向选通输入/输出方式
(2)8255引脚图如图3.2示,各引脚功能如下。 D7~D0——与CPU侧连接的八条双向数据线; WR(低电平有效)——写输入信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; A0、A1——片内寄存器选择输入信号;
图28255引脚图PA7~PA0——A口外设双向数据线; PB7~PB0——B口外设双向数据线; PC7~PC0——C口外设双向数据线;
RESET——复位输入信号 (3)8255端口地址 信号线 寄存器 A口 B口 IOY3 C口 控制寄存器 8253芯片
(1)内部结构及引脚
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。 (2)8253的功能用途是: 1、延时中断
2、可编程频率发生器 3、事件计数器
4、二进倍频器 5、实时时钟
62H 63H 编址 60H 61H 表2 8255端口地址表 6、数字单稳 7、复杂的电机控制器
(3)8253有六种工作方式: 1、方式0:计数结束中断 2、方式1:可编程频率发生器 3、方式2:频率发生器
4、方式3:方波频率发生器 图6 8253引脚图 5、方式4:软件触发的选通信号 6、方式5:硬件触发的选通信号
(4)8253引脚图如图示,各引脚功能如下。 D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形; GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。 (5)8253端口地址
信号线 表1 8253端口地址表
寄存器 0#计数器 1#计数器 编址 40H 41H 42H 43H IOY2 2#计数器 控制寄存器
8259芯片
(1)内部结构及引脚
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在MD微机系统中,8259芯片工作于单片方式。 8259引脚图如图3.3,各引脚功能如下。
D7~D0——八条双向数据线; 图8259引脚图 WR(低电平有效)——写输入信号; A0——地址信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; INTA(低电平有效)——中断响应信号;
CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;
SP/EN——从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;
IR0~IR7——外部中断请求输入线。要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。
(2)8259中断矢量地址与中断信号之间的关系如表3所示:
中断序号 功能调用 矢量地址 说明 0 08H 1 09H 2 0AH 表3 8259中断矢量表 3 0BH 4 0CH 5 0DH 6 0EH 7 0FH 20H~23H 24H~27H 28H~2BH 2CH~2FH 30H~33H 34H~37H 38H~3BH 3CH~3FH 时钟 键盘 可用 可用 串行口 可用 可用 可用
四.软件设计部分 1、主程序流程
对8259初始化 开 始
显示时刻 初始化8253 、 8255 填中断向量表
N 功能键是否按下 Y
N YY Y 确认键是否按下 进入时刻设置状态 2、时间程序更改流程图
N Y 秒的十位为0 秒的十位减1 N 为0 秒的个位赋9 RET 秒的个位为0 秒的个位减1 开始 Y N Y 分的个位赋9 RET 分的个位为0 分的个位减1 秒的十位赋5 N 分的十位为0 分的十位减1 Y 分的十位赋5 RET
N 时的个位为0
为0 时的个位减1 Y
N 时的十位为0 Y
时的十位赋2 RET 时的个位赋3 时的个位赋9 时的十位减1
N 天的个位为0 Y
全部位赋0,计时结束 天的个位赋9 RET 天的个位减1 天的十位为0
OUT DX,AL MOV AL,AH OUT DX,AL SHL AH,1 OUT DX,AL
LOOP DISPLAY1 ;依次显示共八位 POP CX RET
;****************报警子函数***************** WARNING PROC PUSH AX PUSH DX
MOV AX,COUNT ;每1S翻转一次 CMP AX,35995 ;剩余5s
JAE SOUND ;>=35995s,即剩余不足5s时报警 JB SILENT ;<35995s则不报警 SOUND: MOV AL,01H ;C口按位操作,C0口置1 MOV DX,A_CONL_8255 OUT DX,AL
SILENT: MOV AL,00H ;C口按位操作,C0口置0 MOV DX,A_CONL_8255 OUT DX,AL
POP AX POP DX RET
WARNING ENDP
;**************IR0中断服务子程序(定时)************** IR0: PUSH AX PUSH DX XOR AX,AX
MOV AX,COUNT ;COUNT每1s翻转一次 CMP AX,36000 JAE WARNING JMP OVER
OVER: MOV AL,20H ;一般EOI命令,全嵌套方式,IR1复位 MOV DX,A_OCW2_8259 OUT DX,AL POP DX POP AX IRET END START