交通灯的设计Word格式.docx
《交通灯的设计Word格式.docx》由会员分享,可在线阅读,更多相关《交通灯的设计Word格式.docx(21页珍藏版)》请在冰点文库上搜索。
![交通灯的设计Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/784e9ba4-6835-43b8-a014-1901c1abb164/784e9ba4-6835-43b8-a014-1901c1abb1641.gif)
3.4交通灯程序设计的流程图7
4硬件调试12
4.1静态检查12
4.2通电检查12
4.3软件调试及软硬件联调12
5结论13
谢辞14
参考文献15
附录16
引言
近年来随着科技的飞速发展,单片机的应用正在不地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
本系统采用单片机AT89S52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
1交通灯概述及其设计方案
1.1交通灯的历史
19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。
其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。
人们受红绿装启发,在交通路口设置了红绿灯,满足各种交通工具的发展和交通指挥的需要。
而红绿灯也有其自身的缺陷,如不能及时的提醒人们注意绿灯转变为红灯。
之后,我国的胡汝鼎怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员,提出红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。
他的建议立即得到有关方面的肯定。
于是红、黄、绿三色信号灯即以一个完整的指挥信号家族,遍及全世界陆、海、空交通领域了。
1.2课题研究背景与意义
随着经济的增长和人口的增加,人们生活方式不断变化,人们对交通的需求不断增加。
城市中交通拥挤、堵塞现象日趋严重,由此造成巨大的经济与时间损失。
资料显示,对日本东京268个主要交叉路口的调查估计表明:
每年在交叉路口的时间延误,折成经济报失为20亿美元;
而在我国北京市,当早晚交通高峰时,交叉路口处的排队长度竟达1000多米,有的阻车车队从一个交叉路口延伸到另一个交叉路口,这时一辆车为通过一交叉路口,往往需要半个小时以上,时间损失相当可观。
我国是一个历史悠久、人口众多的国家,城市数量随着社会的发展不断增多。
随着城市化进程的大大加快,诱发的交通需求急剧增长,供需矛盾不断激化,严重的交通问题也随之而来。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,这一切要归功于城市交通控制系统中的交通灯控制系统。
交通灯控制系统对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果,使城市交通得以有效管理。
1.3课题设计内容
本课题对基于单片机的交通灯控制系统进行设计。
以51系列单片机为控制核心,设计并制作交通灯控制系统,用于十字路口的车辆及行人的交通管理。
东西南北四个路口具有通行指示灯,并分别用计时器显示路口通行转换剩余时间。
设南北车道与东西车道交叉组成十字路口,用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。
正常情况下,南北、东西两车道轮流放行,当东西方向为红灯时,南北方向有25秒的绿灯加5秒的黄灯组成;
当东西方向为红灯时,南北方向有25秒的绿灯加5秒的黄灯组成。
设计交通灯控制系统硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。
2交通灯的硬件电路结构设计
交通灯设计的硬件的构成系统主要由稳压电路和AT89S52单片机电路部分,完成对交通灯信号的模拟与显示功能,单片机外部还要复位、显示器等器件。
可分为以下几个模块:
稳压电路、单片机系统、LED数码管显示模块。
2.1稳压电路模块的设计
本次课程设计,提供的是+9V直流电压,而单片机的驱动电压为+5V直流电压,于是需要一个稳压电路模块,把电压降到+5V。
模块的核心器件是三端稳压管7805。
LM7805三端集成稳压电源内部由基准电压回路、恒流源、过流保护、过压保护和短路保护回路等8部分组成,具有低功耗,高效率,纹波系数小,输出电压稳定等优点,在其输出端即可得到+5V电压。
其电路如下图所示:
图1稳压电路模块图
2.2单片机系统电路
本交通灯是基于单片机AT89S52设计的,其单片机系统包括复位电路,晶振时钟电路,LED显示电路等,电路框图如下:
图2单片机系统模块电路图
2.2.1单片机的简介
AT89系列单片机是ATMEL公司的8位FLASH单片机。
这个系列单片机最吸引人的特点就是在片内含有FLASH存储器,不需要再外扩存储器,与80C51插座兼容,由于这些优点,使它有着十分广泛的用途,特别是在便携式和需要特殊信息保存的仪器和系统中显得更为有用。
89系列单片机典型型号有AT89C51,AT89LV51,AT89C52,AT89LV52,AT89C2051,AT89S52,AT89C1051,AT89S51和AT89S8252。
本设计选用AT89S52。
它内部具有1个8KB的Flash的程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16的定时/计数器、1个串行口、6个二级中断源和两个中断优先级。
引脚如图所示。
图3单片机引脚图
按功能,引脚大致分为4部分:
a)I/O口线
P0口:
8位、漏级开路的双向I/O口。
当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。
在编程时,P0口用于接受指令代码字节;
在程序校验时,P0口可输出指令字节(这时需要加外部上拉电阻)。
P1口:
8位、准双向I/O口,具有内部上拉电阻。
P1口是为用户准备的I/O双向口。
在编程和校验时,可用做输入低8位地址。
用做输入时,应先将输出锁存器置1。
P1口可驱动4个TTL负载。
P2口:
P2口也可做普通I/O口使用。
P2口可驱动4个TTL负载。
P3口:
P3口可作为普通I/O口,用做输入时,将输出锁存器置1。
在编程/校验时,P3口接受某些控制信号。
b)控制信号线
RST:
复位输入信号,高电平有效。
在振荡器稳定工作时,在RST脚施加两个机器周期(即24个晶振周期)以上的高电平,将器件复位。
/VPP:
外部程序存储器访问允许信号。
当
引脚接地时,仅使用64KB的片外程序存储器,CPU从外部0000H~FFFFH的地址空间取指令;
引脚接VCC时,CPU从片内0000H地址开始取指令,当PC值超过1FFFH时,自动转到外存储器2000H~FFFFH地址空间执行程序。
:
片外程序存储器读选通信号,低电平有效。
ALE/
低字节地址锁存信号。
c)电源线:
VCC为电源电压输入引脚,GND为地线。
d)外部晶振引线:
XTAL1:
片内振荡器反相放大器和时钟发生线路的输入端。
使用片内振荡器时,连接外部石英晶体和微调电容。
XTAL2:
片内振荡器反相放大器的输出端。
当使用片内振荡器时,外接石英晶体和微调电容。
2.2.2时钟电路模块
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英振荡器和微调电容,就构成一个稳定的自激振荡器。
晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。
但反过来运行速度快对储存器的速度也就越高。
当MCS-51内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1,因此定时器/计数器的输入脉冲的周期与机器周期一样,输入脉冲的频率为时钟振荡的1/12。
当采用12MHz频率的晶体时,计数速率为1MHz,输入脉冲的周期间隔为1us。
时钟电路由一个晶体振荡器12MHZ和两个30pF的瓷片电容组成。
时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。
其电路如图所示:
图4时钟电路图
2.2.3复位电路模块
复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,就可使MCS—51单片机复位。
复位的主要功能是把PC初始化为0000H,使MCS—51单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态,为摆脱死锁状态,也需按复位键重新启动。
单片机的复位电路通常采用上电复位和按钮复位的两种方式。
本设计采用图上电复位电路.上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
图5单片机复位电路图
2.2.4主控制系统模块
主控制器采用AT89S52,是ATMEL公司生产的一款性能稳定的8位单片机。
AT89S52具有1个8KB的FLASH程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16位定时/计数器及1个串行口和6个向量二级中断结构。
单片机的P0口分别用于控制南北及东西的通行灯,P1口和P1^0-P1^6口用于4组2位LED计时器的控制。
其主控电路如图所示:
图6单片机主控电路图
2.2.5交通灯输出控制模块
道口交通灯指示采用高亮度红、黄、绿发光二极管进行提示。
当R=220欧时,按公式A=(5-1.8)/R计算,电路中的电流大小应为A=14.545mA.由于每个路口的通行双向指示处理相同,因此每个端口应具有3A的吸收电流能力。
其图如图所示
图7交通灯输出电路图
2.2.6时间显示电路模块
道口通行剩余时间采用高亮红色7段LED发光数码管显示,采用共阴数码管,其采用动态扫描,需要使用4个数码管分别显示东西、南北的倒计时数字,将暂存各状态剩余时间的数字从变量中提取出“十位”和“个位”,用动态扫描的方式在数码管中显示。
其显示电路如下图所示:
图8倒计时显示电路图
3软件设计与流程图
3.1一秒定时实现
采用12MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值为了实现一秒的定时,采用定时和计数相结合的方法实现。
选用定时/计数器T0作定时器,工作于方式1产生50ms的定时,再用软件计数方式对它计数20次,就可得到一秒的定时。
3.2计数部分
将定时器/计数器的方式寄存器TMOD,用软件赋初值10H。
这时定时器/计数器0采用工作方式1,方式选择位C/T设为1,即设T1为16位计数器。
定时器/计数器0采用工作方式1,C/T设为0,即设T0为16位定时器。
计算计数初值:
设计数初值为X,本设计采用12MHz的晶振。
机器周期=12×
(1/晶振频率)=12×
/(12
)=
(
-X)×
1×
=50×
X=15536。
3.3定时器及中断存储器的初始化设置
在写单片机的定时器程序时,在程序开始处需要对定时器及中断寄存器做初始化设置,通常定时器初始化过程如下:
①对TMOD赋值,以确定TO和T1的工作方式。
②计算初值,并将初值写入THO,TLO或THl,TLlo
③中断方式时,则对IE赋值,开放中断。
④使TRO或TR1置位,启动定时器/计数器定时或计数。
3.4交通灯程序设计的流程图
1交通灯的状态切换表
南北方向
东西方向
序号
状态
1
绿灯亮25秒,红、黄灯灭
红灯亮30秒,绿、黄灯灭
2
黄灯亮5秒,红、绿灯灭
3
回到状态1
②程序流程图
程序清单如下:
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
//定义全局变量
uchara=0;
//东西显示时间的缓存变量
ucharb=0;
//南北显示时间的缓存变量
uchartime=0;
//记录循环单位的位置
ucharint_time=0;
//记录中断的次数
ucharclock_a_red=30;
//东西定时器初值
ucharclock_a_green=25;
ucharclock_a_yellow=5;
ucharclock_b_red=30;
//南北南北计时器初值
ucharclock_b_green=25;
ucharclock_b_yellow=5;
ucharcodetable[]={//数码管显示编码
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
//延时模块
voiddelayms(uintxms)
{
uinti,j;
for(i=xms;
i>
0;
i--)
for(j=110;
j>
j--);
}
//数码管显示模块
voiddisplay(uinta,uintb)
{
P2=0xfe;
P1=table[a/10];
delayms
(1);
P2=0xfd;
P1=table[a%10];
P2=0xfb;
P1=table[b/10];
P2=0xf7;
P1=table[b%10];
}
//主函数模块
voidmain()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
P2=0xff;
P1=0x00;
while
(1)
display(a,b);
}
}
//中断服务模块
voidT0_time()interrupt1
int_time++;
if(int_time==20)
time++;
if(time>
=0&
&
time<
25)
{
P0=0xde;
a=clock_a_red--;
b=clock_b_green--;
}
elseif(time>
=25&
30)
{(time%2==1)?
(P0=0xee):
(P0=0xfe);
clock_b_green=25;
b=clock_b_yellow--;
=30&
55)
P0=0xf3;
clock_a_red=30;
clock_b_yellow=5;
a=clock_a_green--;
b=clock_b_red--;
}
=55&
60)
(P0=0xf5):
(P0=0xf7);
clock_a_green=25;
a=clock_a_yellow--;
else
time=0;
clock_a_yellow=5;
clock_b_red=30;
int_time=0;
4硬件调试
4.1静态检查
根据硬件电路图核对了元器件的型号、极性,安装是否正确,检查硬件电路连线是否与电路原理图一致,检查电路元器件是否都已经连接好,用万用表一一测试。
4.2通电检查
首先调试电源部分。
整个电路只需要+5V的电压,接上电源,将+9V直流电通入,测试变压器的输出端,整流桥输出,LM7805的输出电压是否和理论计算值一致,再用示波器检测单片机的复位和晶振电路是否有复位信号和振荡信号。
4.3软件调试及软硬件联调
对软件先用仿真器进行了调试。
用仿真器运行正常后,再用烧写器将程序烧到AT89S52单片机中,进行了脱机调试。
利用仿真软件ISIS的强大的仿真功能可以有效地检验所设计的原理图是否在理论上正确合理。
硬件protuse仿真电路如图所示。
考虑到现实的情况,东西与南北方向的电路是呈镜像的。
因此只需要考虑斜对称电路中的任何一边。
本电路设计是用P0口的P0.0至P0.5控制南北方向六盏灯,用P1口作数码管的段选,用P2口的前四个端口作为数码管的位选。
具体连接方式见图。
图9交通灯仿真电路图
经过观察各检测,我可以看到整个系统的功能都能达到我的设计要求,制作的电路板能实现课题所需,能较真实的模仿交通灯的工作。
5结论
经过一个多星期的时间,终于完成了这次的基于单片机控制的交通灯设计的课程设计。
本次课设内容十分贴近我们的生活,让我们对平时学习的理论知识与实际操作相结合,在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加综合提高,学会将知识应用于实际的方法,提高和解决问题的能力。
以下是几点总结:
第一,在编写软件中,在此过程中我更为熟练得掌握C语言常用语句的使用方法,掌握了keil软件的使用。
第二,在软件调试过程中,我学会了keil和proteus联合使用的方法。
在调试时曾经遇到数码管倒计时显示时间两位不能同时显示,后来经过查找资料不断调试才领悟到原来在显示的过程中要循环显示才能使得显示稳定下来。
第三,在做原理图和PCB的过程中,使我进一步掌握了protel软件的使用方法。
再次熟悉了各种作图工具的应用,而且培养了我在设计原理图时的一些技巧和好的习惯。
第四,在做实物的过程中,培养了我认真耐心的工作态度。
我在做板子过程中,由于我的布线比较紧密加上孔和焊盘过小使得在打孔是出现刮断线以及在焊接的时候出现了虚焊和联焊等问题,找出原因之后并进行改进。
经过这次课程设计,也让我更加深刻的认识到学好单片机的重要意义。
当今单片机渗透到我们生活的各个领域比如从导弹的导航装置、飞机上各种仪表的控制、计算机的网络通讯与数据传输、自动控制领域的机器人、智能仪表、医疗器械、工业自动化过程的实时控制和数据处理等等到我们生活中接触到的各种智能IC卡、民用豪华轿车的安全保障系统、录像机、摄像机、全自动洗衣机的控制以及程控玩具、电子宠物等等,这些都离不开单片机。
它主要是作为控制部分的核心部件。
因此,单片机的学习、开发在各行各业异常重要。
在今后的学习中,我会更加努力的学习巩固单片机,为以后的工作打下坚固的基础。
参考文献
[1]黑杰尔,ProtelSchematic99SE电路设计,北京科学出版社,2001.
[3]王卫东,模拟电子电路基础,西安电子科技大学出版社,2002.