基于51单片机的交通灯设计.docx
《基于51单片机的交通灯设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的交通灯设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于51单片机的交通灯设计
师范大学
基于51单片机的交通灯设计
学院:
电气工程及自动化学院
专业:
测控技术与仪器
班级:
姓名:
学号:
指导老师:
实训地点:
摘要
本系统由单片机系统、数码管显示、交通灯演示系统组成。
系统包括东西直行、南北直行、以及基本的交通灯的功能。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
本设计是单片机控制的交通灯控制系统。
单片机即单片微型计算机。
由RAM,ROM,CPU构成,其集定时、计数和多种接口与一体的微控制器。
它体积小、成本低、功能强,广泛的应用于只能产业和工业自动化上。
本设计的意义在于通过具体控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。
使大家能在实践教学环节中,积累设计经验,开拓思维空间,全面提高个人的综合能力。
红绿灯控制是智能交通系统的一个重要部分,本文给出了一个用单片机控制的简易交通红绿灯自动控制系统。
该系统适用于十字路口,并对放行和禁行时间进行倒计时显示(秒)。
在车辆通行繁忙的十字交叉路口设置的交通灯控制系统,其特点是:
道路较窄而车流量较大,主干道,支干道的车辆通行时间不等,同时设有道路应急控制。
具体的情况是:
在正常的情况下,东西通行时间为30秒,南北通行时间为30秒,每个方向在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。
而且有紧急车辆要求通过时,系统要能禁止普通车辆通行。
1概述
1.1课题名称……………………………………………………………………3
1.2设计要求……………………………………………………………………3
1.3设计意义……………………………………………………………………3
2系统总体方案及硬件设计
2.1芯片的选择与简单介绍……………………………………………………4
2.2系统方框图…………………………………………………………………5
2.3工作原理……………………………………………………………………5
2.4电路原理图…………………………………………………………………6
2.5单片机最小系统……………………………………………………………6
2.6时间显示电路……………………………………………………………7
2.7交通灯电路………………………………………………………………7
3Proteus软件仿真
3.1系统仿真电路图…………………………………………………………8
3.2仿真结果分析……………………………………………………………10
4课程设计体会…………………………………………………………………10
5参考文献………………………………………………………………………11
6附录………………………………………………………………………………12
1概述
1.1课题名称
单片机控制的交通灯控制系统设计
1.2设计要求
1)南北方向车道和东西方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为30秒,时间可设置修改;
2)在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;
3)黄灯亮时,亮3秒;
4)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法);
5)有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2开关模拟。
1.3设计意义
国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。
基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。
利用单片机控制技术.提出了软件和硬件设计方案,能够实现道路的最大通行效率。
2系统总体方案及硬件设计
2.1芯片的选择与简单介绍
主控芯片采用AT89S52单片机(其管脚图如图-1所示)。
单片机,亦称单片微型计算机。
它是把中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。
于是,微型计算机(即单片机)在这种情况下诞生了。
纵观生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
单片机以体积小、功能全、性价比等诸多优点而独具特色,在工业控制、尖端武器、通信设备、家用电器等嵌入式应用领域中独占鳌头。
如果说C语言程序设计课程设计的基础课,那么单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。
上排:
1,g,f,a,b
下排:
d,dp,e,c,2
2.2系统方框图
2.3工作原理
由软件设置交通灯的初始时间,东西南北方向通行30秒,数码管采用动态显示,P0口送字形码,P2口送字位选通信号,通过单片机的P1口控制各种信号灯的燃亮与熄灭。
采用中断方式实现按键的功能。
2.4工作原理图
2.5单片机最小系统
2.6时间显示电路
2.7交通灯电路
3Proteus软件仿真
3.1系统仿真电路图
1东西向绿灯,南北向红灯
2东西向红灯,南北向绿灯
3东西与南北交替的黄灯
4紧急通道
3.2仿真结果分析
仿真实验实现南北方向车道和东西方向车道两条交叉道路的车辆交替运行,东西方向与南北方向每次通行时间设为30秒、时间可以在程序中修改。
同时能够实现红灯、黄灯、绿灯状态转换,红绿灯转换时间为3秒,转黄期间黄灯亮。
可以准确显示每个状态所剩余的时间,任何时候按下返回键,此系统都将回到初始状态,当紧急状况出现时,按下紧急开关,允许紧急车辆安全通行,实现了课程设计的要求。
4课程设计体会
本系统就是充分利用了AT89S52芯片的I/O引角。
系统统采用MSC-51系列单片机为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P1口控制红、黄、绿灯的燃亮与熄灭;P0口外接数码管来显示各个信号灯的时间。
系统设计简便、实用性强、操作简单、程序设计简便。
系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。
这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现。
通过这次课程设计,我得到了一次用所学知识与技能分析和解决问题的可贵的锻炼机会,使我深刻邻会了单片机的基本原理和单片机应用系统开发的过程。
在常用编程设计思路技巧的掌握方面都向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
通过本次的毕业设计,受益匪浅,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的工作奠定了一定的基础。
在撰写本文的过程中,深切地体会到当今科技技术飞速的发展,特别是单片机的发展使得许多技术难题迎刃而解,作者坚信,随着科学技术的不断发展,单片机技术的应用将是前途无量。
由于本设计涉及到的知识面比较广,再加上本人在相关领域知识的缺乏,所以本设计的性能指标还是有待改善的,然而,模拟仿真证明了本设计的设计思想和设计方法是现实可行的。
5参考文献
1张鑫主编,《单片机原理及应用》,电子工业出版社,2010
2刘海宽主编,单片机实验与实训教程,东南大学出版社,2009
3XX文库
6附录
所需元器件数量及其参数选择
元器件
数量
参数
单片机
1
STC89C52
排阻插槽
单片机插槽
1
1
电阻
7
2
510
10k
排阻
1
10K
四角开关
2
自锁开关
1
晶振
1
12MHz
二位共阳数码管
2
电解电容
1
10uF
电容
3
30pF(104)
发光二极管
7
USB接口
1
排线,排针
若干
设计原理流程图
开始
初始化
N
南北方向置为绿灯,东西为红灯
Y
时间到了30S开始
N
Y
时间到了30S
N
Y
开始
扫描INT0
Y
有紧急情况
↓N
顺序执行
源程序设计(C语言)
#include
#defineucharunsignedchar
#defineuintunsignedint
bitaa=P2^0;
sbitbb=P2^1;
intflag;
ucharnum,num1,shi,ge,shi1,ge1,a,n1,n;
ucharcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e
/*0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71*/
};
voiddelayms(uint);
voiddisplay(uchar,uchar);
voidpart1();
voidpart2();
voidmain()
{a=0;
num1=0;
num=9;
n=3;
TMOD=0x11;
TH0=(65536-50000)/256;//定时器0置数;
TL0=(65536-50000)%256;//定时器0置数;
TH1=(65536-50000)/256;//定时器1置数;
TL1=(65536-50000)%256;//定时器1置数;0,1定时器扫描时间设置,50s;
EA=1;//开总中断;
IT1=1;//开外部中断副边沿触发;
EX0=1;//开放外部中断INT0;
ET0=1;//开定时器0;
ET1=1;//开定时器1;
TR1=0;//定时器1开始工作;
TR0=0;//定时器0开始工作;
while
(1)
{
while(a)
{
P1=0x35;//P1口置数,让灯亮;
}
num=30;//计数30s;
TR0=1;//定时器0开始工作;
while(num>0)//南北绿灯,东西红灯;
{
while(a)
{
P1=0x35;
TR0=0;
}
TR0=1;//定时器0开始工作;
P1=0x2e;
part1();
delayms(10);
shi=num/10;
ge=num%10;
}
TR0=0;
delayms(1000);
n=3;
TR1=1;
while(n>0)
{
P1=0x1b;//南北黄灯,东西红灯;
part2();
delayms(10);
shi1=num/10;
ge1=num%10;
}
TR1=0;
delayms(1000);
num=30;
TR0=1;
while(num>0)
{
while(a)
{
P1=0x35;
TR0=0;
}
TR0=1;
P1=0x35;//南北红灯,东西绿灯;
part1();
delayms(10);
shi=num/10;
ge=num%10;
}
TR0=0;
delayms(1000);
n=3;
TR1=1;
while(n>0)
{
P1=0x1b;//南北黄灯,东西红灯;
part2();
delayms(10);
shi1=num/10;
ge1=num%10;
}
TR1=0;
delayms(1000);
}
}
voidpart1()//红灯和绿灯计时
{shi=num/10;
ge=num-shi*10;
P0=table[shi];
aa=1;
delayms(5);
P0=0xff;
aa=0;
P0=table[ge];
bb=1;
delayms(5);
bb=0;
P0=0xff;
}
voidpart2()//黄灯计时
{shi1=n/10;
ge1=n-shi*10;
P0=table[shi1];
aa=1;
delayms(5);
P0=0xff;
aa=0;
P0=table[ge1];
bb=1;
delayms(5);
bb=0;
P0=0xff;
}
voiddelayms(uintxms)
{
uinti,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
voidT0_time()interrupt1
{
num1++;
if(num1==20)
{
num1=0;
num--;
if(num==-1)
{
num=0;
TR0=0;
}
else
{TR0=1;}
shi=num/10;
ge=num%10;
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
shi=num/10;
ge=num%10;
}
voidT1_time()interrupt3
{
n1++;
if(n1==20)
{
n1=0;
n--;
if(n==-1)
{n=0;TR1=0;}
shi1=n/10;
ge1=n%10;
}
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}
voidINT_1()interrupt2
{if(a==0)
{a=1;}
else
{a=0;}
}