单片机控制交通灯控制系统设计.docx
- 文档编号:10647293
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:31
- 大小:507.84KB
单片机控制交通灯控制系统设计.docx
《单片机控制交通灯控制系统设计.docx》由会员分享,可在线阅读,更多相关《单片机控制交通灯控制系统设计.docx(31页珍藏版)》请在冰豆网上搜索。
单片机控制交通灯控制系统设计
《单片机应用技术》课程设计报告
题目:
单片机控制的交通灯
姓名:
欧阳圣棋
院系:
电力学院
专 业:
电子科学与技术
学号:
201110722
指导教师:
朱安福
完成时间:
2014年7月3日
设计题目
基于AT89C51单片机的交通灯
设计要求
1.用单片机制作一个交通灯,控制十字路口的车辆运行状况。
2.在此基础上,加入“看门狗”功能。
设计过程
1.选择实验课题,通过对不同课题的比较,选择了最贴近生活的交通灯设计。
2.选择所需要的元器件(AT89C51,交通灯)等,并构思原理图。
3.绘制原理图,将所选好的元器件放置在原理图中,并设置参数,接着把元器件对应管脚连接起来,并合理布局,使页面变得简单易读。
4.设计程序流程图,按照所要求的功能设计出满足所有需要的流程图,
5.按照流程图编写程序,并加入“看门狗”功能,在KEIL中编译,并生成“hex”文件
6.将生成的文件加入ISIS软件中,进行仿真,成功运行。
7.总结实验经验。
完成设计
成绩评定
指导教师评语
课程设计等级
1概述
1.1课题名称……………………………………………………………………5
1.2设计功能……………………………………………………………………5
1.3设计意义……………………………………………………………………5
2系统总体方案及硬件设计
2.1芯片的选择与简单介绍……………………………………………………5
2.2系统方框图…………………………………………………………………7
2.3工作原理……………………………………………………………………7
2.4电路原理图…………………………………………………………………8
2.5单片机最小系统……………………………………………………………9
2.6时间显示电路……………………………………………………………10
2.7交通灯电路………………………………………………………………10
3软件设计
3.1整体系统分析……………………………………………………………11
3.2相关参数计算……………………………………………………………11
3.3程序流程图………………………………………………………………12
4Proteus软件仿真
4.1系统仿真电路图…………………………………………………………13
4.2仿真结果分析……………………………………………………………15
5课程设计体会
参考文献
附1:
源程序代码
附2:
系统原理图
摘要
本系统由单片机系统、键盘、LED显示、交通灯演示系统组成。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理以及根据具体情况手动控制等功能。
本设计是单片机控制的交通灯控制系统。
单片机即单片微型计算机。
其集定时、计数和多种接口与一体的微控制器。
它体积小、成本低、功能强,广泛的应用于只能产业和工业自动化上。
而51系列单片机是各类单片机中最为典型和富有代表性的一种。
本设计的意义在于通过具体控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。
使大家能在实践教学环节中,积累设计经验,开拓思维空间,全面提高个人的综合能力。
红绿灯控制是智能交通系统的一个重要部分,本文给出了一个用单片机控制的简易交通红绿灯自动控制系统。
该系统适用于十字路口,并对放行和禁行时间进行倒计时显示(秒)。
在车辆通行繁忙的十字交叉路口设置的交通灯控制系统,其特点是:
道路较窄而车流量较大,主干道,支干道的车辆通行时间不等,,同时设有道路应急控制。
具体的情况是:
在正常的情况下,东西支干道通行时间为20秒,南北主干道通行时间为30秒,每个方向在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。
并且能够在人工监控状态下,如果一道有车而另一道无车,交通灯控制系统能立即让有车道放行。
而且有紧急车辆要求通过时,系统要能禁止普通车辆通行。
关键字:
单片机红绿灯AT89C51Proteus仿真
1概述
1.1课题名称
单片机控制的交通灯控制系统设计
1.2设计功能
1)南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为25秒、支干道每次通行间为20秒,时间可设置修改;
2)在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;
3)黄灯亮时,要求每秒闪亮一次;
4)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法);
5)一道有车而另一道无车,交通灯控制系统能立即让有车道放行;
6)紧急情况时可以随时调成红灯或绿灯。
1.3设计意义
国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。
加上一个倒计时的显示计时器来控制行车。
对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:
1.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。
2.没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。
基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。
利用单片机控制技术.提出了软件和硬件设计方案,能够实现道路的最大通行效率。
2系统总体方案及硬件设计
2.1芯片的选择与简单介绍
(图-1)
主控芯片采用AT89C51单片机(其管脚图如图-1所示)。
单片机,亦称单片微型计算机。
它是把中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。
于是,微型计算机(即单片机)在这种情况下诞生了。
纵观生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
单片机以体积小、功能全、性价比等诸多优点而独具特色,在工业控制、尖端武器、通信设备、家用电器等嵌入式应用领域中独占鳌头。
如果说C语言程序设计课程设计的基础课,那么单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。
MCS-51单片机是指由美国INTEL公司(大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机。
8051单片机包含中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
1.中央处理器(CPU)
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2.数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
3.程序存储器(内部ROM):
程序存储器用于存放程序和固定不变的常数等。
通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。
AT89C51内部配置了4KB闪存。
3.1.定时/计数器(ROM):
定时/计数器用于实现定时和计数功能。
AT89C51共有2个16位定时/计数器。
3.2.并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
每个口都由1个锁存器和一个驱动器组成。
它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。
4.全双工串行口:
A89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
5.时钟电路:
时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。
6.中断系统:
中断系统的作用主要是对外部或内部的终端请求进行管理与处理。
AT89C51共有5个中断源,其中又2个外部中断源和3个内部中断源。
7.定时/计数器
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
2.2系统方框图
2.3工作原理
由软件设置交通灯的初始时间,南北方向通行25秒,东西方向通行20秒,数码管采用动态显示,P0口送字形码,P2口送字位选通信号,通过单片机的P1口控制各种信号灯的燃亮与熄灭。
采用中断方式实现按键的功能。
东西方向EW
GYR
系统控制
电路
南北方向NS
GYR
2.4电路原理图
(图-2)
2.6时间显示电路
(图-3)
因为系统要求南北和东西方向的信号灯时间不一样,所以就利用单片机的P0口送出数据的段码,位选信号用P2口送出,用动态扫描的方法显示东西、南北的倒计时间(如图-4所示)。
2.7交通灯电路
本设计利用单片机的p1口来驱动和控制各种信号灯的燃亮和燃亮时间,在实际中,交通灯的信号灯需要用高电压控制,在这里我们只是模拟一下它的控制信号,所以我们就只用单片机的信号引脚直接来控制交通灯。
(图-5)
3软件设计
3.1整体系统分析
总体流程图(实现各种状态间的转换):
3.3程序流程图
(图-6)
4Proteus软件仿真
4.1系统仿真电路图
1.交通灯控制系统正常运行时仿真图(见图-7)。
(图-7)
2.交通灯南北方向绿灯向红灯转变,黄灯闪烁时仿真图(见图-8)。
图-8
(图-8)
4.2仿真结果分析
仿真实验实现南北方向车道和东西方向车道两条交叉道路的车辆交替运行,南北方向(主干道)每次通行时间设为30秒、东西方向通行时间设为20秒,时间可以在程序中修改。
同时能够实现红灯、黄灯、绿灯状态转换,红绿灯转换时间为5秒,转黄期间黄灯亮。
可以准确显示每个状态所剩余的时间,按下禁行普通车辆键,东西南北方向都亮红灯;按下南北放行键,南北绿灯亮,东西红灯亮;按下东西放行键,东西绿灯亮,南北红灯亮;任何时候按下返回键,此系统都将回到初始状态,当紧急状况出现时,按下紧急开关,可实现主干道和支干道全部禁止通行,允许紧急车辆安全通行,实现了课程设计的要求。
5课程设计体会
本系统就是充分利用了AT89C51芯片的I/O引角。
系统统采用MSC-51系列单片机为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P1口控制红、黄、绿灯的燃亮与熄灭;P0口外接数码管来显示各个信号灯的时间。
系统设计简便、实用性强、操作简单、程序设计简便。
系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。
这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现。
通过这次课程设计,我得到了一次用所学知识与技能分析和解决问题的可贵的锻炼机会,使我深刻邻会了单片机的基本原理和单片机应用系统开发的过程。
在常用编程设计思路技巧的掌握方面都向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
通过本次的毕业设计,受益匪浅,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的工作奠定了一定的基础。
在撰写本文的过程中,深切地体会到当今科技技术飞速的发展,特别是单片机的发展使得许多技术难题迎刃而解,作者坚信,随着科学技术的不断发展,单片机技术的应用将是前途无量。
由于本设计涉及到的知识面比较广,再加上本人在相关领域知识的缺乏,所以本设计的性能指标还是有待改善的,然而,模拟仿真证明了本设计的设计思想和设计方法是现实可行的。
参考文献
[1]余发山王福忠单片机原理及应用技术[M].徐州:
中国矿业大学出版社2008.
[2]吴黎明单片机原理及应用技术[M].北京:
科学出版社2003.
[3]刘乐善微型计算机接口技术及应用[M].北京:
华中科技大学出版社2004.
[4]李伯成.基于MCS-51单片机的嵌入式系统的设计[M].北京:
电子工业出版社,2004.
[5]吴黎明,王桂棠,洪添胜,等.单片机原理及应用技术[M].北京:
科学出版社,2005.
[6]韩克,柳秀山,等.电子技能与EDA技术[M].广州:
暨南大学出版社,2004.
附1:
源程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
uchardatabuf[4];
uchardatasec_dx=20;//东西数默认
uchardatasec_nb=30;//南北默认值
uchardataset_timedx=20;//设置东西方向的时间
uchardataset_timenb=30;//设置南北方向的时间
intn,led1=0;
uchardatacountt0;//定时器0中断次数
sfrWDT_CONTR=0xA6;
//定义5组开关
sbitk4=P3^7;//切换方向
sbitk1=P3^5;//时间加
sbitk2=P3^6;//时间减
sbitk3=P3^4;//确认
sbitk5=P3^1;//禁止
sbitk6=P1^5;//夜间模式
//P3^2//只允许东西方向通行,中断0
//P3^3//只允许南北方向通行,中断1
sbitRed_nb=P2^6;//南北红灯标志
sbitYellow_nb=P2^5;//南北黄灯标志
sbitGreen_nb=P2^4;//南北绿灯标志
sbitRed_dx=P2^3;//东西红灯标志
sbitYellow_dx=P2^2;//东西黄灯标志
sbitGreen_dx=P2^1;//东西绿灯标志
sbitBuzz=P3^0;
bitBuzzer_Indicate;
bitset=0;//调时方向切换键标志=1时,南北,=0时,东西
bitdx_nb=0;//东西南北控制位
bitshanruo=0;
ucharcodetable[11]={//共阴极字型码
0x3f,//--0
0x06,//--1
0x5b,//--2
0x4f,//--3
0x66,//--4
0x6d,//--5
0x7d,//--6
0x07,//--7
0x7f,//--8
0x6f,//--9
0x00//--NULL
};
//函数的声明部分
voiddelay(intms);//延时子程序
voidkey();//按键扫描子程序
voidkey_to1();//键处理子程序
voidkey_to2();
voidkey_to3();
voiddisplay();//显示子程序
voidlogo();//开机LOGO
voidBuzzer();
//主程序
voidmain()
{
TMOD=0X11;//定时器设置
TH0=0X3C;//定时器0置初值0.05S
TL0=0XB0;
EA=1;//开总中断
ET0=1;//定时器0中断开启
TR0=1;//启动定时0
EX0=1;//开外部中断0
EX1=1;//开外部中断1
logo();
P2=0Xc3;//开始默认状态,东西绿灯,南北黄灯
sec_nb=sec_dx+5;//默认南北通行时间比东西多5秒
while
(1)
{
key();//调用按键扫描程序
display();//调用显示程序
Buzzer();
}
}
//函数的定义部分
voidkey(void)//按键扫描子程序
{
if(k1!
=1)//当K1(时间加)按下时
{
display();//调用显示,用于延时消抖
if(k1!
=1)
{
TR0=0;//关定时器
shanruo=0;
P2=0x00;
if(set==0)
set_timedx++;//南北加1S
else
set_timenb++;//东西加1S
if(set_timenb==100)
set_timenb=1;
if(set_timedx==100)
set_timedx=1;//加到100置1
sec_nb=set_timenb;//设置的数值赋给东西南北
sec_dx=set_timedx;//
do
{
display();
}
while(k1!
=1);
}
}
if(k2!
=1)//当K2(时间减)按键按下时
{
display();//调用显示,用于延时消抖
if(k2!
=1)
{
TR0=0;//关定时器
shanruo=0;
P2=0x00;
if(set==0)
set_timedx--;//南北减1S
else
set_timenb--;//东西减1S
if(set_timenb==0)
set_timenb=99;
if(set_timedx==0)
set_timedx=99;//减到1重置99
sec_nb=set_timenb;//设置的数值赋给东西南北
sec_dx=set_timedx;
do
{
display();//调用显示,用于延时
}
while(k2!
=1);
}
}
if(k3!
=1)//当K3(确认)键按下时
{
display();//调用显示,用于延时消抖
if(k3!
=1)
{
TR0=1;//启动定时器
Buzzer_Indicate=0;
sec_nb=set_timenb;//从中断回复,仍显示设置过的数值
sec_dx=set_timedx;//显示设置过的时间
if(set==0)//时间倒时到0时
{
P2=0X00;//东西绿灯,南北红灯
Green_dx=1;
Red_nb=1;
sec_nb=sec_dx+5;//回到初值
}
else
{
P2=0x00;//南北绿灯,东西红灯
Green_nb=1;
Red_dx=1;
sec_dx=sec_nb+5;
}
}
}
if(k4!
=1)//当K4(切换)键按下
{
display();//调用显示,用于延时消抖
if(k4!
=1)
{
TR0=0;
set=!
set;//取反set标志位,以切换调节方向
dx_nb=set;
do
{
display();
}
while(k4!
=1);
}
}
if(k5!
=1)//当K5(禁止)键按下时
{
display();//调用显示,用于延时消抖
if(k5!
=1)
{
TR0=0;//关定时器
P2=0x00;
Red_dx=1;
Red_nb=1;//全部置红灯
sec_dx=00;//四个方向的时间都为00
sec_nb=00;
Buzzer_Indicate=1;
do
{
display();
}
while(k5!
=1);
}
}
if(k6!
=1)//当K6(夜间模式)按下
{
display();//调用显示,用于延时消抖
if(k6!
=1)
{
TR0=0;//关定时器
P2=0x00;
Yellow_dx=1;
Yellow_nb=1;//全部置黄灯
sec_dx=00;//四个方向的时间都为00
sec_nb=00;
Buzzer_Indicate=1;
do
{
display();
}
while(k6!
=1);
}
}
}
voiddisplay(void)//显示子程序
{
buf[1]=sec_nb/10;//第1位东西秒十位
buf[2]=sec_nb%10;//第2位东西秒个位
buf[3]=sec_dx/10;//第3位南北秒十位
buf[0]=sec_dx%10;//第4位南北秒个位
P1=0xff;//初始灯为灭的
P0=0x00;
P1=0xfe;//片选LED1
P0=table[buf[1]];//送东西时间十位的数码管编码
delay
(1);//延时
P1=0xff;//关显示
P0=0x00;
P1=0xfd;//片选LED2
P0=table[buf[2]];
delay
(1);
P1=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 控制 交通灯 控制系统 设计