《微型计算机技术》
课程设计报告
题 目: 交通灯控制系统
专业名称: 电子信息工程
班 级: 102
学 号: 010706233
姓 名: 杨恒俊
20##年 12月
交通灯控制系统
杨恒俊
电子信息工程学系
摘要:随着时代的发展,人们对道路的需求越来越大,自然的,路也就越来越多。这样就产生了很多的十字路口。如何使这么多的十字路口的交通便于管理,是这个社会严重的课题。交通灯就是在这样的背景下产生的。随着现代技术的发展,如何使交通灯自动化也成为了一项课题。本次就是利用8255等软件模拟交通灯自动化设计的过程。
关键词:交通灯;自动化 ;8255
1、设计任务:
1.1设计任务:
设计一个在十字路口使用的交通灯,用红黄绿三种颜色指示,红色表示禁止通行,绿色表示可以通行,黄色表示稍等。然后安排个路口的三种等按一定的规律闪亮有序的安排十字路口的交通。
1.2 设计内容:
通过并行接口8255实现十字路口交通灯的模拟控制。0-1指示模块的D075-D077与PA5-PA7相连,作为南北路口的交通灯,D071- D073与PA0-PA2相连,作为东西路口的交通灯。编程使六个灯按以下规律变化:南北路口的绿灯、东西路口的红灯同时亮30秒;南北路口的黄灯闪烁若干次,同时东西路口红灯继续亮;南北路口的红灯、东西路口的绿灯同时亮30秒;南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次;重复以上步骤。
2、设计原理:
2.1 设计方案:
将8255A控制字设置为全输出,利用端口A输出控制交通灯东西、南北方向红绿灯的变换,利用延时程序控制各种状态显示的时间。
2.2 内部结构
8255:
8255的内部结构及引脚
1数据端口有A口,B口,C口均为8位端口且各自独立。
A口 输出:锁存/缓冲
输入:锁存
B口 输出:锁存/缓冲
输入:缓冲
C口 输出:锁存/缓冲
输入:缓冲
2 A组和B组控制逻辑
A组 A口+C口上(PC7---PC4)
B组 B口+C口下(PC3---PC0)
3读/写控制逻辑
RESET:1)复位信号 高电平有效
2)8255中控制寄存器均清0
3)将3个端口均设置为输入方式
__
CS:片选信号 低电平有效用来选通该芯片。
__
RD:读信号 低有效
__
WR:写信号 低有效
A0A1线:A0 A1
0 0 A口
0 1 B口
1 0 C口
1 1 控制寄存器端口
8255控制字(写程序的时候需要掌握的基础知识)
方式选择控制字: D7D6D5D4D3D2D1D0
D7 : 1 表示是方式选择控制字
D6D5 : 决定A口工作方式 00--方式0, 01--方式1, 1X--方式2
D4 : 决定A口输入还是输出 1--输入 0--输出
D3 : 决定C口上输入还是输出 1--输入 0--输出
D2 : 决定B口工作方式 00--方式0, 01--方式1
D1 : 决定B口输入还是输出 1--输入 0--输出
D0 : 决定C口下输入还是输出 1--输入 0--输出
置位/复位控制字:D7D6D5D4D3D2D1D0
D7 0表示 置位/复位控制字
D6D5D4 这3位任意 一般写000
D3D2D1 这3位表示
000 PC0
001 PC1
010 PC2
.
.
.
111 PC7
D0 0复位 1置位 对某个PCi复位0 或置位1 (i取值0到7)
方式0---基本输入输出方式;
方式1---选通输入输出方式;
方式2---双向选通输入输出方式。
8253
8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
8253运行原理
二级管
发光二极管显示模块由8255的A口输的出来控制发光二极管的亮灭。在实验设计中A口已经与发光二级管连接好了,根据灯亮结果可以知道,在A口中PA7 PA6 PA5 PA2 PA1 PA0与发光二极管链接。
发光二级管结构
3、系统设计:
3.1 电路设计:
微机试验箱上的内部电路已连接,只要连接8255等芯片极发光二极管等
图1-2硬件电路图
3.2 主程序设计:
将8255控制字设置为全输出,利用端口A输出控制交通灯东西、南北方向红绿灯的变换,利用延时程序控制各种状态显示的时间。其程序流程图如下图所示;
其主程序流程图如下图所示:
图1-3主程序流程图
4、调试运行:
调试结果
图中分别有2个红灯,2个黄灯,2个绿灯在同时闪亮。分别对应东西南北的三灯。
6、设计心得:
通过这次课程设计,又一次利用了汇编语言,让我更熟悉汇编语言的编写。同时,也是我第一次深入了解了红绿灯的工作原理及方式。同时也让我对这种自动化的管理方式产生了浓厚的兴趣。更重要的是,本次课程设计暴露出了我的程序编写能力不足,以及对软件以及试验箱不熟,以至于无法处理试验过程中出现的问题等。
7、附录
PORT_A EQU 2A0H ;8255 PORT A ADDRESS
PORT_B EQU 2A1H ;8255 PORT B ADDRESS
PORT_C EQU 2A2H ;8255 PORT C ADDRESS
CMD_PORT EQU 2A3H
PORT_CS EQU 2A3H
TIM_CTL EQU 43H ;8253 TIMER CONTROL PORT ADDRESS
TIMER EQU 40H ;8253 ADDRESS
TIMER0 EQU 40H ;8253 TIMER/CNTER 0 PORT ADDRESS
TIMER1 EQU 41H ;8253 TIMER/CNTER 1 PORT ADDRESS
TIMER2 EQU 42H ;8253 TIMER/CNTER 2 PORT ADDRESS
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AL,10000011B ;PORT_A、PORT_C'HIGN 4 BITS:OUTPUT,PORT_C'LOW 4 BITS:INPUT,MODE 0
MOV DX,PORT_CS
OUT DX,AL
SHOW:
MOV DX,PORT_A
MOV AL,00100100B
OUT DX,AL
MOV CX,8
HUANG4:
CALL TIMING
LOOP HUANG4
CALL TIMING
MOV CX,8
HUANG:
MOV AL,00100100B
OUT DX,AL
CALL TIMING
MOV DX,PORT_A
MOV AL,00000100B
OUT DX,AL
CALL TIMING
LOOP HUANG
MOV CX,10
VV:
MOV AL,01000100B
OUT DX,AL
CALL TIMING
LOOP VV
MOV AL,10000001B
OUT DX,AL
CALL TIMING
MOV CX,8
HUANG2:
CALL TIMING
LOOP HUANG2
MOV CX,8
HUANG3:
MOV AL,10000001B
OUT DX,AL
CALL TIMING
MOV DX,PORT_A
MOV AL,10000000B
OUT DX,AL
CALL TIMING
LOOP HUANG3
MOV CX,10
MM:
MOV AL,10000010B
OUT DX,AL
CALL TIMING
LOOP MM
JMP SHOW
TIMING PROC NEAR
CALL DELAY
RET
TIMING ENDP
DELAY PROC NEAR
PUSH CX
PUSH BX
MOV BX,0FFH
DELAY_:
MOV CX,0FFH
DELAY_AGAIN:
LOOP DELAY_AGAIN
DEC BX
JNZ DELAY_
POP BX
POP CX
RET
DELAY ENDP
CODE ENDS
END START
第二篇:微机交通灯控制系统课程设计报告
《微型计算机技术》
课程设计报告
题 目: 交通信号灯控制系统
专业名称: 电子信息工程
班 级: 092班
学 号: 000000000910706228l
姓 名: 廖夏晖 xxx
20##年 12月
交通信号灯控制系统
廖夏晖
XXX
(电子信息工程学系)
摘要:本文介绍了以8086微处理器为核心.利用可编程并行接口芯片8255A的软硬件功能,实现对交通灯控制,主要是模拟十字路口的红绿灯,介绍了交通灯控制器的原理以及电路接线。在设计中所用到的编程语言是汇编语言,延时采用的是软件延时(即通过汇编指令)。
关键词:8086微处理器;交通灯;8255A
一、课程设计任务
1.1 设计目标
利用ZY15MicInt12BB微机原理及接口实验箱上的8086微处理器模块、并行接口8255A模块,地址译码单元以及0—1LED灯显示等模块,根据所学的微机原理知识,按照实际交通情况设定一种交通灯规则,设计一个简单的交通信号灯控制系统。
1.2 设计要求
在一个十字路口,东西方向和南北方向各有两组交通指示灯,每组有红、黄绿三个灯。东西方向同色灯连在一起,南北方向同色灯连在一起。对各组的交通灯进行控制,以保证车辆在各道上通畅运行。
两组组的交通灯工作过程为:
1. 南北方向亮绿灯允许通行,东西方向亮红灯禁止通行
2. 当延时25秒后,南北方向的黄灯同时变亮,且延时5秒。
3. 延时后,东西方向转为绿灯,南北方向转为红灯,且延时25秒。
4. 25秒后,转为东西方向黄灯亮,延时5秒后,回到第一步,以次重复进行,不断循环。
5. 当遇到道路障通,或紧急情况时,A、B道全为红灯。
二、原理说明与硬件设计
2.1原理说明
在本次课程设计当中,采用的是以8086微处理器为核心,以8255A芯片作为接口芯片,运用软件定时(即通过汇编指令)控制LDE灯(即交通灯)按照设定的交通规则显示。
2.2 8086简介
8086微处理器是Intel系列的第三代微处理器,拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器,其主频为5MHz/10MHz,地址总线宽度为20位,可寻址的内存空间打1MB。
8086微处理器的内部功能结构由两个独立的工作部件——执行部件EU(Execution Unit)和总线接口部件BIU(Bus Interface Unit)构成。其中,(1)BIU和EU可以并行工作,提高CPU效率。BIU监视着指令队列。当指令队列中有2个空字节时,就自动把指令取到队列中。(2) EU执行指令时,从指令队列头部取指令,然后执行。如需访问存储器,则EU向BIU发出请求,由BIU访问存储器。(3) 在执行转移、调用、返回指令时,需改变队列中的指令,要等新指令装入
队列中后,EU才继续执行指令。8086CPU的内部功能结构框图如图2-1所示。
图2-18086CPU的内部功能结构框图
8086微处理器采用40引脚的DIP封装,其引脚图如图2-2所示。8086 CPU到底可以工作在最大模式或最小模式两种工作模式下,这完全由硬件决定。处于不同工作模式时,其部分引脚的功能是不同的。
图2-2 8086的引脚
(1)两种工作方式下功能相同的引脚
MM/MX:最小/最大模式输入控制信号。 引脚用来设置8086 CPU的工作模式。当为高电平(接+5V)时,CPU工作在最小模式;当为低电平(接地)时,CPU工作在最大模式。
AD15 ~AD0:地址/数据总线,双向,三态。这是一组采用分时的方法传送地址或数据的复用引脚。根据不同时钟周期的要求,决定当前是传送要访问的存储单元或I/O端口的低16位地址,还是传送16位数据,或是处于高阻状态。
A19/S6~A16/S3:地址/状态信号,输出,三态。这是采用分时的方法传送地址或状态的复用引脚。
BHE(低)/S7:允许总线高8位数据传送/状态信号,输出,三态。为总线高8位数据允许信号,当低电平有效时,表明在高8位数据总线D15 ~D8上传送1个字节的数据。S7为设备的状态信号。
RD,WR:读信号和写信号,输出,三态,低电平有效。
READY:准备就绪信号,输入,高电平有效。READY信号用来实现CPU与存储器或I/O端口之间的时序匹配。
TEST:等待测试控制信号,输入,低电平有效。信号用来支持构成多处理器系统,实现8086 CPU与协处理器之间同步协调的功能,只有当CPU执行WAIT指令时才使用。
NMI:非屏蔽中断请求信号,输入,高电平有效。
当NMI引脚上有一个上升沿有效的触发信号时,表明CPU内部或I/O设备提出了非屏蔽的中断请求,CPU会在结束当前所执行的指令后,立即响应中断请求。
RESET:复位信号,输入,高电平有效。
CLK:时钟信号,输入。
VCC,GND:电源输入引脚和接地引脚。8086 CPU采用单一+5V电源供电。
(2)CPU工作于最小模式时使用的引脚信号
当MM/MX引脚接高电平时,CPU工作于最小模式。此时,引脚信号24~31的含义及其功能如下。
M/IO:存储器、I/O端口选择控制信号。信号指明当前CPU是选择访问存储器还是访问I/O端口。为高电平时,访问存储器,表示当前要进行CPU与存储器之间的数据传送。为低电平时,访问I/O端口,表示当前要进行CPU与I/O端口之间的数据传送。
INTR:可屏蔽中断响应信号,输出,低电平有效。CPU通过信号对外设提出的可屏蔽中断请求做出响应。为低电平时,表示CPU已经响应外设的中断请求,即将执行中断服务程序。
ALE:地址锁存允许信号,输出,高电平有效。CPU利用ALE信号可以把AD15 ~AD0地址/数据、A19/S6~A16/S3地址/状态线上的地址信息锁存在地址锁存器中。
DT/R:数据发送/接收信号,输出,三态。DT/信号用来控制数据传送的方向。DT/为高电平时,CPU发送数据到存储器或I/O端口;DT/为低电平时,CPU接收来自存储器或I/O端口的数据。
DEN:数据允许控制信号,输出,三态,低电平有效。信号用作总线收发器的选通控制信号。当为低电平时,表明CPU进行数据的读/写操作。
HOLD:总线保持请求信号,输入,高电平有效。
HLDA:总线保持响应信号,输出,高电平有效。
2.3 8255A简介
本次设计灯的亮与灭以及闪烁是用8255的A口和B口控制的,工作在方式0,A口和B口均为输出。并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图2-3所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-4所示。
图2-3 8255的内部结构及引脚
图2-4 8255工作方式控制字和C口按位置位/复位控制字格式
三、流程图及电路接线图
1、软件流程图如下:
图3-1软件流程图
2、电路接线图如下:
图3-2电路接线图
3系统汇编源程序
系统采用汇编程序,利用延时子程序实现定时,具体程序见附录。
四、程序运行结果调试:
调试结果如图所示:
图4-1南北绿灯东西红灯 图4-2南北黄灯东西红灯
图4-3南北红灯东西绿灯 图4-4南北红灯东西黄灯
说明:
(1)图4-1表示南北方向亮绿灯允许通行,东西方向亮红灯禁止通行
(2)图4-2表示南北方向绿灯25秒时间到,绿灯转黄灯提示此方向上交通灯即将转红,东西方向仍然亮红灯禁止通行。
(3)图4-3表示5秒时间到,南北方向黄灯转红灯禁止通行,东西方向转亮绿灯允许通行。
(4)图4-3表示东西方向绿灯25秒时间到,绿灯转黄灯提示此方向上交通灯即将转红,南北方向仍然亮红灯禁止通行。
(5)5秒时间到,系统又回到初始状态即南北方向亮绿灯允许通行,东西方向亮红灯禁止通行如图8所示。依此循环,一个循环周期为60秒,从而实现了交通灯的工作功能。
五、总结
通过此次课程设计,结合所学的《微机原理与接口技术》这门课程的知识,对其应用之一——交通灯控制器进行设计与实现。总体感觉收获比较多,因为可以将书本上的知识应用到实践当中。刚开始的时候,翻阅了一些资料,还是没有什么头绪,后来在几个同学的帮助下,经过多次的上机练习和调试终于找到了入口点,接下来的事情就相对的容易一些了。首先,把握整个的设计的大概的流程,然后再对每一个分快进行设计,最后进行调试。在设计的过程中,很重要的一点是要熟悉可编程并行通信接口芯片8255A的初始化及其端口的使用。此次课程设计感觉收获很多,比如,翻阅资料提高了自学能力,和同学一起讨论汲取别人的长处。希望老师能够引导学生应该如何去把握、分析课程设计的主题,找出突破点,让学生积极主动进行课程设计,以使学生更好地提高自学的能力。
参考文献:
[1] 洪永泉.微机原理与接口技术[M].北京:科学出版社,2009
[2] 徐泽明.利用微机控制交通指示灯[J] .软件导刊,2007(5)
[3] 项新建.微机交通灯控制系统[J].ASPT来源刊,1997(09)
附录:
PORT_A EQU 2A0H ;声明8255A口地址
PORT_B EQU 2A1H ;声明8255B口地址
PORT_C EQU 2A2H ;声明8255C口地址
CMD_PORT EQU 2A3H ;声明8255A控制字寄存器端口地址
PORT_CS EQU 2A3H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AL,10000001B ;方式控制字:B口为输出
MOV DX,2A3H
OUT DX,AL ;写方式控制字到8255A控制字寄存器端口
SHOW:
NLDH: MOV DX,PORT_B
MOV AL,00101000B ;状态1:南北方向亮绿灯东西方向亮红灯
OUT DX,AL
MOV BL,0 ;BL清0
YS1: CALL DELAY ;延时25秒
INC BL ;(BL)++
CMP BL,500 ;比较
JNG YS1 ;(BL)<=500,转移到l1
NHDH : MOV DX,PORT_B
MOV AL,00011000B ;状态2:南北方向亮黄灯东西方向亮红灯
OUT DX,AL;
MOV BL,0
YS2: CALL DELAY ;延时5秒
INC BL
CMP BL,100
JNG YS2
NHDL:
MOV DX,PORT_B
MOV AL,01000100B ;状态3:南北方向亮红灯东西方向绿灯
OUT DX,AL
MOV BL,0
YS3: CALL DELAY ;延时25秒
INC BL
CMP BL,500
JNG YS3
NHDH:
MOV DX,PORT_B
MOV AL,01000010B ;状态4:南北方向亮红灯东西方向黄灯
OUT DX,AL
MOV BL,0
YS4: CALL DELAY ;延时5秒
INC BL
CMP BL,100
JNG YS4
JMP SHOW
DELAY PROC ;50ms延时子程序
PUSH BX ; 保护现场
PUSH CX
MOV BL,5
NEXT: MOV CX,2801 ;内循环次数(实现延时10 ms)
W10MS: LOOP W10MS ;
DEC BL ;修改外循环计数值
JNZ NEXT ;BX不等于0则进行外循环
POP CX ;恢复现场
POP BX
RET ;退出子程序,返回主程序
DELAY ENDP ;结束过程
CODE ENDS
END START