at89c51单片机交通灯控制系统包括源码and仿真图.docx
- 文档编号:13450750
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:41
- 大小:440.48KB
at89c51单片机交通灯控制系统包括源码and仿真图.docx
《at89c51单片机交通灯控制系统包括源码and仿真图.docx》由会员分享,可在线阅读,更多相关《at89c51单片机交通灯控制系统包括源码and仿真图.docx(41页珍藏版)》请在冰点文库上搜索。
at89c51单片机交通灯控制系统包括源码and仿真图
设计任务书
设计要求和技术指标
1、技术指标:
设计一个十字路口的交通灯控制电路,每条道路上各配有一组红、黄、绿交通信号灯,其中红灯亮,表示该道路禁止通行;黄灯亮表示该道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯表示该道路允许通行。
该电路自动控制十字路口两组红、黄、绿交通灯的状态转换,实现十字路口自动化。
2、设计要求
(1)要求甲车道和乙车道上的车辆交替运行,每秒通行时间为25秒种;
(2)要求黄灯先亮5秒种,才能变换车道;
(3)黄灯亮时要求每秒闪亮一次;
(4)要求绘出原理图,并用Protel画出印制板图;
(5)根据设计要求和技术指标设计好电路,选好元件及参数;
(6)拟定测试方案和设计步骤;
(7)写出设计性报告。
`目录
摘要
本系统由单片机系统、键盘、LED显示、交通灯演示系统组成。
系统包括人行道、左转、右转、以及基本的交通灯的功能。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间、违规车辆检测以及根据具体情况手动控制等功能。
关键词:
AT89S51,交通规则,LED
Abstract
Thissystemismadeupofsingle-chipmicrocomputer,keyboard,leddisplayingmoduleandTrafficlightssystem.Thesystemincludespavement,leftturning,rightturning,andthebasictrafficlightsfunction.Exceptingthebasictrafficlightsfunction,italsoincludescounting,timeinstalling,emergencydisposing,speechcluing,LCDinformationdisplaying,adjustingthelightingtimeoflightsbasedondifferenttimeandcontrollingwithhandinaccordancewithcircumstancesandsoon.
KeyWords:
AT89S51,Trafficregular,LED
二、选题背景
2.1课题背景
由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:
交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。
日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。
随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。
2.2交通灯的历史
1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯--煤气交通信号灯,这是城市街道的第一盏信号灯。
1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。
稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。
随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。
它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。
中国最早的马路红绿灯,是于1928年出现在上海的英租界。
三、单片机简介
3.1单片机的发展历程
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
在MCS-51系列单片机中,有两个子系列:
51子系列和52子系列。
每个子系列有诺干中型号。
51系列有8051、8751和8031三个型号,后来经过改进产生了80c51、87c51、80c31三个型号;52系列有5021、8752、8032三个型号,改进后的型号是80c52/87c52、80c32。
改进后的型号更加省电。
52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。
Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多和Mcs-51兼容的单片机。
现在生产mcs-51兼容单片机的公司对其进行了不同程度的改进和提高。
我们现在使用比较的多的是AT89C51/AT89s51等。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗
3.2单片机的特点:
(1)性价比高,开发周期短,易于产品化,
(2)集成度高,可靠性好,抗干扰性强,
(3)功能完善,接口多样,
(4)低功耗、低电压
一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。
(5)总线多样,易于扩展
单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的使用系统。
外部总线增加了I2C及SPI等串行总线方式,可根据需要进行并行或者串行扩展。
3.3AT89C51单片机简介
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,和工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:
·和MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
四、设计基本要求和步骤
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?
靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
4.1基本要求
本系统需要采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:
1.初始东西绿灯亮,南北红灯亮,东西方向通车。
2.延时27s,东西路口绿灯熄灭,黄灯闪烁3次。
3.黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。
4.延时27s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。
5.当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。
当事故处理完毕(再次按中断键),重新按上述方式工作。
6.当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。
4.2设计步骤
1.利用Proteus7.5SP3仿真软件按下列要求绘制仿真实例
✧用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯
✧用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码
✧P3^1、P3^2、P3^4~~~P3^7控制数码管的位选
✧P2^0~~~P2^4接收中断信号并反馈给INT0接口进行中断处理
2.按照基本要求编制程序实现相应功能。
五、硬件和软件设计
5.1硬件电路图
硬件电路图通过Proteus7.5SP3仿真之后如图1所示,其中:
按钮K0连接P2^0端口实现红灯全亮,处理交通意外
按钮K1连接P2^1端口实现南北方向亮灯时间+1s
按钮K2连接P2^2端口实现南北方向亮灯时间-1s
按钮K3连接P2^3端口实现东西方向亮灯时间+1s
按钮K4连接P2^4端口实现东西方向亮灯时间-1s
整体实验连接电路如下图所示:
图1整体连接电路图
5.2程序流程图
主程序
开始
设置中断工作方式、触发方式、初始化
是否有中断
运行过程
执行中断
Y
N
中断结束,退出中断,返回
运行过程
SN:
绿灯(27),EW:
红灯
是否到3秒
SN:
黄灯亮,EW:
红灯
Count<10?
SN:
黄灯灭,EW:
红灯
是否到0秒
N
Y
Y
N
N
EW:
绿灯(27),SN:
红灯
是否到3秒
EW:
黄灯亮,SN:
红灯
Count<10?
EW:
黄灯灭,EW:
红灯
是否到0秒
Y
Y
Y
N
N
N
LED显
示
缓
冲
区DISP
Y
LED显示程序
Display
获取当前通行剩余时间送h、l
E/S/W/N状态送P0口
位选码送P3口
倒计时个/十位送P1口
调用Delay延时
i++;j++
四位显示完?
Y
N
返回主程序
T0中断
定时计数初值
50ms计数(count)加1
判断1S(count=20?
)到否
count清0
Time_SN--;Time_EW--
恢复现场
中断返回
N
Y
中断返回
恢复现场
Busy_Button==0
所有路口全红灯
Busy_Button==1
SN_Add==0
SN1+=1
SN1>99
N
SN1=99
Y
SN_Red==0
SN1-=1
SN1<20
N
SN1=20
Y
EW_Add==0
EW1+=1
EW1>99
N
EW1=99
Y
EW_Red==0
EW1-=1
EW1<20
N
EW1=20
Y
INT0中断
获取中断信息
5.3P0、P1口显示状态编码表
P0
编码
备注
P0^7
P0^6
P0^5
P0^4
P0^3
P0^2
P0^1
P0^0
1
1
1
1
1
1
1
0
0FEH
红灯
1
0
1
1
1
1
1
1
0BFH
黄灯
1
1
1
1
0
1
1
1
0F7H
绿灯
P1
编码
备注
P1^7
P1^6
P1^5
P1^4
P1^3
P1^2
P1^1
P1^0
1
1
1
1
0
0
0
0
0C0H
0
1
1
1
1
1
0
0
1
0F9H
1
1
0
1
0
0
1
0
0
0A4H
2
1
0
1
1
0
0
0
0
0B0H
3
1
0
0
1
1
0
0
1
99H
4
1
0
0
1
0
0
1
0
92H
5
1
0
0
0
0
0
1
0
82H
6
1
1
1
1
1
0
0
0
F8H
7
1
0
0
0
0
0
0
0
80H
8
1
0
0
1
0
0
0
0
90H
9
5.4程序源代码
#defineucharunsignedchar
#include
/**************************变量、控制位定义**************************/
ucharcodetable[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~~9段选码
ucharcodetable1[28]={0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xFE,
0xFE,0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,
0xFE,0xFE,0xFE,0xFE};
/*各种状态下红绿灯段选码,
状态(0-3):
EW绿灯,SN红灯;
状态(4-7):
EW黄灯亮,SN红灯;
状态(8-11):
EW黄灯灭,SN红灯;
状态(12-15):
EW红灯,SN绿灯;
状态(16-19):
EW红灯,SN黄灯亮;
状态(20-23):
EW红灯,SN黄灯灭;
状态(24-27):
EWSN全红灯*/
ucharcodetab[4]={0x1E,0x2D,0x4E,0x8D};//数码管显示位选码
ucharEW=30,SN=30,EW1=30,SN1=30;//初始化交通灯时间
ucharcount;//计时中断次数
uchari,j;//循环控制变量
sbitBusy_Button=P2^0;//交通意外控制位
sbitSN_Add=P2^1;//SN通行时间加按钮
sbitSN_Red=P2^2;//SN通行时间减按钮
sbitEW_Add=P2^3;//EW通行时间加按钮
sbitEW_Red=P2^4;//EW通行时间减按钮
charTime_EW;//EW方向计时
charTime_SN;//SN方向计时
/**************************延时子程序**************************/
voidDelay(uchara)//循环a次
{
ucharx;
x=a;
while(x--){;}
}
/*************************数码管显示子程序*************************/
voidDisplay(ucharj)//j控制显示table中连续位的起始点
{
charh,l;
if(j<11)//根据状态判定时间
{
h=Time_EW/10;//EW通行时间十位
l=Time_EW%10;//EW通行时间个位
}
elseif(j<23)
{
h=Time_SN/10;//SN通行时间十位
l=Time_SN%10;//SN通行时间个位
}
for(i=0;i<4;)//按位显示通行状况及时间
{
P0=table1[j];//通行状况显示
P3=tab[i];//位选显示
i++;
j++;
if(i%2)//两位计时显示
{
P1=table[l];
Delay(400);
}
else
{
P1=table[h];
Delay(400);
}
}
Delay(5);
}
/***********************INT0外部中断服务程序***********************/
voidEXINT0(void)interrupt0//INT0外部中断
{
EX0=0;//关中断
if(Busy_Button==0)
{
P0=0xFE;//意外按钮按下全显示红灯
for(;Busy_Button!
=1;)//意外按钮弹起时恢复之前状态
Display(24);
}
/*四个时间控制按钮分别控制SN、EW方向初始通行时间加减,
最长不超过s,最少不低于s*/
if(SN_Add==0)//SN+1
{
SN1+=1;
if(SN1>99)
SN1=99;
}
if(SN_Red==0)//SN-1
{
SN1-=1;
if(SN1<20)
SN1=20;
}
if(EW_Add==0)//EW+1
{
EW1+=1;
if(EW1>99)
EW1=99;
}
if(EW_Red==0)//EW-1
{
EW1-=1;
if(EW1<20)
EW1=20;
}
EX0=1;//开中断
}
/************************TO计时中断服务程序************************/
voidtimer0(void)interrupt1using1//T0中断
{
TH0=0x3C;
TL0=0xB0;//定时计数初值
count++;//中断溢出一次count+1
if(count==20)
{
Time_EW--;
Time_SN--;
count=0;//中断次计数s,count回,倒计时时间-1
}
}
/**************************亮灯控制**************************/
voidProcess()
{
Time_EW=EW;//初始化东西方向通行时间
while(Time_EW>3)//状态:
EW绿灯,SN红灯
{
j=0;
Display(j);//调用显示函数
}
while(Time_EW>0)//状态-3:
EW黄灯闪烁
{
if(count<10)//状态:
EW黄灯亮
{
j=4;
Display(j);
}
else//状态:
EW黄灯灭
{
j=8;
Display(j);
}
}
SN=SN1;//重置SN方向时间
Time_SN=SN;//初始化南北方向通行时间
while(Time_SN>3)//状态:
EW红灯,SN绿灯
{
j=12;
Display(j);
}
while(Time_SN>0)//状态-6:
SN黄灯闪烁
{
j=16;
if(count<10)//状态:
SN黄灯亮
{
Display(j);
}
else//状态:
SN黄灯灭
{
j=20;
Display(j);
}
}
EW=EW1;//重置EW初始时间
}
/**************************主程序**************************/
main()
{
TMOD=0x01;//定时器工作方式
TH0=0x3C;//定时器初始化
TL0=0xB0;
IT0=1;//中断触发方式为下降沿触发
EA=1;//CPU开中断
ET0=1;//开定时中断
TR0=1;//启动定时
EX0=1;//开外部INT0中断
while
(1)
{
Process();
}
}
5.5程序运行效果图
图2正常状态
图3黄灯状态
图4紧急状态
图5延长通行时间
六、心得体会
通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。
使我在单片机的基本原理、单片机使用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的使用型人才打下良好的基础。
综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更深层次的理解和认识。
在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到解决。
还有交通灯是我们生活中非常常见的一种东西,对于我们学以致用的这种能力得到了很好锻炼,能够为我们以后的工作于学习打下基础。
由于本人的水平有限,设计中难免会有一些不合理的部分,系统的稳定性还有待提高。
最后,对在这个专周帮助我的所有同学和各位指导老师再次表示衷心的感谢!
七、参考文献
【1】李伯成:
《单片机及嵌入式系统》,清华大学出版社,2005
【2】胡汉才:
《单片机原理及接口技术》,清华大学出版社,2000
【3】王田苗:
《嵌入式系统设计和实例开发》,清华大学出版社,2002
【4】蔡伟智:
《LED道路交通灯的研制》,液晶和显示,第20卷第五期
【5】张友德:
《单片机原理和使用》,复旦大学出版社,2002
【6】倪继烈:
《微型计算机原理和接口技术》,清华大学出版社,2005
【7】李群芳:
《单片微型计算机和接口技术(第三版)》,电子工业出版社,2008
【8】张大明:
《单片机控制实训》,机械工业出版社,2007
一、引言…………………………………………………………...3
二、交通灯的组成……………………………………………........4
三、单元电路的设计……………………………………………....8
1、秒脉冲发生器……………………………………………..8
2、定时器………………………………………………….…..8
3、控制器…...………………………………………………..10
4、译码器……………………………………………...……..12
5.交通信号灯………………………………………………...14
6.整个交通灯控制系统的布局……………………………...14
四、PCB板的制作...........................................................................15
1、原理图绘制..........................................................................15
2、PCB图排线.........................................................................15
五、焊接技术....................................................................................16
六、仿真过程和效果分析................................................................20
七、元器件清单................................................................................23
八、体会总结..........................................................
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- at89c51 单片机 交通灯 控制系统 包括 源码 and 仿真