82558253交通灯模拟实验报告.docx
- 文档编号:12253488
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:20
- 大小:171.21KB
82558253交通灯模拟实验报告.docx
《82558253交通灯模拟实验报告.docx》由会员分享,可在线阅读,更多相关《82558253交通灯模拟实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
82558253交通灯模拟实验报告
8255-8253交通灯模拟实验报告
(一)课题简介.................................2
(二)设计方案.................................2
(三)具体设计.................................4
1.电路原理....................................4
2.程序原理:
..................................6
3.系统原理....................................8
1)8259,8255A,8254工作原理:
..............8
4.关键技术分析...............................13
1)实时控制和管理设计.....................13
2)发光二极管闪烁程序.....................14
3)源程序................................15
(四)测试....................................21
1.在测试中遇到的问题记录.....................21
2.测试结果...................................22
(五)总结......................................22
(六)设计体会...................................23
(七)参考文献...................................24
(一)课题简介
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用“模糊控制”技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
(二)设计方案
使用了8259A中断控制器、8254计数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制,设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。
城市十字交叉路口红绿灯控制系统主要负责控制东西走向和南北走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:
l1.即东西方向的绿灯和南北方向的红灯同时点亮1分钟;
2.1分钟后,东西方向的黄灯闪烁5秒钟,。
此时南北方向仍维持红灯点亮。
3.东西方向的黄灯闪烁5秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮20秒钟;
4.20秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。
5.南北方向的黄灯闪烁5秒钟后,东西方向的绿灯和南北方向的红灯同时点亮1分钟。
如此循环重复。
基于以上设计,在表1中给出了交通灯控制器的4种状态,对应的状态迁移过程见表
(1)和图
(1)。
东西走向
南北走向
状态0
红、黄、绿 001
红、黄、绿 100
状态1
红、黄、绿 011
红、黄、绿 100
状态2
红、黄、绿 100
红、黄、绿 001
状态3
红、黄、绿 100
红、黄、绿 011
表
(1)交通灯控制器的4种状态
状态2
状态3
状态0
状态1
图
(1)
(三)具体设计
1.电路原理
本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。
完整系统的硬件连接如图1所示。
硬件电路由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。
定时模块是由8254的计数器0来实现定时100ms。
Clk0接实验平台分频电路输出Q6,f=46875hz。
GATE0接8255的PA0,由8255输出来控制计数器的起停。
OUT0接8259的IRQ2,定时完成申请中断,进入中断服务程序。
发光二极管显示模块由8255输出来控制发光二极管的亮灭。
8255输出为低电平时,对应的发光二极管就点亮,否则就熄灭。
8255的接口电路如图2所示。
交通灯的对应关系如下:
L7
L6
L5
L2
L1
L0
PC7
PC6
PC5
PC2
PC1
PC0
13红灯
13黄灯
13绿灯
24红灯
24黄灯
24绿灯
实验平台上提供一组六个LED数码管。
插孔CS1用于数码管段选的输出选通,插孔CS2用于数码管位选信号的输出选通。
本设计用4个数码管来倒计时。
紧急中断模块是由单脉冲发生单元和8259中断控制器,单脉冲发生单元主要用来请求中断,然后做出紧急情况处理。
图28255接口电路
2.程序原理:
设计数器0的计数初值为25000,由于CLK0接脉冲信号,频率为2.5MHZ,所以每10ms中断一次。
利用CX对不同的状态时间计数,用来实现计数器0对1分钟,20秒钟,5秒钟的定时。
中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。
每进入中断即刷新LED显示。
用对于东西车道和南北车道黄灯闪烁利用标志位判断实现,满足比较条件就暗,不满足条件就亮。
8254计数的起停由8255的PA0控制,8255的PA0输出1时,8254开始计数,交通灯按正常状态切换工作,PA0输出0时,计数器停止工作,交通灯不再按正常状态切换。
8254开始计数后每100ms发出一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。
主程序负责系统的初始化,然后数码管数据输出显示,同时检测PC键盘按键,有按键就退出程序。
主程序的流程图如图3所示。
定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。
中断子程序包括数码管输出数据刷新程序和各状态处理程序。
数码管输出数据刷新子程序是实现倒计时25s,用LEDOUT表示输出的数据,cnt用来软件计时1s,就是计数10个100ms。
LED输出是要将输出的数据转化为段选码。
根据当前的状态跳转到相应的处理程序,在处理程序中完成定时和状态的切换。
状态1和3的流程是一样的,先点亮对应的交通灯,再判断定时到了就可以切换了。
状态2和4要实现黄灯的闪烁,间隔点亮和熄灭就可以了。
状态1和3处理程序的流程图(以状态1为例)如图6所示,其中NUM是状态1对应的PC口输出。
外部中断服务子程序主要用来处理紧急情况,将2个方向的车都停止运行,点亮所有红灯。
下次中断来时恢复以前的状态。
用一个标志位FLAG判断是第一次进入还是恢复状态。
3.系统原理
1)8259,8255A,8254工作原理:
I.8259的工作原理
1、数据总线缓冲器:
8259A与系统数据总线的接口,是8位双向三态缓冲器。
CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过缓冲器传送的。
2、读/写控制逻辑:
CPU通过它实现对8259A的读/写操作。
3、级连缓冲器:
用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。
4、控制逻辑电路:
对整个芯片内部各部件的工作进行协调和控制。
5、中断请求寄存器IRR:
8位,用以分别保存8个中断请求信号,当响应的中断请求输入脚有中断请求时,该寄存器的相应位置1。
6、中断屏蔽寄存器IMR:
8位,相应位用以对8个中断源的中断请求信号进行屏蔽控制。
当其中某位置“0“时,则相应的中断请求可以向CPU提出;否则,相应的中断请求被屏蔽,即不允许向CPU提出中断请求。
该寄存器的内容为8259A的操作命令字OCW1,可以由程序设置或改变。
7、中断服务寄存器ISR:
8位,当CPU正在处理某个中断源的中断请求时,ISR寄存器中的相应位置1。
8、用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套。
II.8255A的工作原理
1、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---双向选通输入输出方式。
3、引脚信号
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:
电源地线。
III.8254的工作原理:
8254是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。
其CLK0~CLK2是计数器0~2的时钟脉冲输入端,GATE0~GATE2是门控脉冲输入端,OUT0~OUT2是输出端。
4.关键技术分析
1)实时控制和管理设计
a)芯片选择及端口选择
1.用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用8255A实现控制。
2.用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要求的1分钟、5秒钟和20秒的定时。
实验系统8235的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接+5V;定时采用软硬件相结合的方式实现。
3、用实验系统的发光二极管模拟红绿灯。
注:
8259A的端口地址为:
218H、219H
8255A的端口地址为:
端口A-200H、端口B-201H、端口C-202H、控制端口-203H
8254的端口地址为:
计数器0-208H、计数器1-209H、计数器2-20aH、控制寄存器0-20bH。
本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。
定时模块采用硬件定时和软件定时相结合的方法,用8254定时/计数器定时100ms,再用软件计时实现所需的定时。
发光二极管模块由8255控制发光二极管来实现。
数码管显示模块由实验平台上的LED显示模块实现。
紧急中断模块是由单脉冲发生单元和8259中断控制器组成。
程序主要是由定时子程序、发光二极管显示子程序、数码管显示子程序和中断服务程序组成。
包括对8254、8255以及8259等可编程器件的编程。
2)发光二极管闪烁程序
1:
在单片机系统的P1.0口接上一个发光二极管,实现此灯的闪烁功能。
LEDEQUP1.0;P1.0引脚上接上一个发光二极管
ORG0;程序从0地址开始
START:
CLRLED;点亮发光二极管
LCALLDELAY;调用延时子程序(亮1秒钟)
SETBLED;关掉发光二极管
LCALLDELAY;调用延时子程序(关1秒钟)
LJMPSTART;跳到START标号处执行
DELAY:
;1秒延时子程序(12MHz晶振)
MOVR5,#8;R5寄存器加载8次
D0:
MOVR7,#250;R7寄存器加载250次数
D1:
MOVR6,#250;R6寄存器加载250次数
D2:
DJNZR6,D2;D2循环执行R6次
DJNZR7,D1;D1循环执行R7次
DJNZR5,D0;D0循环执行R5次
RET;返回主程序
END;主程序结束
2:
在单片机系统的P1口接上8个发光二极管,实现低位4个和高位4个的交替闪烁。
ORG0;程序从0地址开始
START:
MOVA,#0FH;让ACC的内容为00001111
LOOP:
MOVP1,A;从P1输出ACC的内容
CPLA;对ACC的内容取反码(即反相)
CALLDELAY;调用延时子程序
LJMPLOOP;跳到LOOP处执行
DELAY:
;0.1秒延时子程序(12MHz晶振)
MOVR7,#200;R7寄存器加载200次数
D0:
MOVR6,#250;R6寄存器加载250次数
DJNZR6,$;本行执行R6次
DJNZR7,D0;D1循环执行R7次
RET;返回主程序
END;主程序结束
3)源程序
初始化程序:
DATASEGMENT
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;存放七段代码表
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
D1EQU10H
D2EQU200H;8255A端口A
EAEQU200H;8259端口地址
EEEQU203H
CONTROLEQU20bH;8254端口地址
COUNT0EQU208H
COUNT1EQU209H
COUNT2EQU20aH
Z8279EQU222H
D8279EQU220H
LEDMODEQU00;左边输入,八位显示外部译码八位显示
LEDFEQEQU38H;扫描频率
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
CODESEGMENT
ASSUMECS:
CODE
CONTDB0
CONT1DB0
CONT2DB0
BKSDDB0
BKADDB0
BKDADB0
TEMPDB0
;*******************************************
START:
MOVAX,0
MOVDS,AX
MOVAX,OFFSETIRQ0
ADDAX,2000H
MOVSI,0FH*4
MOV[SI],AX
MOVAX,0
MOV[SI+2],AX
INAL,218H
ANDAL,7FH
OUT219H,AL
CLI
MOVAL,80H;初始化8255
OUTEE,AL
MOVAL,00
OUTEA,AL
MOVAL,0f0H
OUTEA,AL
MOVDX,218H;8259初始化
MOVAL,00010010b
OUTDX,AL
MOVAL,08H
MOVDX,219H
OUTDX,AL
MOVDX,203H;设置为全输出
MOVAL,80H
OUTDX,AL
MOVDX,200H
MOVAL,0ffh
OUTDX,AL;清LED
MOVDX,200H;全红
MOVAL,0F0H
OUTDX,AL
MOVAL,00110110b;初始化8254
OUTCONTROL,AL
MOVAX,2500
MOVDX,COUNT0
OUTDX,AL
MOVAL,AH
OUTCOUNT0,AL
MOVAX,DATA
MOVDS,AX
中断服务程序:
A1:
STI
HLT
JMPA1
IRQ0:
JMPCOMPARE
COMPARE:
CMPDL,0
JZSTATE0
CMPDL,1
JZSTATE1
CMPDL,2
JZSTATE2
CMPDL,3
JZSTATE3
STATE0:
;状态0:
东西红南北绿
moval,01011010b
outD2,al
DECSI
JNZCHANGE1
DECDH
MOVSI,100
CHANGE1:
DECCX
CMPCX,0
JNZM0
MOVCX,500
STATE1:
DECDI;状态1:
东西方向黄灯闪烁,南北绿灯
CMPDI,0
JNZSHINE1
MOVAL,00001010b;东西灭,南北绿
OUTD2,AL
MOVDI,50
JMPCHANGE
SHINE1:
MOVAL,11111010B;东西黄,南北绿
OUTD2,AL
CHANGE:
DECSI
JNZCHANGE2
DECDI
MOVSI,100
CHANGE2:
DECCX
CMPCX,0
JNZM1
MOVCX,2000
MOVDH,25
STATE2:
MOVAL,10100101b;状态2:
东西绿灯,南北红灯
OUTD2,AL
DECSI
JNZCHANGE3
DECDH
MOVSI,100
CHANGE3:
DECCX
CMPCX,0
JNZM2
MOVCX,500
STATE3:
DECDI;状态3:
东西绿灯,南北黄灯闪烁
CMPDI,0
JNZSHINE2
MOVAL,10100000B;东西绿灯,南北灭
OUTD2,AL
MOVDI,50
JMPSOURCE
SHINE2:
MOVAL,10101111B;东西绿,南北黄
OUTD2,AL
SOURCE:
DECSI
JNZCHANGE4
DECDH
MOVSI,100
CHANGE4:
DECCX
CMPCX,0
JNZM3
MOVCX,6000
MOVDH,65
M0:
MOVDL,0;下次进入状态0
JMPEXIT
M1:
MOVDL,1;下次进入状态1
JMPEXIT
M2:
MOVDL,2;下次进入状态2
JMPEXIT
M3:
MOVDL,3;下次进入状态3
EXIT:
MOVAL,20H
OUT218H,AL
IRET
CODEENDS
ENDSTART
(四)测试
1.在测试中遇到的问题记录
a)软件延时与定时器计时
软件延时,设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进行使用,本次设计采用了,定时器0进行计时,每10ms产生一个脉冲信号,可以准确的计时并方便8段数码管进行显示
b)使用中断
使用中断比较麻烦,在试验中需要两次加载初始化程序和中断服务程序,并且需要手工指定中断服务地址和中断向量号;但是使用中断可以进行多样化设计,强化程序功能与执行效率。
2.测试结果
1.即东西方向的绿灯和南北方向的红灯同时点亮1分钟;
2.1分钟后,东西方向的黄灯闪烁5秒钟,。
此时南北方向仍维持红灯点亮。
3.东西方向的黄灯闪烁5秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮20秒钟;
4.20秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。
5.南北方向的黄灯闪烁5秒钟后,东西方向的绿灯和南北方向的红灯同时点亮1分钟。
如此循环重复。
(五)总结
在本次设计中,使用了8259A中断控制器、8254计数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制,但是程序没有实现对双向交通的数码显示,数码显示模块空缺,会尽快将程序补全,使其具有完整的交通灯功与其他设计相比。
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用“模糊控制”技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 82558253 交通灯 模拟 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)