交通信号灯设计与仿真.docx

上传人:b****0 文档编号:9032841 上传时间:2023-05-16 格式:DOCX 页数:21 大小:832.11KB
下载 相关 举报
交通信号灯设计与仿真.docx_第1页
第1页 / 共21页
交通信号灯设计与仿真.docx_第2页
第2页 / 共21页
交通信号灯设计与仿真.docx_第3页
第3页 / 共21页
交通信号灯设计与仿真.docx_第4页
第4页 / 共21页
交通信号灯设计与仿真.docx_第5页
第5页 / 共21页
交通信号灯设计与仿真.docx_第6页
第6页 / 共21页
交通信号灯设计与仿真.docx_第7页
第7页 / 共21页
交通信号灯设计与仿真.docx_第8页
第8页 / 共21页
交通信号灯设计与仿真.docx_第9页
第9页 / 共21页
交通信号灯设计与仿真.docx_第10页
第10页 / 共21页
交通信号灯设计与仿真.docx_第11页
第11页 / 共21页
交通信号灯设计与仿真.docx_第12页
第12页 / 共21页
交通信号灯设计与仿真.docx_第13页
第13页 / 共21页
交通信号灯设计与仿真.docx_第14页
第14页 / 共21页
交通信号灯设计与仿真.docx_第15页
第15页 / 共21页
交通信号灯设计与仿真.docx_第16页
第16页 / 共21页
交通信号灯设计与仿真.docx_第17页
第17页 / 共21页
交通信号灯设计与仿真.docx_第18页
第18页 / 共21页
交通信号灯设计与仿真.docx_第19页
第19页 / 共21页
交通信号灯设计与仿真.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

交通信号灯设计与仿真.docx

《交通信号灯设计与仿真.docx》由会员分享,可在线阅读,更多相关《交通信号灯设计与仿真.docx(21页珍藏版)》请在冰点文库上搜索。

交通信号灯设计与仿真.docx

交通信号灯设计与仿真

宁波理工学院

专业综合课程实习

课程论文

题目基于proteus的交通信号灯设计与仿真

项目成员黄敏瑶(3100404129)

专业班级电气102

指导教师裘君

分院信息

完成日期20013.7.15

基于proteus的交通信号灯设计与仿真

摘要

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

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

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

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

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

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

本系统采用MSC-51系列单片机AT89S52为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P2口设置红、绿灯燃亮时间的功能;显示时间直接通过单片机的P0、P3口输出,系统实用性强、操作简单、扩展性强。

 

关键词:

单片机交通灯控制器

 

一、概述

1.1红绿灯发展史

当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。

但这一技术在19世纪就已出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。

这是世界上最早的交通信号灯。

1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。

它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。

1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。

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

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

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

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

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

1.2单片机概述

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:

中央处理器、存储器和I/O接口电路等。

因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。

二、题目及要求

实现一个如下基本功能的交通灯:

按照常规我们假设一个十字路口为东西南北走向。

初始状态为状态1,南北方向绿灯通车,东西方向红灯。

经过一段时间(25S)转换状态2,南北方向绿灯闪几次转亮黄灯,延时5S,东西方向仍然红灯。

再转换到状态3,东西方向绿灯通车,南北方向红灯。

过一段时间(25S)转换到状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。

最后循环至南北绿灯,东西红灯。

在这些状态下,有时钟倒数计时。

(35分)附加功能得分(15分)

如按键、蜂鸣器等

2.1实验目的

●掌握MCS-51单片机定时器/计数器、外部中断、LED数码管显示及I/O口的综合应用。

●了解交通灯的工作原理及设计方法。

●掌握单片机应用系统分析、设计、调试方法。

2.2实验原理图

图1交通灯电路原理图

(1)

图2交通灯电路原理图

(2)

三、软件设置

keiluvision4软件初始化:

由于KEIL必须要新建一个项目才可以进行c51单片机编程操作,因此以下进行初始化操作。

1.新建project

图3

2.保存工程:

新建立一个文件夹,输入工程名称。

例如LED_DEMO

图4

3.选择CPU:

ATMEL->AT89C52

4.建立main.c

图5

5.选中SourceGroup1,鼠标右击,选择AddFiletoGroup“SourceGroup1”

6.选择main.c工程文件列表框出现main.c,则表示成功,便可在程序框里填写程序。

7.设置生成HEX文件,最后烧入程序与硬件相配合实现交通灯功能。

keilc与proteus联调:

1.在proteus里画好下图:

图6

2.双击proteus里的单片机出现下图:

图7

选择刚刚用keil编译后的HEX文件,点击运行按钮发光管一闪一闪。

然后用记事本打开keil目录下的tools.ini,在[C51]栏目下加入TDRV9=BIN\VDM51.DLL("ProteusVSMMonitor-51Driver"),在keil软件里的"optionsfortarget"target1→Debug"选项里选中右边的use,在下拉菜单中选择proteusvsmsimulator。

最后在proteus的debug菜单中选中useremotedebugmonitor即可实现联调。

四、硬件原理图

图8硬件模块

图9硬件连接

硬件介绍:

交通灯控制器实例主要使用了89C51单片机的定时器/计数器,基础知识主

要包括交通灯的变化规律、定时器/计数器的概念、定时器/计数器的相关寄存

器、定时器/计数器的4种工作方式、以及定时器/计数器的变成。

4.1定时器/计数器

定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控

制器实例来演示定时器的使用,并复习如何使用散转程序。

首先介绍交通灯以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构

成,然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与

注意点。

4.2定时器/计数器的概念

89C51单片机内有两个可编程的定时器/计数器T0、T1。

当定时器/计数器用作“定时器”时,每经过1个机器周期(12个时钟周期),

计数器加1。

4.3定时器/计数器的相关寄存器

与定时器/计数器相关的寄存器有定时器/计数器工作方式寄存器(TMOD)、定

时器/计数器控制寄存器(TCON)。

TCON已经在2.5节受控输出实例中介绍过,

因此,在本例中主要介绍TMOD寄存器。

定时器/计数器工作方式寄存器(TMOD),字节地址89H,不可进行位寻址。

定时器/计数器工作方式寄存器(TMOD)的8位分为两组,高4位控制T1,低4

位控制T0。

4.5定时器/计数器的4种工作方式

定时器/计数器的4种工作方式下的逻辑结构如表所示。

M1

M2

工作方式

0

0

方式0,为13位定时器/计数器

0

1

方式1,为16位定时器/计数器

1

0

方式2,为初值自动重装的8位定时器/计数器

1

1

方式3,仅T0有效,将T0分为两个8位定时器/计数器

4.6定时器/计数器的编程

(1)初始化

定时器/计数器的初始化编程包括以下几个部分。

根据要求给定时器/计数器方式寄存器(TMOD)送一个方式控制字,以设定定时

器/计数器的工作方式。

根据需要给TH和TL寄存器送初值,以确定需要的定时时间或计数的初值。

根据需要给中断允许寄存器(IE)送中断控制字,以开放相应的中断和设定中断

优先级。

给TCON寄存器送命令字以启动或禁止定时/计数器的运行。

(2)定时器/计数器初值的计算。

定时5ms:

T=(8192-5000)*Tcy;

Tcy=1us;

所以:

TH0=(8192-5000)/32;//5ms定时

TL0=(8192-5000)%32

计数器初值:

设计算器的模值位M,所需的计数值为C,计数初值设定为TC,则TC=M-C。

五、软件流程图

开始

初始化

中断初始化

中断触发

Y

Y

状态一

0

1s中断

N

Number+1

Y

状态二

25

N

N

N>60

Y

状态三

Y

30

N

Y

N

55

状态四

N=1

六、设计结果(仿真+实物)

6.1状态一

状态1:

南北方向绿灯通车,东西方向红灯。

经过一段时间(25S),倒计时。

图6状态一

6.2状态二

状态2,南北方向绿灯闪几次转亮黄灯,延时5S,东西方向仍然红灯。

图7状态二

6.3状态三

状态3,东西方向绿灯通车,南北方向红灯,过一段时间(25S)倒计时。

图8状态三

6.4状态四

状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。

图9状态四

七、个人心得

回顾起此次单片机课程设计,我仍感慨颇多,学到了很多的东西。

同时不仅

巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。

实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入

的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

一切

问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的

提升。

对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问

题,而程序设计是一个很灵活的东西。

因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

八、参考文献

[1]余发山,王福忠.单片机原理及应用技术.徐州:

中国矿业大学出版社,2008

[2]张靖武,周灵彬.单片机原理、应用与PROTEUS仿真.北京:

电子工业出版社,2009

[3]白延敏.51单片机典型系统开发实例精讲.北京:

电子工业出版社,2009

[4]欧阳文.ATMEL89系列单片机的原理与开发实践.北京:

中国电力出版社,2007

九、附件

#include

#defineucharunsignedchar

#defineuintunsignedint

//uintFUNC=1;//0:

数码管功能,1:

红绿灯功能

uintT_Count=0;

uintnumber=0;

uinta=0,a1=0,a2=0;

uintb=0,b1=0,b2=0;

sbitLED=P1^0;

intLEDSHOW[10]={0xC0,0xF9,0xA4,0xB0,0X99,0X92,0X82,0XF8,0X80,0x90};

//#defineLEDP1^0

//延时

voidDelayMS(uintx)

{

uchari;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主程序

voidmain()

{

//定时器0中断初始化代码

TMOD=0x00;//定时器0工作方式0

TH0=(8192-5000)/32;//5ms定时

TL0=(8192-5000)%32;

IE=0x82;//允许T0中断

TR0=1;

//开始循环

while

(1)

{

if(number<=25&&number>0)//状态一

{

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

P1=0xde;

//显示倒计时

b=30-number+1;

b1=b/10;

b2=b%10;

a=25-number+1;

a1=a/10;

a2=a%10;

P2=0X01;//00001110//南北1

P0=LEDSHOW[a1];

DelayMS(5);

P2=0X02;//00001101//南北2

P0=LEDSHOW[a2];

DelayMS(5);

P2=0X04;//00001011//东西1

P0=LEDSHOW[b1];

DelayMS(5);

P2=0X08;//00000111//东西2

P0=LEDSHOW[b2];

DelayMS(5);

}

if(number>25&&number<=30)//状态2

{//南北绿闪烁几次转黄灯,东西继续红灯东西红黄绿南北红黄绿

if(number>25&&number<=28)

{

if(number%2==1)

P1=0xde;

elseP1=0xfe;}

if(number>28&&number<=30)

P1=0Xee;

a=30-number+1;//显示

a1=a/10;

a2=a%10;

P2=0X01;

P0=LEDSHOW[a1];

DelayMS(5);

P2=0X02;

P0=LEDSHOW[a2];

DelayMS(5);

P2=0X04;

P0=LEDSHOW[a1];

DelayMS(5);

P2=0X08;

P0=LEDSHOW[a2];

DelayMS(5);

}

if(number>30&&number<=55)//状态3

{//东西绿南北红

P1=0xf3;//东西红黄绿南北红黄绿

a=55-number+1;//显示

a1=a/10;

a2=a%10;

b=60-number+1;

b1=b/10;

b2=b%10;

P2=0X01;

P0=LEDSHOW[b1];

DelayMS(5);

P2=0X02;

P0=LEDSHOW[b2];

DelayMS(5);

P2=0X04;

P0=LEDSHOW[a1];

DelayMS(5);

P2=0X08;

P0=LEDSHOW[a2];

DelayMS(5);

}

if(number>55&&number<=60)//状态4

{//东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯东西红黄绿南北红黄绿

if(number>55&&number<=58)

{

if(number%2==1)

P1=0xf3;

elseP1=0xf7;}

if(number>58&&number<60)

P1=0Xf5;

a=60-number+1;//显示

a1=a/10;

a2=a%10;

P2=0X01;

P0=LEDSHOW[a1];

DelayMS(5);

P2=0X02;

P0=LEDSHOW[a2];

DelayMS(5);

P2=0X04;

P0=LEDSHOW[a1];

DelayMS(5);

P2=0X08;

P0=LEDSHOW[a2];

DelayMS(5);

}

}

}

//T0中断函数

voidLED_Flash()interrupt1

{

TH0=(8192-5000)/32;//恢复初值

TL0=(8192-5000)%32;

if(++T_Count==200)//1s开关一次LED

{

number++;

if(number>60)

number=1;

//FUNC=++FUNC%2;

//LED=~LED;

T_Count=0;

}

}

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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