基于8086的交通灯设计.docx
《基于8086的交通灯设计.docx》由会员分享,可在线阅读,更多相关《基于8086的交通灯设计.docx(12页珍藏版)》请在冰豆网上搜索。
基于8086的交通灯设计
《微型计算机原理与应用》
课程设计报告
班级
学生
联系
学号
完成日期
2013.12.30
指导老师
一、概述
1.题目
2.需求分析
3.设计要求
二、设计过程
1.设计过程简单分析
2.硬件原理
3.8255芯片资料
三、程序设计
1.流程图
2.程序代码
四、总结
附录
一、概述
1、题目:
基于8086的交通灯设计
2、需求分析:
随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的
作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基于微机原理与接口技术的简单应用。
运用所学的微机原理和接口技术知识完成交通灯系统。
通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了现代城市交通控制与管理问题的现状,结合交通的实际情况阐述了交通灯控制系统的工作原理,给出了一种简单实用的交通灯控制系统的硬件、软件电路设计方案。
该系统适用于单主干道的十字路口。
现假定其主干道为东西方向,次干道为南北方向。
3、设计要求
这次课程设计的题目是交通灯控制器的设计与实现,主要是模拟十字路口的红绿灯,如图1-1所示。
交通灯控制器的设计与实现主要是通过编写汇编语言程序利用8255A的A口灯的亮与灭进行控制。
首先,要了解的是8255A是如何工作的,包括它的A口、B口、C口和控制端口是如何写数据的,还包括芯片的初始化等。
由于只有16个发光二极管,所以还得弄清楚是每个发光二极管所代表的灯的颜色及方向。
最后要在实验室通过一个软件进行调试,调试通过后即可看到设计的结果。
要求:
图1-1十字路口交通灯
二、设计过程
1、设计过程简单分析
红,黄,绿灯可分别接在8255的A口上,灯的亮灭可直接由8255输出0,1控制。
延时及闪烁由软件编程实现。
2、硬件原理
设计电路如下:
由上述电路容易知道红,黄,绿灯分别接在8255的A口上,端口A地址为8000H,可以通过控制8255端口A输出的高低电平来控制灯的亮灭,灯的闪烁和延时可直接通过软件的延时程序解决,这样可以大大简化电路的设计。
3、主要芯片资料
8255介绍
8255的部结构
8255A是一个40引脚的双列直插式集成电路芯片
按功能可把8255A分为三个逻辑电路部分,即:
口电路、总线接口电路和控制逻辑电路。
(1)口电路
8255A共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。
而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。
数据传送中A口所需的控制信号由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起称之为A组;同样理由把B口和C口低位部分(PC3~PC0)合在一起称之为B组。
(2)总线接口电路
总线接口电路用于实现8255A和单片微机的信号连接。
其中包括:
(a)数据总线缓冲器
数据总线缓冲器为8位双向三态缓冲器,可直接和80C51的数据线相连,与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。
(b)读/写控制逻辑
与读写有关的控制信号有
CS—片选信号(低电平有效)
RD—读信号(低电平有效)
WR—写信号(低电平有效)
A0、A1—端口选择信号。
8255A共有四个可寻址的端口(即A口、B口、C口和控制寄存器),用二位地址编码即可实现选择。
参见下表。
RESET—复位信号(高电平有效)。
复位之后,控制寄存器清除,各端口被置为输入方式。
读写控制逻辑用于实现8255A的硬件管理:
芯片的选择,口的寻址以及规定各端口和单片微机之间的数据传送方向。
(c)控制逻辑电路
控制逻辑电路包括A组控制和B组控制,合在一起构成8位控制寄存器。
用于存放各口的工作方式控制字
8255A工作方式及数据I/O操作
(1)8255A的工作方式
8255A共有三种工作方式,即方式0、方式1、方式2.
(a)方式0基本输入/输出方式
方式0下,可供使用的是两个8位口(A口和B口)及两个4位口(C口高4位部分和低4位部分)。
四个口可以是输入和输出的任何组合。
方式0适用于无条件数据传送,也可以把C口的某一位作为状态位,实现查询方式的数据传送。
(b)方式1选通输入/输出方式
A口和B口分别用于数据的输入/输出。
而C口则作为数据传送的联络信号。
具体定义见表7–2。
可见A口和B口的联络信号都是三个,如果A或B只有一个口按方式1使用,则剩下的另外13位口线仍然可按方式0使用。
如果两个口都按方式1使用,则还剩下2位口线,这两位口线仍然可以进行位状态的输入输出。
方式1适用于查询或中断方式的数据输入/输出。
(c)方式2双向数据传送方式
只有A口才能选择这种工作方式,这时A口既能输入数据又能输出数据。
在这种方式下需使用C口的五位线作控制线,信号定义如表7–2所示。
方式2适用于查询或中断方式的双向数据传送。
如果把A口置于方式2下,则B口只能工作于方式0.
(2)数据输入操作
用于输入操作的联络信号有:
STB(StroBe)—选通脉冲,输入,低电平有效。
当外设送来STB信号时,输入数据装入8255A的锁存器。
IBF(InputBufferFull)—输入缓冲器满信号,输出,高电平有效。
IBF信号有效,表明数据已装入锁存器,因此它是一个状态信号。
INTR(INTerruptRequest)—中断请求信号,高电平有效,当IBF数据输入过程:
当外设准备好数据输入后,发出信号,输入的数据送入缓冲器。
然后IBF信号有效。
如使用查询方式,则IBF即作为状态信号供查询使用;如使用中断方式,当信号由低变高时,产生INTR信号,向单片微机发出中断。
单片微机在响应中断后执行中断服务程序时读入数据,并使INTR信号变低,同时也使IBF信号同时变低。
以通知外设准备下一次数据输入。
(3)数据输出操作
用于数据输出操作的联络信号有:
ACK(ACKnowledge)—外设响应信号输入,低电平有效。
当外设取走输出数据,并处理完毕后向单片微机发回的响应信号为高,信号由低变高(后沿)时,中断请求信号有效。
向单片微机发出中断请求。
OBF(OutputBufferFull)——输出缓冲器满信号,输出,低电平有效。
当单片微机把输出数据写入8255A锁存器后,该信号有效,并送去启动外设以接收数据。
INTR—中断请求信号,输出,高电平有效。
数据输出过程:
外设接收并处理完一组数据后,发回ACK信号。
该信号使OBF变高,表明输出缓冲器已空。
如使用查询方式,则OBF可作为状态信号供查询使用;如使用中断方式,则当ACK信号结束时,INTR有效,向单片微机发出中断请求。
在中断服务过程中,把下一个输出数据写入8255A的输出缓冲器。
写入后OBF有效,表明输出数据已到,并以此信号启动外设工作,取走并处理8255A中的输出数据。
表7–28255AC口联络信号定义
三、程序设计
1、流程图
初始化8255
东西绿灯亮,南北红灯亮,其他灭
用延时程序延时
东西绿灯闪烁,南北红灯亮,其他灭
东西黄灯亮,南北红灯亮,其他灭
延时
东西红灯亮,南北绿灯亮,其他灯灭
延时
东西红灯亮,南北绿灯闪烁,其他灯灭
东西红灯亮,南北黄灯亮,其他灯灭
用延时程序延时
循环
2、程序代码
.MODELSMALL
.8086
.stack
.code
.startup
movdx,8006h
movax,80h
outdx,ax
movdx,8000h
movax,0ffh
outdx,ax;8255初始化
s1:
movax,0beh
outdx,ax
calldelay5
movcx,6
lp:
movax,0bfh
outdx,ax
calldelay05
movax,0beh
outdx,ax
calldelay05
looplp
movax,0bdh
outdx,ax
calldelay3
movax,0ebh
outdx,ax
calldelay5
movcx,6
lp1:
movax,0fbh
outdx,ax
calldelay05
movax,0ebh
outdx,ax
calldelay05
looplp1
movax,0dbh
outdx,ax
calldelay3
jmps1
delay5procnear
pushcx
movbx,250
dy1:
movcx,5882
dy2:
loopdy2
decbx
jnzdy1
popcx
ret
delay5endp
delay05procnear
pushcx
movbx,25
dy3:
movcx,5882
dy4:
loopdy4
decbx
jnzdy3
popcx
ret
delay05endp
delay3procnear
pushcx
movbx,150
dy5:
movcx,5882
dy6:
loopdy6
decbx
jnzdy5
popcx
ret
delay3endp
.data
END
四、总结
本次课程设计是要设计一个交通灯系统,主要功能如上已有细述。
在本次对交通灯的设计过程中以此来加深对微机接口技术的理解,提高了自己的动手能力。
首先着手对硬件电路的设计,本次课程设计主要采用了8255A接口电路。
由于对各个芯片不熟悉,通过课本了解到了它们的引脚及功能、工作方式、部结构和控制字。
然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,在编写过程中遇到了很多问题。
对芯片的不了解也导致编程的很多的问题,要么灯都不显示,要么灯显示不全,再要么红灯绿灯时间分配不合理。
最后经过一段时间的研究,查阅了很多资料并和同学讨论后终于一一解决。
最后,再说两句,由于自己太晚才开始做这个课程设计,导致很多功能没有实现好,例如想通过8253来对交通灯进行定时计数,用七段显示数码管显示倒计时,但是最后都由于时间紧而选择软件实现延时闪烁。
不管怎样,经过这次课程设计,我获益颇多。
将微机原理这门课程中的理论与实践相结合起来,对芯片的功能也有了进一步认识理解。
附录
电路原理图:
元件清单:
8086芯片1个
8255芯片1个
74ls373锁存器2个
74ls138译码器1个
Led灯12个
参考文献:
《8086实验指导书》王荣辉,晓华编著
《微型计算机原理及应用》学坚,朱定华编著