1、课程题目: 模拟交通灯 1.1课程设计目的 模拟交通灯一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。交通灯的时间控制显示,以固定时间值预先“固化”,每次只是以一定周期交替变化,指挥道路交通。1.2 设计内容及要求 1 东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟。21分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。3东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟。4南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。此时东西
2、方向仍维持红灯点亮。5南北方向的黄灯闪烁5秒钟后,再转为东西方向车辆放行1分钟。如此循环重复。2.1 设计思想及实施方案 在模拟交通等设计中,如何使红灯、绿灯保持一定时间,黄灯闪烁的时间是一个非常关键的问题。本任务要求交通信号灯能实现自行定时、延时、切换等功能,即能实现交通信号灯自动控制。一般计算机控制系统实现定时或延时有两种基本方法:利用软件定时和硬件定时。软件定时,即让机器执行一段程序,程序没有具体的执行目的,利用执行每条指令CPU所花费的时间,可实现延时功能。这种方法容易实现,仅需选用恰当指令并安排循环即可实现,定时时间调整方便,但不能做到精确定时。另外,时间调整是以一条指令执行时间为基
3、准,占用CPU资源,降低CPU利用率。 硬件定时,即使用可编程定时/计数器硬件芯片定时。这种芯片内部有一个可编程定时器,其定时值、定时范围可以很容易地由软件程序改变,定时时间到时可发出某种形式的信号通知外设或CPU。定时器的输出频率和波形等均由程序设定,因而使用灵活,功能强。 本次课程设计根据我们所学知识、所查资料以及水平所限,我们利用了入栈、出栈所消耗的时间再加上确定次数的循环控制,达到我们所需要的延时时间。 3.1 8255的引线结构8255的引线结构如图1所示。共有40个引脚,其功能分别如下:D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它
4、实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 RD:读信号线,当这个输入引脚为低电平时,即RD=0且CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出
5、锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。 当A1=0,A0=0时,PA口被选择; 当A1=0,A0=1时,PB口被选择; 当A1=1,A0=0时,PC口被选择; 当A1=1.A0=1时,控制寄存器被选择;在本次课程设计当中,设计采用的是软件定
6、时(即通过汇编指令)实现的。而灯的亮与灭以及闪烁是用8255的A口和B口控制的,工作在方式0,A口和B口均为输出。 并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0-基本输入/出方式、方式1-选通输入/出方式、方式2-双向选通工作方式。8255的内部结构及引脚如图1所示。 3.2电路接线图图3 红绿灯模拟设计总电路图 上电路图为红绿灯模拟设计总电路图,通过8086CPU系统总线来控制8255的A端口、B端口,而A、B端口分别接
7、LED发光二极管来控制十字路口红绿灯。 红、黄、绿灯的表示情况如下:由于仪器上面只有16个发光二级管,且从高到低依次为:D15D14D13D12D11D10D9D8 D7D6D5D4D3D2D1D0。在设计的过程中做了如下的规定:R表示红灯,G表示绿灯,Y表示黄灯;E表示方向东,W表示方向西,S表示方向南,N表示方向北,例如:ER表示东方向为红灯,WG表示西方向为绿灯,SY表示南方向为黄灯,其余的类似。所以在设计中采用如下的规定:D15D14表示ER,D13D12表示SR,D11D10表示EG,D9D8表示SG,D7D6表示WR,D5D4表示NR,D3D2表示WG,D1D0表示NG,D15D1
8、4D11D10表示EY,D7D6D3D2表示WY,D13D12D9D8表示SY,D5D4D1D0表示NY。具体连线及表示如下图所示(圆圈表示发光二极管)。图4 十字路口红黄绿灯的表示3.3使用说明 这是一个交通红绿灯的模拟显示实验,由8255控制16个LED发光二极管的亮与暗来表达十字路口的交通信号,A口表示东、南方向,B口表示西、北方向,绿灯和红灯共同表示黄灯。可以通过发光二极管来判断具体是哪个方向、哪个灯亮。第四章 软件设计芯片初始化东西方向绿灯亮,南北方向红灯亮60秒 东西方向黄灯闪烁,南北方向红灯亮5秒 东西方向红灯亮,南北方向绿灯亮20秒 东西方向红灯亮,南北方向黄灯闪烁5秒 有键按
9、下?返回到DOS 结束 否是4.2源程序清单和注释IOY0 EQU 0DA00H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENT LA DB ? ;定义数据变量LB DB ?DATA ENDSCODE SEGMENT
10、ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,MY8255_MODE ;定义8255工作方式 MOV AL,80H ;工作方式0,A口和B口为输出 OUT DX,ALLOOP1: MOV DX,MY8255_A ;写A口发出的数据,东方向绿灯亮,南方向红灯亮 MOV AL,3CH OUT DX,AL MOV DX,MY8255_B ;写B口发出的数据,西方向绿灯亮,北方向红灯亮 MOV AL,3CH OUT DX,AL CALL DALLY1L1: MOV DX,MY8255_A ;写A口发出的数据,东方向黄灯亮,南方向红灯
11、亮 MOV AL,0FCH OUT DX,AL MOV DX,MY8255_B ;写A口发出的数据,西方向黄灯亮, 北方向红灯亮 MOV AL,0FCH OUT DX,AL CALL DALLY2MOV DX,MY8255_A ;写A口发出的数据,东方向黄灯灭,南北方向红灯亮 MOV AL,30H OUT DX,ALMOV DX,MY8255_B ;写B口发出的数据,西方向黄灯灭,南北方向红灯亮 MOV AL,30H OUT DX,AL CALL DALLY2 LOOP L1MOV DX,MY8255_A ;写A口发出的数据,东方向红灯亮,南方向绿灯亮 MOV AL,0C3H OUT DX,A
12、L MOV DX,MY8255_B ;写B口发出的数据,西方向红灯亮,北方向绿灯亮 MOV AL,0C3H OUT DX,AL CALL DALLY3L2: MOV DX,MY8255_A ;写A口发出的数据,南方向黄灯亮,东方向红灯亮 MOV AL,0F3H OUT DX,AL MOV DX,MY8255_B ;写B口发出的数据,北方向黄灯亮,西方向红灯亮 MOV AL,0F3H OUT DX,AL CALL DALLY2 MOV DX,MY8255_A ;写A口发出的数据,南北方向黄灯灭,东方向红灯亮 MOV AL,0C0H OUT DX,AL MOV DX,MY8255_B ;写B口发出
13、的数据,南北方向黄灯灭,西方向红灯亮 MOV AL,0C0H OUT DX,AL CALL DALLY2 LOOP L2 MOV AH,1 ;判断是否有按键按下,调用功能号1 INT 16H ;ROM BIOS 功能调用 JZ LOOP1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出 INT 21H ;DOS 系统功能调用DALLY PROC NEAR ;软件延时子程序 PUSH CX PUSH AX MOV CX,0FFFHD1: MOV AX,0FFFFHD2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RETDALLY
14、 ENDPDALLY1 PROC NEAR ;软件延时子程序,东西方向红灯亮,南北方向绿灯亮 PUSH CX PUSH AX MOV CX,1EHD3: CALL DALLY LOOP D3 POP AX POP CX RETDALLY1 ENDPDALLY2 PROC NEAR ;软件延时子程序,黄灯闪烁(即亮与灭)的时间间隔, PUSH CX PUSH AX MOV CX,02HD4: CALL DALLY LOOP D4 POP AX POP CX RETDALLY2 ENDPDALLY3 PROC NEAR ;软件延时子程序,东西方向绿灯亮,南北方向红灯亮, PUSH CX PUSH
15、AX MOV CX,0AHD5: CALL DALLY LOOP D5 POP AX POP CX RETDALLY3 ENDPCODE ENDS END START第五章 调试过程及运行结果在调试过程中发现程序中未进行保护现场和恢复现场操作,使AX,BX内容丢失,同时在主程序调用子程序时也出现错误,程序运行不出来,经同学帮助改正,成功运行。在修改程序过程中,发现自己对大多数汇编语言不太熟悉,很多指令都理解不上,在今后的学习中我应加强这方面的训练。运行结果:东西方向绿灯亮,南北方向红灯亮60秒 东西方向黄灯闪烁,南北方向红灯亮5秒 东西方向红灯亮,南北方向绿灯亮20秒 东西方向红灯亮,南北方向
16、黄灯闪烁5秒总结通过这两周的微机原理与接口技术课程设计课,我对这学期微机原理与接口技术原理的知识有了更进一步的认识,经过这次课程设计,我们才不得不通过各方面途径去查取相关资料,去自学相关知识,去一个个逐步消解我们学习上的盲点,使我受益匪浅,收获颇多,但从中也发现了自己许多的不足和需要改进的地方。首先,就要把握整个的设计的大概的流程,然后再对每一个分快进行设计,本次设计这一点没有做好,在设计当中做了不少无用功,其次在设计的过程中,很重要的一点是要熟悉可编程并行通信接口芯片8255的初始化及其端口的使用,在设计当中关于延时的选择,由于水平所限未选8253、8259的芯片,使过程得到简化,但不利于交
17、通信号灯的精确控时,是本次设计的最大缺陷。通过本次课程设计,我的实际操作能力和设计能力都得到了一定的提高,但理论与实践之间永远是存在着一定差距的,要把理论知识充分灵活地运用于实践是需要一定的实践经验和牢固的理论基础,希望以后能有更多这样的实践的机会,最后,对微机原理课程王老师的一学期的幸苦教学,说声谢谢!愿你工作顺利,身体健康!参考文献1 冯博琴.吴宁.微型计算机原理与接口技术(第二版)北京. 清华大学出版社, 20072 舒贞权.任伟利.微机计算机原理M西安:西安交通大学出版社,20043 楼顺天.周社佳.微机原理与接口技术M北京:科学出版社,20064 王玉良.吴晓非.微机原理与接口技术M北京:北京邮电大学出版社,20065 舒贞权,任伟利微机计算机原理M西安:西安交通大学出版社,1997