硬件课程设计实验报告模拟交通灯.docx

上传人:b****2 文档编号:2379007 上传时间:2022-10-29 格式:DOCX 页数:12 大小:65KB
下载 相关 举报
硬件课程设计实验报告模拟交通灯.docx_第1页
第1页 / 共12页
硬件课程设计实验报告模拟交通灯.docx_第2页
第2页 / 共12页
硬件课程设计实验报告模拟交通灯.docx_第3页
第3页 / 共12页
硬件课程设计实验报告模拟交通灯.docx_第4页
第4页 / 共12页
硬件课程设计实验报告模拟交通灯.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

硬件课程设计实验报告模拟交通灯.docx

《硬件课程设计实验报告模拟交通灯.docx》由会员分享,可在线阅读,更多相关《硬件课程设计实验报告模拟交通灯.docx(12页珍藏版)》请在冰豆网上搜索。

硬件课程设计实验报告模拟交通灯.docx

硬件课程设计实验报告模拟交通灯

硬件部件设计与调试

实验题目:

模拟交通灯

实验目的与要求:

⒈ 了解交通灯管理的基本工作原理

⒉ 熟悉8259A中断控制器的工作原理和应用编程

⒊ 熟悉8255A并行接口的各种工作方式和应用

⒋ 熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法

⒌ 掌握多位LED显示问题的解决 

实验原理与方法:

●8259、8255A和8253的工作原理:

一、8259的工作原理:

1、数据总线缓冲器:

8259A与系统数据总线的接口,是8位双向三态缓冲器。

CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过缓冲器传送的。

2、读/写控制逻辑:

CPU通过它实现对8259A的读/写操作。

3、级连缓冲器:

用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。

4、控制逻辑电路:

对整个芯片内部各部件的工作进行协调和控制。

5、中断请求寄存器IRR:

8位,用以分别保存8个中断请求信号,当响应的中断请求输入脚有中断请求时,该寄存器的相应位置1。

6、中断屏蔽寄存器IMR:

8位,相应位用以对8个中断源的中断请求信号进行屏蔽控制。

当其中某位置“0“时,则相应的中断请求可以向CPU提出;否则,相应的中断请求被屏蔽,即不允许向CPU提出中断请求。

该寄存器的内容为8259A的操作命令字OCW1,可以由程序设置或改变。

7、中断服务寄存器ISR:

8位,当CPU正在处理某个中断源的中断请求时,ISR寄存器中的相应位置1。

8、用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套。

二、8255A的工作原理:

1、8255A的内部结构:

1)数据总线缓冲器:

这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。

输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。

2)三个端口A,B和C:

A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。

B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。

C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。

3)A组和B组控制电路:

这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。

方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。

对C口按位复位命令字可对C口的每一位实现置位或复位。

A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。

4)读写控制逻辑:

用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。

2、8255A的工作方式:

方式0---基本输入输出方式;方式1---选通输入输出方式;

方式2---双向选通输入输出方式。

三、8253的工作原理:

8253是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。

其CLK0~CLK2是计数器0~2的时钟脉冲输入端,GATE0~GATE2是门控脉冲输入端,OUT0~OUT2是输出端。

●交通信号灯实时控制和管理的总体设计

   芯片选择及端口选择

1.用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用8255A实现控制。

2.用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要求的1分钟、5秒钟和20秒的定时。

实验系统8235的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接 +5V;定时采用软硬件相结合的方式实现。

3、用实验系统的发光二极管模拟红绿灯。

    注:

8259A的端口地址为:

218H、219H

        8255A的端口地址为:

端口A-200H、端口B-201H、端口C-202H、控制端口-203H

8253的端口地址为:

计数器0-208H、计数器1-209H、计数器2-20aH、控制寄存器0-20bH。

本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。

定时模块采用硬件定时和软件定时相结合的方法,用8253定时/计数器定时100ms,再用软件计时实现所需的定时。

发光二极管模块由8255控制发光二极管来实现。

数码管显示模块由实验平台上的LED显示模块实现。

紧急中断模块是由单脉冲发生单元和8259中断控制器组成。

程序主要是由定时子程序、发光二极管显示子程序、数码管显示子程序和中断服务程序组成。

包括对8253、8255以及8259等可编程器件的编程。

●方案论证:

软件延时,设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进行使用,本次设计采用了,定时器0进行计时,每10ms产生一个脉冲信号,可以准确的计时并方便8段数码管进行显示。

使用中断比较麻烦,在试验中需要两次加载初始化程序和中断服务程序,并且需要手工指定中断服务地址和中断向量号;但是使用中断可以进行多样化设计,强化程序功能与执行效率。

在本设计中程序每10MS请求一次中断,实现精确定时与数码管显示刷新。

实验设计思路与实现:

●硬件设计:

本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。

完整系统的硬件连接如图1所示。

硬件电路由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。

定时模块是由8253的计数器0来实现定时100ms。

Clk0接实验平台分频电路输出Q6,f=46875hz。

GATE0接8255的PA0,由8255输出来控制计数器的起停。

OUT0接8259的IRQ2,定时完成申请中断,进入中断服务程序。

发光二极管显示模块由8255输出来控制发光二极管的亮灭。

8255输出为低电平时,对应的发光二极管就点亮,否则就熄灭。

8255的接口电路如图2所示。

交通灯的对应关系如下:

L7

L6

L5

L2

L1

L0

PC7

PC6

PC5

PC2

PC1

PC0

13红灯

13黄灯

13绿灯

24红灯

24黄灯

24绿灯

实验平台上提供一组六个LED数码管。

插孔CS1用于数码管段选的输出选通,插孔CS2用于数码管位选信号的输出选通。

本设计用4个数码管来倒计时。

紧急中断模块是由单脉冲发生单元和8259中断控制器,单脉冲发生单元主要用来请求中断,然后做出紧急情况处理。

 

图28255接口电路

●软件设计思路:

设计数器0的计数初值为25000,由于CLK0接脉冲信号,频率为2.5MHZ,所以每10ms中断一次。

利用CX对不同的状态时间计数,用来实现计数器0对1分钟,20秒钟,5秒钟的定时。

中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。

每进入中断即刷新LED显示。

用对于东西车道和南北车道黄灯闪烁利用标志位判断实现,满足比较条件就暗,不满足条件就亮。

8253计数的起停由8255的PA0控制,8255的PA0输出1时,8253开始计数,交通灯按正常状态切换工作,PA0输出0时,计数器停止工作,交通灯不再按正常状态切换。

8253开始计数后每100ms发出一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。

主程序负责系统的初始化,然后数码管数据输出显示,同时检测PC键盘按键,有按键就退出程序。

主程序的流程图如图3所示。

 

图3主程序的流程图

定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。

中断子程序包括数码管输出数据刷新程序和各状态处理程序。

数码管输出数据刷新子程序是实现倒计时25s,用LEDOUT表示输出的数据,cnt用来软件计时1s,就是计数10个100ms。

LED输出是要将输出的数据转化为段选码。

根据当前的状态跳转到相应的处理程序,在处理程序中完成定时和状态的切换。

状态1和3的流程是一样的,先点亮对应的交通灯,再判断定时到了就可以切换了。

状态2和4要实现黄灯的闪烁,间隔点亮和熄灭就可以了。

状态1和3处理程序的流程图(以状态1为例)如图6所示,其中NUM是状态1对应的PC口输出。

外部中断服务子程序主要用来处理紧急情况,将2个方向的车都停止运行,点亮所有红灯。

下次中断来时恢复以前的状态。

用一个标志位FLAG判断是第一次进入还是恢复状态。

●源程序清单:

本次设计中,选用8235的计数器0定时向实验系统主片8259A的IRQ0请求中断。

设置8253的计数器0每10ms请求一次中断,工作于模式3;8255的A端口控制交通灯。

初始化程序:

DATA SEGMENT 

     LED  DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H       ;存放七段代码表

           DB  7FH,6FH,77H,7CH,39H,5EH,79H,71H        

D1      EQU 10H

D2      EQU 200H            ;8255A端口A

EA   EQU 200H               ;8259端口地址

EE   EQU 203H

CONTROL EQU 20bH          ;8253端口地址

COUNT0  EQU 208H 

COUNT1  EQU 209H                  

COUNT2  EQU 20aH

Z8279    EQU       222H

D8279    EQU       220H

LEDMOD   EQU       00   ;左边输入,八位显示外部译码八位显示

LEDFEQ   EQU       38H  ;扫描频率

DATA ENDS

CODE SEGMENT

    ASSUME CS:

CODE,DS:

DATA

CODE   SEGMENT

      ASSUME CS:

CODE

CONT    DB 0

CONT1    DB 0

CONT2    DB 0

BKSD    DB 0

BKAD    DB 0

BKDA    DB 0

TEMP    DB 0

;*******************************************

START:

 

MOV AX,0

MOV DS,AX

MOV AX,OFFSET IRQ0

ADD AX,2000H

MOV SI,0FH*4

MOV [SI],AX

MOV AX,0

MOV [SI+2],AX

IN AL,218H

AND AL,7FH

OUT 219H,AL

CLI

MOV AL,80H        ;初始化8255

OUT EE,AL

MOV AL,00

OUT EA,AL

MOV AL,0f0H

OUT EA,AL

MOV   DX,218H      ;8259初始化

MOV   AL,00010010b

OUT   DX,AL

MOV   AL,08H

MOV   DX,219H

OUT   DX,AL

MOV     DX,203H    ;设置为全输出

MOV     AL,80H

OUT     DX,AL

MOV     DX,200H

MOV     AL,0ffh

OUT     DX,AL       ;清LED

MOV     DX,200H     ;全红

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1