51单片机交通灯设计要点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要
交通信号灯是交通信号中的重要组成部分,是道路交通的基本语言,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。

适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。

交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。

分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制技术日益更新。

接下来将介绍基于单片机控制的交通信号灯的自动指挥系统。

交通信号灯控制方式很多。

本系统采用MSC-51系列单片机80C51和芯片74LS245为中心器件来设计交通灯控制系统。


关键字:单片机,信号灯,控制
前言
道路交通信号灯是交通安全产品中的一种类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。

适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。

最早的时候只有红、绿两种颜色,后来经过改良后,增加了一盏黄色的灯,红灯表示停止,黄灯表示准备,绿灯则表示通行。

之所以采用这三种颜色,一方面是三原色,其他颜色也是在此基础上调出来的,另一方面,用这三种颜色作为交通讯号也和人们的视觉结构和心理反应有关。

人的视网膜含有杆状和三种锥状感光细胞,杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。

由于这种视觉结构,人最容易分辨红色与绿色。

虽然黄色与蓝色也容易分辨,但因为眼球对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。

交通信号灯是交通信号指挥中的重要组成部分,是道路交通的基本语言。

交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。

分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。

广泛用于公路交叉路口,弯道、桥梁等存有安全隐患的危险路段,指挥司机或行人交通,促进交通畅通,避免交通事故和意外事故发生。

图1-1.系统硬件构成模块
1.2.1功能概述
本设计由中断系统、单片机、LED数码显示模块和按键等构成。

单片机是集成的IC芯片AT89C51单片机,只需根据实际选型。

其他部分都需要根据应用要求和性能指标自行设计。

硬件结构整体框图:
上图电路为交通灯控制系统的具体电路图,在东南西北四个方向的LED指示灯,代表四个方位的交通信号灯。

设计中交通灯控制规则如下:
(1)每个街口有左拐、直行、红灯、绿灯四种指示灯。

每个灯有红、绿、黄三种颜色。

(2)共有四种通行方式:
1、①、道路通行方式一时,此时东西方向车辆可以直行;南北路口车辆禁止直行,人行可通过;各个路口车辆均可右拐
②道路通行方式二时,此时东西南北方向车辆均禁止直行;东西路口车辆可以左拐;各个路口车辆均可右拐,人行可通过。

③道路通行方式三时,此时南北方向车辆可以直行;东西路口车辆禁止直行,人行可通过;各个路口车辆均可右拐。

④道路通行方式四时,此时东西南北方向车辆均禁止直行;南北路口车辆可以左拐;各个路口车辆均可右拐,人行可通过。

2、有倒计时时间显示时间,红绿灯切换提前5秒亮黄灯提示。

3、紧急情况时,所有路口均亮红灯,禁止所有普通车辆通行,人行道显示禁止通行。

数码管显示‘no’字样。

一、硬件部分
1.系统硬件构成模块:
2.硬件介绍
(1)80C51引脚图以及引脚功能介绍
80C51单
片机
I/0口 扩展 LED 数码管显示
中断系统
复位电路
这40根引脚大致可分为:电源(V CC、V SS、V PP、V PD)、时钟(XTAL1、XTAL2)、I/O口(P0~P3)、地址总线(P0口、P2口)和控制总线(ALE、RST、、、)等几部分。

它们的功能简述如下:
1.电源
Vcc(引脚号40),芯片电源,接+5V;Vss(引脚号20),电源接地端。

2.时钟
XTAL1(引脚号18)内部振荡电路反相放大器的输入端,是外接晶振的一个引脚。

当采用外部振荡器时,此引脚接地。

XTAL2(引脚号19)内部振荡器的反相放大器输出端,是外接晶振的另一端。

当采用外部振荡器时,此引脚接外部振荡源。

3. 控制总线
(1)ALE/(引脚号30): 正常操作时为ALE功能(允许地址锁存),用来把地址的低字节锁存到外部锁存器。

ALE引脚以不变的频率(振荡器频率的1/6)周
期性地发出正脉冲信号。

因此,它可用作对外输出的时钟信号或用于定时。

但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲。

ALE端可以驱动(吸收或输出电
流)8个LSTTL电路。

在8751单片机EPROM编程期间,此引脚接编程脉冲(功能)。

(2)(引脚号29):外部程序存储器读选通信号。

在从外部程序存储器取指令(或数据)期间,在每个机器周期内两次有效。

可以驱动8个LSTTL电路。

(3)RST/VPD(引脚号9):复位信号输入端。

振荡器工作时,该引脚上持续2个机器周期的高电平可实现复位操作。

此引脚还可接上备用电源。

在Vcc掉电期间,
由向内部RAM提供电源,以保持内部RAM中的数据。

(4) /Vpp(引脚号31):为内部程序存储器和外部程序存储器的选择端。

当为高电平时,访问内部程序存储器(PC值小于4K);当为低电平时,访问外部程序存储器。

对于87C51单片机,在EPROM编程期间,此端为21V编程电源输入端。

4. I/O线
(1)P0口(引脚号32~39):单片机的双向数据总线和低8位地址总线。

在访问外部存储器时实现分时操作,先用作地址总线,在ALE信号的下降沿,地址被锁存;
然后用作为数据总线。

它也可以用作双向输入/输出口。

P0口能驱动8个LSTTL负载。

(2)P1口(引脚号1~8):准双向输入/输出口,它能驱动4个LSTTL负载。

(3)P2口(引脚号21~28):准双向输入/输出口。

在访问外部存储器时,用作高8位地址总线。

P2口能驱动4个LSTTL负载。

(4)P3口(引脚号10~17):准双向输入/输出口,它能驱动4个LSTTL负载。

P3口的每一引脚还有另外一种功能:
P3.0——RXD:串行口输入端
P3.1——TXD:串行口输出端
P3.2——:外部中断0中断请求输入端
P3.3——:外部中断1中断请求输入端
P3.4——T0:定时器/计数器0外部输入端
P3.5——T1:定时器/计数器1外部输入端
P3.6——:外部数据存储器写选通信号
P3.7——:外部数据存储器读选通信号
(2)74LS245引脚图及功能
74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。

74LS245还具有双向三态功能,既可以输出,也可以输入数据。

当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。

当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)
DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。

由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G 接地,P2口与驱动器输入线对应相连。

P0口与74LS245输入端相连,E端接地,保证数据线畅通。

8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。

(3)八段LED数码管
LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。

LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。

以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阳极连在一起,如图1-3所示。

这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要
分别对它们的高低电平来加以控制。

为方便起见,本文主要讨论共阳八段LED 数码显示管,其他类形的显示管与其类似。

LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如dp,g,f,e,d,c,b,a全亮显示为8,采用共阳极连接驱动代码,代码如下所示。

LED8段数码管的设置为每个方位上的一对2为显示器。

四个方位上总共用4个LED接在单片机的IO口上。

虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。

二、部分电路设计
1、时钟电路
时钟是一切微处理器、微控制器内部电路工作的基础。

单片机内部有一个自激振荡电路,它是定时控制部件中的一部分,可以通过内部自激振荡或外部提供振荡源这两种方式,驱动内部时钟电路产生系统时钟信号。

内部方式:在XTAL1、XTAL2跨接定时元件和两个电容就构成了自激振荡器,C1、C2取5-30PF,起微调和稳定作用。

晶振频率:f=1.2-12MHZ,常用频率为6、12、11、0592MHZ。

外部方式:外部振荡脉冲信号直接由XALT1端输入,此时,XALT2端悬浮。

这种方式常用于多片单片机系统,以使相互的时钟信号保持同步。

晶振周期:为振荡器输出的时钟脉冲频率的倒数。

是单片机中最小、最基本的时间单位。

状态周期:也叫时钟周期,是振荡频率经2分频后获得的信号周期,称S,显然,S为晶振周期的2倍。

机器周期:12个晶振周期为一个机器周期,对应计算机执行一个基本操作所需的时间。

指令周期:执行一条指令所需的时间,至少包含一个机器周期。

指令字节:指令占用存储空间的字节数,有单字节、双字节、三字节三类。

当时钟频率为12MHZ和6MHZ时,晶振周期分别为1/12µs和1/16µs,机器周期分别为1µs和2µs。

这里使用12MHZ晶振和两个电容就构成的自激振荡器。

如图:
2、复位电路
复位电路一般有2种复位操作方式:上电位复位方式和手动复位,两种复位的操作电路形式不同,如下图。

上电自动复位:通过电容充电来实现的,VCC 的上升时间不超过1ms,就可
以实现上电位复位。

手动开关复位:手动开关复位在系统出现操作错误或程序运行出错时使用。

在单片机系统运行过程中,按下复位键,单片机被强制执行复位操作,系统可以
退出错误运行状态,恢复正常工作。

此次设计选择的为第二种手动开关复位。

3、时间显示电路
在单片机应用系统中通常使用由八个LED 器件组成的七段LED 显示器,其中
七个LED 构成七笔字形,另一个LED 构成小数点(故有时称八段显示器)。

如图
所示,其接法共有两种:共阴极与共阳极,前者是输入高电平有效(LED 发光),
后者是输入低电平有效。

其工作原理是:控制其中各段LED 的亮与暗即可显示出
相应的数字、字母或符号。

若添加防雷器件:
TVS(TRANSIENT VOLTAGE SUPPRESSOR)或称瞬变电压抑制二极管是在稳压管工艺基础上发展起来的一种新产品,其电路符号和普通稳压二极管相同,外形也与普通二极管无异,当TVS管两端经受瞬间的高能量冲击时,它能以极高的速度(最高达1*10-12秒)使其阻抗骤然降低,同时吸收一个大电流,将其两端间的电压箝位在一个预定的数值上,从而确保后面的电路元件免受瞬态高能量的冲击而损坏。

TVS的反应速度绝对比RC回路快的多10s-12s,可不用考虑TVS的击穿电压VBR,反向临界电压VWM,最大峰值脉冲电流IPP和最大箝位电压VC及峰值脉冲功率PP. 选择VWM等于或大于电路工作电压,VC为小于保护器件的耐压值,能测量最好(IPP),或估计出脉冲的功率,选功率较大的TVS.
防干扰器件:
光电耦合器(optical coupler,英文缩写为OC)亦称光电隔离器,简称光耦。

光电耦合器以光为媒介传输电信号。

它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用。

目前它已成为种类最多、用途最广的光电器件之一。

光耦合器一般由三部分组成:光的发射、光的接收及信号放大。

输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。

这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。

由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。

三、软件部分
1.程序流程图:
总程序流程图:
紧急程序流程图:
若有紧急中断信号出现,显示子程序优先处理中断程序,将所有路口的信号灯置为红色禁止通行。

紧急状态解除各信号灯再进入正常状态显示。

源程序代码:
#define uchar unsigned char
#define uint unsigned int
#include <reg51.h>
/*****定义控制位**********************/
sbit EW_LED2=P2^3; //东西数码管个位
sbit EW_LED1=P2^2; //东西数码管十位
sbit SN_LED2=P2^1; //南北数码管个位
sbit SN_LED1=P2^0; //南北数码管十位_
sbit SN_Yellow=P1^6;//南北黄灯
sbit EW_Yellow=P1^2;//东西黄灯
sbit EW_Red=P1^3;//东西红灯
sbit SN_Red=P1^7;//南北红灯
//sbit Busy_Btton=P3^2;
bit Flag_SN_Yellow; //南北黄灯标志位
bit Flag_EW_Yellow;//东西黄灯标志位
char Time_EW;//东西方向倒计时单元
char Time_SN;//南北方向倒计时单元
uchar EW=50,SN=25,EWL=20,SNL=20; //程序初始化赋值,正常模式
uchar EW1=50,SN1=25,EWL1=20,SNL1=20;//用于存放修改值的变量
//uchar code
table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~ 9段选码
uchar code
table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
//uchar code
table[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
//uchar code S[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信号
灯控制代码
uchar code S[8]={0xd7,0xb7,0xe7,0xb7,0x7d,0x7b,0x7e,0x7b}; /**********************延时子程序************************/ void Delay(uchar a)
{
uchar i;
i=a;
while(i--){;}
}
/*****************显示子函数**************************/
void Display(void)
{
char h,l;
h=Time_EW/10;
l=Time_EW%10;
P0=table[l];
EW_LED2=1;
Delay(200);
EW_LED2=0;
P0=table[h];
EW_LED1=1;
Delay(200);
EW_LED1=0;
h=Time_SN/10;
l=Time_SN%10;
P0=table[l];
SN_LED2=1;
Delay(200);
SN_LED2=0;
P0=table[h];
SN_LED1=1;
Delay(200);
SN_LED1=0;
}
/**********************T0中断服务程序*******************/ void timer0(void)interrupt 1 using 1
{
static uchar count;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==10)
{
// Time_EW--;
// Time_SN--;
if(Flag_SN_Yellow==1) //南北黄灯标志位
{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1) //东西黄灯标志位
{EW_Yellow=~EW_Yellow;}
}
if(count==20)
{
Time_EW--;
Time_SN--;
if(Flag_SN_Yellow==1)//南北黄灯标志位
{ Time_SN=Time_EW;
// Time_SN++;
{
SN_Yellow=~SN_Yellow;}
}
if(Flag_EW_Yellow==1)//东西黄灯标志位
{ Time_EW=Time_SN;
// Time_EW++;
{
EW_Yellow=~EW_Yellow;
}
}
// Time_EW--;
// Time_SN--;
// Display();
count=0;
}
}
/*********************主程序开始**********************/ void main(void)
{
IT1=0; //INT1负跳变触发
TMOD=0x01;//定时器工作于方式1
TH0=(65536-50000)/256;//定时器赋初值
TL0=(65536-50000)%256;
EA=1; //CPU开中断总允许
ET0=1;//开定时中断
EX1=1;//开外部INTO中断
TR0=1;//启动定时
PX1=1;//中断优先级高
while(1)
{ /*******S0状态**********/
Flag_EW_Yellow=0; //EW关黄灯显示信号
Time_EW=EW;
Time_SN=SN;
while(Time_SN>0)
{P1=S[0]; //SN通行,EW红灯
Display();}
/*******S2状态**********/
Flag_SN_Yellow=0; //SN关黄灯显示信号
Time_SN=SNL;
while(Time_SN>0)
{P1=S[2];//SN左拐绿灯亮,EW红灯
Display();}
/*******S3状态**********/
P1=0xff;
while(Time_EW>0)
{Flag_SN_Yellow=1; //SN开黄灯信号位
EW_Red=0; //SN黄灯亮,等待停止信号,EW红灯 //SN_LED1=EW_LED1;
//SN_LED2=EW_LED2;
Display();
}
/***********赋值**********/
EW=EW1;
SN=SN1;
EWL=EWL1;
SNL=SNL1;
/*******S4状态**********/
Flag_SN_Yellow=0; //SN关黄灯显示信号
Time_EW=SN;
Time_SN=EW;
while(Time_EW>0)
{P1=S[4]; //EW通行,SN红灯
Display();}
/*******S6状态**********/
Flag_EW_Yellow=0; //EW关黄灯显示信号
Time_EW=EWL;
while(Time_EW>0)
{P1=S[6];//EW左拐绿灯亮,SN红灯
Display();}
/*******S7状态**********/
P1=0Xff;
while(Time_SN>0)
{Flag_EW_Yellow=1; //EW开黄灯信号位
SN_Red=0;//EW黄灯亮,等待停止信号,SN红灯
Display();}
/***********赋值**********/
EW=EW1;
SN=SN1;
EWL=EWL1;
SNL=SNL1;
}
}
void xint1() interrupt 2 //外部中断INT1
{
P1=0x77;
Display();
Delay(200);
}
总结
通过这次的课程设计,我真心感觉到了设计的艰苦,虽然有参考,但需要自己思考的东西还是很多。

从根本意义上运用了平时上课所学的知识点。

还有一些自己不懂得东西还有掌握的不牢固的东西需要自己去查资料,以及报告的排版,都需要下心血去做,不是一件轻易的事情。

这次设计中实现了交通灯的转换以及数码管显示计时功能,改进的方向有希望能设计出根据车流量调整红绿灯亮的时间,让交通更加便利合理,还有能够实现夜间信号灯闪烁的功能,让司机看的更加清晰,更不容易违反交通规则。

参考文献
[1]陈权昌、李兴富.单片机原理及应用.华南理工大学出版社.2004.
[2]葛仁华、卢勇威.数字电子技术.华南理工大学出版社.2005.
[3]沈鸿星.LED交通信号灯系统的硬件设计[J].电子工程师.2004.
[4]何立民.单片机应用技术大全[M].北京:北京航空航天大学出版社.1994.
[5]李广弟.单片机基础[M].北京:北京航空航天大学出版社.1992.
[6]胡汉才. 单片机原理及其接口技术[M].清华大学出版社.2000年5月第一版.
[7]何立民. 单片机高级教程[M].北京航空航天大学出版社,2000年5月第一版.
[8]骆新全. 吴小泉. 李行星. 电子电路与系统实验. 北京, 中国广播电视出版社, 2009.
[9]百度百科:TVS管、光电耦合电路、交通信号灯.
附:
车流量智能交通灯
只需在普通交通灯上增加一个车流检测模块即可。

车流监测方案:
利用红外线车辆检测器。

红外线车辆检测器是利用被检测物对光束的遮挡或反射,通过同步回路检测物体有无。

物体不限于金属,所有能反射光线的物体均可被检测。

光电开关将输入电流在发射器上转换为光信号射出,接收器再根据接收到的光线的强弱或有无对目标物体进行探测。

如当汽车通过光扫描区域时,部分或全部光束被遮挡,从而实现对车辆数据的综合检测。

红外线车辆扫描系统提供了车辆轮廓扫描的解决方案,并提供车辆分离信号,同时还能够检测挂钩是否存在及其位置,由于光学产品的高速响应,当车速低于100公里/小时,系统可对车辆间距0.3米车辆实现可靠的分离检测并抓取车辆轮廓数据,当车速低于200公里/小时,对车辆间距0.6米的车辆实现可靠的分离检测并抓取轮廓数据,系统可自动分类超过100种车型,车辆自动分类的准确率超过99%。

常利用光电开关技术成熟,高速响应,可输出丰富的车辆数据信息,能可靠检测各种特殊车辆。

抗干扰性强,不受恶劣气象条件或物体颜色的影响,安装简便。

光电开关的工作原理
光电开关(光电传感器)是光电接近开关的简称,它是利用被检测物对光束的遮挡或反射,由同步回路选通电路,从而检测物体有无的。

物体不限于金属,所有能反射光线的物体均可被检测。

光电开关将输入电流在发射器上转换为光信号射出,接收器再根据接收到的光线的强弱或有无对目标物体进行探测。

其工作原理图如下:
发送器对准目标发射光束,发射的光束一般来于半导体光源,发光二极管(LED)、激光二极管及红外发射二极管。

光束不间断地发射,或者改变脉冲宽度。

接收器有光电二极管、光电三极管、光电池组成。

在接收器的前面,装有光学元件如透镜和光圈等。

在其后面是检测电路,它能滤出有效信号和应用该信号。

随着我国工业自动化技术的迅速发展,光电开关自动化元件将被普遍采用。

应用领域也在不断扩展,采用集成电路技术和SMT表面安装工艺而制造的新一代光电开关器件,具有延时、展宽、外同步、抗相互干扰、可靠性高、工作区域稳定和自诊断等智能化功能。

这种新颖的光电开关是一种采用脉冲调制的主动式光电探测系统型电子开关,它所使用的冷光源有红外光、红色光、绿色光和蓝色光等,可非接触、无损伤地检测和控制各种固体。

新型光电开关具有体积小、功能多、寿命长、精度高、响应速度快、检测距离远以及抗光、电、磁干扰能力强等优点。

目前,这种新型的光电开关已被用作物位检测、液位控制、产品计数、宽度判别、速度检测、定长剪切、孔洞识别、信号延时、自动门传感、色标检出、冲床和剪切机以及安全防护等诸多领域。

在本系统中,采用对射式红外线光电开关HJS18-M14DNK检测车流量。

HJS18-M14DNK工作电压为直流10-30V,检测距离为10m,响应时间小于3ms, 能在-25℃~55℃的温度条件下正常工作。

当有车辆通过光电开关之间时,输出端将输出一个开关信号,送入单片机,单片机执行相应程序自动对输入信号进行计数,从而完成对车流量的统计。

相关文档
最新文档