微机交通灯课程设计报告Word文件下载.docx
《微机交通灯课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机交通灯课程设计报告Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
两个车道的车都应停止,
让紧急车辆通过。
因此如何合理高效地利用交通灯指示交通情况,是一个亟需解决的问题。
交通灯是采用计算机通过编写汇编语言程序控制的。
红灯停,绿灯行的交通规则。
广泛用于十字路口,车站,
码头等公共场所,成为人们出行生活中不可少的必需品,由于计算机技术的成熟与广泛应用,使得交通灯的功能多样化,远远超过老式交通灯,
交通灯的数字化给人们生产生活带来了极大的方便,而且大大地扩展了交通灯的功能。
诸如闪烁警示、鸣笛警示,时间程序自动控制、倒计时显示,所有这些,都是以计算机为基础的。
还可以根据主、次干道的交通状况的不同任意设置各自的不同的通行时间。
或者给红绿色盲声音警示的人性化设计。
现在的交通灯系统很多都增加了智能控制环节,比如对闯红灯的车辆进行拍照。
当某方向红灯亮时,此时相应的传感器开始工作,当有车辆通过时,照相机就把车辆拍下。
要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节交通灯。
因此,研究交通灯及扩大其应用,有着非常现实的意义》
2,8255A的工作原理
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---双向选通输入输出方式。
引脚信号
8255A的引脚如图7.5所示,分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。
D7~D0(databus):
三态、双向数据线,与CPU数据总线连接,用来传送数据。
(chipselect):
片选信号线,低电平有效时,芯片被选中。
A1,A0(portaddress):
地址线,用来选择内部端口。
(read):
读出信号线,低电平有效时,允许数据读出。
(write):
写入信号线,低电平有效时,允许数据写入。
RESET(reset):
复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。
PA7~PA0(portA):
A口输入/输出信号线。
PB7~PB0(portB):
B口输入/输出信号线。
PC7~PC0(portC):
C口输入/输出信号线。
VCC:
+5V电源。
GND:
电源地线。
3.实验程序流程
初始化
设置8255各口为输出
清LED
四灯全红延时
南北绿灯,东西红灯,延时
绿灯闪三次
南北黄灯,延时
南北红灯,东西绿灯,延时
东西黄灯,延时
4.电路原理图如下:
5.Pcb图:
6.程序代码:
;
-----------数码管-----------------------
PA55EQU0200H;
8255PA口地址
PC55EQU0202H;
8255PC口地址
P55CTLEQU0203H;
8255控制口地址
-----------LED灯----------------------
PB55EQU201H
D1EQU10H
D2EQU50H
DATASEGMENT
PBDB?
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
);
加大点
TOPEQULENGTHSTA
STACKENDS
-----------开始-----------------
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
START:
PUSHCS
POPDS
MOVDX,P55CTL;
设置8255口为输出口
MOVAL,80H;
8255控制字
OUTDX,AL
---------LED----------------------
MOVDX,204H
MOVAL,00H
OUTDX,AL;
MOVDX,PB55;
全红
MOVAL,0FH
MOVBX,7fH
CALLDLY
;
CALLBEGIN
CALLWRITE2;
调用数码管过程
BG:
MOVAL,96H;
南北绿,东西红
MOVBX,D2
调用程序前可能要堆栈子程序中要用到原来程序的某寄存器,调用后要恢复
CALLDJS;
计数
JMPXH1
MOVCX,03H
JNZXH1
XH1:
MOVAL,9FH;
绿灭
MOVBX,D1
绿亮
LOOPXH1
MOVAL,06H;
南北黄
MOVAL,69H;
南北红,东西绿
CALLDJS
MOVCX,03
XH2:
MOVAL,6FH
MOVAL,69H
LOOPXH2
MOVAL,09H
JMPBG
倒计时-----------------------------------
DJSPROCNEAR
PUSHDX
PUSHCX
PUSHAX
PUSHBX
BEGIN:
MOVAL,0
MOVCH,0
WRITE2:
MOVAH,AL
LEABX,LED;
LEA取偏移地址指令
XLAT;
XLAT:
字节查表转换;
把待查表格的一个字节内容送到AL累加器中;
在执行该指令前,应将TABLE先送至BX寄存器
MOVCL,8H;
分八位写一个LED
-----------164驱动---------------------------------
WRITE1:
MOVDX,PA55
PUSHAX
MOVDX,P55CTL;
利用8255PC5口控制DCLK,使DCLK产生一低电平到高电平的跳变
MOVAL,0AH;
PC5置“0”
OUTDX,AL
MOVAL,0BH;
PC5置“1”
OUTDX,AL
POPAX
RCRAL,1
DECCL
CMPCL,0
JNZWRITE1
CALLDELAY
MOVAL,AH
INCAL
INCCH
CMPCH,0AH;
循环10次
JBEWRITE2;
调用数码管过程
POPDX
POPCX
POPBX
RET
DJSENDP
JMPBEGIN
---------延时1S--------------------
DELAYPROCNEAR
PUSHCX
MOVBL,24
M2:
MOVCX,2810H
LOOP$
DECBL
JNZM2
POPCX
RET
DELAYENDP
---------------------------------
DLYPROCNEAR;
延时
DDD:
MOVCX,0FFFH
CCC:
LOOPCCC
DECBX
CMPBX,0
JNEDDD
DLYENDP
CODEENDS
-----------数码管编码----------------------
LED:
DB09H,01H,1FH,41H,49H,99H,0DH,25H,9FH,03H
9876543210
-------------------------------------------
ENDSTART
7.体会:
字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;
要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用“模糊控制”技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
本次课程设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。
此次实习可以说是获益匪浅。
通过查阅了很多资料,了解了许多汇编程序的思想,扩展了自己的视野,不再仅仅局限于书本中几条简短的程序,而且更重要的是明白写程序的态度:
仔细谨慎,精益求精。
在程序中添加了黄灯闪烁,更加醒目。
另外加入能够实现各路口绿灯显示时间不同,适应在主干道和支线路口中使用。
在系统加电调试中,针对一些问题,熟练掌握了根据原理分步测试,将错误之处缩小的最小范围内。
通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。
通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。
而且在设计中,把死板的课本知识变得生动有趣,激发了学习的积极性。
把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
以前对与计算机操作系统的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。