基于8255A的应用交通灯的设计综述.docx
《基于8255A的应用交通灯的设计综述.docx》由会员分享,可在线阅读,更多相关《基于8255A的应用交通灯的设计综述.docx(15页珍藏版)》请在冰豆网上搜索。
基于8255A的应用交通灯的设计综述
《微型计算机技术》
课程设计报告
题目:
基于8255A的应用—交通灯的设计
专业名称:
通信工程
班级:
学号:
姓名:
2013年1月
基于8255A的应用—交通灯的设计
胡晋
电子信息工程学系
摘要:
随着微型计算机技术的飞速发展。
为此,基于8255芯片原理来实现交通灯的的控制是这次设计基础。
因为交通灯的控制可以分东西方向和南北方向两种,每种可用红、绿、黄三个灯进行交通管理,所以用8255芯片的PB口对六个交通灯进行控制。
通过8255芯片的PA口来控制交通灯状态的切换。
关键词:
交通灯;8255芯片;控制;开关
1设计要求、目的和内容
1.1设计要求
基于微型计算机技术,利用8255芯片的原理实现交通的的控制,即8255芯片的应用—交通灯的的设计。
1.2设计目的
掌握8255芯片方式0的编程方法,PC机及配套的接口电路实验装置的连接于调试,IC芯片:
8255A芯片的原理应用
1.3设计内容
采用8255芯片设计交通灯控制的接口方案,硬件电路的设计和连接,程序的编写和调试。
2设计原理
2.18255内部框图介绍
图18255A的内部结构图
数据总线缓冲器:
这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。
输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
三个端口A,B和C:
A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。
B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。
C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
A组和B组控制电路:
这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。
方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。
[2]对C口按位复位命令字可对C口的每一位实现置位或复位。
A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。
读写控制逻辑:
用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2.28255A的引脚及其功能
图28255A的引脚图
D0--D7:
三态双向数据线,与单片机数据总线连接,用来传送数据信息。
CS:
片选信号线,低电平有效,表示芯片被选中。
RD:
读出信号线,低电平有效,控制数据的读出。
WR:
写入信号线,低电平有效,控制数据的写入。
GND:
地线。
Vcc:
+5V电源。
PA0--PA7:
A口输入/输出线。
PB0--PB7:
B口输入/输出线。
PC0--PC7:
C口输入/输出线。
RESET:
复位信号线。
A1、A0:
地址线,用来选择8255内部端口。
2.38255控制字
图38255控制字
8255A的控制字是在编程时对8255芯片的初始化,主要是用来设计8255A的PA、PB、PC的输入和输出的设置。
2.48255A的
8255A有以下三种工作方式:
:
方式0:
基本输入/输出方式;
方式1:
选通输入/输出方式;
方式2:
双向选通输入/输出方式。
3方案的选取
目前设计交通灯的方案有很多,为此将进行方案的比较。
方案一:
CPLD是复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。
是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。
[3]为此利用PLC实现对交通灯控制系统的设计,通过编写Verilog语言代码来实现。
但是这种方案的硬件要求比较高。
方案二:
利用数电所学知识,将计数器(555定时器),译码器,与非门有机组合在一起,利用其输出的高低电平来控制LED灯的亮与灭,设计简单,但是时间不是很准确,精密度不高。
方案三:
利用所学的微机原理与接口技术知识,基于8255A的工作原理和8086控制芯片的组合来实现交通灯的设计,这种方案的硬件电路的设计简单(只需数据线的连接)和LED灯的连接,而且源代码使用的是汇编语言,编写简单。
基于以上的几种方案的对比,本次设计将采用方案三来实现交通灯的设计和控制。
4设计步骤
4.1设计思路
在一个十字路口如图4所示:
其中1、3为东、西方向,2、4为南、北方向。
初始化之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
当开关第一次按下时1、3路口的黄灯开始闪烁而绿灯熄灭;当开关第二次按下时1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。
当开关第三次按下时,2、4路口的黄灯开始闪烁而绿灯熄灭。
当开关第四次按下时,直接切换到初始化状态,之后重复上述过程。
图4交通灯十字路口示意图
基于以上的设计思路,本设计将利用8255芯片的PB口作为输出端与LED相连,作为LED的控制端口,PA口与开关相连,控制LED灯的切换。
因此将PB端口的PB7、PB6、PB5与东西方向的红灯、黄灯和绿灯相连接,PB3、PB2、PB1与南北方向的黄灯、绿灯和红灯相连接。
开关S0与PA5连接。
为此,便可得到如图5的流程图。
状态的初始化:
东西方向绿灯亮,南北方向的红灯亮30s
开关按下
东西方向的黄灯亮,同时南北方向红灯亮
开关按下
南北方向的绿灯亮,东西方向的红灯点亮
开关按下
南北方向的黄灯亮,东西方向红灯亮
开关按下
图5交通灯状态流程图
4.3源代码的编程
基于以上的设计思路,交通灯的状态有以下几种:
表一交通灯的控制图表
路口说明
东西路口
南北路口
开关
交通灯颜色
红
黄
绿
黄
绿
红
8255A接接
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
在交通灯状态转换时PB口的赋值
0
0
1
0
0
0
1
0
开
0
1
0
0
0
0
1
0
开
1
0
0
0
0
1
0
0
开
1
0
0
0
1
0
0
0
开
源程序代码:
数据端口和输入输出端口地址
L8255_CMDEQU2A3H;总数据端口地址
L8255_PAEQU2A0H;8255A的端口地址
L8255_PBEQU2A1H
L8255_PCEQU2A2H
8255A的初始化
MOVDX,L8255_CMD
MOVAL,90H;10010000,0方式,,PA输入,PB和PC口都为输出
OUTDX,AL
交通灯的初始化及开关的读入
MOVAL,22H;东西亮绿灯,南北两红灯
MOVDX,L8255_PB
OUTDX,AL
MOVDX,L8255_PA
INAL,DX
MOVBL,AL
MOVCL,0
开关状态的变换
PP:
MOVBL,AL
INCCL
CMPCL,1
JZSTY;STY程序是PB=42H,东西亮黄灯,南北亮红灯
CMPCL,2
JZHJ;HJ程序是PB=84H,东西亮红灯,南北亮绿灯
CMPCL,3
JZLWL;LWL程序是PB=88H,东西亮红灯,南北亮黄灯
CMPCL,4
JZZFB;ZFB程序是PB=22H,东西亮红灯,南北亮绿灯
JMPBJ
5调试及分析
打开湖北众友软件将源程序代码进行编译,连接和装载后便可选择全速运行,得其结果如下图6所示:
图6交通灯初始化状态
状态的初始化:
东西方向绿灯亮,南北方向的红灯亮,此时允许东西方向的车辆通行。
按下开关S0将得到下一个状态,如图7所示:
图7调试结果图
当按下开关时,此时交通灯的状态为:
东西方向黄灯亮,南北方向的红灯继续亮,此时东西方向的车辆仍然可以继续通行。
按下开关S0将得到下一个状态,如图8所示:
图8调试结果图
当再次按下开关时,此时交通灯的状态为:
东西方向红灯亮,南北方向的绿灯亮,此时南北方向的车辆可以通行。
按下开关S0将得到下一个状态,如图9所示:
图9调试结果图
当再次按下开关时,此时交通灯的状态为:
东西方向红灯亮,南北方向的黄灯亮,此时南北方向的车辆可以继续通行。
6调试结果的分析
从以上的调试结果可以看出,此次设计一共有四种状态,即东西亮绿灯,南北亮红灯,此时允许东西方向的车辆通行;当按下开关时,此时是东西亮黄灯,南北亮红灯,东西方向的车辆继续通行;再按下开关,此时是是东西亮红灯,南北亮绿灯,南北方向的车辆通行;当再次按下开关,此时是是东西亮红灯,南北亮黄灯,南北方向的车辆继续通行;这就是一个完整的周期,如果在按下开关,将回到初始状态,以此循环。
在于理论和实际是相符合的。
7心得体会
在此次课程设计过程中,我深深的了解了自己对微型计算机技术的不足之处,好多程序自己明明知道却写不出来。
也明白了自己想的与在仪器上运行出来的结果是那么有差别。
往往我自己觉得思路很清楚的情况下,但是运行出来的结果往往与我自己想的不一样,这可能就是人与机器的不同之处吧,而且我自己本身实力就不怎么好,有时候还会因为仪器的问题而出现不同的结果,弄的我自己都不知道是我编写的程序有问题还是仪器有问题。
浪费了不少时间。
附录
源程序代码
L8255_CMDEQU2A3H
L8255_PAEQU2A0H
L8255_PBEQU2A1H
L8255_PCEQU2A2H
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
BEGIN:
MOVCX,0FFH
SS:
LOOPSS
MOVDX,L8255_CMD
MOVAL,90H;10010000,0方式,PA输入,PB输出
OUTDX,AL
MOVAL,22H
MOVDX,L8255_PB
OUTDX,AL
MOVDX,L8255_PA
INAL,DX
MOVBL,AL
MOVCL,0
BJ:
MOVDX,L8255_PA
INAL,DX
CMPBL,AL
JNZPP
JMPBJ
PP:
MOVBL,AL
INCCL
CMPCL,1
JZSTY
CMPCL,2
JZHJ
CMPCL,3
JZLWL
CMPCL,4
JZZFB
JMPBJ
STY:
MOVAL,42H
MOVDX,L8255_PB
OUTDX,AL
JMPBJ
HJ:
MOVAL,84H
MOVDX,L8255_PB
OUTDX,AL
JMPBJ
LWL:
MOVAL,88H
MOVDX,L8255_PB
OUTDX,AL
JMPBJ
ZFB:
MOVCL,0
MOVAL,22H
MOVDX,L8255_PB
OUTDX,AL
JMPBJ
INT21H
CODEENDS
ENDBEGIN