改单片机交通灯课程设计.docx

上传人:b****6 文档编号:5876135 上传时间:2023-01-01 格式:DOCX 页数:12 大小:255.27KB
下载 相关 举报
改单片机交通灯课程设计.docx_第1页
第1页 / 共12页
改单片机交通灯课程设计.docx_第2页
第2页 / 共12页
改单片机交通灯课程设计.docx_第3页
第3页 / 共12页
改单片机交通灯课程设计.docx_第4页
第4页 / 共12页
改单片机交通灯课程设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

改单片机交通灯课程设计.docx

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

改单片机交通灯课程设计.docx

改单片机交通灯课程设计

 

《单片机原理及应用》课程设计

题目基于STC89C52单片机的

交通灯控制系统设计

学生姓名陈国盛

学号2012115020343

学院计算机科学与技术学院

专业通信工程

指导教师洪家平

 

二O一五年六月十七日

 

基于STC89C52单片机的交通灯控制系统

陈国盛

1.项目概述

随着我国经济的高速发展,私家车、公家车的增加,无疑会给我国道路交通系统带来沉重的压力,很多大城市都不同程度的受到交通堵塞问题的困扰。

下面以STC89C52单片机为核心,设计出以人性化、智能化为目的的交通信号灯控制系统。

2.项目意义

用STC89C52单片机控制一个交通信号灯系统,晶振采用12MHz。

设A车道与B车道交叉组成十字路口,A是主道,B是支道。

设计要求如下:

(1)用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。

(2)正常情况下,A、B两车道轮流放行,A车道放行9s,其中3s用于警告;B车道放行6s,其中3s用于警告。

(3)在交通繁忙时,交通信号灯控制系统应有手控开关,可人为的改变信号灯的状态,以缓解交通拥挤状况。

在B车道放行期间,若A车道有车而B车道无车,按下开关K1使A车道放行5s;在A车道放行期间,若B车道有车而A车道无车,按下开关K2是B车道放行5s。

(4)有紧急车辆通过时,按下K3使A、B车道均为红灯,禁行5s。

3系统设计

交通控制系统主要控制A、B两车道的交通,以STC89C52单片机为核心芯片,通过控制三色LED的亮灭来控制各车道的通行;另外通过3个按键来模拟各车道有无车辆的情况和有紧急车辆的情况。

根据要求,制定总体设计思想如下:

(1)正常情况下运行主程序,采用0.5s延时子程序的反复调用来实现各种定时时间。

(2)一车道有车,而另一车道无车时,采用外部中断1执行中断服务程序,并设置该中断为低优先级中断。

(3)有紧急车辆通过时,采用外部中断0执行中断服务程序,并设置该中断为高优先级中断,实现二级中断嵌套。

3.1框图设计

基于STC89C52单片机的交通信号灯控制系统由电源电路、单片机主控电路、按键控制电路和道路显示电路几部分组成。

3.2关键技术

(1)单片机最小系统工作原理及设计(晶振电路和复位电路)

(2)按键电路工作原理及设计

(3)驱动电路74LS07的特性及使用

(4)LED的特性及使用

(5)STC89C52单片机引脚

(6)单片机汇编语言及程序设计

4硬件设计

用12只LED模拟交通信号灯,以STC89C52单片机的P1口控制这12

只发光二极管,由于单片机带负载能力有限,因此,在P1口与发光二极管之间用74LS07作驱动电路,P1口输出0时,信号灯亮;输出1时,信号灯灭。

在正常情况和交通繁忙时,A、B两车道的6只信号灯的控制状态有5种形式,即P1口控制功能及相应控制码如表1-2所示。

分别以按键K1、K2模拟A、B道的车辆检测信号,开关K1按下时,A车道放行;开关K2按下时,B车道放行;开关K1和K2的控制信号经异或取反后,产生中断请求信号(0有效),通过外部中断1向CPU发出中断请求;因此产生外部中断1中断的条件应是:

INT1=K1⊕K2。

采用中断加查询扩展法,可以判断出要求放行的是A车道(K1)还是B车道(K2)。

以按键K0模拟紧急车辆通过开关,当K0为高电平时属正常情况,当K0为低电平时,属紧急车道通过的情况,直接将K0信号接至INT0(P3.2)脚即可实现外部中断0中断。

交通信号灯与控制状态对应关系

控制状态

P1口

控制码

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

未用

未用

B道绿灯

B道黄灯

B道红灯

A道绿灯

A道黄灯

A道红灯

A道放行,B道禁止

F3H

1

1

1

1

0

0

1

1

A道警告,B道禁止

F5H

1

1

1

1

0

1

0

1

A道禁止,B道放行

DEH

1

1

0

1

1

1

1

0

A道禁止,B道警告

EEH

1

1

1

0

1

1

1

0

A道禁止,B道禁止

F6H

1

1

1

1

0

1

1

0

综上所述,可设计出基于STC89C52单片机控制交通信号灯模拟信号灯控制系统的电路图如图所示。

4.1元器件清单

基于STC89C52单片机的交通信号控制系统元件清单如下表所示:

元件名称

型号

数量/个

用途

单片机

STC89C52

1

控制核心

晶振

12MHz

1

晶振电路

电容

30pF

2

晶振电路

电解电容

10μF/10V

1

复位电路

电阻

10KΩ

1

复位电路

驱动器

74LS07

1

LED驱动

发光二极管

LED

12

黄、红、绿灯

集成块

74LS04

1

按键电路

集成块

74LS86

1

按键电路

电阻

4.7KΩ

2

按键电路

按键

4

按键电路

电阻

300Ω

12

LED限流

电源

+5V/0.5A

1

提供+5V

4.2电路原理图

4.3电路仿真图

5软件设计

主程序采用查询方式定时,由R2寄存器确定调用0.5s延时子程序的次数,从而获取交通灯的各种时间。

子程序采用定时器1方式1查询式定时,定时器定时50ms,R3寄存器确定50ms循环10次,从而获取0.5s的延时保护时间。

有车车道放行的中断服务程序首先要保护现场,因需要用到延时子程序和P1口,故需要保护的寄存器有R3、P1、TH1和TL1,保护现场时还需要关中断,以防止高优先级中断(紧急车辆通过所产生的中断)出现导致程序混乱。

开中断,由软件查询P3.0和P3.1口,判别哪一车道有车。

待交通灯信号出现后,保持5s的延时,然后关中断,恢复现场,再开中断,返回主程序。

紧急车辆出现时的中断服务程序也需保护现场,但无须关中断(因其为高优先级中断),然后执行相应的服务,待交通灯信号出现出现后延时5s,确保紧急车辆通过交叉路口,然后,恢复现场,返回主程序。

5.1程序流程图

 

 

 

5.2程序清单

ORG0000H

LJMPMAIN;转向主程序

ORG0003H

LJMPINTT0;转向紧急车辆中断服务程序

ORG0013H

LJMPINTT1;转向有车车道中断服务程序

ORG0200H

MAIN:

MOVSP,#30H

SETBPX0;置外部中断0为高优先级中断

MOVTCON,#00H;置外部中断0、1为电平触发

MOVTMOD,#10H;置定时器1为方式1

MOVIE,#85H;开CPU中断,开外中断0、1中断

LOOP:

MOVP1,#0F3H;A道绿灯放行,B道红灯禁止

MOVR1,#18;置0.5s循环次数(0.5x18=9s)

DIP1:

ACALLDELAY;调用0.5s延时子程序

DJNZR1,DIP1;9s不到继续循环

MOVR1,#05;置A绿灯闪烁循环次数

WAN1:

CPLP1.2;A绿灯闪烁

ACALLDELAY

DJNZR1,WAN1;闪烁次数未到,继续循环

MOVP1,#0F5H;A黄灯警告,B红灯禁止

MOVR1,#04H;置0.5s循环次数(0.5x4=2s)

YL1:

ACALLDELAY

DJNZR1,YL1;2s未到继续循环

MOVP1,#0DEH;A红灯,B绿灯

MOVR1,#12;置0.5s循环次数(0.5x12=6s)

DIP2:

ACALLDELAY

DJNZR1,DIP2;6s未到继续循环

MOVR1,#05H

WAN2:

CPLP1.5;B绿灯闪烁

ACALLDELAY

DJNZR1,WAN2

MOVP1,#0EEH;A红灯,B黄灯

MOVR1,#04H

YL2:

ACALLDELAY

DJNZR1,YL2

AJMPLOOP;循环执行主程序

INTT0:

PUSHP1;P1口数据压栈保护

PUSHTH1;TH1压栈保护

PUSHTL1;TL1压栈保护

MOVP1,#0F6H;A、B道均为红灯

MOVR2,#10;置0.5s循环初值(5s)

DEY0:

ACALLDELAY

DJNZR2,DEY0;5s未到继续循环

POPTL1;弹栈恢复现场

POPTH1

POPP1

RETI;返回主程序

INTT1:

CLREA;关中断

PUSHP1;压栈保护现场

PUSHTH1

PUSHTL1

SETBEA;开中断

JBP3.0,BOP;A道无车转向B道

MOVP1,#0F3H;A道绿灯,B道红灯

SJMPDEL1;转向5s延时

BOP:

JBP3.1,EXIT;B道无车推出中断

MOVP1,#0DEH;A红灯,B绿灯

DEL1:

MOVR5,#10;置0.5s循环初值(5s)

NEXT:

ACALLDELAY

DJNZR5,NEXT;5s未到继续循环

EXIT:

CLREA

POPTL1;弹栈恢复现场

POPTH1

POPP1

SETBEA

RETI

DELAY:

MOVR3,#0AH;0.5s子程序(50msX10=0.5s)

MOVTH1,#3CH;置50ms初值X=3CB0H

MOVTL1,#0B0H

SETBTR1;启动T1

LP1:

JBCTF1,LP2;查询计数溢出

SJMPLP1

LP2:

MOVTH1,#3CH;置50ms初值X=3CB0H

MOVTL1,#0B0H

DJNZR3,LP1

RET

END

6系统仿真及调试

单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试过程中被发现纠正的。

但是通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。

可见硬件的调试是基础,如果硬件调试不通过,软件设计则无从做起。

硬件的调试主要是把电路各种参数调整到符合设计要求。

先排除硬件电路故障,包括设计性错误和工艺性故障。

一般原则是先静态后动态。

经过两周的努力工作,终于完成了自己的单片机课程设计。

虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。

在焊接过程中,我学会应先合理的布局,并认真检查每个元器件,确保无误后再焊接。

还有,不能急于求成,要焊接一个模块,检查一个模块,免得整个版子焊完后再在一大堆线中检查,这样不仅效率低且耗时。

自然,我也学会如何去发现问题与解决问题的一些方法。

至于软件设计与调试,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度。

可以说再整个软件设计过程中,我不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)及其如何选择。

当然,通过几次反复调试过程,使得我对汇编指令有了更深刻的理解。

在整个课程设计过程我还掌握了一下几点:

(1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。

(2)理解了最单片机的各部分组成及特性。

(3)熟练使用了各种计算机辅助设计工具完成设计,充分掌握了这些工具的使用。

(4)学会了利用KeiluVision2对汇编语言进行编译过程.更进一步加深了对PROTEUS软件的学习。

通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。

就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件的适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要问题而逐步得到解决。

同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己的畏难情绪,这样才能将事情做好,才能干出一番成就。

我觉得类似这种课程设计的实践真的不错,通过这些项目练习,我自学能力,解决实际问题的能力得到提高,可以说是对综合素质全面提升,我想这也是我们上大学应真正学到的。

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

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

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

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