单片机交通控制灯的设计与实现.docx

上传人:b****5 文档编号:8204461 上传时间:2023-01-29 格式:DOCX 页数:21 大小:416.93KB
下载 相关 举报
单片机交通控制灯的设计与实现.docx_第1页
第1页 / 共21页
单片机交通控制灯的设计与实现.docx_第2页
第2页 / 共21页
单片机交通控制灯的设计与实现.docx_第3页
第3页 / 共21页
单片机交通控制灯的设计与实现.docx_第4页
第4页 / 共21页
单片机交通控制灯的设计与实现.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机交通控制灯的设计与实现.docx

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

单片机交通控制灯的设计与实现.docx

单片机交通控制灯的设计与实现

 

单片机交通控制灯的设计与实现

 

摘要

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

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

  十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

那么靠什么来实现这井然秩序呢?

靠的是交通信号灯的自动指挥系统。

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

本系统采用MSC-51系列单片机Intel8031和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的P1口设置红、绿灯燃亮时间的功能;为了系统稳定可靠采用了MAX629“看门狗”芯片,避免了系统因为死机而停止工作的情况发生;显示时间直接通过8255的PA、PB口输出;交通灯信号通过PC口输出;交通灯的点亮采用VT双向晶闸管来控制,直接采用220V交流电源驱动,系统实用性强、操作简单、扩展性强。

关键词:

单片机交通灯控制器设计实现

 

目录

摘要II

引言…………………………………………………………………………………………...2

1交通信号灯硬件电路的设计1

1.1交通信号灯的作用及工作原理1

1.1.1道路交通控制的作用主要表现为以下几个方面:

1

1.1.2道路交通信号灯的工作原理如下:

1

2系统组成2

2.1硬件控制线路图2

2.2器件和原理2

2.2.2什么是单片机系统4

2.3部分电路功能5

2.3.1晶振电路5

2.3.2复位电路5

2.3.3信号灯控制电路,LED及显示接口5

第三章交通信号灯软件的系统编程7

3.1信号灯亮灭的定时功能7

3.1.1单片机的定时器7

3.1.2定时器数值的设置应该注意的事项8

3.1.3定时1ms的程序代码9

3.251单片机的中断系统9

3.2.1中断系统的概念9

3.2.2单片机的中断系统的作用9

3.2.3如何实现单片机的中断9

3.3软件流程图9

第四章系统仿真13

4.1proteus软件介绍13

第五章:

调试功能说明19

5.1硬件调试19

5.1.1最小系统调试19

5.1.2故障点分析19

5.2软件调试问题及解决20

引言

电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。

红灯亮表示“停止”,绿灯亮表示“通行”。

1918年,又出现了带控制的红绿灯和红外线红绿灯。

带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。

红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。

红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。

信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。

绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。

左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。

红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口.

 

1交通信号灯硬件电路的设计

1.1交通信号灯的作用及工作原理

1.1.1道路交通控制的作用主要表现为以下几个方面:

  

改善交通秩序,增加交通安全。

减少交通延误,提高经济效益。

  

降低污染程度,保护生态环境。

节省能源和土地消耗。

交通信号灯由红灯、绿灯、黄灯组成。

红灯表示禁止通行,绿灯表示准许通行,黄灯表示警示。

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

交通信号灯用于道路平面交叉路口,通过对车辆、行人发出行进或停止的指令,使各同时到达的人、车交通流尽可能减少相互干扰,从而提高路口的通行能力,保障路口畅通和安全。

(1)机动车信号灯。

由绿黄红三种颜色的灯组成,绿灯亮时,准许车辆通行,但转弯车辆不得妨碍被放行的直行车辆、行人通行;黄灯亮时,已越过停止线的车辆可继续通行;红灯亮时,禁止车辆通行。

(2)车道信号灯。

车道信号灯由绿色箭头灯和红色叉形灯或红色箭头灯组成,绿色箭头灯亮时,准许本车道车辆按指示方向通行;红色叉形灯或红色箭头灯亮时,禁止本车道车辆通行。

(3)人行横道信号灯。

人行横道信号灯由绿灯和红灯组成,绿灯亮时,准许行人通过人行横道;红灯亮时,禁止行人进入人行横道,但是已经进入人行横道的,可以继续通过或者在道路中心线处停留等候第一章交通信号灯硬件电路的设计

1.1.2道路交通信号灯的工作原理如下:

设计一个十字路口交通灯自动控制电路。

设:

a--------南北方向绿灯接通;

b--------东西方向绿灯接通;

c--------南北方向红灯接通;

d--------东西方向红灯接通;

e--------南北方向黄灯接通;

f--------东西方向黄灯接通。

工作顺序为A→B→C→D→A,要求各状态的工作时间如下图所示。

绿灯-(25s)-黄灯--(5s)-红灯--(30s)--绿灯--(循环)

2系统组成

2.1硬件控制线路图

2.2器件和原理

所需硬件电路的名称

规格

数量

单片机芯片MSC-52

1

晶振

12M

1

电容

22pF

2

电解电容

10uF

2

电阻

220

6

排阻

220

1

共阴数码管

共阴

4

发光二极管

红黄绿

各两个

开关

1

MAX232

1

电容

1uF

4

串口

1

电阻

10K

1

2.2.1什么是单片机

单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:

CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

 单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

 早期的单片机都是8位或4位的。

其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。

此后在8031上发展出了MCS51系列单片机系统。

基于这一系统的单片机系统直到现在还在广泛使用。

随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。

90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。

随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。

而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。

目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。

当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。

而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。

 单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。

事实上单片机是世界上数量最多的计算机。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。

而个人电脑中也会有为数不少的单片机在工作。

汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!

单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。

2.2.2什么是单片机系统

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.

对51系列单片机来说,最小系统一般应该包括:

单片机、晶振电路、复位电路.

下面给出一个51单片机的最小系统电路图.

图3-1

复位电路:

由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍.

晶振电路:

典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)

2.3部分电路功能

2.3.1晶振电路

2.3.2复位电路

2.3.3信号灯控制电路,LED及显示接口

发光二极管简称LED,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性

当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现,因此而发光。

当所有二极管都发出光时,大多数都不是很有效的。

在普通二极管里,半导体材料本身吸引大量的光能而结束。

发光二极管是由一个塑性灯泡覆盖集中灯光在一个特定方向。

由于不同材料的禁带宽度不同,所以由不同材料制成的发光二极管可发出不同波长的光。

另外,有些材料由于组分和掺杂不同,例如,有的具有很复杂的能带结构,相应的还有接跃迁辐射等,因此有各种各样的发光二极管。

发光二极管在制作时,使用的材料有所不同,那么就可以发出不同颜色的光。

发光二极管的发光颜色有:

红色光、黄色光、绿色光、红外光等。

发光二极管的外形有:

圆形、长方形、三角形、正方形、组合形、特殊形等。

常用的发光二极管应用电路有四种,即直流驱动电路、交流驱动电路、脉冲驱动电路、变色发光驱动电路。

使用LED作指示电路时,应该串接限流电阻,该电阻的阻值大小应根据不同的使用电压和LED所需工作电流来选择。

发光二极管的压降一LED的光学参数与pn结结温有很大的关系。

一般工作在小电流IF<10mA,或者10~20mA长时间连续点亮LED温升不明显。

因此我们选的二极管颜色为红色,黄色。

绿灯是通行信号,面对绿灯的车辆可以直行红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。

黄灯是警告,信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。

2.4设计流程图

图2.4.1

第三章交通信号灯软件的系统编程

3.1信号灯亮灭的定时功能

3.1.1单片机的定时器

在单片机应用系统中,实现定时的方法一般有以下三种:

 1:

软件定时:

让计算机执行一段程序来进行事件延时。

这个程序段本身份没有安排其他的执行目的,只是利用该程序段的执行花费的一个固定时间。

通过适当的选择指令和安排循环次数,可调节这段程序执行所需花费的时间的长短。

其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。

因此软件定时的时间不宜过长。

 2:

硬件定时:

利用硬件电路实现定时。

其特点是不占用CPU时间,通过改变电路元器件参数调来节定时,但使用不够灵活方便。

对于时间较长的定时,常用硬件电路来实现。

  3:

可编程定时器:

通过专用的定时计数器芯片来实现。

其特点是通过对系统时钟脉冲进行计数实现定时,定时的时间可通过程序的设定的方法改变,使用灵活方便。

也可实现对外部脉冲的计数功能。

单片机交通控制器的设计

当定时计数器设置为计数工作方式时,技术器对来自输入引脚T0和T1的外部信号计数,

外部信号的下降沿将触发计数。

最高检测频率为振荡频率的二十四分之一。

计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。

当设置了定时器的工作方式并启动定时器工作后,定时器就安倍设定的工作方式独立工作,不在占用CPU的操作时间,只有在计数器计满溢出时才能中断CPU当前的操作。

3.1.2定时器数值的设置应该注意的事项

延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。

定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。

他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。

因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:

TC=M-C

式中,M为计数器摸值,该值和计数器工作方式有关。

在方式0时M为8196;在方式1时M的值为65536;在方式2和3为256。

T=(M-TC)T计数

或TC=M-T/T计数

 T计数是单片机时钟周期TCLK的12倍;TC为定时初值

如单片机的主脉冲频率为TCLK12MHZ ,经过12分频

方式0    TMAX=213 *1微秒=8.192毫秒

方式1    TMAX=216 *1微秒=65.536毫秒

我们在这里采用的是方式1,则初始值TC=65536-50000

THO=(65536-50000)%256TL0=(65536-50000)/256

 显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.我们采用在主程序中设定一个初值为0的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。

在中断服务子程序中,CPU先使软件计数器加1,然后判断它是否为20。

为20表示1秒已到可以返回到输出时间显示程序

3.1.3定时1ms的程序代码

voiddelay(unsignedintz)

{unsignedintx,y;

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

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

}

3.251单片机的中断系统

3.2.1中断系统的概念

计算机在执行正常程序时,如果系统出现某些急需处理的异常情况和特殊请求,CPU会暂时中止正在执行的指令,转去对随机发生的更紧迫事件进行处理;处理完后,CPU会自动返回原来的程序继续执行。

3.2.2单片机的中断系统的作用

CPU响应中断申请时,首先使先级有效位置位,以阻止同级或低级的终端申请;然后把程序计数器PC的内容压入堆饯,再把与中断服务程序入口地址送到程序计数器PC;同时清除某些中断标志。

以上过程均由端系统自动完成。

3.2.3如何实现单片机的中断

8052具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。

中断源

MCS-51单片机的中断源共有5个,分为3类:

外部中断源,片内溢出中断源,串行口中断源。

外部中断源可以分为由片内P3.2引脚输入的INT0中断,以及由P3.3引脚输入的INT1中断。

片内溢出中断分为定时器T0中断和定时器T1中断。

串行口中断只有一个,片内串行数据的接收和发送中断。

这5个中断源在程序存储器中各有中断服务程序的入口地址,这个地址也称为矢量地址。

在CPU响应中断时,硬件自动形成各自的入口地址,由此进入中断服务程序,从而实现了正确的转移。

这些中断源的符号,名称,产生的条件和中断服务入口地址如图所

3.3软件流程图#include

unsignedinti=0,num=0,time=60;

unsignedcharge,shi;

unsignedintcodetable[10]={0x3f,0xXXX,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

voiddelay(unsignedint);

voiddisplay();

main()

{TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

EX0=1;

IT0=1;

while

(1)

{while(time!

=5)

{P1=0XF3;

if(num==20)

{time--;

num=0;

}

display();

}

while(time!

=2)

{if(num==10)

P1=0XF7;

if(num==20)

{P1=0XF3;

num=0;

time--;

}

display();

}

while(time!

=0)

{P1=0XF5;

if(num==20)

{num=0;

time--;

}

display();

}

time=30;

while(time!

=5)

{P1=0XDE;

if(num==20)

{num=0;

time--;

}

display();

}

while(time!

=2)

{if(num==10)

P1=0XFE;

if(num==20)

{P1=0XDE;

num=0;

time--;

}

display();

}

while(time!

=0)

{P1=0XEE;

if(num==20)

{num=0;

time--;

}

display();

}

time=60;

}

}

 

voiddisplay()

{shi=time/10;

ge=time%10;

P2=0XFE;

P0=table[ge];

delay(5);

P2=0XFD;

P0=table[shi];

delay(5);

P2=0XFB;

P0=table[ge];

delay(5);

P2=0XF7;

P0=table[shi];

delay(5);

}

voiddelay(unsignedintz)

{unsignedintx,y;

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

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

}

voidexter0()interrupt0

{num=0;

time=20;/*数码管计时显示*/

P1=0XF6;

While(time!

=0)

{

If(num=20)

{num=0;

time--}

disply();}}

voidtime0()interrupt1

{num++;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}

第四章系统仿真

4.1proteus软件介绍

Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。

Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。

通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。

本文中由于我们主要使用Proteus软件在单片机方面的仿真功能,所以我们重点研究ISIS模块的用法,在下面的内容中,如不特别说明,我们所说的Proteus软件特指其ISIS模块。

 在进行下面的操作前,我先说明一点:

我的Proteus版本是7.1,如果你使用的是6.9以前的版本,可能你发现在鼠标操作上会略有不同。

这主要表现在6.9以前的版本鼠标左右键的作用与一般软件刚好相反,而7.0以后已经完全改过。

下面我们首先来熟悉一下Proteus的界面。

Proteus是一个标准的Windows窗口程序,和大多数程序一样,没有太大区别,其启动界面如下图所示:

4-1

如图中所示,区域①为菜单及工具栏,区域②为预览区,区域③为元器件浏览区,区域④为编辑窗口,区域⑤为对象拾取区,区域⑥为元器件调整工具栏,区域⑦为运行工具条。

下面我们就以建立一个和我们在Keil简介中所讲的工程项目相配套的Proteus工程为例来详细讲述Proteus的操作方法以及注意事项。

首先点击启动界面区域③中的“P”按钮(PickDevices,拾取元器件)来打开“PickDevices”(拾取元器件)对话框从元件库中拾取所需的元器件。

对话框如下图所示:

图4-2

在对话框中的“Keywords”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的AT89C51,就可以直接输入。

输入以后我们能够在中间的“Results”结果栏里面看到我们搜索的元器件的结果。

在对话框的右侧,我们还能够看到我们选择的元器件的仿真模型、引脚以及PCB参数。

这里有一点需要注意,可能有时候我们选择的元器件并没有仿真模型,对话框将在仿真模型和引脚一栏中显示“NoSimulatorModel”(无仿真模型)。

那么我们就不能够用该元器件进行仿真了,或者我们只能做它的PCB板,或者我们选择其他的与其功能类似而且具有仿真模型的元器件。

搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。

当我们已经将所需的元器件全部加入到文档中时,我们可以点击“OK”按钮来完成元器件的添加。

添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。

首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。

接着按相同的操作即可完成所有元器件的布置,接下来是连线。

事实上Proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。

布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。

本例我们布线的结果如下图所示(仿真我们在上面的Keil操作介绍中的简单例子)。

图4-3

因为该工程十分简单,我们没有必要加上复

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

当前位置:首页 > 经管营销 > 金融投资

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

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