交通灯课程设计.docx
《交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
交通灯课程设计
《微机原理与接口技术》课程设计
题目:
交通灯
现代科技学院
自动化0903班
孙冉
2009100681
序言
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
1任务及要求
1.1设计任务
交通信号灯的控制:
(1)通过8255A并口来控制LED发光二极管的亮灭。
(2)A口控制红灯,B口控制黄灯,C口控制绿灯。
(3)输出为0则亮,输出为1则灭。
(4)用8253定时来控制变换时间。
1.2设计要求
设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。
之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。
闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。
延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。
闪烁5次后,再切换到1、3路口方向。
之后,重复上述过程。
2设计思想
2.1硬件设计思想
通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。
如硬件连接图所示,红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。
8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。
8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30S定时到。
OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。
2.2软件思想设计
通过双重循环来实现交通灯的控制。
开始让红灯全部亮,绿灯和黄灯全部熄灭,让南北方向的绿灯亮,东西方向的红灯亮。
第一层循环用来控制十字路口的灯的循环切换。
在第一层循环中嵌套一层循环来控制8253延时30秒时间是否到,如果未到,继续让南北方向的绿灯亮,东西方向的红灯亮。
如果已经延时30秒,则退出循环,让南北方向绿灯灭,东西方向红灯不变,南北方向黄灯开始闪烁。
接着又嵌套一层循环来控制黄灯的闪烁次数,如果黄灯未闪烁5次则继续等待,如果黄灯闪烁已经达到5次则退出循环,让南北路口的红灯亮,同时东西路口的绿灯亮,东西路口方向开始通车;再延时30秒,东西方向绿灯灭,黄灯闪烁5次,返回到初始化后一条语句,又开始重复上述过程。
3电路原理及电路图
3.1电路原理
由于8255A与8086CPU是以低八位数据线相连接的,所以8255A的
、
线分别与8086CPU的
、
线相连,而将8086的
线作为选通信号。
如果是按8255A内部地址来看,则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),命令控制口地址为(CS+003H),其中,CS为8255片选信号
的首地址;若是按8086CPU地址来看,则8255A的地址是PA口地址即(CS+000H),PB口地址为(CS+002H),PC口地址为(CS+004H),命令控制口地址为(CS+006H)。
当CS=0288H,则PA口地址为0288H,PB口地址为028AH,PC口地址为028CH,命令控制口地址为028EH。
3.2电路原理图
4 流程图
5 程序清单
DATASEGMENT;设置数据段,以及端口地址分配
PORTAEQU218H
PORTBEQU219H
PORTCEQU21AH
PTCON8255EQU21BH
PORT0EQU238H
PORT1EQU239H
PORT2EQU240H
PTCON8253EQU241H
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
INIT:
MOVAX,DATA
MOVDS,AX
MOVDX,PTCON8253
MOVAL,36H
OUTDX,AL
MOVDX,PORT0
MOVAX,2710H
OUTDX,AL
MOVAL,AH
OUTDX,AL;通道0工作方式3周期0.01s
MOVDX,PTCON8253
MOVAL,71H
OUTDX,AL;通道1工作方式1
MOVDX,PTCON8253
MOVAL,96H
OUTDX,AL
MOVDX,PORT2MOVAL,64H
OUTDX,AL;通道2工作方式3周期1s8253初始化完成
MOVDX,PTCON8255
MOVAL,80H
OUTDX,AL;8255初始化A,B,C口均工作在方式0
MOVDX,PORTA
MOVAL,0
OUTDX,AL
MOVDX,PORTB
MOVAL,0FH
OUTDX,AL
MOVDX,PORTC
MOVAL,0FH
OUTDX,AL;灯初始化完成
STA:
MOVDX,PORTA
MOVAL,0A0H
OUTDX,AL
MOVDX,PORTB
MOVAL,0F0H
OUTDX,AL
MOVDX,PORTC
MOVAL,50H
OUTDX,AL;1,3绿灯亮,2,4红灯亮
MOVDX,PORT1
MOVAX,0BB8H
OUTDX,AL
MOVAL,AH
OUTDX,AL;8253通道1赋值开始计时
SCAN1:
MOVAL,0
MOVDX,PTCON8255
MOVAL,90H
OUTDX,AL
MOVDX,PORTA
INAL,DX
ANDAL,0FH
CMPAL,1
JNZSCAN1;扫描PA7口
FLA1:
MOVDX,PTCON8255
MOVAL,80H
OUTDX,AL
MOVDX,PORTC
MOVAL,0F0H
OUTDX,AL
MOVDX,PORTB
MOVAL,50H
OUTDX,AL
MOVCX,0
TEST1:
MOVDX,PTCON8255;检测PB7
MOVAL,82H
OUTDX,AL
MOVDX,PORTB
INAL,DX
ANDAL,0FH
MOVAH,AL
MOVDX,PTCON8255
MOVAL,82H
OUTDX,AL
MOVDX,PORTB
INAL,DX
ANDAL,0FH
XORAL,AH
ADDCL,AL
CMPCL,9
JNZTEST1;闪烁5次
MOVDX,PTCON8255
MOVAL,80H
OUTDX,AL
MOVDX,PORTA
MOVAL,50H
OUTDX,AL
MOVDX,PORTB
MOVAL,0F0H
OUTDX,AL
MOVDX,PORTC
MOVAL,0A0H;1,3红灯亮,2,4绿灯亮
MOVDX,PORT1
MOVAX,0BB8H
OUTDX,AL
MOVAL,AH
OUTDX,AL;8253通道1赋值开始计时
SCAN2:
MOVAL,0
MOVDX,PTCON8255
MOVAL,90H
OUTDX,AL
MOVDX,PORTA
INAL,DX
ANDAL,0FH
CMPAL,1
JNZSCAN2
FLA2:
MOVDX,PTCON8255
MOVAL,80H
OUTDX,AL
MOVDX,PORTC
MOVAL,0F0H
OUTDX,AL
MOVDX,PORTB
MOVAL,0A0H
OUTDX,AL
TEST2:
MOVDX,PTCON8255
MOVAL,88H
OUTDX,AL
MOVDX,PORTC
INAL,DX
ANDAL,0FH
MOVAH,AL
MOVDX,PTCON8255
MOVAL,88H
OUTDX,AL
MOVDX,PORTC
INAL,DX
ANDAL,0FH
XORAL,AH
ADDCL,AL
CMPCL,9
JNZTEST2;闪烁5次
CODEENDS
ENDSTA
6 设计总结
6.1设计体会
通过这次关于交通灯的课程设计,我认真查阅了相关资料。
使我更加清楚地,更加深刻地了解了这方面的知识。
让我明白了8086芯片中的各个引脚的功能以及更加清楚的了解了交通有哪些规则。
在学习了理论的基础上,又经过了一次实践。
使我明白了设计一个系统是需要许多的时间和精力的。
同时也使我明白了,成功的设计好一个系统不是只要有坚实的专业基础就可以了的,而是需要更加系统的知识。
如果没有一个准确的概念就不可能也搞好一个设计。
换句话说,只要有了准确的概念,也就知道哪些资料能为自己的设计服务。
这样也就有了方向。
不过,我还是觉得自己在芯片和编程这两个方面都存在着许多不足之处。
我每找到一块芯片就得去翻阅其相关的功能介绍的资料。
同时编程也是我的一个头痛的问题。
我只能借助相关的资料,去查看相对应指令的作用和功能。
不过,这样不但使我掌握了更多的芯片的功能,同时让我对汇编语言的了解更加深刻了。
经过这次课程设计,我体会到了学了理论知识当然是很重要的,但是如果学完了却不能在实践中运用已学的知识那么学过的知识就等于没学一样。
因为是时间长了也就会忘得一干二净。
所以如果我们能在实践中学习知识的话,那么我们也就会努去找寻自己想要的资料,即使过了一段时间后,我们也会想起我们曾经为了这个知识而努力过,这样那个知识点也就不那么容易被我们遗忘了。
6.2存在问题与建议
本电路没有设置显示倒计时的七段LED数码管,如果应用到街道上,不利于司机、行人把握。
在上机调试中发现,由于此软件延时的时间均为估算时间,不是特别准确,对于交通要求特别高的地方不宜采用。
如果是放到一个大的交通灯系统中,会影响到各个交通灯的运行时间,可能整个系统对交通的指挥调度会大大偏离理论计算,不能有效地防止和消除交通堵塞现象。
当出现紧急情况,在特种车(如消防车、救护车)正要通过时,这种编程方式就不能完成。
但是,可以看到以上方案的一般性,只要将程序里的数据排列或规律稍加修改就可应用到任何一个路口的某一个方向上的交通灯上了,可移植性很强。
参考文献
[1]《微机原理与接口技术(基于32位机)》电子工业出版社马春燕主编
[2]《微机原理与接口技术(基于32位机)实验与学习辅导》电子工业出版社
马春燕主编
[3]《IBM-PC宏汇编语言程序设计(第二版)》华中科技大学出版社王元珍主编
[4]《微型计算机原理与接口技术(第二版)》中国铁道出版社扬立主编
[5]XX文库
[6]学习吧网站