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

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

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

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

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

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

课程设计目的

本课程设计是在学完单片机原理及课程之后综合利用所学单片机知识完成一个单片机使用系统设计并在实验室实现。

该课程设计的主要任务是通过解决一、两个实际问题,巩固和加深“单片机原理和使用”课程中所学的理论知识和实验能力,基本掌握单片机使用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的使用经验,为以后从事生产和科研工作打下一定的基础。

课程设计要求

交通信号灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并且用LED数码管显示时间(其中黄灯亮时数码管关闭。

用8051做输出口,控制六个发光二极管燃灭,模拟交通灯管理。

课程设计注意事项

(1)了解实际交通信号灯的变化情况和规律性;

(2)根据实际情况思考程序,编程中注意不可出现时间延迟失误;

(3)编程过程中,思路要清晰;

(4)运行时注意交通灯的管理。

课程设计内容

因为本课程设计是交通灯的控制设计,所以要了解实际交通灯的变化情况和规律。

假设一个十字路口为东西南北走向。

初始状态0为东西红灯,南北绿灯。

此时可以设置红绿灯时间,按下ok开始键之后,过一段时间转状态1东西和南北的黄灯亮,并关闭数码管显示(设有延时程序)之后再转状态2,东西绿灯通车,南北红灯。

过一段时间转状态3,东西和南北黄灯亮,最后循环至状态0.

课程设计简要操作步骤

1..给单片机(交通灯系统)上电(或者已上电按复位键)。

2..以连续方式从0100H开始执行程序,初始态0为南北路口的红灯亮东西路口的绿灯亮,并设置了初始时间24秒,数码管显示24秒。

3.此时可以设置红绿灯时间(ADD键加,DEC键减每次各一,注意本设置红灯和绿灯为同一初始时间)。

4.按下ok开始键系统关闭设置红绿灯时间功能进入倒计时,系统进入运行,经过一段时间,转为状态1东西和南北路口黄灯亮经过5秒延时并关闭数码管显示,进入状态2南北路口绿灯亮东西路口红灯亮经过倒计时之后返回初始0状态实现循环。

课程设计心得体会

 通过两周单片机课程设计,对于单片机有了更加深刻的理解,了解了单片机的使用和编辑其程序,掌握了一些课程设计的设计要求和设计方法,开发及设计工具的使用方法,最重要的是通过这一设计实践的过程,我们不再约束在理论上,而且锻炼了动手能力和分析解决问题的能力,积累了经验,培养了按部就班,一丝不苟的态度和对所学知识的综合使用能力,而且通过同学间的分组合作课题,锻炼了我们的团队合作能力。

     这次的单片机课程设计,让我受益匪浅,不只是老师和书本带来的知识和收获,还可以通过我们的自我实践来完成目标设计,是对我们很好的锻炼,既巩固知识,又提高了实践动手能力。

课程设计评语及成绩

评语

成绩

指导教师

(签名)

年月日

摘要

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

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

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

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

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

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

本系统采用MSC-51系列单片机AT89C51为中心器件来设计交通灯控制器,实现了红绿灯循环点亮,红绿灯交替时5秒黄灯亮并关闭数码显示管(交通灯信号通过P1口输出,显示时间直接通过P0口输出至双位数码管);可通过按键重设通行时间(本系统设了两个按键,一个加键,另一个减键,所加时间通过编程设定)并通过双位数码管显示(本系统必须复位后才能加减设置时间,在按完ok开始键之后不能再设置时间)。

关键词:

单片机交通灯重设通行时间

1.51单片机的功能和简介

1.1单片机概述

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

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

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

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

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

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

1.2MSC-51芯片简介

·MCS-51单片机内部结构

  8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。

   8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

·中央处理器:

    中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

·数据存储器(RAM)

    8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

图1·程序存储器(ROM)

8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。

·定时/计数器(ROM):

8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

·并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。

·全双工串行口:

8051内置一个全双工串行通信口,用于和其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

·中断系统:

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

·时钟电路:

8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。

单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器和数据存储器合二为一的结构,即普林斯顿(Princeton)结构。

INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。

下图是MCS-51系列单片机的内部结构示意图2。

图2

MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线和P3口线复用。

现在我们对这些引脚的功能加以说明:

如图3

Pin9:

RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。

初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。

RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。

然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。

8051的复位方式可以是自动复位,也可以是手动复位,见下图4。

此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。

图4

·Pin30:

ALE/

当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。

而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。

更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。

如果单片机是EPROM,在编程其间,

将用于输入编程脉冲。

·Pin29:

当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。

·Pin31:

EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。

如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。

显然,对内部无程序存储器的8031,EA端必须接地。

在编程时,EA/Vpp脚还需加上21V的编程电压。

2.交通信号灯方案

(1)、南北直行绿灯亮,东西直行红灯亮,延时。

(2)、南北直行绿灯闪烁几次转黄灯,南北左转(固定绿灯)亮,南北直行红灯亮,东西直行仍然红灯亮,延时。

(3)、南北左转灯闪几次转黄灯,东西直行绿灯亮,南北直行仍然红灯,延时。

(4)、东西直行绿灯闪烁几次转黄灯,东西左转灯亮,东西直行红灯亮,南北直行仍然红灯,延时。

(5)、循环至1,继续。

(这里左转时绿灯亮,不转时灭)

(6)、倒计时部分。

(南北、东西方向时间独立)

3.引脚分配及元件清单

引脚图

引脚

东西红灯

P1.0

东西黄灯

P1.1

东西绿灯

P1.2

东西左转灯(绿)

P1.3

南北左转灯(绿)

P1.4

南北红灯

P1.5

南北黄灯

P1.6

南北绿灯

P1.7

元件清单表

LED绿灯

8个

LED黄灯

4个

LED红灯

4个

插针

10

共阴数码管

2个

排阻

2个

4.主程序及流程图

程序

WWBIT00H;1s标志位

MMEQU40H;秒值计数器,用于累加秒值

AAEQU41H;中断次数,用于统计定时中断的次数

BBEQU5EH;定义5eh,5fh为显示缓冲区

XIAOYINGEQU10;消隐吗在字形表的第十位

ORG0000H;程序从0000h开始

JMPMAIN;

ORG000BH;定时器t0中断人口

LJMPTIME0

ORG0003H;外部中断入口

LJMPINT_0

ORG030H;主程序从这里开始

MAIN:

MOVSP,#70H

MOVMM,#0;秒计数器

MOVMM,#30;

MOVBB,#3;立即数送显示缓冲区十位

MOVBB+1,#0;立即数送个位缓冲区

ACALLDISP;调显示子程序

ACALLTIME0_INIT;;调定时器t0初始化子程序

CLRWW;清零秒标志位

;/*****---------南北车辆直行15S--------

L1:

movp1,#07eh;绿灯共亮10S

ACALLLOOP3//调用显示程序

MOVR7,MM

CJNER7,#21,L1;到21S时跳转到绿灯闪烁

L2:

movp1,#0feh;灭绿灯闪3次

ACALLLOOP3

JBCWW,L2

L3:

movp1,#7eh;亮

ACALLLOOP3

JBCWW,L3WW秒标志位不为1,继续循环

MOVR7,MM

CJNER7,#15,L2;南北直行绿灯共亮15S

*------------------南北左拐10S-----------------------------*/

SETBP1.7;灭南北绿灯

movp1,#0BEh;亮南北黄灯,同时亮南北直行红灯

ACALLLOOP3

JBCWW,L2

L16:

ACALLLOOP3

JBCWW,L16

SETBP1.6;灭南北黄灯共亮3S

ACALLLOOP3

JBCWW,L2

L4:

movp1,#0ceh;亮南北左拐灯

ACALLLOOP3

MOVR7,MM

CJNER7,#6,L4;

L5:

movp1,#0deh;南北左拐灯闪3次

ACALLLOOP3

JBCWW,L2

movp1,#0ceh;

ACALLLOOP3

JBCWW,L3

MOVR7,MM

CJNER7,#2,L5;

SETBP1.4灭左拐灯

L6:

CLRP1.6亮黄灯

ACALLLOOP3

JBCWW,L6

L15:

ACALLLOOP3

JBCWW,L15

;/*==================东西方向直行15S===================*********/

L7:

movp1,#0dbh;//东西绿灯亮

ACALLLOOP3

MOVR7,MM

CJNER7,#21,L7;

L8:

movp1,#0dfh;绿灯闪3次

ACALLLOOP3

JBCWW,L8

L9:

movp1,#0dbh;

ACALLLOOP3

JBCWW,L9

MOVR7,MM

CJNER7,#15,L8;

/*===========东西左拐10S==========*/

SETBP1.2;灭东西绿灯

movp1,#0DDh;亮黄灯

ACALLLOOP3

JBCWW,L8

ACALLLOOP3

JBCWW,L8

L17:

SETBP1.1;灭黄灯

ACALLLOOP3

JBCWW,L8

L10:

movp1,#0d6h;亮左转灯

ACALLLOOP3

MOVR7,MM

CJNER7,#6,L10;

L11:

movp1,#0deh;灭东西左拐灯

ACALLLOOP3

JBCWW,L11

movp1,#0d6h;

ACALLLOOP3

JBCWW,L11

MOVR7,MM

CJNER7,#2,L11;

SETBP1.3

L12:

CLRP1.1;亮黄灯

ACALLLOOP3

JBCWW,L12

ACALLLOOP3

L18:

JBCWW,L18

LJMPL1

;-------中断0服务程序---------

INT_0:

PUSHACC

PUSHPSW

MOVP1,#0FFH

MOVP2,#0FFH

MOVMM,#11

L13:

ACALLLOOP3

movp1,#0deh;东西红灯亮;南北红灯亮

MOVA,MM

CJNEA,#1,L13

MOVP1,#0FFH

MOVP2,#0FFH

POPACC;恢复现场

POPPSW

RETI

/***============显示子程序=============*/

LOOP3:

NOP

LOOP:

JBCWW,NEXT;WW为1,说明1s到

ACALLDISP;不为1调用显示子程序

AJMPLOOP;一秒未到继续循环

NEXT:

lCALLCC;调用转换子程序

RET

CC:

MOVA,MM;获得秒值,并送到a

MOVB,#10

DIVAB

JZNEXT1;如果a中的值为0,高位消隐

AJMPNEXT2;否则直接送去显示

NEXT1:

MOVA,#XIAOYING;消隐码送a

NEXT2:

MOVBB,A;十位送显示BB

MOVBB+1,B;个位送BB+1

ACALLDISP;调用显示子程式

RET

;-----显示子程序-------

DISP:

PUSHACC

PUSHPSW

MOVA,BB;去十位带显示位

MOVDPTR,#TAB;

MOVCA,@A+DPTR

MOVP0,A

CLRP2.1

ACALLDELAY

SETBP2.1

MOVA,BB+1

MOVDPTR,#TAB;

MOVCA,@A+DPTR

MOVP0,A

CLRP2.0

ACALLDELAY

SETBP2.0

POPPSW

POPACC

RET

;-----------10ms延时子程序-----------

DELAY:

MOVR5,#50

LOOP2:

MOVR4,#100

LOOP1:

DJNZR4,LOOP1

DJNZR5,LOOP2

RET

;定时初始化程序

TIME0_INIT:

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

CLRIT0;

SETBEA

SETBEX0;开外部中断0

SETBPT0;定时器中断优先

SETBET0

SETBTR0;启动定时器

RET

;----------定时50ms中断程序--------

TIME0:

PUSHACC

PUSHPSW

MOVTH0,#3CH

MOVTL0,#0B0H

INCAA

MOVA,AA

CJNEA,#20,TIME_EXIT;20*50=1

MOVAA,#0;

SETBWW;

DECMM;

MOVA,MM;

CJNEA,#0,TIME_EXIT;若秒值不到30,则跳转到TIME_EXIT

MOVMM,#30;若秒数到30,则秒值计数复位为0

TIME_EXIT:

POPPSW

POPACC

RETI

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H;

DB92H,82H,0F8H,80H,90H,0FFH

END

5.原理图及分析

分析:

交通灯的计数的数码管用采用了动态扫描方式来计时,由于单片机的输出负载驱动数码管能力不足,所以用了74LS240作为数码管的驱动芯片,使得数码管能正常工作。

做为交通灯的LED其阳极通过一个1K的电阻限流接VCC,阴极连单片机I/O口。

6、总结

在学习单片机这门课程时,老师便围绕着交通灯使用系统来给我们讲课,并布置了交通灯使用系统的设计作为我们的期末测试。

在学习期间我们不断的学习和了解了单片机的使用和编辑其程序。

这也为我们接下来所要做的交通灯使用系统而打下了坚实的基础。

在学期末,我们运用我们所学的知识设计了我们小组自己的交通灯使用系统,在我们分工合作下,虽然第一次检查没有通过,但通过最后几天查看书籍和网络资源及仿真,交通灯使用系统被我们一步步的通过仿真模拟完成了程序的编写,这是我们一起用心完成的作品,虽然不是很完美,但却是我们一起努力携手完成的作品。

经过我们的不懈努力,我们初步实现了交通灯和倒计时的分别测试,最后通过了合成,但还是存在着缺陷。

经过我们小组再研究讨论后,我们又精心的修改了程序,终于成功的实现了交通灯要求的功能。

学习使用单片机只能靠循序渐进的积累,尤其是在编写程序,不可能一蹴而就。

万事开头难、要勇敢迈出第一步知识点用到才学,不用的暂时丢一边。

想把厚厚的一本书看完在做实验,估计是不太可能的。

所以,最好结合实际程序进行仿真,在不断调试中完善和得到成功的喜悦。

这样实验的成功率会大大提高。

在编写程序也不要光看不写,看别人的知识了解别人的编程思路而已,最终的程序还是要靠自己,尤其是在一些细节上要特别注意,对一些程序指令要理解的运用好,刚开始我们可以模仿别人的程序,然后慢慢的学会自己编写,这是一个完全自主学习的过程,需要恒心和信心。

7.参考文献

[1]姜志海.单片机原理及使用[M].北京:

电子工业出版社,2005.7.27-71

[2]龙脉工作室.51单片机C语言使用开发技术大全[M].北京:

人民邮政出版社,2008.9.240-500

[3]彭为黄科雷道仲.单片机典型系统设计[M].北京:

电子工业出版社,2006.5.246-273

[4]谢维成.单片机原理及使用[M].北京:

清华大学出版社,2009.2.11-26

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

当前位置:首页 > 自然科学 > 物理

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

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