叶奇基于51单片机的交通灯控制系统设计.docx

上传人:b****5 文档编号:11749492 上传时间:2023-03-31 格式:DOCX 页数:20 大小:284.58KB
下载 相关 举报
叶奇基于51单片机的交通灯控制系统设计.docx_第1页
第1页 / 共20页
叶奇基于51单片机的交通灯控制系统设计.docx_第2页
第2页 / 共20页
叶奇基于51单片机的交通灯控制系统设计.docx_第3页
第3页 / 共20页
叶奇基于51单片机的交通灯控制系统设计.docx_第4页
第4页 / 共20页
叶奇基于51单片机的交通灯控制系统设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

叶奇基于51单片机的交通灯控制系统设计.docx

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

叶奇基于51单片机的交通灯控制系统设计.docx

叶奇基于51单片机的交通灯控制系统设计

 

课程设计报告

(2013--2014年度第二学期)

 

名称:

单片机与嵌入式系统

题目:

基于51单片机的交通信号灯控制系统

院系:

控制与计算机工程学院

班级:

测控1101班

学号:

1111160121

学生姓名:

叶奇

指导教师:

吕跃刚教授

设计周数:

1周

组员:

成绩:

日期:

2014年6月18日

 

基于51单片机的交通灯控制系统设计

一、课程设计的目的与要求

1、运用《单片机与嵌入式系统》课程所学知识,学生独立完成微处理器与外围电路设计与软件编程使用proteus电路制版软件,独立完成单片机与外围电路设计,内容包括51单片机及电源接口、复位与晶振电路、1个按键及接口、2位LED数码显示驱动电路。

2、掌握交通灯控制系统的设计方法,掌握常用的数字集成电路的功能和应用,以及对一些常用的芯片熟悉,并使用proteus仿真软件完成定时器、LED驱动显示、循环方式等的软件编程。

二、设计正文

1设计思路

利用单片机实现交通灯的控制,该任务分以下几个方面:

a实现红、绿、黄灯的循环控制。

要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。

b用数码管显示倒计时。

可以利用动态显示或静态显示,串行并出或者并行并出实现。

C实现人工紧急控制。

该过程在编程时可利用中断实现,设置一个按钮,只要按下,那么四个方向全部显示红灯,禁止以往车辆通行。

当情况解除,让时间回到跳转处继续进行。

2硬件设计

2.1LED循环电路设计

2.1.189cs51单片机概述

MCS-51单片机内部结构:

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

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

*中央处理器:

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

*数据存储器(RAM):

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

*程序存储器(ROM):

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

*定时/计数器(ROM):

89CS51有两个16位的可编程定时/计数器,一时想定时或计数产生中断用于控制程序转向。

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

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

*全双工串行号:

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

*中断系统:

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

*时钟电路:

89CS51内置最高频率高达12Hz的时钟电路,用于产生整个单片机运行的脉冲时序,但89CS51单片继续外置震荡电容。

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

MCS-51系统的引脚说明:

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

图二

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

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

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

2.1.2LED循环说明

东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。

红灯禁止通行,绿灯亮允许通行。

黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。

 

25s

3s

2s

25s

3s

2s

东西通道

红灯亮

红灯亮

红灯亮

绿灯亮

绿灯闪

黄灯亮

南北通道

绿灯亮

绿灯闪

黄灯亮

红灯亮

红灯亮

红灯亮

上表说明东西路口红灯亮,南北路口绿灯亮,同时开始25s倒计时。

25s倒计时结束后开始5s倒计时,南北路口绿灯闪烁,计时至最后2s时,南北路口黄灯亮。

完成一次这样的循环要30s。

30s结束,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。

电路图如图三所示。

图三

2.2倒计时显示电路

2.2.174LS164芯片

74LS164用于扩展并行输出口。

用89CS51串行口外接164串入-并出移位寄存器扩展8位并行口。

8位并行口的每位分别接到数码显示管的不同显示端。

74LS164芯片管脚排列如下图,管脚1、2相连共同接单片机管脚RXD,8管脚接单片机管脚TXD,9管脚接高电平,7管脚接地,14管脚接高电平,其他管脚依次接数码显示管管脚。

图四

2.2.2共阴极数码显示管

这里列出了共阴和共阳数码管的管脚平排列和内部结构。

数码管3、8管脚内部连在一起。

如果是共阳极则将其接到高电,如果是共阴极则将其接地。

为了数码显示管的安全这里用三个二极管与其串联来降压。

图五

2.2.3倒计时电路

倒计时显示电路如图六。

利用两个74LS164芯片并联后,其1、2管脚至单片机RXD管脚8管脚至单片机TXD管脚。

然后其他管脚依次接至数码管个管脚。

对于数码管其3、8管脚经过三个串联的二极管接地。

图六

2.2.4人工紧急控制电路

为了实现此功能,利用单片机中断达到目的。

利用一个手动按钮开关接至单片机外部中断INT0,同时在软件设计时将其设为最高优先级中断。

当有按键按下,四方全为红灯,同时将终端位置的PSW、ACC进栈保护。

当再按下按钮,将PSW、ACC出栈,回到原来的位置继续执行,电路图如下图。

图七

3软件设计

3.1程序流程图:

如图八所示。

图八

3.2LED红绿灯显示

如图三所示,当P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当P1个端口输出低电平,即P1各端口=0时,发光二极管亮。

我们可以使用SETB指令使P1各端口输出高电平,使用CLR指令时P各端口输出低电平。

至于循环需要软件控制,程序见附录。

3.3倒计时显示

此处采用LED静态显示方式,当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另个字符为止。

89C51的串行口RXD和TXD为一个全双工串行通信口,但工作在方式0下可作同步移位寄存器,其数据由RXD端串行输出或输入;而同步移位时钟由TXD端并行输出,在同步时钟的作用下,实现由串行到并行的数据通信。

在不需要使用串行通信的场合,利用串行口加外围芯片74LS164就可构成一个或多个并行输入\输出口,用于串——并转换或显示器LED驱动,此利用后者。

3.4人工紧急控制

将一按钮接到单片机外部中断INT0端口。

另一端接地,通过在程序里设置外部中断0为最高优先级。

当检测到有按钮按下时,产生中断,停止刚才的程序,转向中断执行。

在此过程必须利用PUSH、POP指令保护现场,这样当情况解除可以回到原来的地方继续执行。

3.5程序代码

见附录二

三课程设计总结

通过此次课程设计,使我更加扎实的掌握了有单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

在学习单片机理论课时候就感觉到内容很多,知识点很杂,分繁琐。

在老师的讲解下,在通过自己的努力也更进一步了解了单片机的内部构造和工作原理,以及接外部电路的情况。

当然光有理论知识那只是“纸上谈兵”,还需要实际动手去实践。

这次单片机实习,我选的是交通灯控制系统设计,通过这次设计我感觉到要想做成功,必须花时间多准备,查阅大量资料,认证分析每一步每一个模块要实现的功能,然后分步进行,最后整合成一个整体。

四参考文献

[1]叶挺秀.应用电子学[M].杭州:

浙江大学出版社,1994

[2]朱承高.电工及电子技术手册[M].北京:

高等教育出版社,1990

[3]阎石.数字电子技术基础(第三版)[M].北京:

高等教育出版社,1989

[4]周润景.PEOTEUS在MCS-51&ARM7系统中的应用百例[M].北京:

电子工业出版社,2006

[5]李朝青.单片机原理及接口技术(第三版)[M].北京:

北京航空航天大学出版社,2005

 

附录一:

附录二:

源程序代码

SECOND1EQU30H;东西路口计时寄存器

SECOND2EQU31H;南北路口计时寄存器

DBUFEQU40H;显示码缓冲1

TEMPEQU44H;显示码缓冲2

LED_G1BITP1.0;东西路口绿灯

LED_Y1BITP1.1;东西路口黄灯

LED_R1BITP1.2;东西路口红灯

LED_G2BITP1.5;南北路口绿灯

LED_Y2BITP1.6;南北路口黄灯

LED_R2BITP1.7;南北路口红灯

ORG0000H

LJMPSTART

ORG0003H

LJMPINTO0

ORG0100H

START:

MOVTMOD,#01H;置T0工作方式1

MOVTH0,#3CH

MOVTL0,#0B0H

CLRTF0

SETBTR0;启动T0

SETBEX0

SETBPX0;设置外中断0高优先级

SETBEA

LOOP:

MOVR2,#20;置1s计数初值

MOVR3,#20;红灯亮20S

MOVSECOND1,#25;东西路口计时显示初值25s

MOVSECOND2,#25;南北路口计时显示初值25s

LCALLDISPLAY

LCALLSTATE1;调用状态1

WAIT1:

JNBTF0,WAIT1;查询50ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值50ms

MOVTL0,#0B0H

DJNZR2,WAIT1;判断1s到否?

未到继续状态1

MOVR2,#20;置50ms计数初值

DECSECOND1;东西路口显示时间减1

DECSECOND2;南北路口显示时间减1

LCALLDISPLAY

DJNZR3,WAIT1;状态1维持20s

MOVR2,#5;置50ms计数初值

MOVR3,#3;绿灯闪烁3s

MOVR4,#4;闪烁间隔200ms

MOVSECOND1,#5;东西路口计时显示初值5s

MOVSECOND2,#5;南北路口计时显示初值5s

LCALLDISPLAY

WAIT2:

LCALLSTATE2;调用状态2

JNBTF0,WAIT2;查询50ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值50ms

MOVTL0,#0B0H

DJNZR4,WAIT2;判断200ms到否?

未到继续状态2

CPLLED_G1;东西绿灯闪烁

MOVR4,#4;闪烁200ms

DJNZR2,WAIT2;判断1s到否?

未到继续状态2

MOVR2,#5;置50ma计数初值

DECSECOND1;东西路口显示时间减1

DECSECOND2;南北路口显示时间减1

LCALLDISPLAY

DJNZR3,WAIT2;状态2维持3s

MOVR2,#20;置50ms计数初值

MOVR3,#2;黄灯闪烁2s

MOVSECOND1,#2;东西路口计时显示初值2s

MOVSECOND2,#2;南北路口计时显示初值2s

LCALLDISPLAY

WAIT3:

LCALLSTATE3;调用状态3

JNBTF0,WAIT3;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR2,WAIT3;判断1s到否?

未到继续状态3

MOVR2,#20;置100ms计数初值

DECSECOND1;东西路口显示时间减1

DECSECOND2;南北路口显示时间减1

LCALLDISPLAY

DJNZR3,WAIT3;状态3维持2s

MOVR2,#20;置50ms计数初值

MOVR3,#20;红灯闪烁20s

MOVSECOND1,#25;东西路口计时显示初值25s

MOVSECOND2,#25;南北路口计时显示初值25s

LCALLDISPLAY

WAIT4:

LCALLSTATE4;调用状态4

JNBTF0,WAIT4;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR2,WAIT4;判断1s到否?

未到继续状态4

MOVR2,#20;置100ms计数初值

DECSECOND1;东西路口显示时间减1

DECSECOND2;南北路口显示时间减1

LCALLDISPLAY

DJNZR3,WAIT4;状态4维持2s

MOVR2,#5;置50ms计数初值

MOVR3,#4;红灯闪烁20s

MOVR3,#3;绿灯闪烁3s

MOVSECOND1,#25;东西路口计时显示初值5s

MOVSECOND2,#25;南北路口计时显示初值25s

LCALLDISPLAY

WAIT5:

LCALLSTATE5;调用状态5

JNBTF0,WAIT5;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR4,WAIT5;判断200ms到否?

未到继续状态5

CPLLED_G2;南北绿灯闪烁

MOVR4,#4;闪烁200ms

DJNZR2,WAIT5;判断1s到否?

未到继续状态5

MOVR2,#5;置100ms计数初值

DECSECOND1;东西路口显示时间减1

DECSECOND2;南北路口显示时间减1

LCALLDISPLAY

DJNZR3,WAIT5;状态5维持3s

MOVR2,#20;置50ms计数初值

MOVR3,#20;红灯闪烁2s

MOVSECOND1,#25;东西路口计时显示初值5s

MOVSECOND2,#25;南北路口计时显示初值5s

LCALLDISPLAY

WAIT6:

LCALLSTATE6;调用状态4

JNBTF0,WAIT6;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR2,WAIT6;判断1s到否?

未到继续状态6

MOVR2,#20;置100ms计数初值

DECSECOND1;东西路口显示时间减1

DECSECOND2;南北路口显示时间减1

LCALLDISPLAY

DJNZR3,WAIT6;状态6维持3s

LJMPLOOP

STATE1:

;状态1

SETBLED_G1;东西路口路灯亮

CLRLED_Y1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

RET

STATE2:

;状态2

CLRLED_Y1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

RET

STATE3:

;状态3

CLRLED_G1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

SETBLED_Y1;东西路口黄灯亮

RET

STATE4:

;状态4

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

SETBLED_G2;南北路口绿灯亮

CLRLED_Y2

CLRLED_R2

RET

STATE5:

;状态5

CLRLED_G1

CLRLED_R1

SETBLED_R1;东西路口红灯亮

CLRLED_Y2

CLRLED_R2

RET

STATE6:

;状态6

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

CLRLED_G2

CLRLED_R2

SETBLED_Y2;南北路口黄灯亮

RET

DISPLAY:

;数码显示

MOVA,SECOND1;东西路口计时寄存器

MOVB,#10

DIVAB

MOVDBUF+3,A

MOVA,B

MOVDBUF+2,A

MOVA,SECOND2;南北路口计时寄存器

MOVB,#10

DIVAB

MOVDBUF+1,A

MOVA,B

MOVDBUF,A

MOVR0,#DBUF

MOVR1,#TEMP

MOVR7,#4

DP10:

MOVDPTR,#LENMAP

MOVA,@R0

MOVCA,@A+DPTR

MOV@R1,A

INCR0

INCR1

DJNZR7,DP10

MOVR0,#TEMP

MOVR1,#4

DP12:

MOVR7,#8

MOVA,@R0

DP13:

RLCA

MOVP3.0,C

CLRP3.1

SETBP3.1

DJNZR7,DP13

INCR0

DJNZR1,DP12

RET

LENMAP:

DB3FH,06H,5BH,4FH,66H,6DH

DB7DH,07H,7FH,6FH

ORG0200H

INTO0:

PUSHPSW

PUSHACC

SETBLED_R1

SETBLED_R2

CLRLED_G1

CLRLED_Y1

CLRLED_G2

CLRLED_Y2

POPPSW

POPACC

RETI

END

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

当前位置:首页 > 人文社科 > 法律资料

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

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