基于单片机的交通信号灯控制设计论文.docx

上传人:b****7 文档编号:11393738 上传时间:2023-02-28 格式:DOCX 页数:17 大小:99.47KB
下载 相关 举报
基于单片机的交通信号灯控制设计论文.docx_第1页
第1页 / 共17页
基于单片机的交通信号灯控制设计论文.docx_第2页
第2页 / 共17页
基于单片机的交通信号灯控制设计论文.docx_第3页
第3页 / 共17页
基于单片机的交通信号灯控制设计论文.docx_第4页
第4页 / 共17页
基于单片机的交通信号灯控制设计论文.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于单片机的交通信号灯控制设计论文.docx

《基于单片机的交通信号灯控制设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通信号灯控制设计论文.docx(17页珍藏版)》请在冰豆网上搜索。

基于单片机的交通信号灯控制设计论文.docx

基于单片机的交通信号灯控制设计论文

 

湖南工学院

第六届“圆融”杯大学生电子设计竞赛

作品论文

基于单片机的交通信号灯控制设计

 

参赛队员(电气与信息学院电子1102班):

李霞

覃桂婷

胡迪

 

2012年11月10日

摘要

随着社会的进步,科技的进步使人们的生活水平逐步提高,各种方便人们生活的自动控制系统进入了人们的生活,以单片机为核心的产品越来越多,这标志了自动控制系统成为了数字化时代的一员。

本次设计为十字路口交通灯控制系统设计,红绿黄灯按指定时序按不同时间循环点亮,并可实现倒计时时间模式的转换,智能、安全、高效的指挥交通秩序。

本交通灯系统硬件部分以89C52单片机为核心控制器,在此基础上,采用开关按键控制,外接LED数码管显示倒计时,发光二级管作为交通信号灯,蜂鸣器用作报警器。

软件部分采用C编程控制单片机的运行。

本系统由单片机系统、按键、LED数码管显示、交通灯演示组成。

系统除基本交通灯功能外,还具有倒计时、时间切换显示以及根据具体情况手动报警等功能。

 

一、方案设计与论证

1、电源提供方案

为使模块稳定工作,须有可靠电源。

因此考虑了三种电源方案:

方案一:

采用独立的稳压电源。

此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。

方案二:

采用单片机控制模块提供电源。

改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。

方案三:

采用USB供电。

单片机使用的电压为5V,而USB输出来的电压正好为5V的电压,直接用USB供电比较方便。

综上所述,我选择第三种方案。

2、显示方案

该系统需完成倒计时功能。

基于上述原因,考虑了两种方案:

方案一:

采用两个两位的数码管显示。

这种方案直观的体现了不同方向的倒计时,只显示有限的符号和数码字符,简单,方便。

方案二:

采用一个四位的数码管显示。

这种方案虽然不用多占用I/O口,但没有直观的体现不同方向。

综上所述,我选择第一种方案。

3、时间切换控制方案

该系统能调节灯亮时间,处理紧急情况,研究了两种方案:

方案一:

采用8155扩展I/O口及键盘,显示等。

该方案的优点是:

使用灵活可编程,

并且有RAM,及计数器。

若用该方案,可提供较多I/O口,但操作起来稍显复杂。

方案二:

直接在I/O口线上接上按键开关,运用编程。

由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O口就可实现,且本

身的计数器及RAM已经够用,故选择方案二。

4、交通灯演示方案

采用在面板上焊接三色发光二极管模拟交通红绿灯,实现简单,清晰明了。

 

二、系统设计

1、系统总框图:

 

 

 

 

 

2、通行方案设计

南北红、东西绿:

南北方向禁行;东西方向通行。

东西红、南北绿:

东西方向禁行;南北方向通行。

 

3、系统功能

(1)复位功能

本设计装有复位键,当复位键按下之后,两位数码管全部显示0,发光二极管全部回归初始状态。

(2)正常指挥功能

红、黄、绿灯分别以40、5、40秒的时间循环显示,数码管循环显示40、5、40秒。

(3)模式切换

同时按下切换键和复位键,指示灯切换成红、黄、绿灯分别以30、5、30秒的时间循环显示,数码管切换成循环显示30、5、30秒;再次同时按下切换键和复位键,指示灯回复红、黄、绿灯分别以40、5、40秒的时间循环显示,数码管回复循环显示30、5、30秒。

(4)蜂鸣器报警

当有车闯红灯,按下蜂鸣器报警按键,蜂鸣器发出声音报警,此功能替代电子监控拍照。

4、基本构成及原理

(1)89C52的XTAL1和XTAL2接外部时钟电路,用于控制单片机的工作周期。

(2)89C52的RST接按键复位电路,用于单片机的复位控制。

(3)89C52的P2.0接开关S1,用于模式切换。

(4)89C52的P1.7接蜂鸣器用于报警。

(5)89C52的P1.0~P1.5外接六个发光二极管,具体作用通过编程实现。

(6)89C52的P1.0~P1.6接南北道倒计时数码管的段选和上拉电阻,P3.2和P3.3接位选;P0.0~P0.6接东西道倒计时数码管的段选和上拉电阻,P2.7和P2.6接位选动态显示数码管。

(7)发光二极管电路

P2.3~P2.5和P3.4~P3.6接六个发光二极管,外接220欧姆的电阻,发光二极管共阳极接+5V电源。

(8)三极管驱动数码管位选

由于数码管显示需要大一点的电流,而单片机管脚输出的电流不足以驱动它发亮,所以在数码管的位选处接NPN型三极管驱动它。

由于单片机的I/O口输出电流太小,不能驱动蜂鸣器发出声音,所以要接一个电流放大电路,三极管的基极经过限流电阻后由单片机的P1.7控制。

 

3、调试

根据方案设计的要求,调试过程共分两大部分:

硬件调试和软件调试。

1、硬件检测

(1)交通灯演示电路的调试:

交通灯模块由多个发光二极管组成,接线繁琐,极易出错。

检查二极管无故障、导线无断线、连线接头无互相搭联后可先写一个软件调试程序,依次检查东南西北方向的指示灯(发光二极管)是否点亮;若未点亮,则可能是连线接错。

根据灯的亮灭情况依次查找直到电路正常工作为止。

(2)倒计时电路调试:

倒计时电路主要有数码管组成。

当交通灯程序写好后,倒计时的显示可与最小系统板上两组数码管显示比较(系统板上的这两组数码管用以检查倒计时工作情况)。

若倒计时电路中有数码管不亮,检查数码管是否良好、数码管连线是否良好。

依次检查,直至倒计时电路正常工作。

(3)其它电路的调试主要看接口以及连线是否正确。

依次检查,直到正常工作。

 

2、软件调试

本系统的软件全部采用C语言编写,除语法与逻辑差错外,当确认程序没问题时,直接用proteus软件仿真调试。

仿真电路图:

程序代码:

#include

#defineuintunsignedint

#defineucharunsignedchar

sbith=P2^1;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f};

voiddelay(uintz)

{

uintx,y;

/*延时子程序*/

for(x=z;x>0;x--)

for(y=108;y>0;y--);

}

voidmain()

{

ucharn,N,i,j,q,a,b,k,g,f,m,o,p,l,u,c,d;

i=0;

j=4;

c=0;

d=3;

u=h;

switch(u==1)

{

/*40s倒计时*/

case1:

while

(1)

{

/*东西道红灯亮40s南北道绿灯亮40s*/

n=100;

while(n)

{

n--;

P2=0x9f;

P0=table[i];

delay(3);

P2=0xdf;

P2=0x5f;

P0=table[j];

delay(3);

P2=0xdf;

P3=0xb7;

P1=table[i];

delay(3);

P3=0xbf;

P3=0xbb;

P1=table[j];

delay(3);

P3=0xbf;

}

if(i==0x00)

{

i=0x0a;

j=j-1;

q=j+1;

}

/*东西道南北道黄灯亮5s*/

if(q==0x00)

{

a=5;

while(a+1)

{

n=100;

while(n)

{

b=0;

n--;

P2=0xaf;

P0=table[a];

delay(3);

P2=0xe7;

P2=0x6f;

P0=table[b];

delay(3);

P2=0xaf;

P3=0xd7;

P1=table[a];

delay(3);

P3=0xdf;

P3=0xdb;

P1=table[b];

delay(3);

P3=0xdf;

}

a--;

}

j=4;

i=1;

}

k++;

g=k%41;

/*东西道绿灯亮40s南北道红灯亮40s*/

if(g==0)

{

o=1;

l=1;

p=1;

f=0;

m=4;

while(l!

=0)

{l=o%42;

while(p!

=0)

{

p=o%41;

N=100;

while(N)

{

N--;

P2=0xb7;

P0=table[f];

delay(3);

P2=0xf7;

P2=0x77;

P0=table[m];

delay(3);

P2=0xf7;

P3=0xe7;

P1=table[f];

delay(3);

P3=0xef;

P3=0xeb;

P1=table[m];

delay(3);

P3=0xef;

}

if(f==0x00)

{

f=0x0a;

m=m-1;

}

f=f-1;

o++;

}

}

}

i=i-1;

}

/*30s倒计时*/

case0:

while

(1)

{

/*东西道红灯亮30s南北道绿灯亮30s*/

n=100;

while(n)

{

n--;

P2=0x9f;

P0=table[c];

delay(3);

P2=0xdf;

P2=0x5f;

P0=table[d];

delay(3);

P2=0xdf;

P3=0xb7;

P1=table[c];

delay(3);

P3=0xbf;

P3=0xbb;

P1=table[d];

delay(3);

P3=0xbf;

}

if(c==0x00)

{

c=0x0a;

d=d-1;

q=d+1;

}

/*东西道南北道黄灯亮5s*/

if(q==0x00)

{

a=5;

while(a+1)

{

n=100;

while(n)

{

b=0;

n--;

P2=0xaf;

P0=table[a];

delay(3);

P2=0xe7;

P2=0x6f;

P0=table[b];

delay(3);

P2=0xaf;

P3=0xd7;

P1=table[a];

delay(3);

P3=0xdf;

P3=0xdb;

P1=table[b];

delay(3);

P3=0xdf;

}

a--;

}

d=3;

c=1;

}

k++;

g=k%31;

/*东西道绿灯亮30s南北道红灯亮30s*/

if(g==0)

{

o=1;

l=1;

p=1;

f=0;

m=3;

while(l!

=0)

{l=o%32;

while(p!

=0)

{

p=o%31;

N=100;

while(N)

{

N--;

P2=0xb7;

P0=table[f];

delay(3);

P2=0xf7;

P2=0x77;

P0=table[m];

delay(3);

P2=0xf7;

P3=0xe7;

P1=table[f];

delay(3);

P3=0xef;

P3=0xeb;

P1=table[m];

delay(3);

P3=0xef;

}

if(f==0x00)

{

f=0x0a;m=m-1;}f=f-1;o++;}}}c=c-1;}}}

四、总结

此次的比赛让我们学到了不少东西,这是我们第一次进行电子制作,在没有单片机知识基础的情况下,完全由我们自己操作,从原理设计、方案选择、元器件选择、编写程序、模拟仿真、布线焊接,我们查阅了很多资料。

在大一时所学的C语言这一次就运用了,整个单片机的控制都是采用C语言编程。

把自己所查阅的资料应用到实际设计中是非常有成就感的,这也激励我们以后参加更多的比赛,将自己所学的知识和才能充分的发挥出来。

这次的比赛是做一个交通灯,题目虽然很简单,但是我们也遇到了不少困难,在编程仿真的时候,很多时候都达不到我们想要的效果,一遍一遍的修改程序,最终实现了我们想要的结果。

布线焊接是很关键的一步,怎样布线才能使电路看起来不乱,且电路连接正常,这次比赛,积累了大量经验为以后的比赛做了很好的铺垫。

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1