十字路口交通灯实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宿迁学院
微机原理程序设计
课程考核报告
班级:11计本2班
学号:***********
*名:***
得分:
目录
一.题目要求及设计方案-------------------------------1二.原理----------------------------------------------2三.电路图--------------------------------------------2四.详细设计------------------------------------------6五.流程图--------------------------------------------7六.源程序--------------------------------------------8七.设计及分析结果----------------------------------11八.设计过程中出现的问题及解决方法-------------11 九.心得体会-----------------------------------------12十.参考资料-----------------------------------------12
一.题目要求及方案分析
现如今,随着人口和汽车的日益增长,城市交通日益拥挤,人们的安全问题也日益重要。
因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。
交通信号灯常用于十字路口,用来控制车的流量,提高交叉口车辆的通行能力,减少交通事故。
有了交通灯人们的安全出行有了很大的保障。
自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化、科学化、简便化。
尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可缺少的工具和手段,这些为交通灯控制电路的设计提供了一定的技术基础。
本设计通过采用数字电路对交通灯控制电路的设计,提出使交通灯控制电路用数字信号自动控制十字路口两组红、黄、绿交通灯的状态转换的方法,指挥各种车辆和行人安全通行,实现十字路口交通管理的自动化。
因此,在本次课程设计里,将以微机编程与硬件结合的设计方法为基础来实现设计交通控制信号灯。
本实验设计目的是培养微机编程与硬件结合的能力,掌握交通信号灯控制电路的设计方法。
一.原理
此方案是通过并行接口芯片8255A和8086计算机的硬件连接,来实现十字路口交通灯的模拟控制。
二.电路图
1.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.
三.详细设计
四.流程图
六.源程序:
inport1 equ 0ff00h-280h inport1a equ inport+280h inport1c equ inport+282h inport1ct equ inport+283h
inport equ 0ff00h-280h inporta equ inport+288h inportc equ inport+28ah inportct equ inport+28bh code segment
assume cs:code
start:xor ax,ax
xor dx,dx
mov al,80h
mov dx,inportct
out dx,al
mov al,24h;全红
mov dx,inportc
out dx,al
mov al,09h
mov dx,inporta
out dx,al
call delay
mov al,80h
mov dx,inport1ct
out dx,al
mov al,24h;全红
mov dx,inport1c
out dx,al
mov al,09h
mov dx,inport1a
out dx,al
call delay
lop:
mov al,09h;东西红,南北绿mov dx,inportc
out dx,al
mov al,09h
mov dx,inporta
out dx,al
call delay
mov al,64h;东西绿,南北红mov dx,inport1c
out dx,al
mov al,02h
mov dx,inport1a
out dx,al
call delay
mov al,09h;东西红,南北绿mov dx,inportc
out dx,al
mov al,09h
mov dx,inporta
out dx,al
call delay
mov al,0a4h;东西黄,南北红mov dx,inport1c
out dx,al
mov al,04h
mov dx,inport1a
out dx,al
call delay
mov al,64h;东西绿,南北红mov dx,inportc
out dx,al
mov al,02h
mov dx,inporta
out dx,al
call delay
mov al,09h;东西红,南北绿mov dx,inport1c
out dx,al
mov al,09h
mov dx,inport1a
out dx,al
mov al,64h;东西绿,南北红mov dx,inportc
out dx,al
mov al,02h
mov dx,inporta
out dx,al
call delay
mov al,12h;东西红,南北黄mov dx,inport1c
out dx,al
mov al,09h
mov dx,inport1a
out dx,al
call delay
jmp lop
delay proc near
mov bp,8fffh
x2:mov bx,0ffffh
x1:dec bx
jnz x1
dec bp
jnz x2
ret
delay endp
code ends
end start
七.设计结果及分析
(1) 本电路没有设置显示倒计时的七段LED数码管,如果应用到街道上,不利于司机、行人把握
(2)在上机调试中发现,由于此软件延时的时间均为估算时间,不是特别准确,对于交通要求特别高的地方不宜采用。
如果是放到一个大的交通灯系统中,会影响到各个交通灯的运行时间,可能整个系统对交通的指挥调度会大大偏离理论计算,不能有效地防止和消除交通堵塞现象;
(3)当出现紧急情况,在特种车(如消防车、救护车)正要通过时,这种编程方式就不能完成;
但是,可以看到以上方案的一般性,只要将程序里的数据排列或规律稍加修改就可应用到任何一个路口的某一个方向上的交通灯上了,可移植性很强。
八.设计过程中出现的问题及解决方法
在整个设计的过程中,我们遇到了很多问题,大部分是以前没有弄明白的东西,在遇到问题以后,通过老师们的指导和同学们的相互帮助,这些问题基本上都得到了圆满的解决,主要的问题有以下几处:
1.在设计中,对偏移量没有太深刻的理解,没有在每个子程序中对偏移量进行声明,通过调试尝试后,发现了错误并进行了修改,使程序能够正常的运行。
3.在调试程序时,发现JMP语句只能跳转在20行以内,通过修改,加入中断,使程序通过了编译。
4.在对LED接线时,起初没有考虑到对x1-x4的接线,通过学习理解了x1-x4是对LED每个数码管的控制,重新对程序进行修改,把8255A的C口低四位做输出与x1-x4连接,用于选择控制对每一位LED的显示。
5.在延时程序的设计中,起始打算每隔5ms每个LED亮一次,给人视觉上感觉是同时亮的,但是效果并不好,灯管亮度不一样,经过尝试分析后,每隔0.5ms延时一次效果更佳。
九.心得体会
在这一周半的微机原理课程设计里,我们小组设计的是十字路口交通灯模拟实验,在整个实验过程中我们遇到了许多问题比如开始检查程序认为没有错误而且编译也通过了,但是始终倒计时不对,后来通过检查发现TIME初值赋错了,致使在后面取值取错使程序不能正常运行,但最后通过我们的努力把交通灯最基本的功能实现了,也从中对8252和8255有了进一步的了解。
在我们小组,我通过彼此的交流合作,我得到了很大的突破,学会了很多芯片的熟悉应用,很感谢老师给我的这次机会,也很感谢同学的帮助,我很开心。
十.参考资料
《微机原理及接口技术》
《汇编语言程序设计》
百度文库、百度百科。