单片机交通灯课程设计报告.docx

上传人:b****2 文档编号:776816 上传时间:2023-04-30 格式:DOCX 页数:19 大小:168.50KB
下载 相关 举报
单片机交通灯课程设计报告.docx_第1页
第1页 / 共19页
单片机交通灯课程设计报告.docx_第2页
第2页 / 共19页
单片机交通灯课程设计报告.docx_第3页
第3页 / 共19页
单片机交通灯课程设计报告.docx_第4页
第4页 / 共19页
单片机交通灯课程设计报告.docx_第5页
第5页 / 共19页
单片机交通灯课程设计报告.docx_第6页
第6页 / 共19页
单片机交通灯课程设计报告.docx_第7页
第7页 / 共19页
单片机交通灯课程设计报告.docx_第8页
第8页 / 共19页
单片机交通灯课程设计报告.docx_第9页
第9页 / 共19页
单片机交通灯课程设计报告.docx_第10页
第10页 / 共19页
单片机交通灯课程设计报告.docx_第11页
第11页 / 共19页
单片机交通灯课程设计报告.docx_第12页
第12页 / 共19页
单片机交通灯课程设计报告.docx_第13页
第13页 / 共19页
单片机交通灯课程设计报告.docx_第14页
第14页 / 共19页
单片机交通灯课程设计报告.docx_第15页
第15页 / 共19页
单片机交通灯课程设计报告.docx_第16页
第16页 / 共19页
单片机交通灯课程设计报告.docx_第17页
第17页 / 共19页
单片机交通灯课程设计报告.docx_第18页
第18页 / 共19页
单片机交通灯课程设计报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机交通灯课程设计报告.docx

《单片机交通灯课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机交通灯课程设计报告.docx(19页珍藏版)》请在冰点文库上搜索。

单片机交通灯课程设计报告.docx

单片机交通灯课程设计报告

单片机原理及系统课程设计

评语:

 

考勤(10)

守纪(10)

过程(40)

设计报告(30)

答辩(10)

总成绩(100)

 

专业:

zzzzzzzzzzzzzzzz

班级:

zzzzzzzzzzzzzz

姓名:

zzzzzzzzzzzz

学号:

zzzzzzzzz

指导教师:

zzzzzzzzzzz

2013年3月7日

基于单片机的交通灯设计

摘要

交通在人们的日常生活中占有重要的地位。

交通信号灯的出现,对于提高道路通行能力、减少交通事故有明显效果。

本系统采用单片机AT89C51为中心器件,包括手动按键控制电路、LED数码管显示电路、共阴极数码管显示电路等几大部分组成。

系统分为硬件控制和软件控制两大部分。

硬件部分,采用proteus软件来仿真硬件连接,软件部分则通过keilc来进行程序设计,使硬件在软件的控制下,协调运行。

关键词:

AT89C51;交通灯;LED

Abstract

ThetrafficisveryimportantinPeople'sDailylife.Theemergenceofthetrafficlights,forimprovingroadtrafficcapacity,reducetrafficaccidentshaveobviouseffect.ThissystemadoptssinglechipmicrocomputerAT89C51asthecenter,includingamanualbuttoncontrolcircuit,LEDdigitaltubedisplaycircuit,digitaltubedisplaycircuitandsoonseveralcommoncathode.Systemisdividedintohardwareandsoftwarecontroloftwoparts.Hardwarepart,usestheproteussimulationsoftwaretothehardwareconnection,softwarepartbykeilcprogramdesign,thehardwareundersoftwarecontrol,coordinationofoperation.

KeyWords:

AT89C51,Trafficlights,LED

1引言

本设计是基于单片机交通灯控制系统。

其核心器件是AT89C51单片机。

LED显示红灯,黄灯,绿灯来指挥车辆和行人,其中红灯亮表示该条道路上禁止通行;黄灯亮表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮表示该条道路上允许通行。

两位共阴极数码管显示时间。

六个按键用来对交通灯进行控制。

本系统为实现交通道路的管理,分析应用了单片机实现交通灯管制的控制系统以及该系统软件、硬件的设计方法。

2设计方案及原理

2.1总体设计方案

本系统由AT89C51单片机,手动按键控制部分,共阴极数码管显示部分,LED灯显示部分组成。

2.2系统原理框图(如图1所示)

图1系统设计框图

2.3系统工作原理

系统通过LED灯(红灯、黄灯、绿灯)来指挥车辆和行人,AT89C51的P2口用来驱动LED灯显示;74LS245芯片驱动两位共阴极数码管的8位段码显示,P1.0口和P1.1口驱动两位共阴极数码管的位码显示,两位共阴极数码管显示时间;六个按键对交通灯进行控制。

3硬件设计

电路图共有六个按键,每个按键都对交通灯进行不同的控制。

每个按键及其对应的功能如表1所示。

表1按键及对应的功能

按键

对应的功能

P1.6

加时间

P1.7

减时间

P2.7

确认

P3.1

紧急停车

P3.2

强制东西通行

P3.3

强制南北通行

3.1两位共阴极数码管显示设计

两位共阴极数码管用来显示时间,74LS245驱动数码管显示,其中74LS245的B0~B7驱动ABCDEFG及DP八个段码显示,AT89C51驱动1和2这两个位码显示。

连接图如图2所示。

图2两位共阴极数码管连接图

3.2LED灯显示设计

分东西南北方向,每个方向分别有红灯、黄灯和绿灯。

其中红灯亮表示该条道路上禁止通行;黄灯亮表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮表示该条道路上允许通行。

连接图如图3所示。

图3LED灯显示连接图

3.3整体硬件连接图

本系统由单片机总控制器部分,手动按键控制部分,共阴极数码管显示部分以及LED灯显示部分组成。

其整体硬件连接图如图4所示。

图4整体硬件连接图

4软件设计

4.1主程序流程图

程序主要包括:

主程序、按键处理子程序、显示子程序和中断程序。

其中主程序设定为定时器0,工作方式1(TMOD=0X01),开总中断(EA=0),打开定时器0(ET0=1),启动定时器0(TR0=1),开外部中断0(EX0=1),开外部中断1(EX1=1)等。

主要控制LED灯的显示,LED灯开始默认状态为东西绿灯,南北红灯,开始倒计时,倒计时完毕,东西黄灯闪烁5秒,东西变为红灯,南北变为绿灯,开始倒计时,倒计时至5秒黄灯开始闪烁(因为程序中南北的时间比东西多5秒),闪烁结束后东西变为绿灯,南北变为红灯,开始倒计时,依次循环。

主程序流程图如图5所示。

图5主程序流程图

4.2按键处理子程序流程图

系统共有六个按键,程序中有按键扫描子程序函数voidkey()和按键处理子程序函数voidkey_to(),分别对按键进行扫描和处理。

按键处理子程序流程图如图6所示。

4.3数码管显示子程序流程图

程序中共阴极数码管显示用voiddisplay()函数,其流程图如图7所示。

图6按键处理子程序流程图图7数码管显示子程序流程图

5系统仿真及实际调试

系统初始默认为东西亮绿灯,南北亮红灯。

开始倒计时(倒计时的时间可以根据车流量进行设定),东西绿灯倒计时为零就开始闪烁5秒钟的黄灯,而南北仍为红灯。

当东西黄灯闪烁完毕,南北就变为亮绿灯,东西变亮红灯。

然后开始倒计时,倒计时至5秒南北就开始闪烁黄灯(因为程序中南北的时间比东西多5秒)。

南北黄灯闪烁完毕,东西变亮绿灯,南北变亮红灯。

这便是一个循环周期,以后按次周期依次循环。

六个按键可以对交通灯及数码管显示的时间进行控制。

按键P1.6和P1.7可以根据车流量加、减时间;P3.1是紧急停车按键,例如当十字路口发生交通事故时,可以按下P3.1键,使东西南北同时显示红灯;按键P2.7是确认按键。

按键P3.2是强制东西通行按键,按键P3.3是强制南北通行按键。

当救护车、消防车等有非常紧急事情的车辆通行时,可以给控制中心打电话,控制中心就会按下P3.2或P3.3键,从而保证这些紧急车辆一路绿灯。

仿真图为东西闪烁黄灯,南北为红灯,倒计时至3秒,如图8所示。

图8仿真图

6总结

本文是基于单片机的交通灯设计。

在设计过程中,我遇到了一些问题:

首先是在keilc中运行程序时出现了一些错误,经检查是一些变量没有定义和一些标点符号的不合理造成的;其次在protues中画硬件连接图时多费了些时间,比如有些器件很难找到,但是上网查阅都解决了。

最后把kailc中生成的目标代码导入硬件连接图中成功显示。

参考文献

[1]马忠梅.单片机应用程序设计(第四版)[M].北京:

北京航空航天大学出版社,2010年5月:

20-50.

[2]赵俊生.单片机技术原理与实训[M].北京:

电子工业出版社,2009年3月:

217-231.

[3]冯先成.单片机应用系统设计(第一版)[M].北京:

北京航空航天大学出版社,2009:

22-27.

[4]苏玉萍.基于单片机的交通灯控制系统设计[J].甘肃科技,2011(10):

2-5.

 

附录源程序代码

#include

#defineucharunsignedchar

#defineuintunsignedint

uchardatabuf[4];

uchardatasec_dx=20;//东西数默认

uchardatasec_nb=25;//南北默认值

uchardataset_timedx=20;

uchardataset_timenb=25;

intn;

uchardatab;//定时器中断次数

sbitk1=P1^6;//定义4组开关

sbitk2=P1^7;

sbitk3=P2^7;

sbitk4=P3^1;

sbitYellow_nb=P2^5;//南北黄灯标志

sbitYellow_dx=P2^2;//东西黄灯标志

sbitGreen_nb=P2^4;

sbitGreen_dx=P2^1;

bittime=0;//灯状态循环标志

bitset=1;//调时方向切换键标志

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();//显示子程序

//主程序

voidmain()

{

TMOD=0X01;

TH0=0XD8;

TL0=0XF0;

EA=1;

ET0=1;

TR0=1;

EX0=1;

EX1=1;

P2=0Xc3;//开始默认状态,东西绿灯,南北红灯

sec_nb=sec_dx+5;

while

(1)

{

key();//调用按键扫描程序

display();//调用显示程序

}

}

//函数的定义部分

voidkey()//按键扫描子程序

{

if(k1!

=1)

{

delay(10);

if(k1!

=1)

{

while(k1!

=1)

{

key_to1();

for(n=0;n<40;n++)

{display();}

}

}

}

if(k2!

=1)

{

delay(10);

if(k2!

=1)

{

while(k2!

=1)

{

key_to2();

for(n=0;n<40;n++)

{display();}

}

}

}

if(k3!

=1)

{

TR0=1;//启动定时器

sec_nb=set_timenb;//从中断回复,仍显示设置过的数值

sec_dx=set_timedx;

if(time==0)

{P2=0X99;sec_nb=sec_dx+5;}

else{P2=0xC3;sec_dx=sec_nb+5;}

}

if(k4!

=1)

{

delay(5);

if(k4!

=1)

{

while(k4!

=1)

key_to3();

}

}

}

voiddisplay()//显示子程序

{

buf[1]=sec_dx/10;//第1位东西秒十位

buf[2]=sec_dx%10;//第2位东西秒个位

buf[3]=sec_nb/10;//第3位南北秒十位

buf[0]=sec_nb%10;//第4位南北秒个位

P1=0xff;//初始灯为灭的

P0=0x00;

P1=0xfe;//片选LCD1

P0=table[buf[1]];

delay

(1);

P1=0xff;

P0=0x00;

P1=0xfd;//片选LCD2

P0=table[buf[2]];

delay

(1);

P1=0xff;

P0=0x00;

P1=0Xfb;//片选LCD3

P0=table[buf[3]];

delay

(1);

P1=0xff;

P0=0x00;

P1=0Xf7;

P0=table[buf[0]];//片选LCD4

delay

(1);

}

voidtime0(void)interrupt1using1//定时中断子程序

{

b++;

if(b==19)//定时器中断次数

{b=0;

sec_dx--;

sec_nb--;

if(sec_nb<=5&&time==0)//东西黄灯闪

{Green_dx=0;Yellow_dx=!

Yellow_dx;}

if(sec_dx<=5&&time==1)//南北黄灯闪

{Green_nb=0;Yellow_nb=!

Yellow_nb;}

if(sec_dx==0&&sec_nb==5)

sec_dx=5;

if(sec_nb==0&&sec_dx==5)

sec_nb=5;

if(time==0&&sec_nb==0)

{P2=0x99;time=!

time;sec_nb=set_timenb;sec_dx=set_timenb+5;}

if(time==1&&sec_dx==0)

{P2=0Xc3;time=!

time;sec_dx=set_timedx;sec_nb=set_timedx+5;}

}

}

voidkey_to1()//键盘处理子程序之+

{

TR0=0;//关定时器

if(set==0)

set_timenb++;//南北加1S

else

set_timedx++;//东西加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;

}

voidkey_to2()//键盘处理子程序之-

{

TR0=0;//关定时器

if(set==0)

set_timenb--;//南北减1S

else

set_timedx--;//东西减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;

}

voidkey_to3()//键盘处理之紧急车通行

{

TR0=0;

P2=0Xc9;

sec_dx=00;

sec_nb=00;

}

voidint0(void)interrupt0using1//只允许东西通行

{

TR0=0;

P2=0Xc3;

sec_dx=00;

sec_nb=00;

}

voidint1(void)interrupt2using1//只允许南北通行

{

TR0=0;

P2=0X99;

sec_nb=00;

sec_dx=00;

}

voiddelay(intms)//延时子程序

{

uintj,k;

for(j=0;j

for(k=0;k<124;k++);

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2