基于单片机的带时间显示的交通灯设计Word格式文档下载.docx
- 文档编号:22725795
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:25
- 大小:606.02KB
基于单片机的带时间显示的交通灯设计Word格式文档下载.docx
《基于单片机的带时间显示的交通灯设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的带时间显示的交通灯设计Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数目的实际变化情况,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用模糊控制技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
2、设计任务和要求
本次的课程设计任务是设计一个基于单片机的带时间显示功能的交通灯,就是模拟一个十字路口的交通灯的控制情况。
这里既要设计出红灯、绿灯、黄灯亮暗的变化情况,又要设计出在其变化期间的数码管计时情况。
为确保在程序出错时的交通的正常通行,必须保证交通灯在出现故障等的情况下能够实现手动控制,以保障交通的正常进行。
二、设计原理
首先了解实际交通灯的变化情况和规律。
假设一个十字路口为东南西北走向。
初始状态为东西南北都不亮。
然后转为状态1:
东西红灯通车,南北绿灯亮。
过一段时间后,转换位状态2:
东西红灯灭,黄灯亮,南北绿灯灭,黄灯亮。
再转换为状态3:
南北红灯亮,东西绿灯亮,可以通车。
过一段时间后再转换到状态1。
正常情况下一直循环状态1,状态2和状态3。
对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。
通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。
每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。
通过中断子程序的,可以在原有的交通信号灯控制系统设计的基础上,增添上手动控制功能,既可以实现出现故障时的手动控制,又可以实现更加人性化的功能,比如可实现人行横道灯的人为控制。
这个电路用到的核心电子元器件就是单片机,我选用的单片机型号是STC89C52RC。
通过对单片机进行编程,实现模拟十字路口交通灯的效果。
具体要求:
1、带有时间显示功能。
2、模拟出十字路口交通灯的变化情况。
3、交通灯在特殊情况下可以由自动控制变为手动控制。
三、设计的具体实现
1、硬件电路的设计
首先要说一下,电路设计中,电源的设计可谓讲究很多,可以说设计好了一个电路的电源部分,整个电路的80%已经完成了,鉴于本次课程设计的特殊性,我们只是模拟出交通灯的运行情况,这里我们只要选择电脑用的USB电源即可,USB电源标准为:
+5V,500mA。
我们的单片机需要+5V电源电压供电,约50mA的电流。
由此看来,USB的电源完全可以带动单片机正常工作。
其次要说明的是,一个硬件电路的好坏标准就我个人理解应该是从电路的稳定性,电路的功耗,电路版的面积大小,元器件的价格这四方面来衡量。
本着这个原则,我设计的电路分为以下几个部分,并详细介绍各部分的选择方案:
1)、时钟电路部分
时钟电路部分,采用外部方式时钟电路,晶振频率选择为11.0592MHz,另外需要两个30pF的陶瓷电容,电路结构如图3-1
图3-1
2)、数码管显示部分
在数码管的选择上面,本电路选择的是共阴极数码管。
经过查阅相关技术资料,我所选择的数码管的具体型号是JM-S10022G-H,它的平均工作电流是4-5mA,我所选择的单片机完全可以驱动它。
但为确保单片机可以更加正常的控制数码管显示,也为了增大数码管的亮度,我这里在单片机的每个端口P0、P1、P2、P3上都加上了上拉电阻,并根据要求编写了共阴极数码管的子码表:
0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H。
如果您选择的数码管是共阳极数码管,请您在程序中更改相关的子码表即可。
为更加真实的模拟出十字路口的交通灯的空间分布情况,我这里选择了四个数码管分别作为东西方向和南北方向的倒计时显示,硬件电路如图3-2所示:
3)、交通灯灯部分
LED的选择上面,数量上我们需要红、黄、绿三种不同颜色的灯光各四个。
器件选择上,个人感觉不需要特意去做选择,一般情况下,大家常见的LED灯就可以满足要求,单片机也可以直接驱动其正常工作。
在本次的课程设计中,我假设十字路口的车辆通行方向谁双向的。
即一个车道有两个方向的车辆通行,如果实际的车道为一个方向通行的单车道的话,可以拆掉一条车道上的不需要的三盏交通灯,以满足实际交通情况。
这时的电路依然会正常工作,而不会受到任何的干扰为了更加形象的描述出十字路口的交通灯分布情况,我分别在东西方向和南北方向分布上六个交通灯,硬件电路图如图3-2所示:
图3-2
4)、复位电路部分
复位电路部分采用低电平复位电路,通过低电平脉冲的触发来实现单片机的复位。
平时有一个高电位通过一个电阻将单片机的复位引脚拉高,防止外界干扰造成复位引脚被误触发。
具体点电路如图3-3所示:
图3-3
5)、键盘按键部分
按键部分采用的是按钮触发方式,通过软件编程,简单实现了防按键抖动的效果,经仿真测试和实物调试,按键部分可以满足程序设计的要求。
具体的电路硬件结构如图3-4所示:
图3-4
2、软件编程的实现
硬件电路图有了,下面就应该是根据硬件电路图来设计一个程序了。
首先分析程序要完成的任务。
1)、数码管的扫描部分
此部分程序清单如下:
;
&
RET0:
MOVA,NUMTIM;
***数码管的动态扫描*****************
LCALLBIN_BCD;
**********A存储十位,B存储个位*******
MOVSHIWEI,A
MOVGEWEI,B
INCSCANLED
MOVA,SCANLED;
******A=0X01、0X02……******
MOVB,#4;
************************************
DIVAB
MOVA,B;
***********A=B=0X01********************
RLA
MOVDPTR,#TAB_SCAN0
JMP@A+DPTR;
*************************************
TAB_SCAN0:
AJMPSCAN_L1
AJMPSCAN_L2
SCAN_L1:
MOVP2,#11111011B;
熄灭数码管
MOVA,SHIWEI;
A=0X01
JMPEND_SCAN
SCAN_L2:
MOVP2,#11111100B;
P2=FD,点亮位码
MOVA,GEWEI;
A=0X01
END_SCAN:
MOVDPTR,#TABLE;
MOVCA,@A+DPTR;
;
取共阴字码表值
MOVP0,A;
;
数码管依次显示0、1、2......
MOVA,LED;
MOVP1,A;
熄灭LED灯
POPPSW
POPACC
RETI;
************************************************
;
…………………………省略部分代码…………………………
TABLE:
DB0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H
共阴字码表
代码分析:
程序初始化完成后。
正常情况下,在中断0没有发生的时候。
首先进入的中断就是定时计数器0中断。
程序根据初始化的初值分别将数码管要显示的段码的十位和各位放入寄存器A和B中。
接下来使数码管的位码有效,再通过查表程序,查得数码管要显示的数值,并把数值显示在数码管上。
2)、LED灯的控制部分:
此部分程序清单如下:
RED_LIGHT:
MOVLED,#11111100B;
红灯缓冲区赋值
MOVNUMTIM,RED;
NUMTIM=10
DECRED;
MOVA,RED;
A=0X09、0x08......
CJNEA,#0FFH,RET0
MOVRED,#10;
红灯定时10s
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
JMPRET0
YEL_LIGHT:
MOVLED,#11110011B
MOVNUMTIM,YELLOW
DECYELLOW
MOVA,YELLOW
CJNEA,#0FFH,RET0
MOVYELLOW,#3;
黄灯定时3s
GRE_LIGHT:
MOVLED,#11001111B
MOVNUMTIM,GREEN
DECGREEN
MOVA,GREEN
CJNEA,#0FFH,RET1
MOVGREEN,#10;
绿灯定时3s
RET1:
JMPRET0
BIN_BCD:
MOVB,#10;
个位、十位分离
RET
DELAY:
MOVR5,#02;
延时子程序
D1:
MOVR6,#200
D2:
MOVR7,#200
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
程序进入LED显示部分以后,先是点亮相应的LED灯,然后调用数码管扫描程序,然后根据预先设定的倒计时初值进行动态扫描,直到倒计时结束,此段LED灯熄灭。
跳到下一个状态重复上述步骤。
3)、手动控制部分
INTT0:
PUSHACC
PUSHPSW
SETBP2.1;
SETBP2.2
MOVP1,#0FFH;
熄灭灯
LP:
JNBP2.4,L1;
***************************红灯********
JNBP2.5,L2;
*****东西方向交通灯控制***黄灯********
JNBP2.6,L3;
**************************绿灯********
JMPLP
L1:
LCALLDELAY
JBP2.4,LP
MOVP1,#0FCH
AJMPLP
L2:
LCALLDELAY
JBP2.5,LP
MOVP1,#0F3H
L3:
JBP2.6,LP
MOVP1,#0CFH
JMPINTT0
当外部中断0发生时,程序进入此段中断子程序。
进入此段中断子程序后程序会将数码管的位码全部置“1”,熄灭所有数码管,然后进入循环检测部分。
不停的检测P2.5、P2.5、P2.6这三个位的状态是否为“0”,如果是,则跳转到相应位置,先消除按键抖动,然后点亮对应的数码管,实现交通灯的手动控制。
********************************************************************
****************************交通灯模拟实验程序*********************
GEWEIEQU21H;
个位数据
SHIWEIEQU23H;
十位数据
SCANLEDEQU25H
SCANMODEEQU26H
REDEQU28H;
定义灯的缓冲区
GREENEQU29H
YELLOWEQU32H
NUMTIMEQU33H
LEDEQU34H
ORG000H
JMPSTART
ORG0003H;
外中断0入口地址
ORG0BH;
定时器0中断入口
JMPTIMER0
****************************主程序开始******************************
ORG100H
START:
MOVSP,#50H
MOVR0,#20H;
**********************
MOVR5,#20
CLR0:
MOV@R0,#00H;
R0=34H时结束循环,起延时
INCR0
DJNZR5,CLR0;
***********************
MOVTMOD,#01H;
设置定时器工作方式
MOVTH0,#HIGH(65536-5000);
定时器0赋初值
MOVTL0,#LOW(65536-5000)
SETBTR0;
开启定时器0(计时0.5S)
SETBIT0;
下降沿触发
SETBPX0;
设置优先级
MOVIE,#10000011B
MOVP0,#0FFH;
******************************************
MOVP1,#0FFH
MOVP2,#00H
MOVP3,#0FFH
MOVR3,#10
MOVR2,#3;
***************端口初始化*********************
MOVR1,#10
MOVRED,#10;
绿灯定时10秒
MOVNUMTIM,#10
MOVLED,#0FFH;
**************************************
AJMP$
***********************中断0子程序*********************************
LCALLDELAY
*********定时器部分,负责交通灯的计时和数码管动态扫描**************
TIMER0:
PUSHACC
定时器0重装初值
MOVTL0,#LOW(65536-5000)
DJNZR7,RET0;
R7非0,跳到RET0(数码管扫描)
MOVR7,#200;
重新赋值
MOVA,SCANMODE;
调用扫描
**********************************************
DIVAB;
*************A、B清零,延时******************
MOVA,B;
MOVDPTR,#TAB_SCAN
JMP@A+DPTR;
********跳到TAB_SCAN处********************
TAB_SCAN:
AJMPRED_LIGHT
AJMPYEL_LIGHT
AJMPGRE_LIGHT
RET0:
TAB_SCAN0:
;
*********************红、黄、绿灯显示子程序*************************
MOVNU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 时间 显示 交通灯 设计