带数码管显示的交通灯.docx
《带数码管显示的交通灯.docx》由会员分享,可在线阅读,更多相关《带数码管显示的交通灯.docx(20页珍藏版)》请在冰豆网上搜索。
带数码管显示的交通灯
带数码管显示的交通灯
大
型
作
业
实
习
报
告
系别:
电子工程系
班级:
应用电子0901
学号:
0503090136
姓名:
邵景荣
指导老师:
刘彦华
前言
当前,在世界范围内,一个以微电子技术,计算机和通信技术为先导的,以信息技术和信息产业为中心的信息革命方兴未艾。
而计算机技术怎样与实际应用更有效地结合并有效地发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。
交通信号灯的出现,是交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
随着中国加入WTO,我们不但要在经济、文化、科技等各方面与国际接轨,在交通控制方面也应与国际接轨。
俗话说“要想富,先修路”,但路修好了如果在交通控制方面做不好道路还是无法保障畅通安全。
作为交通控制的重要组成部分的交通信号灯也应国际化,随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现在城市交通监控指挥系统中最重要的组成部分。
随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效的改善了交通情况。
然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路的交通状况必然受高速道路与普通道路耦合处交通情况的制约。
所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。
本文主要从单片机的应用上来实现十字路口交通灯智能化的管理,用以控制过往车辆的正常运作。
这次设计的主要任务是设计一个单片机控制的交通灯控制系统的设计。
首先设计出各个功能模块、在搭建出完整的硬件系统,选好合适的单片机型号并依照硬件链接图设计出相应的软件系统,通过编译软件编译出可执行的目标文件,最后做出原理图并在仿真软件上仿真出设计结果。
河南工业职业技术学院
大型作业任务书
类 别:
三年制高职
专业:
应用电子技术
班级:
姓名:
大型作业题目:
带数码显示的交通灯
指导教师姓名:
刘彦华
负责人签字:
刘明黎
2011年5月15日
一、项目功能:
设计十字路口红、黄、绿灯指示与倒计时数码管显示的硬件原理图,并进行硬件制作。
编程实现十字路口红、黄、绿灯指示与倒计时数码管显示,具体参数到独山大道与光武路交叉口观察确定。
二、设计要求:
1.总体设计;
2.硬件设计;
3.软件设计与调试;
4.Proteus仿真;
5.硬件制作与测试;
三、大型作业说明书要求:
1.封面、前言、目录
2.大型作业任务书
3.系统总体设计
4.硬件设计
5.软件设计(包括软件流程图及源程序清单)
6.设计心得
7.参考资料
指导教师(签字):
刘彦华2011年5月15日
系统总体设计
一、总体设计方案
Ø设计基本要求:
设计十字路口红、黄、绿灯指示与倒计时数码管显示的硬件原理图,并运行硬件制作。
编程实现十字路口红、黄、绿灯指示与倒计时数码管显示,具体参数到独山大道与光武路交叉口观察确定。
Ø实现功能:
1.正常情况;
东西车道和南北车道上的车辆交替运行,每次通行时间为60s;东西向和南北向转换时黄灯闪烁3s。
东西南北四个方向,东西绿灯亮60S,再黄灯闪烁3S,最后红灯亮60S,同时东西绿灯亮时,南北红灯亮60S,绿灯亮60S,黄灯闪亮3S。
用LED数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示;
2.紧急情况:
有紧急通道,即按压“东西紧急键”,则东西方向绿灯,南北方向红灯;松开“东西紧急键”,5s后解除东西紧急通行状态。
按压“南北紧急键”,则南北方向绿灯,东西方向红灯;松开“南北紧急键”,5s后解除南北紧急通状态。
Ø交通灯显示状态:
东西方向(简称A方向)
南北方向(简称B方向)
状态说明
红灯
黄灯
绿灯
红灯
黄灯
绿灯
灭
灭
亮
亮
灭
灭
A方向通行,B方向截止
灭
灭
闪烁
亮
灭
灭
A方向警告,B方向禁行
灭
亮
灭
亮
灭
灭
A方向警告,B方向禁行
亮
灭
灭
灭
灭
亮
A方向禁行,B方向通行
亮
灭
灭
灭
灭
闪烁
A方向禁行,B方向警告
亮
灭
灭
灭
亮
灭
A方向禁行,B方向警告
二、总体设计方案的框图
图一
框图说明:
Ø电源提供方案:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
Ø计时控制方案:
利用89C51内部的定时/计数器进行定时,配合软件延时实现倒计时。
Ø.显示控制方案:
采用数码管与LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。
Ø紧急情况下:
采用外部中断0来控制东西紧急情况,用外部中断1来控制南北紧急情况。
三、落实实施:
Ø用C语言编程并用PROTEUS进行仿真测试,看软件功能是否齐全,最后用实物图连接看能否实现预定功能。
硬件电路原理与分析
一、原器件清单
交通灯控制电路原器件清单
元器件名称
参数
数量
元器件名称
参数
数量
IC插座
单片机
晶体振荡器
瓷片电容
发光二极管
DIP40
89C51
12MHZ
30pF
1
1
1
2
12
电阻
电解电容
弹性按键
电阻
LED数码管
12KΩ
22uF
300Ω
3
1
3
20
4
二、主电路原理
本次本次设计的交通灯控制器采用单片机最小应用系统作为控制器,由数码管显示红灯与绿灯时间,并用LED发光二极管作为红、黄、绿三色指示信号灯,且,红灯亮30S,黄灯亮5S,绿灯亮25S。
其电路原
图二
二、单元电路设计:
1.单片机最小应用系统
(1)单片机89C51引脚图
89C51引脚图下图:
图三
(2)时钟电路和复位电路
单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡电路,只需要使用18、19脚连接晶体振荡器,并外用两个33PF电容,帮助晶振起振,并使其频率稳定。
其工作原理如图所示。
MCS-51系列单片机的有效复位信号为两个周期以上的高电平。
其复位的实现通常可以采用开机上电复位和外部手动复位两种方式。
加电瞬间RST端的电位与VCC相同,随着RC电路充电电流的减小,RST端的点位逐渐下降。
只要保持10ms以上的高电平就能使单片机有效复位。
它们的工作原理图如下图:
2.数码管显示电路
(1)驱动电路
本文采用PN[P三极管作为驱动器驱动数码管的显示,由于每个发光二极管额定电流3-10UA,故在电路中加限流电阻,经计算取该电阻为300Ω。
其显示电路如图五:
图五
(2)数码管显示方式
因此根据数码管的驱动方式不同,可以分为静态显示和动态显示两类。
本次设计采用的是动态显示驱动,数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔段同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通有各自独立的I/O线控制,当单片机输出字型码时,所有数码管都接收到相同的字型码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,改为就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的点亮时间为1~2毫秒,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上个位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态是一样的,能够节省大量的I/O端口,而且功耗更低,
软件设计
一、程序设计流程图
1.中断东西流程图
2.
中断南北流程图
二、原程序清单
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdx_green=P1^0;//东西方向的绿灯
sbitdx_yellow=P1^1;//东西方向的黄灯
sbitdx_red=P1^2;//东西方向的红灯
sbitnb_green=P1^5;//南北方向的绿灯
sbitnb_yellow=P1^6;//南北方向的黄灯
sbitnb_red=P1^7;//南北方向的红灯
uintcount_down=30;//注意必须是char型而不能是uchar型
ucharsign;
uchark=0,i=0;
uchardisp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};
uchartime[]={0,0,0,0};
ucharwei[]={0xfe,0xfd,0xf7,0xfb};//数码管位选
voidCountdown()interrupt1//倒计时及红绿灯控制函数
{
TH0=0x3c;
TL0=0xb0;
i++;
if(i==20)
{
i=0;
count_down--;
if(count_down<0)
{
count_down=30;
}
if(count_down>=7)
{
if(sign)//东西方绿灯亮/南北方红灯亮
{
dx_green=0;
dx_yellow=1;
dx_red=1;
nb_green=1;
nb_yellow=1;
nb_red=0;
}
else//东西方红灯亮/南北方绿灯亮
{
dx_green=1;
dx_yellow=1;
dx_red=0;
nb_green=0;
nb_yellow=1;
nb_red=1;
}
}
elseif(count_down<7&&count_down>3)
{
if(sign)//东西方绿灯闪烁/南北方红灯亮
{
dx_green=!
dx_green;
nb_red=0;
}
else//东西方红灯亮/南北方绿灯闪烁
{
dx_red=0;
nb_green=!
nb_green;
}
}
elseif(count_down<=3&&count_down>=0)
{
if(sign)//东西方黄灯亮/南北方红灯亮
{
dx_green=1;
dx_yellow=0;
nb_red=0;
}
else//东西方红灯亮/南北方黄灯亮
{
dx_red=0;
nb_green=1;
nb_yellow=0;
}
}
if(count_down==0)
{
sign=!
sign;
}
}
}
voidtime_disp()interrupt3//数码管显示中断函数
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
k++;
if(k>3)
{k=0;}
time[0]=count_down/10;
time[1]=count_down%10;
time[2]=count_down/10;
time[3]=(count_down%10)-1;
P2=wei[k];
P0=disp[time[k]];
}
voiddx_key()interrupt0
{
TR0=!
TR0;
dx_green=0;
dx_red=1;
dx_yellow=1;
nb_red=0;
nb_green=1;
nb_yellow=1;
count_down=0;
}
voidnb_key()interrupt2
{
TR0=!
TR0;
dx_green=1;
dx_red=0;
dx_yellow=1;
nb_red=1;
nb_green=0;
nb_yellow=1;
count_down=0;
}
voidmain()
{
EA=1;
ET0=1;
ET1=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
TR0=1;
TR1=1;
while
(1);
}
三、仿真测试
在程序编写完成后,运用Proteus仿真软件,进行仿真。
将编好的程序下载到仿真电路图中的89C52单片机中,进行运行调试,看与设计目标是否一致如图3-1和图3-2,看设计的功能是否能够实现,如果有问题对照源程序找出问题所在并改正。
图3-1
图3-2
四、硬件的实际测试
待确认仿真现象与设计要求的功能一致且不出现错误时仿真完成。
将编好调试完成的源程序下载到自己焊接好的硬件电路上进行最后的测试,看各个设计功能是否能够实现。
心得体会
短短一个星期的实训就这么过去了,时间虽短但还算是颇有心得,颇有体会!
刚开始很期待这个试训的到来,想着肯定会有桃战性的工作,但结果也没让我失望,老师给了两个题,一个是定时器一个是交通灯,当时我就在思考选那个题呢,定时器工作庞大但老师会给资料,交通灯看似简单但什么都需要自己来做,定时器的程序我可能会看不懂,不好分析,而交通灯的我却可以凭着自己的实力搞定。
综合各方面的原因我选择了交通灯。
接下来的任务就是忙于工作了,起先是设计电路图(根据独山大道和光武路口交叉道)。
通过在图书馆和网上查询资料这一项顺利过关。
然后开始核心问题,就是程序,这个是由难度的,最让我头疼的就是数码管倒计时那一块,弄了好几天都没搞定,最后才弄了一个不是太满意的程序。
哎!
还是没学好啊!
最后就开始一系列的文字工作,每一部分都是我亲手做的,不管怎么样,我看这都有些许的成就感,都那么的温馨!
这次实训给了以下几点体会:
做事要细心,要有耐心;做事要会看,会晤。
总结为良心,两唔。
在以后的学习中我会更加努力,会发扬长处,补缺短处。
让知识来丰富自己。
参考资料
[1]王静霞——单片机应用技术(C语言版)北京:
电子工业出版社.
[2]蓝和慧宁武——全国大学生电子设计竞赛单片机应用技能精解北京:
电子工业出版社.
[3]彭伟——单片机C语言程序设计实训100例北京航空航天大学出版社