at89c51单片机交通灯控制系统含源码及仿真图讲课稿Word文档格式.docx
《at89c51单片机交通灯控制系统含源码及仿真图讲课稿Word文档格式.docx》由会员分享,可在线阅读,更多相关《at89c51单片机交通灯控制系统含源码及仿真图讲课稿Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
![at89c51单片机交通灯控制系统含源码及仿真图讲课稿Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/6f4e10e8-5448-4ab8-a577-1ae4cc1b5abb/6f4e10e8-5448-4ab8-a577-1ae4cc1b5abb1.gif)
一、项目名称
十字路口交通信号灯控制系统
二、选题背景
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程序流程图
5.3P0、P1口显示状态编码表
P0
编码
备注
P0^7
P0^6
P0^5
P0^4
P0^3
P0^2
P0^1
P0^0
1
0FEH
红灯
0BFH
黄灯
0F7H
绿灯
P1
P1^7
P1^6
P1^5
P1^4
P1^3
P1^2
P1^1
P1^0
0C0H
0F9H
0A4H
2
0B0H
3
99H
4
92H
5
82H
6
F8H
7
80H
8
90H
9
5.4程序源代码
#defineucharunsignedchar
#include<
reg51.h>
/**************************变量、控制位定义**************************/
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(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>
EW1=99;
if(EW_Red==0)//EW-1
EW1-=1;
if(EW1<
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);
//调用显示函数
0)//状态-3:
EW黄灯闪烁
if(count<
10)//状态:
EW黄灯亮
j=4;
Display(j);
else//状态:
EW黄灯灭
j=8;
SN=SN1;
//重置SN方向时间
Time_SN=SN;
//初始化南北方向通行时间
while(Time_SN>
EW红灯,SN绿灯
j=12;
0)//状态-6:
SN黄灯闪烁
j=16;
SN黄灯亮
SN黄灯灭
j=20;
EW=EW1;
//重置EW初始时间
/**************************主程序**************************/
main()
TMOD=0x01;
//定时器工作方式
//定时器初始化
IT0=1;
//中断触发方式为下降沿触发
EA=1;
//CPU开中断
ET0=1;
//开定时中断
TR0=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