交通灯控制系统Word格式文档下载.docx
- 文档编号:21119107
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:21
- 大小:340.59KB
交通灯控制系统Word格式文档下载.docx
《交通灯控制系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《交通灯控制系统Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
系统交付与展示
交通灯控制系统框架
交通灯控制系统主要基于MCS-51单片机AT89C52作为核心处理器进行开发设计。
交通灯控制系统基本框架如图1所示。
图1交通灯控制系统基本框架
交通灯控制系统设计
电路设计
交通灯系统基于AT89C52作为核心处理器,控制红绿灯的亮灯方式,利用外部时钟晶振进行计数计时,达到倒计时的功能,且通过数码管进行显示,并设计了外部按钮实现智能控制交通灯。
电路设计图如图2所示。
图2交通灯控制系统电路
在图2的交通灯控制系统的电路设计中,主要分为6个模块:
1.CPU模块,由芯片AT89C52构成,是系统的核心处理器
2.LED模块,由2组12个发光二极管组成东西方向和南北方向的红绿灯
3.数码管模块,由2组4个两位数码管实现东西方向和南北方向的倒计时显示
4.按钮模块,通过3个按钮达到智能控制交通灯的功能
5.晶振模块,由12MHZ的晶振组成一个外部时钟脉冲,用于计时和计数功能
6.复位模块,按下复位键达到系统自动复位重新启动的功能
程序分析和设计
交通灯控制系统主要功能是实现红绿灯周期循环,并显示倒计时和外部按钮智能控制。
通过分析,我们设计的程序流程图如图3所示。
图3流程图
在程序设计中,我们通过使用定时器中断系统来实现交通灯控制系统。
使用子函数timer()对定时器进行初始化设置:
voidtimer()
{
TMOD=00000001;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
}
在timer()函数中,TMOD设置了使用定时器T0且工作方式是1,使用计时功能。
通过THO,TLO,对定时器设置初值,以实现5ms的定时溢出功能,即当定时器溢出时,所用的时间长度是5ms,则在后续程序中,可以判断溢出次数来计算更长的时间。
当定时器溢出时,触发中断程序,主函数将跳转到中断程序中执行。
我们设计的T0中断函数voidt0(void)interrupt1using0如下
voidt0(void)interrupt1using0
wait++;
if(wait==200)
{
wait=0;
N--;
S--;
displayN[0]=N%10;
displayN[1]=N/10;
displayS[0]=S%10;
displayS[1]=S/10;
……
}
switch(conversion)
{
case0:
P10=1;
P11=0;
P12=1;
P3=Bits[1-i];
P2=display[displayN[i]];
i++;
if(i==2)
i=0;
break;
}
……
}
}
在中断函数voidt0(void)interrupt1using0,设置变量wait对溢出次数进行统计,当wait==200时,也就是溢出次数为200次,由于我们对定时器进行了初始化,并设置了定时溢出时间为5ms,溢出200次即表示时间长度为1s,通过判断执行对倒计时的数值N,S进行减1操作,从而实现倒计时的功能,并使用以下语句:
displayN[0]=N%10;
对倒计时的数值进行拆分,保存个位和十位数值,在switch(conversion)语句中通过语句
将保存的个位和十位数值通过数码管进行循环的输出显示。
其中使用switch(conversion){case0:
……case1:
……case2:
……}语句,对东西方向的红绿灯进行亮灯的操作。
如语句:
switch(conversion)
case0:
……
}在上述语句中,用0标记东西方向绿灯亮,然后对IO口P10,P11,P12进行操作,控制灯的亮灭,从而实现了红绿灯的控制。
同理可对东西方向的其他亮灯方式和南北方向进行标记和设计。
每一次溢出中断,执行前面的中断函数后,应使用语句:
通过上述语句,对定时器重新复位设置初值,由此每次溢出中断的时间就是5ms,保证了计时的准确性和可靠性。
在外部按钮的程序设计中,设计定时器T1中断函数voidt1(void)interrupt3using0对外部按钮进行判断控制,中断函数voidt1(void)interrupt3using0如下:
voidt1(void)interrupt3using0
if(P16==0)
P31=0;
P30=0;
P1=0xf5;
while
(1)
if(P17==0||INT0==0)
break;
}
if(P17==0)
P1=0xee;
while
(1){
if(P16==0||INT0==0)
}
if(INT0==0)
{
P1=0xF6;
while
(1){
if(P17==0||P16==0)
}
通过上述程序分析和设计,我们可以得到交通灯控制系统的整体程序如附录1所示。
交通灯控制系统测试
程序的编译
通过编译工具KeiluVision2,对我们设计的交通灯控制系统的程序进行编译,编译结果如图4所示。
图4程序编译结果
在图4中,编译器错误提示为0,警告提示为0,表明了我们设计的交通灯控制系统程序是没有语法上的错误和逻辑上的错误的。
软件测试
在软件的测试中,使用ISIS7Professional软件,对我们设计的交通灯控制系统进行测试仿真。
Testingcontent
Testingprocess
Testresults
Thingsdirectiontheredlight
Northandsouthdirectiongreenlight
Ok
Thingsdirectiontheredlight
Northandsouthdirectionyellowlight
Thingsdirectiongreenlight
Northandsouthdirectiontheredlight
Thingsdirectionyellowlight
Buttons1control
Thingsdirectionredlight
Northandsouthdirectionthegreenlight
Buttons2control
Buttons3control
硬件测试
我们自行焊接设计了交通灯控制硬件系统,并将程序烧录到AT89C52中,以检测各项功能模块。
Summary
本次设计中,交通灯控制系统主要基于AT89C52芯片为核心处理器开发设计的。
利用AT89C52的定时器中断,实现交通灯的循环计时和智能控制。
通过程序的设计和测试,我们设计的控制系统基本满足客户的需求。
但在设计中仍然存在以下几点不足:
1.在程序设计中,并为实现智能控制,返回原来交通灯状态,需要按复位键重新启动芯片。
2.在程序的设计中,利用IO口分别控制不同方向的红绿灯,虽然提高了程序的可靠性和准确性,但降低了程序的可读性,且使得程序变得复杂。
3.在硬件测试中,存在焊工的问题,以及电路设计有潜在错误,导致数码管显示不完全。
在以往的学习和设计中,我将注意本次设计中的不足,增强专业技能训练,简化系统程序,增强程序的可读性和准确性,并使得系统程序具备更多的功能,让系统更好的服务客户。
附录1:
交通灯控制系统程序
#include<
reg51.h>
#include<
stdio.h>
unsignedchardisplay[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsignedchardisplayN[2]={0,0};
unsignedchardisplayS[2]={0,0};
unsignedcharBits[2]={0xfd,0xfe};
unsignedintN=30,S=33,wait,wait1,wait2,conversion=0,conversion1=2,i=0,j=0;
sbitP10=P1^0;
sbitP11=P1^1;
sbitP12=P1^2;
sbitP13=P1^3;
sbitP14=P1^4;
sbitP15=P1^5;
sbitP16=P1^6;
sbitP17=P1^7;
sbitP30=P3^0;
sbitP31=P3^1;
voidt1(void)interrupt3using0
{
if(P16==0)
while
(1)
if(P17==0||INT0==0)
if(P17==0)
while
(1){
if(P16==0||INT0==0)
if(INT0==0)
if(P17==0||P16==0)
voidtimer()
}
voidt0(void)interrupt1using0
if(wait==200)
{
if(N==0&
&
conversion==0)
N=3;
conversion=1;
elseif(N==0&
conversion==1)
N=33;
conversion=2;
conversion==2)
N=30;
conversion=0;
if(S==0&
conversion1==0)
S=3;
conversion1=1;
elseif(S==0&
conversion1==1)
S=33;
conversion1=2;
conversion1==2)
S=30;
conversion1=0;
}
switch(conversion)
if(i==2)
case1:
wait1++;
P10=1;
P11=1;
if(wait1==200)
{wait1=0;
if(wait1==100)
P12=0;
case2:
P10=0;
P3=Bits[1-i];
switch(conversion1)
P13=1;
P14=0;
P15=1;
P3=Bits[1-j];
P0=display[displayS[j]];
j++;
if(j==2)
j=0;
wait2++;
P14=1;
if(wait2==200)
{wait2=0;
if(wait2==100)
P15=0;
P3=Bits[1-j];
P13=0;
voidmain()
timer();
while
(1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 控制系统
![提示](https://static.bdocx.com/images/bang_tan.gif)