基于51单片机的智能交通灯课程设计Word文件下载.docx

上传人:b****2 文档编号:5914164 上传时间:2023-05-05 格式:DOCX 页数:27 大小:174.19KB
下载 相关 举报
基于51单片机的智能交通灯课程设计Word文件下载.docx_第1页
第1页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第2页
第2页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第3页
第3页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第4页
第4页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第5页
第5页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第6页
第6页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第7页
第7页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第8页
第8页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第9页
第9页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第10页
第10页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第11页
第11页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第12页
第12页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第13页
第13页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第14页
第14页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第15页
第15页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第16页
第16页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第17页
第17页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第18页
第18页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第19页
第19页 / 共27页
基于51单片机的智能交通灯课程设计Word文件下载.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的智能交通灯课程设计Word文件下载.docx

《基于51单片机的智能交通灯课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的智能交通灯课程设计Word文件下载.docx(27页珍藏版)》请在冰点文库上搜索。

基于51单片机的智能交通灯课程设计Word文件下载.docx

 

(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——:

外部数据存储器读选通信号

1、2 74LS245引脚图及功能

74LS245就是我们常用得芯片,用来驱动led或者其她得设备,它就是8路同相三态双向总线收发器,可双向传输数据。

它得功能引脚图如图1-2所示。

图1—2 74LS245引脚图

  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)。

1、3 八段LED数码管

 LED显示屏作为大型显示设备得一种,具有亮度高、价格低、寿命长、维护简便等优点。

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

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

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

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

 

  图1-3八段共阳管示意图

 LED灯得显示原理:

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

表1驱动代码表

显示数值

dp,g,f,e,d,c,b,a

驱动代码

C0H

F9H

2

A4H

3

B0H

4

99H

92H

6

82H

7

F8H

8

80H

90H

相应在程序软件上,可以通过调用程序给定得秒值经过特定计算算出需要显示得个位与十位,然后有DPTR调取LEDMAP得代码.

 LED8段数码管得设置为每个方位上得一对2为显示器.四个方位上总共用4个LED接在单片机得IO口上。

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

  1、4 硬件系统总控制电路

 本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。

其具体得硬件电路总原理图如图1-4所示。

 其中P0用于送显四片LED数码管,P2用于控制红绿黄发光二极管,P1、0,P1、1,与P1、1与P1、2对数码管进行片选,P3口为紧急情况处理按键,既根据车流量控制红绿黄发光二极管通断时间。

系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P2口,将要显示得时间值得个位与十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。

 时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态得相应状态码值以及时间值,

  当然,还要开启三个外部中断,其一为全部路口紧急情况处理中断,一旦信号有效,即按键为低电平时进入中断服务子程序,东西南北路口得状态禁止通行。

其二为东西方向或南北方向禁止通行,一旦信号有效将进入相应中断服务子程序,某一方向状态禁止通行。

其三为通行时间调整中断,若按键有效,进入相应得中断子程序,对时间进行调整,可延长或减少某一路段得通行时间,此后再按确定键则中断结束返回。

 

图1-4控制系统总原理图

1、5各模块控制电路

 1、5、1交通灯控制电路

这里我们采用发光二极管作为交通灯来使用,单片机得I/O接口直接与交通灯(发光二极管)连接。

在十字路口得四组红、黄、绿三色交通灯中,东西方向道路上得两组同色灯连接在一起,南北方向道路上得两组同色得灯也彼此连接在,控制受单片机P2、1~P2、6控制。

单片机得I/O接口与交通灯电路得具体连接方式为:

P2、1~P2、3分别接东西方向得红、黄、绿共6个放光二极管,P2、4~P2、6分别接南北方向得红、黄、绿共6个发光二极管。

12个发光二极管采用了共阴极得连接方式,因此I/O口输出高电平时,与之相连得发光二极管会亮,I/O口输出低电平就是,相应得发光二极管会灭.

初始东西绿灯亮,南北红灯亮,东西路口车通行,时隔20s,黄灯闪烁5次。

之后,南北绿灯亮,东西红灯亮,方向开始通车,时隔20s,南北黄灯闪烁5次,然后又切换成东西方向通车,如此重复。

当某一方向发生交通意外或者需要停止方向通行就是,这一方向亮红灯。

处理完之后,按下确定键,重新按上述方式工作。

当发生交通意外(中断产生)时,全部亮红灯,进行交通事故得处理。

当事故处理完毕,按下确定键,重新按上述方式工作。

当南北路口得流量大时,可以增加南北路口亮绿灯得时间,当东西路口得流量大时,可以增加东西路口亮绿灯得时间,结束后调回正常状态.交通灯电路如图1-5所示.

  图1-5交通灯电路

1、5、2倒计时显示电路

 倒计时显示可以提醒驾驶员在信号灯灯色发生改变得时间、在“停止”与“通过”两者间作出合适得选择。

驾驶员与行人普遍都愿意选择有倒计时显示得信号控制方式,并且认为有倒计时显示得路口更安全。

倒计时显示就是用来减少驾驶员在信号灯色改变得关键时刻做出复杂判断得1种方法,它可以提醒驾驶员灯色发生改变得时间,帮助驾驶员在“停止”与“通过”两者间作出合适得选择。

四个路口得计时显示都就是由P0口控制,又P1口得P1、0~P1、2片选这些显示管,而东西两个方向得显示时间一样,南北方向时间也一样,片选信号能控制东西也南北显示不同得时间.当某一方向为绿灯时,在绿灯倒计时结束后会再显示一个5S得倒计时,以供黄灯显示使用。

显示管连接图如图1—5所示。

在单片机与显示器之间加了一个8*4、7k得排阻与一个74LS245芯片,排阻得作用就是上拉电阻,防止电流过高烧掉显示管,起到保护显示管得作用,其连接图如图1—6所示。

74LS245得作用就是驱动显示管点亮。

其连接图如图1—7所示.

 图1-5 显示管连接图

图1—6 排阻连接图

图1-774LS245驱动芯片连接图

1、5、3紧急通行电路

该电路为紧急情况与根据车流量调节红绿灯时间长度控制电路。

通过单片机得P3、1~P3、7口得七个接口来控制。

在紧急情况下,需要停止所有方向上得车得行驶,按下P3、1接口上得开关,接低电平,使其发生作用,发出令所有路口得红灯点亮得脉冲,禁止所有车辆通行。

当需要禁止东西方向或者南北方向通行时,按下P3、2或者P3、3可以使其方向上得红灯亮起,禁止该方向车辆通行,而另一方向上则绿灯常量,车辆通行.例如,按下P3、2上得开关,此时南北方向上得红灯常亮,而东西方向上绿灯常亮,这就起到了南北禁止东西通行得效果,按下P3、3上得开关则与之相反。

有时候某个方向上得车流量比较大,另一个方向上得车流量比较少,这就需要调整通行时间,P3、5就是加时间端口,P3、6为减时间端口,按下一次开关则会增加或者减少1S,P3、7接得就是切换方向开关,按下开关可以切换方向时间得调整,例如现在切换开关就是东西方向,而东西方向车流量比较少,南北方向车流量比较大,这就需要增加南北方向通行时间,减少东西方向通行时间。

首先通过P3、6口减少东西方向通行时间,然后按下切换方向键,这就切换到了南北方向时间调整状态,这就是按下P3、5,可以增加通行时间。

P3、4为确定键,也可以称之为复位键,要解除禁止时,按下确认键就可回到正常工作状态,当时间调整结束后,也可以通过确认键回到工作状态.控制电路图如图1—8所示。

图1—6按键电路控制电路图

1、5、4声音警示装置

当发生紧急情况需要全面停止通行时,需要声音警示装置来提醒车辆,这个警示装置由P3、0口控制,其电路图如图1-7所示。

图1-7声音警示控制电路

2 系统程序设计

 2、1 主程序流程图

图2—1主程序路程图

2、2显示子程序流程图

开始

取倒计时数值

从P1、0到P1、3取各个方向控制十位个位

从P0口获取数码显示值

返回

图2—2显示子程序流程图

 3 心得体会

 这次课程设计,我们小组做得智能交通等控制系统。

如往常每一次实训,我获得了很大得收获。

 首先,我要说说我学到得团队精神,这次课设需要多人协作完成,我有幸找到三位认真负责且乐于交流讨论得队友。

  这次选交通灯为题目来做课设一就是经验不足,二就是信心不足。

通过这次课设,我既积累了经验,也获取了信心,今后会找寻机会再做一些与拖动相关得电子设计,因为我们自动化专业与电机就是息息相关得,很大程度研究得就是电机得拖动问题.

通过这两周得单片机课程设计,我们运用所学得知识,利用单片机控制原理设计了一个交通灯控制系统,我们对单片机有了更深得体会。

我们了解与掌握了一些简单得编程思想与对I/O口得使用。

这次课设通过单片机得I/O口来控制交通灯。

实现一些具体得功能与对特殊情况得处理。

  通过这次得实践,我们对单片机得I/O口得使用得条件有更深得理解,对单片机得各个管脚功能得理解也加深了,以及在常用编程设计思路技巧,特别就是汇编语言得掌握方面都能向前迈了一大步。

这次得课程设计让我们把单片机得理论知识用在实践中,实现了理论与实践相结合,从中更懂得理论就是实践得基础,实践有着能检验理论得正确性,让我们受益非浅,对我们以后参加工作或者继续学习将会产生巨大得帮助与影响.

  在课设过程中遇到得硬件与软件问题都通过询问老师、同学与去图书馆、上网得到了解决。

 参考文献

[1]陈大钦 电子技术基础实验[M]、北京:

高等教育出版社2004

  [2]陈梓城电子技术实训 [M]、北京:

机械工业出版社2003

 [3]吴黎明单片机原理及应用技术[M]、北京:

科学出版社2003

 [4]李学海标准80C51单片机基础教程[M]、北京:

北京航空航天大学出版社2006

 [5]刘乐善微型计算机接口技术及应用[M]、北京:

 华中科技大学出版社 2004

[6]陈炳权曾庆六EDA技术实用教程[M]、北京:

 湘潭大学出版社2010

[7] 先锋工作室、 单片机程序实例[M]、北京:

清华大学出版社,2002、

 [8]李伯成、基于MCS-51单片机得嵌入式系统得设计[M]、北京:

电子工业出版社,2004、

 [9]吴洪潭,肖艳萍,赵伟国、单片机原理及应用系统设计[M]、北京:

国防工业出版社,2005、

[10]吴黎明,王桂棠,洪添胜, 等、单片机原理及应用技术[M]、北京:

科学出版社,2005、

 附录源程序

#include<

reg51、h〉

#defineucharunsignedchar

#defineuintunsignedint

uchar data buf[4];

uchar datasec_dx=20;

//东西数默认

uchar datasec_nb=30;

//南北默认值

uchardataset_timedx=20;

uchar dataset_timenb=30;

intn;

uchar datacountt0;

//定时器0中断次数

//定义5组开关

sbit k4=P3^7;

  //切换方向

sbit k1=P3^5;

ﻩﻩ//时间加

sbitk2=P3^6;

ﻩ//时间减

sbitk3=P3^4;

ﻩﻩ//确认

sbitk5=P3^1;

ﻩﻩ//禁止

// P3^2ﻩﻩ//只允许东西方向通行,中断0

// P3^3//只允许南北方向通行,中断1

sbitYellow_nb=P2^5;

ﻩ//南北黄灯标志

sbitYellow_dx=P2^2;

ﻩ//东西黄灯标志

sbitGreen_nb=P2^4;

sbitGreen_dx=P2^1;

sbitBuzz=P3^0;

ﻩﻩ

bit Buzzer_Indicate;

bittime=0;

ﻩﻩ//灯状态循环标志

bitset=1;

ﻩ//调时方向切换键标志

uchar code table[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();

void key_to3();

void display();

ﻩﻩﻩﻩ//显示子程序

voidlogo();

ﻩﻩﻩﻩ//开机LOGO

voidBuzzer();

//主程序

voidmain()

TMOD=0X11;

ﻩﻩﻩ//定时器设置

ﻩTH0=0X3C;

ﻩ//定时器0置初值0、05S

ﻩTL0=0XB0;

EA=1;

ﻩﻩﻩ//开总中断

ET0=1;

ﻩﻩ//定时器0中断开启

TR0=1;

ﻩﻩﻩﻩ//启动定时0

ﻩEX0=1;

ﻩﻩ//开外部中断0

EX1=1;

ﻩﻩﻩﻩ//开外部中断1

logo();

P2=0Xc3;

ﻩﻩﻩ//开始默认状态,东西绿灯,南北黄灯 

 sec_nb=sec_dx+5;

 ﻩ//默认南北通行时间比东西多5秒

ﻩwhile

(1)

ﻩ{

ﻩﻩkey();

ﻩﻩ//调用按键扫描程序

ﻩdisplay();

ﻩ//调用显示程序

ﻩBuzzer();

ﻩ}

//函数得定义部分

void key()ﻩ//按键扫描子程序

{ﻩ

if(k1!

=1)ﻩﻩ//时间加按下时

ﻩ{

ﻩdelay(10);

ﻩﻩ//延时消抖

if(k1!

=1)ﻩﻩﻩ

ﻩﻩ{

ﻩﻩwhile(k1!

=1)ﻩﻩ//当按键未弹起时,一直执行

ﻩ{

ﻩﻩﻩkey_to1();

//调用按键1功能

ﻩfor(n=0;

n<40;

n++)ﻩ//调用40次显示,用于延时

ﻩ {display();

ﻩ}

ﻩﻩ}

ﻩif(k2!

=1)ﻩﻩﻩ//当K2按键按下时

{ﻩ

ﻩﻩdelay(10);

ﻩﻩ//延时消抖

ﻩﻩif(k2!

=1)

{ﻩ

while(k2!

=1)//按键按下未弹起时一直执行

ﻩ key_to2();

ﻩﻩ//调用key2功能

ﻩ for(n=0;

n〈40;

n++)//调用40次显示,用于延时

ﻩﻩﻩ  { display();

}

ﻩ}

ﻩ}

ﻩif(k3!

=1)ﻩﻩﻩ//当K3(确认)键按下时

ﻩTR0=1;

ﻩﻩﻩﻩ//启动定时器

ﻩBuzzer_Indicate=0;

sec_nb=set_timenb;

ﻩﻩﻩ//从中断回复,仍显示设置过得数值

ﻩsec_dx=set_timedx;

ﻩ//显示设置过得时间

ﻩif(set==1)ﻩﻩﻩ//时间倒时到0时

ﻩ{

ﻩ//P2=0X99;

ﻩﻩﻩﻩﻩ//东西红灯,南北绿灯

ﻩﻩﻩsec_nb=sec_dx+5;

ﻩ//回到初值

ﻩelse 

ﻩ{ 

ﻩ//P2=0xC3;

ﻩﻩﻩ//东西绿灯,南北红灯

ﻩﻩsec_dx=sec_nb+5;

ﻩ}ﻩ

ﻩif(k4!

=1)ﻩﻩﻩ//当K4(切换)键按下

  {

ﻩdelay(5);

ﻩﻩﻩﻩﻩﻩ//延时消抖

if(k4!

=1)

ﻩ{  

ﻩﻩwhile(k4!

=1);

ﻩset=!

set;

ﻩﻩﻩ//取反set标志位,以切换调节方向

ﻩ}

}

ﻩif(k5!

=1)ﻩﻩﻩﻩ//当K5(禁止)键按下时

ﻩ{

delay(5);

ﻩﻩﻩﻩﻩ//延时消抖

ﻩif(k5!

ﻩ  {

ﻩwhile(k5!

=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;

 ﻩ//片选LED1

    P0=table[buf[1]];

ﻩ//送东西时间十位得数码管编码

ﻩﻩdelay

(1);

ﻩﻩ//延时

ﻩP1=0xff;

ﻩﻩ//关显示

 P0=0x00;

ﻩﻩ

P1=0xfd;

//片选LED2

 P0=table[buf[2]];

  delay

(1);

P1=0xff;

 P0=0x00;

ﻩ  P1=0Xfb;

ﻩ ﻩﻩ//片选LED3

ﻩP0=table[buf[3]];

ﻩdelay(1);

P1=0xff;

   P0=0x00;

ﻩP1=0Xf7;

ﻩP0=table[buf[0]];

ﻩ//片选LED4ﻩ

ﻩ delay

(1);

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

{

TH0=0X3C;

ﻩﻩﻩ//重赋初值

ﻩTL0=0XB0;

ﻩTR0=1

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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