文档库 最新最全的文档下载
当前位置:文档库 › 8255,8253交通灯模拟实验报告

8255,8253交通灯模拟实验报告

8255,8253交通灯模拟实验报告
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 if数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制,设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。

城市十字交叉路口红緑灯控制系统主要负责控制东西走向和南北走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:

1 1.即东西方向的绿灯和南北方向的红灯同时点亮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来实现左时lOOniSo ClkO接实验平台分频电路输出Q6, f=

46875hZoGATE0接8255的PA0,由8255输出来控制计数器的起停cOUTO接8259的IRQ2, 定时完成申请中断,进入中断服务程序。

发光二极管显示模块由8255输出来控制发光二极管的亮火。8255输岀为低电平时, 对应的发光二极管就点亮,否则就熄火。8255的接口电路如图2所示。交通灯的对应关系如下:

L7

L6

L5

L2

L1

L0

PC7

PC6

PC5

PC2

PCI

PCO

13红灯

13黄灯

13绿灯

24红灯

24黄灯

24绿灯

实验平台上提供一组六个LED数码管。插孔CS1用于数码管段选的输岀选通,插孔CS2用于数码管位选信号的输岀选通。本设计用4个数码管来倒计时。

紧急中断模块是由单脉冲发生单元和8259中断控制器,单脉冲发生单元主要用来请求中断,然后做岀紧急情况处理。

图2 8255接口电路

2.程序原理:

设计数器0的计数初值为25000,由于CLKO接脉冲信号,频率为2.5MH乙所以每10ms 中断一次。利用CX对不同的状态时间计数,用来实现il?数器0对1分钟,20秒钟,5秒钟的定时。中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。每进入中断即刷新LED显示。用对于东西车道和南北车道黃灯闪烁利用标志位判断实现,满足比较条件就暗,不满足条件就亮。

8254 it数的起停由8255的PA0控制,8255的PAO输出1时,8254开始计数,交通灯按正常状态切换工作,PAO输出0时,汁数器停止工作,交通灯不再按正常状态切换。8254开始讣数后每100ms发岀一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。

主程序负责系统的初始化,然后数码管数据输出显示,同时检测PC键盘按键,有按键就退出程序。主程序的流程图如图3所示。

定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。中断子程序包括数码管输出数据刷新程序和各状态处理程序。数码管输出数据刷新子程序是实现倒讣时25s,用LEDOUT表示输岀的数据,ent用来软件计时Is,就是i|?数10个100ms。LED输岀是要将输出的数据转化为段选码。根据当前的状态跳转到相应的处理程序,在处理程序中完成左时和状态的切换。状态1和3的流程是一样的,先点亮对应的交通灯,再判断泄时到了就可以切换了。状态2和4要实现黄灯的闪烁,间隔点亮和熄火就可以了。状态1和3处理程序的流程图(以状态1为例)如图6所示,其中NUM是状态1对应的PC 口输出。

外部中断服务子程序主要用来处理紧急情况,将2个方向的车都停止运行,点亮所有红灯。下次中断来时恢复以前的状态。用一个标志位FLAG判断是第一次进入还是恢复状态。

3.系统原理

1)8259, 8255A, 8254 工作原理:

1、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输岀的控制字或数摇送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPUo

2、8255A的工作方式:

方式0---基本输入输出方式;方式1---选通输入输出方式;

方式2---双向选通输入输出方式。

3、引脚信号

8255A的引脚如图7.5所示,分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。

D7?DO (databus):三态、双向数据线,与CPU数据总线连接,用来传送数据。

(chip select):片选信号线,低电平有效时,芯片被选中。

Al, AO (port address):地址线,用来选择部端口。

(read):读出信号线,低电平有效时,允许数据读出。

(write):写入信号线,低电平有效时,允许数据写入。

RESET (reset):复位信号线,高电平有效时,将所有部寄存器(包括控制寄存器)淸0。

PA7?PAO (portA): A 口输入/输出信号线。

PB7?PBO (portB): B 口输入/输出信号线。

PC7?PCO (portC): C 口输入/输岀信号线。

VCC: +5V电源。GND:电源地线。

III.8254的工作原理:

8254是可编程的计数器/宦时器淇部有三个独立的16位计数器碇时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。其CLK0?CLK2是计?数器0?2的时钟脉冲输入端,GATE0?GATE2是门控脉冲输入端,OUTO-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 o

本设讣硬件由左时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。左时模块采用硬件左时和软件定时相结合的方法,用8254泄时/il?数器泄时100ms,再用软件计时实

现所需的立时。发光二极管模块由8255控制发光二极管来实现。数码管显示模块由实验平台上的LED显示模块实现。紧急中断模块是由单脉冲发生单元和8259中断控制器组成。

程序主要是由圧时子程序、发光二极管显示子程序、数码管显示子程序和中断服务程序组成。包括对8254、8255以及8259等可编程器件的编程。

2)发光二极管闪烁程序

1:在单片机系统的P1.0 口接上一个发光二极管,实现此灯的闪烁功能。

LED EQU ORG P1.0

:P1.0引脚上接上一个发光二极管

;程序从0地址开始

START: CLR LED;点亮发光二极管

LCALL DELAY;调用延时子程序(亮1秒钟)

SETB LED;关掉发光二极管

LCALL DELAY;调用延时子程序(关1秒钟)

UMP START;跳到START标号处执行DELAY:;1秒延时子程序(12MHz晶振)MOV R5.#8;R5寄存器加载8次

DO:MOV R7,#250;R7寄存器加载250次数

DI:MOV R6,#250;R6寄存器加载250次数

D2:DJNZ R6.D2:D2循环执行R6次

DJNZ R7.D1:D1循环执行R7次

DJNZ R5.D0:D0循环执行R5次

RET ;返回主程序

END ;主程序结束

2:在单片机系统的P1 口接上8个发光二极管,实现低位4个和高位4个的交替闪烁。

ORG0;程序从0地址开始START:MOV A.#0FH;让ACC的容为00001111

LOOP:MOV Pl,A;从戸1输岀ACC的容

CPL A;对ACC的容取反码(即反相)

CALL DELAY;调用延时子程序

UMP LOOP;跳到LOOP处执行

DELAY:;0.1秒延时子程序(12MHz晶振)

MOV R7,#200;R7寄存器加载200次数DO:MOV R6?#250;R6寄存器加载250次数

DJNZ R6,$;本行执行R6次

DJNZ R7.D0:D1循环执行R7次

RET;返回主程序

END;主程序结束

3)源程序

初始化程序:

DATA SEGMENT

LED DB 3FH ?06H,5BH ?4FH ?66H ?6DH.7DH.07H

DB 7FH.6FH.77H.7CH39H.5EH.79H.71H

CODE SEGMENT

ASSUME CS:CODE.DS:DATA CODE SEGMENT

ASSUME CS:CODE CONT DBO

CONTI DBO CONT2 DBO BKSD DBO BKAD DBO BKDA DBO TEMP DBO

?******************************************黑

START: MOV AX.O MOV DS.AX

MOV AX.OFFSET IRQO ADD AX,2000H MOVSLOFHM MOV [SI].AX MOV AX.O MOV [SI+2J.AX IN AL,218H AND AL.7FH OUT219KAL CLI

MOV AU80H

;初始化 8255

DI

EQU 10H

D2

EQU 200H

EA EQU 200H EE EQU 203H CONTROL EQU 2ObH

COUNTO EQU 208H COUNT 1 EQU 209H COUNT2 EQU 20aH

Z8279 EQU 222H

D8279 EQU 220H

LEDMOD )EQU 00 LEDFEQ EQU 38H

DATA ENDS

:8255A 端口 A ;8259端口地址 :8254端口地址

;左边输入,八位显示外部译码八位显示 ;扫描频率

:存放七段代码表

OUT EE.AL

MOV AL.00

OUT EA.AL

MOV AL.0f0H

DX.218H ;8259 初始化

AUOOOlOOlOb

OUT DX.AL

MOV AL,AH

OUT COUNTO ,AL

MOV AX.DATA

MOV DS.AX 中断服务程序:Al: STI

HLT

JMPA1

IRQO:

JMP COMPARE COMPARE:CMP DL.O

JZ STATEO

CMP DL,1

JZ STATE1

CMP DL,2

JZ STATE2

CMP DL.3

JZ STATE3

STATEO : :状态0:东西红南北绿

OUT EA.AL MOV

MOV

OUT DX.AL MOV AL.08H MOV DX.219H OUT DX.AL

MOV DX.203H MOV AL.80H OUT DX.AL MOV DX.200H MOV AL.Offh OUT DX.AL MOV DX.200H MOV AL.OFOH OUT DX.AL MOVAL.00110110b OUT CONTROL.AL MOV AX,2500 MOV DX.COUNTO

;设置为全输岀

;淸

LED

;全红

;初始化8254

movaLO 1011010b

out D2,al

DEC SI

JNZCHANGE 1

DEC DH

MOV SI J 00

CHANGE 1:DEC CX

CMP CX.O

JNZ MO

MOV CX.500

STATE 1: DEC DI :状态1:东西方向黄灯闪烁,南北绿灯CMP DL0

JNZ SHINE 1

MOV AU 00001010b :东四灭,南北绿

OUT D2,AL

MOV DL50

JMP CHANGE

SHINE1: MOV ALJ1111010B

OUT D2,AL

CHANGE: DEC SI

JNZCHANGE2

DEC DI

MOV SI J 00

CHANGE2:DEC CX

CMP CX.O

JNZ Ml

MOV CX.2000

MOV DH,25

STATE2: MOV ALJOlOOlOlb OUT D2.AL

DEC SI

JNZCHANGE3

DEC DH

MOV SI J 00

CHANGE3:DEC CX

CMP CX.O

JNZ M2

MOV CX.500

STATE3: DEC DI

CMP DLO

JNZ SHINE2

MOVALJ0100000B

OUT D2,AL

MOV DI.50

:状态2:东西绿灯,南北红灯

:状态3:东西绿灯,南北黄灯闪烁

:东西绿灯,南北灭

JMP SOURCE SHINE2: MOV ALJ0101111B OUT D2,AL SOURCE:

DEC SI

JNZ CHANGE4

DEC DH MOV SI, 100 CHANGE4:DEC CX

CMP CX.O JNZ M3 MOV CX.6000 MOV DH,65 MO: MOV DUO JMP EXIT

Ml: MOV DLJ JMP EXIT

M2: MOV DL.2 JMP EXIT

M3: MOV DL.3 EXIT:

MOV AL.20H OUT218H.AL

IRET CODE ENDS END START

(四) 测试

1. 在测试中遇到的问题记录

a ) 软件延时与定时器计时

软件延时,设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进行使用, 本次设

计采用了,左时器0进行计时,每10ms 产生一个脉冲信号,可以准确的计时并方便 8段数码管进行显示

b ) 使用中断

使用中断比较麻烦,在试验中需要两次加载初始化程序和中断服务程序,并且需要手工 指定中断服务地址和中断向量号:但是使用中断可以进行多样化设汁,强化程序功能与执行 效率。

2.

测试结果

1. 即东西方向的绿灯和南北方向的红灯同时点亮1分钟:

2. 1分钟后,东西方向的黄灯闪烁5秒钟,。此时南北方向仍维持红灯点亮。 3?东西方向的黄灯闪烁5秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮20 秒钟:

4.

20秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。

5. 南北方向的黄灯闪烁5秒钟后,东西方向的绿灯和南北方向的红灯同时点亮1分钟。 如此循环

:东西绿,南北黄

:下次进入状态0 :下次进入状态1

:下次进入状态2 :下次进入状态3

重复。

(五)总结

在本次设计中,使用了8259A中断控制器、8254计数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制,但是程序没有实现对双向交通的数码显示,数码显示模块空缺,会尽快将程序补全,使其具有完整的交通灯功与其他设计相比。

十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国大多数城市正在采用“自动”红绿交通灯,它具有固左的“红灯一绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向务50秒:要么根拯交通规律,东四方向60秒,南北方向40秒,时间控制都是固泄的。交通灯的时间控制显示,以固立时间值预先"固化”在单片机中,每次只是以一泄周期交替变化。但是,实际上不同时刻的车辆流通状况是十分复杂的, 是髙度非线性的、随机的,还经常受认为因素的影响。采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城币交通效率的下降。目前,有一种使用“模糊控制”技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况, 自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。

本次课程设计采用泄时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。

(六)设计体会

此次实习可以说是获益匪浅。通过査阅了很多资料,了解了许多汇编程序的思想,扩展了自己的视野,不再仅仅局限于书本中几条简短的程序,而且更重要的是明白写程序的态度:仔细谨慎,精益求精。在程序中添加了黄灯闪烁,更加醒目。另外加入能够实现各路口绿灯显示时间不同,适应在主干道和支线路口中使用。在系统加电调试中,针对一些问题,熟练掌握了根据原理分步测试,将错误之处缩小的最小围。

通过该课程设讣,掌握了什么是编译程序,编译程序工作的基本过程及英务阶段的基本任务, 熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表而的。通过把该算法的容,算法的执行顺序在汁算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

而且在设汁中,把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对与计算机操作系统的认识是模糊的,概念上的,现在通过自己动手做实验, 从实践上认识了操作系统是如何处理命令的,如何协调汁算机部各个部件运行,对计算机编译原理的认识更加深刻。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。

(七)参考文献

[1]钱能.C++程序设计教程[M].:淸华大学,2004.8

[2]谭浩强.C语言教程[M].

本文来自CSDN 博客,请标明出处:https://www.wendangku.net/doc/3811541097.html,/maria87328/archive/2008/06/23/2580355.aspx

相关文档