8255交通灯Word格式文档下载.docx

上传人:b****1 文档编号:3476548 上传时间:2023-05-01 格式:DOCX 页数:25 大小:242.40KB
下载 相关 举报
8255交通灯Word格式文档下载.docx_第1页
第1页 / 共25页
8255交通灯Word格式文档下载.docx_第2页
第2页 / 共25页
8255交通灯Word格式文档下载.docx_第3页
第3页 / 共25页
8255交通灯Word格式文档下载.docx_第4页
第4页 / 共25页
8255交通灯Word格式文档下载.docx_第5页
第5页 / 共25页
8255交通灯Word格式文档下载.docx_第6页
第6页 / 共25页
8255交通灯Word格式文档下载.docx_第7页
第7页 / 共25页
8255交通灯Word格式文档下载.docx_第8页
第8页 / 共25页
8255交通灯Word格式文档下载.docx_第9页
第9页 / 共25页
8255交通灯Word格式文档下载.docx_第10页
第10页 / 共25页
8255交通灯Word格式文档下载.docx_第11页
第11页 / 共25页
8255交通灯Word格式文档下载.docx_第12页
第12页 / 共25页
8255交通灯Word格式文档下载.docx_第13页
第13页 / 共25页
8255交通灯Word格式文档下载.docx_第14页
第14页 / 共25页
8255交通灯Word格式文档下载.docx_第15页
第15页 / 共25页
8255交通灯Word格式文档下载.docx_第16页
第16页 / 共25页
8255交通灯Word格式文档下载.docx_第17页
第17页 / 共25页
8255交通灯Word格式文档下载.docx_第18页
第18页 / 共25页
8255交通灯Word格式文档下载.docx_第19页
第19页 / 共25页
8255交通灯Word格式文档下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

8255交通灯Word格式文档下载.docx

《8255交通灯Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《8255交通灯Word格式文档下载.docx(25页珍藏版)》请在冰点文库上搜索。

8255交通灯Word格式文档下载.docx

数理与信息工程学院07计算机专升本孙斌

指导教师:

余水宝

第1节引言

近年来,随着科技的迅猛发展,单片机在各行各业中的应用不断扩张和深入。

与此同时,也带动了传统控制、检测等各项技术的日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但只有单片机方面的知识仍然是不够的,还应根据具体的硬件结构,软硬件结合,这样才能设计制作出具有相应的基本应用功能的系统,尔后再在此基础上不断完善,使系统更加趋于成熟。

在单片机的诸多实际应用系统中,交通红绿灯的应用系统设计是较早和较为普遍及广泛的。

相信通过对交通灯控制系统的设计,对于提高自身的软硬件能力,尤其是单片机的实际应用能力会有相当大的裨益与收获。

1.1交通灯控制系统概述

当今社会,红绿灯普遍存在于各个街道路口,为疏导川流不息的交通车辆起着不可忽略的重要作用。

交通红绿信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故的发生有着明显效果。

红绿信号灯的含义为:

绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。

左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行;

红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。

本交通灯控制系统,由于器材等原因的限制,以红绿两色灯的亮灭控制为主要研究对象,但其仍然具有较强的实用性且操作简单、扩展功能强。

1.2本设计的主要任务

由于器材等原因的限制,本设计的主要任务是利用可编程接口芯片8255A、8523和中断控制器8259设计一个基于单片机的交通灯控制系统,要求能在TDN86/51实验箱和PC机上,根据交通灯的实际亮灭规律成功的对其进行控制。

根据实验实际情况,将交通灯的亮灭规律定义如下:

设有一个十字路口,1、3为南,北方向,2、4为东,西方向,初始态为1、3路口的绿灯亮,2、4路口的红灯亮,数码显示管开始倒计时,1、3路口方向通车。

数码显示管的数值为零后,1、3路口的绿灯熄灭,1、3路口的红灯亮,同时2、4路口的绿灯亮,数码显示管重新置入初值,2、4路口方向开始通车。

数码显示管的数值为零后,2、4路口的绿灯熄灭,再切换到1、3路口方向。

之后,重复上述过程。

1.3主要设计思路

在TDN86/51实验箱上完成硬件电路的搭建,PC机上完成程序的编写,调试。

用8088做CPU,8253做定时器,8255做LED和数码显示管的接口芯片,8259做中断控制器。

数码显示管的初值定为60秒,8253定时时间为1秒,定时时间到引起中断,执行中断服务程序。

在中断服务程序中,检查数码显示管的数值是否为零,若为零,则改变1、3和2、4交通灯的状态,数码显示管置初值;

否则,数码显示管当前值减一,交通灯状态不变。

第2节系统部分主要硬件设计及原理

在本交通灯控制系统设计过程中,用到了8255(可编程并行通信接口芯片),8259(可编程中断控制器),74LS373(地址锁存器),74LS245(双向数据传送器),8284(时钟发生器),和8253(定时计数器)。

用8088做CPU,用8253做定时器,8259做中断控制器。

2.1各芯片间的关系及原理

8253的OUT0输出到8259的IRQ0上,8259的INT发出中断请求信号到8088的INTR,8088的

(低电平有效)发出中断响应信号给8259的

,用8255来连接数码显示管的接口芯片和发光二级管,8088CPU数据信号和地址信号通过8282,8286发送出去,用32K的62256存储器来存储这些程序和数据。

地址通过138译码器进行译码。

2.2138译码器地址译码的设计原理

图2-1138译码器地址译码的设计原理

译码器有3个控制端,分别为G(高电平有效),

(低电平有效),

(低电平有效),当G=1,GA和GB全为0时,译码器处于工作状态。

根据8255的端口号:

60H,61H,62H,63H,8259的端口地址:

20H,21H。

8253的端口号:

40H,41H,42H,43H,分别写出他们的16位二进制表示形式,可观察出从A7——A15及A2——A3都是0,连接到或门上。

A4,A5,A6位中的数是变化的,分别接到A,B,C三个端口中。

Y2的端口号为20H,21H,所以与8259的

(低电平有效)相连,Y4与8253的

(低电平有效)相连,Y6与8255的

相连。

2.3各接口芯片引脚的介绍及其功能

8088CPU包括16条数据线和20条地址线,和其他的控制信号共同构成了40个引脚的双列直插式封装结构。

它有两种工作方式:

最大模式和最小模式。

在本设计中采用了最小模式。

由于8088的外形数据总线只需8条,因此分时复用地址数据总线只有AD7——AD0,而A1——A8专门用来传送地址。

在T1状态下,复位A16——A19通过8282地址锁存器输入到存储器中,T2——T4状态下,复用信号AD0——AD7通过8282输入到存储器中,A8——15直接输入到存储器中。

RD(低电平有效)读信号,三态输出,表示当前CPU正在读存储器或I/O端

WR(低电平有效)写信号,三态输出,表示当前CPU正在写存储器或I/O端口。

M/IO存储器或I/O端口访问信号,当它为高电平时,表示当前CPU正在访问I/O端口;

为低电平时,表示当前CPU正在访问存储器。

READY准备就绪信号,外部输入,高电平有效。

表示CPU访问的存储器或I/O端口已经为传送做好准备。

INTR中断请求信号,由外部输入,电平触发,高电平有效,当它有效时,表示外部向CPU发出中断请求。

CPU在每个指令的最后一个时钟周期对它进行测试。

INTA(低电平有效)中断响应信号,外部输入,用来响应外部发来的INTR信号,在中断响应周期中,可作为读选通信号。

NMI不可屏蔽中断请求信号,由外部输入,边沿触发,正跳沿有效,CPU一旦测试到NMI请求有效,待当前指令执行完就自动从中断入口地址表中找到类型2中断服务程序的入口地址,并去执行。

RESET复位信号,由外部输入,高电平有效。

它至少保持4个时钟周期。

CPU接受到该信号后,停止进行的操作,并将标志寄存器、段寄存器、IP和指令队列等复位到初始状态。

ALE地址锁存允许信号,由外部输入,高电平有效,它可作为8283的选通信号。

DT/R数据发送/接受控制信号,在该设计中用来控制数据的传送方向。

当它为高电平时,表示数据从CPU向外部输出,为低电平时,表示数据从外部向CPU输入。

DEN(低电平有效),数据允许信号,三态输出。

在最小模式下用来做数据收发器的选通信号。

CLK主时钟信号,由8284时钟发生器输入。

SS0总线高字节有效信号,三态输出,低电平有效,它与DT/R,IO/M一起表示8088在最小模式下的工作周期状态。

8255是可编程并行通信接口芯片,一共有40个引脚。

与外设相连接的有:

PA7——PA0:

A口数据信号线,在该设计中连接数码显示管的位码。

PB7——PB0:

B口数据信号线,在该设计中连接数码显示管的段码。

PC7——PC0:

C口数据信号线,在设计中连接红绿灯的D0——D7接口。

与CPU相连的RESET:

复位信号,高电平有效。

当该信号来到时,所有内部寄存器都被清除。

D7——D0是8255A的数据线,和系统数据总线相连。

CS:

片选信号,低电平有效。

A1、A0为端口选择信号,8255A内部有3类数据端口和1个控制端口,共4个端口,当A1,A0为00时,选中A端口;

为01时,选中B端口;

为10时,选中C端口;

当为11时,选中控制口。

其地址分别为:

60H,61H,62H,63H。

8259是可编程中断控制器(PCI),又称优先级控制器具有+5V电源供电,可与其它8259A芯片级联开扩大中断功能。

在该设计中,为了实现中断和定时的功能,8259的IRQ7与8253的OUT2产生级联,IRQ0与8253中的IRQ0产生级联。

IR0——IR7与外部设备连接的中断请求输入引脚。

D0-D7,WR(低电平有效),RD(低电平有效),INTA(低电平有效),INT。

与CPU连接的数据通路和控制信号。

用于8259A级联的引脚CAS0——CAS2,SP/EN。

端口地址选择信号CS,A0。

8282地址锁存器,具有8位数据输入端DI7——DI0及8位数据输出端DO7——DO0,当STB端的选通脉冲变为低电平时,DI0——DI7的数据被锁存起来,当输出允许信号OE为低电平时,数据才会出现在8282的数据输出端DO7——DO0,否则,三态缓冲器的输出DO7——DO0处于高阻状态,在8086/8088系列微机中,8282/8283用来作为地址锁存器,用ALE信号作为选通脉冲STB输入。

这样才能在总线周期的第一个时钟周期经过总线将地址信息锁存于8283中,从而保证了在整个总线周期内存储器和I/O接口芯片都能获得稳定的地址信息。

8253是计数/定时控制器,一共有三个计数器。

每个计数器都有三个引脚。

CLK脉冲输入引脚:

计数器对该引脚输入的脉冲进行计数。

它的输入脉冲可以是任何脉冲提供的。

GATE门控脉冲输入引脚:

这是外部控制计数器工作的脉冲输入引脚,当GATEW为0时禁止计数器工作,为1时允许工作。

OUT计数到0/定时时间到输出引脚:

当计数到0时,该引脚输出。

在不同的工作方式下,输出不同形式的信号。

8284时钟发生器:

8284除了为CPU和系统提供时钟信号外,还提供经时钟同步的复位信号RESET和就绪信号READY。

X1,X2晶体输入端,它连接外接晶体的接线端,晶体频率是CPU时钟频率的3倍。

CLK处理器时钟(输出)它用作8086/8088CPU以及直接与处理器局部总线相连的器件的时钟信号或定时信号。

CLK信号频率是晶体频率的1/3,其高电平为4.5V,用于驱动MOS器件。

2.48255与数码显示管的连接如下图所示

图2-28255与数码显示管的连接图

说明:

8255数码显示管及二极管的连接:

8255中B口分别连接到数码显示管的段码a,b,c,d,e,f上,A口分别连接到数码显示管的位码x1,x2,x3,x4中,C口连接到发光二极管的PC0——PC6(A口和B口和数码显示管的连接可根据实际程序设计改变)。

2.58253和8259的电路连接图如下

图2-38253和8259的电路连接图

8253中OUT2连接到8259的IR7中,产生中断,发送中断类型码到8088中,8088根据中断类型码从存储器中找到中断向量,读取中断向量程序,判断数码显示管中的数值是否为0,若为0,则红、绿等交替;

否则,数值-1。

定时1s,产生中断请求,如此反复,实现了设计要求。

第3节系统软件设计

本交通灯控制系统选用汇编语言编写主程序以及各芯片调试子程序。

并努力做到:

界面友好、操作方便;

实现功能要求;

模块功能明确。

3.1主程序流程图

图3-1主程序流程图

;

8259A初始化,其中地址为20H,21H

moval,13h;

设置ICW1,单片,上升沿触发,需要设置ICW4

out20h,al;

ICW1写入8259A的偶地址中

moval,08h;

设置ICW2,中断类型号的基值(即IR0的类型号)为08H

out21h,al;

ICW2写入8259A的奇地址中

由于是单片8259,所以不需要设置ICW3

moval,09h;

设置ICW4,非自动结束,缓冲方式,完全嵌套

ICW4写入8259A的奇地址中

moval,6fh;

设置OCW1,开放4和7的中断请求口

OCW1写入8259A的奇地址中

8255A初始化,其中地址A口:

60H,B口:

61H,C口:

62H,控制口:

63H

moval,80h;

设置8255A工作方式控制字,A、B口都为方式0,输出

out63h,al

moval,0ffh

out61h,al

8253初始化,其中地址为通道0:

40H,通道1:

41H,通道2:

42H,控制寄存器:

43H

moval,35h;

设置8253控制字,通道0为工作方式2,BCD计数,先读写低字节,后读写高字节

out43h,al

moval,00h;

设置计数通道0的计数初值,先送低字节

out40h,al

moval,50h;

计数通道0的计数初值高字节

moval,0b1h;

设置8253控制字,通道2为工作方式0,BCD计数,先读写低字节,后读写高字节

moval,37h;

把计数初值写入通道2,先送低字节

out42h,al

moval,02h;

计数通道2的计数初值高字节

sti;

初始化完毕,开中断

3.2中断服务程序流程

图3-2中断服务程序流程图

中断服务程序

irq7:

pushax;

保护现场

pushcx

moval,37h;

out42h,al

moval,02h;

out42h,al

xordi,di

movcx,2

movdi,offsetnumber

l5:

cmpwordptr[di],0;

先比较个位再比较十位

jzl7

decwordptr[di]

jmpexit

l7:

adddi,2

cmpwordptr[di],0

jnel3

movsi,offsetaa;

将aa的地址送si;

moval,byteptr[si];

内容送al

out62h,al

notal;

先输出再取反,实现红绿灯的交替

movbyteptr[si],al;

重新对al赋值

movwordptr[di],6

jmpexit

l3:

subdi,2

movwordptr[di],9

cmpwordptr[di],0

jzl4

decwordptr[di]

l4:

movwordptr[di],5

loopl5

exit:

popcx;

恢复现场

popax

moval,20h

out20h,al;

发中断结束命令

sti;

开中断,因为系统在响应中断时,除了保护断点外,还自动关闭了中断允许位

iret;

中断返回

3.3实现红绿灯交替的流程图

图3-3红绿灯交替的流程图

设计思路:

1、3为南,北方向,2、4为东,西方向,初始态为4个路口的红灯全亮。

之后,1、3路口的绿灯亮,2、4路口的红灯亮,数码显示管开始倒计时,1、3路口方向通车。

3.4源程序清单

用8253定时时钟,8259A作中断,8255传送数据给4位的数码显示管

datasegment

tabledb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

numberdw4dup(0);

开辟了4个字空间,用来存放四个数码显示管要显示的数字

aadb0c3h

dataends

stacksegmentstack

dw64dup(?

stackends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

cli;

关中断开始初始化

把中断服务程序的入口地址写入中断向量表中,使用的中断类型号为0FH

pushds

xorax,ax

movsi,4*0fh;

找到该中断类型号在中断向量表中的首地址

movax,offsetirq7

addax,2000h

movwordptr[si],ax;

把中断服务程序的偏移地址放入低字中

movax,0

movwordptr[si+2],ax;

把中断服务程序的段地址放入高字中

popds

8259A初始化,其中地址为20H和21H

moval,13h;

moval,08h;

out21h,al;

moval,09h;

moval,6fh;

moval,80h;

out63h,al

moval,0ffh

out61h,al;

B口屏蔽

moval,35h;

设置8253控制字,通道0为工作方式2,BCD计数,先读写低字节,后读写高字节(方式2不用写初值)

out43h,al

moval,00h;

out40h,al

moval,50h;

moval,0b1h;

out43h,al

4位数码显示管动态显示,并等待中断

moval,0fh

out62h,al

calldelay

again:

xorbx,bx;

将bx清零

movcx,02h

movah,0feh

next:

movsi,offsettable;

用si来存放段码

addsi,[number+bx]

moval,byteptr[si];

把段码送B口

cmpcx,02h

jzl6;

结果相等则转移

oral,80h;

置1,控制小数点亮

l6:

out61h,al

moval,ah;

把位码送A口

out60h,al

calldelay;

延时2ms

moval,0ffh;

关闭显示管

rolah,1;

获得下一个位码

addbx,2;

指向下一个要显示的段码

movsi,[number+bx]

moval,byteptr[si]

subbx,2

loopnext

jmpagain

pushax;

先比较个位,再比较十位

movsi,offsetaa

moval,byteptr[si]

notal

延时子程序

delay:

pushcx

movcl,0fh

l2:

movch,0fh

l1:

decch

jnzl1

deccl

jnzl2

popcx

ret

codeends

endstart

第4节总结

本系统的实现,根本上得益于老师教授的各方面知识,因为只有拥有老师教授的这些知识的基础上,本人才能进一步思考和摸索,才会有本系统的实现。

所以,在此向老师表示感谢。

通过对此次本交通灯控制系统的设计,使得自身对

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2