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

上传人:b****2 文档编号:2560863 上传时间:2023-05-04 格式:DOCX 页数:19 大小:66.56KB
下载 相关 举报
基于AT89S52单片机的交通灯设计.docx_第1页
第1页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第2页
第2页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第3页
第3页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第4页
第4页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第5页
第5页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第6页
第6页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第7页
第7页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第8页
第8页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第9页
第9页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第10页
第10页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第11页
第11页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第12页
第12页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第13页
第13页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第14页
第14页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第15页
第15页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第16页
第16页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第17页
第17页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第18页
第18页 / 共19页
基于AT89S52单片机的交通灯设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

基于AT89S52单片机的交通灯设计

1交通灯的设计目的及方案介绍

1设计课题的目的

通过单片机的课程设计,加深和巩固单片机知识,提高综合及灵活运用所学的知识来解决日常生活及工业控制的能力,提高针对知识的需要,选择和查阅其他资料书籍、灵活运用其中知识及自学能力,提高组成系统、编程、制版、调试的全方面能力,通过对课题设计方案的分析、选择、比较,熟悉单片机运用于系统开发、研制的过程,软硬件设计的方法、内容及步骤。

培养发现问题、分析问题和解决问题的能力以及创新能力和创新思维的提高。

1.2设计要求及说明

设计一个具有特定功能的十字路口交通灯。

该交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。

按开始键则开始工作,按结束键则返回“P.”状态。

要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。

有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。

1.3方案介绍及工作原理

1.3.1方案介绍

系统整体框图如图1.1所示:

1.3.2工作原理

该系统采用的是使用现有单片机最小的硬件电路和P3口控制交通灯,P2口控制数码管各位,P0口控制数码管各段,P1.0、P1.1口线控制数码管各位和P1.2口接收紧急信号电路集合而成,构成交通灯的总体电路,即交通灯。

通过对单片机编写对应的程序,控制各个部分,达到预期的效果。

2交通灯的硬件设计及PCB图

2.1交通灯原理图

电路原理图如附录一,电路原理图由各功能模块组成。

2.2交通灯各模块功能

2.2.1单片机最小系统电路

单片机最小系统由CPU,复位电路,振荡电路三部分构成,CPU采用的是Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容的AT89S52芯片。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

8位微控制器8K字节在系统可编程FlashAT89S52。

复位电路用于产生复位信号,通过RST引脚送入单片机,进行复位操作。

而复位电路又可以分为上电复位,按键电平复位和按键脉冲复位这三种,在这次设计中,选用的是按键电平复位电路。

其功能为:

上电的同时,RC回路开始充电,RST引脚端出现正脉冲,只要RST段保持10ms以上的高电平,就能够使单片机有效的复位。

振荡电路是从AT89S52的XTAL1和XTAL2接入时钟信号的。

由外接晶振及电容C1,C2所构成的并联谐振电路接在放大器的反馈回路中。

在设计电路板时为减小干扰,晶振和电容应该尽可能的与单片机近些,以减少寄生电容,更好的保证振荡器稳定可靠。

其功能为:

产生振荡脉冲,为单片机运行提供时序。

上拉电阻是为了拉高电压,增强IO口的驱动能力。

2.2.2显示电路设计

单片机应用系统最常用的显示器是LED(发光二极管显示器)、LED(液晶显示器)。

这两种显示器可显示数字、字符及系统的状态。

它们的驱动电路简单、易于实现且价格低廉,因此,得到了广泛应用。

本次设计要显示数字倒计时,用数码管动态显示。

将LED显示器各位数码管的所有段控端相应地并联在一起,由P0的8个口线控制,形成段选线多路复用,而各位数码管的共阳极分别由P2口的其中四个口线控制,实现各位的分时选通。

共阳极数码管字形代码表如表2.1所示。

表2.1共阳极数码管字形代码表

字型

共阳代码

字型

共阳代码

0

C0H

6

82H

1

F9H

7

F8H

2

A4H

8

80H

3

B0H

9

90H

4

99H

P.

0CH

5

92H

FFH

2.2.3数码管驱动电路设计

本设计采用的数码管驱动是采用PNP三极管驱动,有效增强数码管显示的亮度。

当给P2口线与三极管的发射极相连,用于连接数码管位控与三极管的集电极相连,三极管的基极通过电阻与地相连,当给P2高电平的同时,输出高电平信号控制数码管的显示位显示。

2.2.4紧急按键电路设计

紧急信号为低电平,通过设计紧急按键电路与P1.2口相连接,紧急信号通过P1.2输入单片机内部,当紧急事件过去后,单片机回到原来的地方继续工作。

2.2.5程序下载口电路设计

ATMEL公司的89S5XX提供了支持ISP(在线下载程序)并口下载功能,它只需一块八位锁存器就可以实现了,原理如下:

MOSI:

数据串行输出(S52P1.5脚),MISO:

串行数据输入(S52P1.6脚),SCK:

同步控制时钟(S51P1.7脚),RST接单片机复位脚,当有足够的高电平使S51处于复位状态,它就会开启读写程序功能。

2.2.6电源电路设计

因为本次设计所需电源的模块有单片机最小系统,数码管显示器,二极管交通灯,它们所需电源都为+5V,因而电源设计只需设计一个+5V电源。

为了供电方便,我们直接在插孔处引一根数据线用USB接口供电。

2.2.7交通灯元器件清单

交通灯元件清单如表2.2。

表2.2交通灯元件清单

元件名称

元件个数

元件特性

AT89S52

1

电阻

25

4.7KΩ

3

1KΩ

1

200Ω

电容

2

33pF

极性电容

1

22μF

LED数码管

2

4位一体共阳

晶振

1

12M

发光二极管

4

红色

4

绿色

按键

9

四角

开关

1

六角

USB电源接口

1

2.3PCB设计图

我们可以根据设计电路原理图,以购买的元器件的尺寸、引脚,仔细封装各个元器件,如果不能在库里找到的我们自己根据实际需要,自己创建封装。

2.3.1元器件布局图

交通灯元器件布局图如附录二所示

2.3.2PCB图

根据电路原理图,将每个元器件放置在适当的位子,按照PCB画线的原则,以正确,美观,认真将各个元器件连接起来。

PCB图如附录三所示。

3交通灯的软件设计

3.1单片机资源分配

由电路原理图可知,单片机AT89S52的资源分配如下:

第9脚RST接复位电路和下载口复位端;

第18脚XTAL1、第19脚XTAL2接振荡电路;

P0口用于数码管显示器的段控控制;

P1口接数码管的位控控制

P3口接LED灯

3.2软件系统各模块功能

3.2.1显示P.模块

该模块的功能是在单片机上电或者复位后,在数码管上显示“P.”,此时系统处于等待工作状态。

在按下开始按钮后,跳出此模块,进入正常的工作状态。

3.2.2亮灯模块

该模块的功能是控制交通灯的亮与灭,在程序中,先控制主路的绿灯亮57S,再黄灯闪烁3秒,即每秒亮半秒灭半秒,同时支路上的红灯亮60S;再控制支路上的绿灯亮27S,再黄灯闪烁3秒,即每秒亮半秒灭半秒,同时主路上的红灯亮30S。

正常情况下,随着主程序循环。

当紧急按钮按下后,控制两个路口的红灯同时亮十秒,待紧急时间过去,主动跳出。

3.2.3显示模块

该模块的功能是主路和支路上的时间显示。

当系统开始运行时,同时在主路和支路上显示60S的倒计时,待60S过后,同时在主路和支路上显示30S的倒计时,正常情况下,随着主程序循环。

当按下紧急按钮之后,同时在主路和支路上显示10S的倒计时,之后主动跳出。

3.2.4紧急按钮模块

该模块的功能是在出现紧急情况下,按下紧急按钮,送入单片机信号,系统进入紧急状态,在数码管显示10S倒计时,同时主路和支路的红灯都亮。

待10S过后,自动跳出。

3.2.5延时模块

该模块的功能是为其他各模块提供延时。

不论是数码管显示的延时,红绿灯亮的延时,黄灯的闪烁,都需要此模块来提供延时。

采用延时子程序,延时50ms。

3.3程序流程框图

交通灯程序流程框图如图3.1所示。

图3.1程序流程框图

3.4交通灯程序清单

交通灯程序清单如附录四所示。

4交通灯设计仿真

 

4.1仿真原理图

仿真是我们检测我们的硬件设计和软件与硬件的结合好坏的重要方法,也能为我们做实物提供保障。

我们采用Kiel结合Proteus仿真,仿真电路原理图如附录五所示。

4.2仿真结果

(1)当开始键按下时,数码管显示“P.”。

如图4.1所示。

图4.1“P.”显示

(2)当按开始按钮时,数码显示管和交通灯均开始正常工作。

如图4.2所示。

图4.2正常工作显示

(3)当紧急按钮按下时,数码显示管和交通灯均按照计划工作。

如图4.3所示。

图4.3紧急情况下显示

5设计体会及出现的问题

 

5.1设计体会

通过这次对交通灯的设计,我们更加认识了单片机,更加熟悉了对单片机的应用。

在这次设计的过程中,从电路原理图的设计,就透彻的理解了单片机最小系统的构成及其工作原理。

从数码管的选择中,懂得了可以采用不同的元器件,只要我们运用相应的程序,就能达到同样的效果。

从三极管的应用中,发现了理论跟实践存在的巨大差别。

只有实践才能检验所学的理论,才能发自己对理论认识的误区和盲点。

在软件的设计过程中,收获更大。

通过此次设计程序,透彻的明白了每一个指令的应用方法和功能,很好的统一复习了单片机的指令系统。

也正是在运用中也发现了自己对部分指令的错误认识和误区,在改正错误中获得了收获。

在实验的基础上,再一次对keil软件进行了一次全面的运用,更加熟悉了keil软件的各项功能。

在做实物的过程中,很好的锻炼了自己的动手能力,同时也提高了自己发现问题,解决问题的能力。

当最终看到自己的成果握在手中时,有一种非常美妙的成就感,也激发了自己的学习兴趣。

增强了自信,培养了自己的各个方面的能力。

5.2设计中出现的问题

在本次试验中,由于理论和实践经验缺乏,出现了很多问题。

首先是先到倒计时的问题,我设计了1秒钟的子程序,然后再按键功能1中调用它,同时在最后3秒钟闪烁灯,后来发现这样根本不能实现灯闪烁一秒,而是两秒,针对这个问题,我就将1秒钟的子程序改为0.5秒,然后再程序里面两次调用它。

其次出现了按了一个键实现了功能不能跳往另外一个键功能程序,我就想到了要分别在键功能程序里面再调用子程序,这个问题就解决了。

最后在应急的时候我只想到了在应急里面循环,在老师的提点下,我想到了应急之后应该恢复原来的交通秩序,这个就要牵扯到现场的保护和恢复,于是我马上联想到刚学完不久的中断知识,首先我想用外部中断,但是发现外部中断的两根口线已经被LED灯占用,然后我就想到要用定时器中断,编好以后,发现又有新的问题出现了。

6鸣谢

 

附录一原理图

附录二程序清单

附录三仿真电路图

附录四PCB图

附录二

 

;***********************************************************************

;设计者:

XX

;设计日期:

2010年12月24日

;************************************************************************

;堆栈栈底:

7FH

;************************************************************************

;LED数码管设置:

;P0.0---P0.7接段控线,分别接a,b,c,d,e,f,g,dp.

;P2.0---P2.7接位控线,分别接(从右至左)LED1---LED8

;显示缓冲区:

LED1---LED8分别对应78H---7FH

;************************************************************************

;独立式键盘:

;八个按键S0---S7分别接P1.0---P1.7

;************************************************************************

;LED流水灯设置:

;八个LED灯LED1---LED8分别接P3.0---P3.7

;************************************************************************

;项目名称:

交通灯

;KEYA(S0键键功能程序)

;KEYB(S1键键功能程序)

;KEYC(S2键键功能程序)

;************************************************************************

;常数表格;

;KKK(系统显示四位序号表)

;TAB(共阳数码管字型代码表)

;************************************************************************

;子程序;

;DELAY(延时10ms子程序)

;DL(延时2ms子程序)

;KEY(键扫描子程序);

;LOOP0(P1.0口数据处理子程序)

;LOOP1(P1.1口数据处理子程序)

;LOOP2(P1.2口数据处理子程序)

;DISP(数码管显示子程序)

;KK0(0.5秒显示处理程序)

;************************************************************************

;起始程序区:

 

ORG0000H

LJMPMAIN

ORG0030H

;************************程序初始化************************************************

MAIN:

MOVSP,#7FH;堆栈初始化

MOVR0,#20H;对RAM区清零

MOVR2,#96

QL:

MOV@R0,#00H

INCR0

DJNZR2,QL

MOVP2,#7FH;送位控

MOVP0,#0CH;送段控显示P.

;*************************监控程序*************************************************

KEY:

LCALLKEYK;监控程序

JB20H.0,LOOP0

JB20H.1,LOOP11

JB20H.2,LOOP22

LJMPKEY

LOOP11:

LJMPLOOP1

LOOP22:

LJMPLOOP2

;**************************键功能程序**********************************************

LOOP0:

MOVR3,#60;甲通道显示初值60秒

MOVR5,#57;乙通道显示初值57秒

MM0:

MOVP3,#33H;显示交通灯,甲通道绿,乙通道红

LCALLKK0;调显示程序

LCL0:

LCALLKK0

JNBP1.0,LCL0;判按键0是否按下

JNBP1.1,LOOP1;判按键1是否按下

JNBP1.2,LL0;判按键2是否按下

LJMPLK0

LL0:

LCALLLOOP2

LK0:

DECR5

DECR3

CJNER5,#00H,MM0

M1:

MOVR3,#03;等于3时显示乙通道黄灯处理

MOVR5,#03

MM1:

MOVP3,#33H

LCL1:

LCALLKK0

JNBP1.1,LOOP1

JNBP1.2,LL1

JNBP1.0,LCL1

MOVP3,#077H

LCALLKK0

LJMPLK1

LL1:

LCALLLOOP2

LK1:

DECR3

DECR5

CJNER3,#00H,MM1

M2:

MOVR3,#30;乙通道亮绿灯,甲通道亮红灯

MOVR5,#27

MM2:

MOVP3,#0CCH;点亮交通灯

LCALLKK0

LCL2:

LCALLKK0

JNBP1.0,LCL2

JNBP1.1,LOOP1

JNBP1.2,LL2

LJMPLK2

LL2:

LCALLLOOP2

LK2:

DECR3

DECR5

CJNER5,#05H,MM2

M3:

MOVR3,#03

MOVR5,#03

MM3:

MOVP3,#0CCH;等于三秒时甲通道黄灯处理

LCL3:

LCALLKK0

JNBP1.0,LCL3

JNBP1.1,LOOP1

JNBP1.2,LL3

LJMPLK3

LL3:

LCALLLOOP2

LK3:

MOVP3,#0DDH

LCALLKK0

DECR3

DECR5

CJNER3,#00H,MM3;等于三秒时乙通道黄灯处理

LJMPLOOP0;没有按键按下则在此程序循环

LOOP1:

MOVP3,#0FFH;按键1按下处理程序

LCALLFUWEI

JNBP1.0,KEY0

JNBP1.2,LOOP2

LJMPLOOP1;没有按键按下则在此程序循环

LOOP2:

MOV24H,R3;按键2按下处理程序

MOV25H,R5;将原寄存器内容保存

MOVR3,#10

MOVR5,#10

MOVR7,#00H

MOVP3,#55H

MM5:

LCALLKK0

LCALLKK0

JNBP1.1,LOOP1

DECR3

DECR5

CJNER3,#00H,MM5

MOVR3,24H;返回时将原寄存器内容还原

MOVR5,25H;保护现场

RET;紧急十秒处理后返回

KEY0:

LJMPLOOP0

KEY1:

LJMPKEY

;*************************显示子程序***********************************************

DISP:

PUSHDPH;保护DPTR内容

PUSHDPL

PUSHACC

PUSHPSW

CLRRS0

SETBRS1

MOVR1,#78H

MOVR5,#08H

MOVR2,#0FEH

DISP1:

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,R2

LCALLDL

MOVA,R2

RLA

MOVR2,A

INCR1

DJNZR5,DISP1

DISP2:

POPPSW

POPACC

POPDPL

POPDPH

RET

;*************************显示处理5秒钟处理程序************************************

KK0:

MOVDPTR,#KKK

MOVR4,#08H

MOVR0,#7FH

MOVR6,#60

G1:

CLRA

MOVCA,@A+DPTR

MOV@R0,A

DECR0

INCDPTR

DJNZR4,G1

KK3:

MOVA,R3

MOVB,#10

DIVAB

MOV7DH,A

MOV7CH,B

KK4:

MOVA,R5

MOVB,#10

DIVAB

MOV79H,A

MOV78H,B

LS:

LCALLDISP

DJNZR6,LS

RET

;**********************复位程序*****************************

FUWEI:

MOVP2,#7FH;位控

MOVP0,#0CH;段控显示P.

RET

;***********************键扫程序*****************************

KEYK:

LCALLKEYSAO

JZEXTI

LCALLDELAY

LCALLKEYSAO

JZEXTI

MOVB,20H

PSF:

LCALLKEYSAO

JZEXTI1

LCALLDELAY

LJMPPSF

EXTI1:

MOV20H,B

EXTI:

RET

KEYSAO:

PUSHPSW

SETBRS0

MOVA,P1;将P1口内容送A

CPLA

MOV20H,A;按键值保存

POPPSW

RET

;*********************制表区**********************************************

KKK:

DB10,10,6,0,10,10,6,0

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CH;

;*********************延时区*****************************************

DELAY:

MOVR2,#10

DL0:

MOVR3,#0FFH

LLL1:

NOP

NOP

DJNZR3,LLL1

D

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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