基于单片机原理的交通信号灯设计1.docx

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

基于单片机原理的交通信号灯设计1.docx

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

基于单片机原理的交通信号灯设计1.docx

基于单片机原理的交通信号灯设计1

一、设计目的…………………………………………………2

二、设计任务和要求…………………………………………………2

三、设计原理分析…………………………………………………2

四、硬件资源及其分配…………………………………………………3

五.硬件图…………………………………………………6

六、程序框图…………………………………………………7

七、程序…………………………………………………8

:

八、调试运行…………………………………………………13

九、仿真截图…………………………………………………13

十、设计心得体会…………………………………………………15

 

一、设计目的

1、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。

2、通过交通信号灯控制系统的设计,掌握定时/计数器及中断的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。

二、设计任务和要求

任务:

设计一个能够控制十二盏交通信号灯的模拟系统

要求:

利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。

1、东西绿灯亮,南北红灯亮2、黄灯亮3、东西红灯亮,南北绿灯亮

三、设计原理分析

1、首先了解实际交通灯的变化情况和规律。

假设一个十字路口如上图所以,为东南西北走向。

初始状态0:

为东西绿灯亮,南北红灯亮;然后转状态1:

东西绿灯亮黄灯亮,南北红灯亮黄灯亮;过后转状态2:

东西红灯亮,南北绿灯亮;再转状态3:

东西红灯亮黄灯亮,南北绿灯亮黄灯亮。

一段时间后,又循环至状态0。

中间可通过中断按钮产生中断,跳入中断程序执行中断。

列出交通信号灯的状态表如下:

(其中,1代表灯亮,0代表灯灭)

状态

西

绿黄红

绿黄红

绿黄红

绿黄红

0

001

100

001

100

1

011

110

011

110

2

100

001

100

001

3

110

011

110

011

2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。

3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。

每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。

4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。

5.通过脉冲中断编写中断程序,可实现中断。

四、硬件资源及其分配

主要用到的硬件:

P1口、P3口、LED数码管、LED发光二级管、定时器T0

硬件分配:

1、P1口:

做为输出口,与发光二极管相连接,其状态及对应的十六进制值如下:

方向

状态

南北

东西

十六进制值

说明

P1.7P1.6

P1.5P1.4P1.3

P1.2P1.1P1.0

0

00

100

001

22H

东西绿南北红

1

00

110

011

33H

东西绿黄全亮

2

00

001

100

0CH

东西红南北绿

3

00

011

110

1EH

东西红黄全亮

2、P3口中的P3.0(RXD)和P3.1(TXD)作特殊用途,数据(倒计时时间)从RXD端输入,TXD端输出。

3、LED发光二极管用来显示灯亮情况。

4、定时/计数器T0用来产生1秒的定时

5.Led显示器十位与p0相连接,个位与p2连接用来显示时间,下面是LED显示接口及原理。

1LED是发光二极管的英文缩写,LED显示器是由发光二极管构成的,它在单片机中的应用非常普遍。

通常所说的LED显示器由7个发光二极管组成,其排列形状如图所示。

此外,显示器中还有一个圆点型发光二极管以dp表示,用于小数点表示。

通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。

LED显示中的发光二极管共有两种连接方法:

2共阳极接法:

把发光二极管的阳极连在一起构成公共阳极。

使用时公共阳极接+5V。

这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不亮。

3共阴极接法:

把发光二极管的阴极连在一起构成公共阴极。

使用时公共阴极接地。

这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。

4控制数码管驱动级的控制电路有静态式和动态式两类:

5静态驱动:

它是指每个数码管都要用一个译码器译码驱动。

6动态驱动:

它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同。

 

7采用动态数码管显示,可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,就是所谓的分时显示,显示所需要的硬件电路可分时复用。

 

共阴极共阳极符号与引脚

如表1为共阳极与共阴极的代码表

 

表1十六进制数字形代码表

 

字型

共阳极代码

共阴极代码

字型

共阳极代码

共阴极代码

0

C0H

3FH

9

90H

6FH

1

F9H

06H

A

88H

77H

2

A4H

5BH

B

83H

7CH

3

B0H

4FH

C

C6H

39H

4

99H

66H

D

A1H

5EH

5

92H

6DH

E

86H

79H

6

82H

7DH

F

8EH

71H

7

F8H

07H

FFH

00H

8

80H

7FH

 

五.硬件图

 

 

六、程序框图

1、主程序框图

2.中断服务程序框图

七、程序

#include

#defineport1P0

#defineport2P2

sbitgreen1=P1^0;

sbitred1=P1^1;

sbityellow1=P1^2;

sbitgreen2=P1^3;

sbitred2=P1^4;

sbityellow2=P1^5;

unsignedcharflag=0;

unsignedcharmun=30;

unsignedcharcodetab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

voidinit_timer0(void)

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

TR0=1;

}

voiddisplay(unsignedcharx)

{

unsignedcharm,n;

m=x/10;

n=x%10;

port1=tab[m];

port2=tab[n];

}

voidinit(void)

{

P1=0x00;

init_timer0();

}

voidmain()

{init();

while

(1)

{do

{

display(mun);

green1=1;

red1=0;

green2=0;

red2=1;

}

while(mun!

=3);

do

{

if(mun==3)

{

yellow1=1;

yellow2=1;

}

display(mun);

}

while(mun!

=0);

if(mun==0)

{

mun=30;

yellow1=0;

yellow2=0;

}

do

{

display(mun);

green1=0;

red1=1;

green2=1;

red2=0;

}

while(mun!

=3);

do

{

if(mun==3)

{

yellow1=1;

yellow2=1;

};

display(mun);

}while(mun!

=0);

if(mun==0)

{

mun=30;

yellow1=0;

yellow2=0;

}

}

}

voidtimer(void)interrupt1using1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag++;

if(flag==20)

{

flag=0;

mun--;

}

}:

 

八、调试运行

1、接硬件图接线,为了确保东西南北红黄绿灯能够对应显示,实验时,对P1口的接线做了调整。

即,P1.0接绿灯,P1.1接黄灯,P1.2接红灯,P1.3接绿灯,P1.4接黄灯,P1.5接L3红灯

2、从0100H单元开始连续运行,观察六个LED灯是否与交通显示情况对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。

3、调试完灯的显示后,从0100H开始连续运行,观察数码管显示的是否正常,如果不正常,则运用单步运行或断点运行进行分析和调试,直至满足要求。

4、整体运行,观察灯显示和时间显示是否都符合要求,如果不符合,则再调试。

直至满足要求。

九、仿真截图

 

 

十、设计心得体会

两周的单片机课程设计很快就结束了,在课程设计的这段时间里,我不仅学到了许多新的知识,而且加深了我对以前学习的理论知识的掌握。

以前我们学的东西仅限于课本,对实实在在的应用还比较模糊,这次课程设计有利于同学们学习目的的明确性和主动性。

通过这次课程设计,我们知道了哪些东西是应该确实掌握的,在学校里,没有实实在在的实习,我们总以为学的东西没太多用,当我们在课程设计过程中了解到我们学的东西是如此重要时,我们学习的积极性有了,目的性提高了。

通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。

使之不断地战胜别人,超越前人。

同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。

设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。

这个设计过程中,我们遇到过许多次失败的考验,就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我们明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。

于是,我们坚持了下来。

当然最终,这个设计很成功,主要体现在,这一整个系统,几乎没有课本以外的参考书,程序由我们自己独立完成,制作的交通灯控制系统程序简单易读,结构清楚,最重要的是成本低。

在设计一个系统,除了达到所要求的性能指标以外,成本也是很重要的一个指标。

成本的高低也决定了产品的适用性。

在这次单片机课程设计中,我主要负责软件编写和仿真的调试,在这次课程设计中,让我懂得了团队协作重要,在一个工程中一个团队精神是必不可少,在这里我要感谢老师对我们指导和我们团队的另外三个同学帮助。

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

当前位置:首页 > 经管营销 > 经济市场

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

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