交通灯控制Word格式.docx

上传人:b****6 文档编号:19038284 上传时间:2023-01-03 格式:DOCX 页数:21 大小:333.95KB
下载 相关 举报
交通灯控制Word格式.docx_第1页
第1页 / 共21页
交通灯控制Word格式.docx_第2页
第2页 / 共21页
交通灯控制Word格式.docx_第3页
第3页 / 共21页
交通灯控制Word格式.docx_第4页
第4页 / 共21页
交通灯控制Word格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

交通灯控制Word格式.docx

《交通灯控制Word格式.docx》由会员分享,可在线阅读,更多相关《交通灯控制Word格式.docx(21页珍藏版)》请在冰豆网上搜索。

交通灯控制Word格式.docx

前提:

本次设计,是针对实际要求,灵活应用所学知识,独立进行系统综合设计的过程,以达到巩固单片机基础知识、掌握单片机系统开发过程和提高动手实践能力的目的。

要求:

某十字路口,设计一个十字路口交通灯信号控制器,指挥交通车的通行。

要求如下:

1)东西通道和南北通道交替通行,东西通道每次放行时间大于南北通道每次放行时间。

2)绿灯亮表示可以通行,红灯亮表示禁止通行。

3)每次绿灯变红灯时,绿灯先闪转变黄灯(此时另一干道上的红灯不变)。

4)十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。

具体要求东西通道、南北通道通行时间及黄灯亮的时间均以秒为单位作减计数。

二.硬件电路说明

MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。

<

1>

电路工作原理:

本设计是以89C51为主控芯片,利用P1口控制74LS240(八反相缓冲器,线驱动器)驱动发光二极管模拟交通灯。

倒计时显示部分采用串口实现。

串口工作在方式0时通过外接移位寄存器74LLS164实现串并转换。

需要显示的数据经RXD端输出经过74LS164串并转换输出到共阳极的LED数码管显示,利用T0定时器进行1S定时。

2>

原理图中部分构成说明:

1、单片机的最小系统:

晶振和时钟电路

2、74LS240和74LS164

由于单片机的驱动能力太弱,所以给加了驱动电路,又因为发光二极管驱动,功率不大所以我选用了八反相缓冲器/8位三态门电路74LS240

设计采用164把串行口逐位输出的数据进行串并转换进而控制LED的显示

74LS164的真值表和构成如下图:

3、改进部位

本设计添加了应急通行,用按钮开关控制东西南北的应急通行信号。

其中东西方向接外中断0南北接外中断1,按一下按钮该方向通行,另外方向停止,按两下恢复原样。

三.软件部分说明:

(1)、定时/计数器介绍:

定时/计数器的四种工作方式:

工作方式0:

定时/计数器的工作方式0称之为13位定时/计数器方式。

它由TL的低5位和TH的8位构成13位的计数器,此时TL的高3位不用。

工作方式1:

工作方式1是16位的定时/计数器方式,将TMOD的M1M0设为“01”即可,其他特性与工作方式0相同。

工作方式2:

在工作方式2中,只有8位参与计数,而高8位是不参与计数的,用作预置数的存放,这样计数范围就小了,每当计数溢出,就会打开T0的高、低8位之间的开关,预置数就进入低8位。

当然这是由硬件自动完成的,不需要我们去操心。

通常工作方式2用于波特率发生器,对于这种用途,定时器就是为了提供一个时间基准,计数溢出后不需做任何的事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不能有任何的延迟,可见这个任务用这种工作方式来完成是最妙不过了。

工作方式3:

在这种工作方式下,T0被拆成2个独立的定时/计数器来用。

其中,TL0可以构成8位的定时器或计数器工作方式;

而TH0则只能作为定时器用,我们知道定时/计数器使用时需要有控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两个控制及溢出标记了,从何而来呢?

TL0还是用原来的T0的标记,而TH0则借用T1的标记,如此一来T1不是标记、控制可用了吗?

是的,在一般情况下,只有在T1以工作方式2运行时,才让T0工作于方式3。

(2)、定时1S

十字路口交通灯模拟控制器定时器采用工作方式1,先定时125MS,然后在定时中断程序中累加中断次数,8次为一秒,这样就可以起到定时1S的功能。

工作方式由工作方式控制寄存器(TMOD)决定,FR寄存器TMOD用于2个定时器/计数器T1/T0的工作方式设定,各位的含义表示如下:

GATE:

门控位,定义T1/T0的启动方式,

C/T-:

定时/计数功能选择位。

为“0”作定时器用;

为“1”,作计数器用。

M1M0:

工作方式选择位。

00方式013位计数器

01方式116位计数器

10方式2初值自动重装8位计数器

11方式32个8位计数器,仅适用于T0

由于十字路口交通灯模拟控制器设计采用6M晶振,因此定时125MS,可用下列语句实现。

工作方式1是16位计数结构的工作方式,计数器由TH全部8位和TL全部8位构成。

初始化如下:

MOVTMOD,#01

MOVTH0,#3CH

MOVTL0,#0B0H

定时1S在定时器0中断程序中完成,即计数八次为1S。

定时器中断初始化程序如下:

SETBEA;

开中断

SETBET;

定时器0允许中断

SETBTR;

开始定时、

 

中断流程图如下图:

(3)、中断的初始化步骤:

、要使用中断则首先必须中断中断允许。

、硬件的初始化:

设置引脚连接设置I/O口的输入输出。

3>

、软件的初始化:

设置中断寄存器,设置中断服务地址,清除中断标志,设置中断触发模式。

4>

、使能中断.

外中断程序:

对于外中断必须有中断的初始化程序、中断服务程序。

外中断是由外部原因引起的中断,有两个中断源,即外中断0和外中断1,中断请求信号由引脚P3.2和P3.3输入。

外中断请求信号弹有两种方式,一是电平方式,二是脉冲方式,可通过有关控制位的定义进行规定。

电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请示输入端采样到有效的低电平时,就会激活外部中断。

脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端电平进行采样中,如前一次为高,后一次为低即为有效中断请求。

这就要求在这种中断方式,中断请求信号的脉冲宽度必须大于一个机器周期,以保证电平变化能被单片机采样到。

(4)、中断控制寄存器的状态设置

设计中采用定时器中断,外中断0,外中断1。

定时器中断、外中断、串口中断控制如下,其中外中断0、1优先级最高,保证了应急通行的需求。

MOVSCON,#00H;

工作于工作方式0,既移位寄存器状态

SETBES;

开总中断

SETBET0;

开定时器中断

SETBTR0;

启动T0定时器

SETBIT0;

外中断0为脉冲触发方式

SETBIT1;

MOVIP,#05;

外中断0,1为高优先级

SETBEX0;

开个中断0

SETBEX1;

开外中断1

外中断程序逻辑流程:

(5)串口工作方式设计

(1)、串口有4种方式:

方式0、1、2、3,由串口控制寄存器SCON和PCON控制。

10方式0同步移位寄存器

11方式110位异步收发

20方式211位异步收发

31方式311位异步收发

十字路口交通灯模拟控制器串口设计

本例设计串口若悬河工作于工作方式0,即同步移位寄存器状态

串口工作方式0

传送数据语句如下:

MOVDPTR,#SEGTABI;

字形码0~9地址

MOVA,DIS-LB;

低位数据

MOVCA,@A+DPTR;

查表

MOVSBUF,A;

发送数据

DL1:

JNBTI,DLI;

查询是否发送完一个字节

CLRTI

(6)字形编码:

根据各管的接线形式,可分成共阴极型和共阳极型。

给LED数码管的七个发光二极管加不同的电平,二极管显示不同亮暗的组合就可以形成不同的字形,这种组合称之为字形码。

显示字型

H

G

F

E

D

C

B

A

共阴极字形码

共阳极字形码

1

0X3F

0XC0

0X06

0XF9

2

0X5B

0XA4

3

OX4F

0XB0

4

0X66

0X99

5

0X6D

0X92

6

0X7D

0X82

7

0X07

0XF8

8

0X7F

0X80

9

0X6F

OX90

四、源程序和重要注释说明:

DIS_LBEQU32H;

时间数据低位

DIS_HBEQU33H;

时间数据高位

E_PASSTEQU30;

东西方向绿灯通电时间

N_PASSTEQU20;

南北方向绿灯通电时间

FLASHTEQU5;

黄灯闪烁时间

SECOND_FEQU20H.0;

定时1S标志

INT0_FEQU20H.1;

外中断0标志位

INT1_FEQU20H.1;

外中断1标志位

ORG0000H

AJMPMAIN

ORG0003H;

外中断0入口地址

LJMPINT_0;

调至外中断0服务程序

ORG000BH;

T0中断入口

AJMPT0_INT;

调至T0服务程序

ORG0013H;

外中断1入口地址

调至外中断1服务程序

ORG0100H

MAIN:

;

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

MOVSP,#50H

MOVTMOD,#01;

定时器T0工作于方式1,定时125MS,开起定时器0中断

MOVTH0,#0BH

MOVTL0,#0DCH

MOVSCON,#00H;

串口工作于工作方式0,即移位寄存器状态

MOVIP,#05;

开外中断0

;

****************************************************

MOVR2,#0

MOV20H,#0

开始所有灯亮以便检测交通灯的好坏,亮一秒

MOVP1,#0FFH

SETBTR0

开启定时

JNBSECOND_F,$

CLRSECOND_F

********************************************************

T_LIGHT:

MOVR3,#E_PASST

F_STEP:

MOVP1,#24H;

东西亮绿灯,南北亮红灯,即P1

MOVA,R3

LCALLH_D;

调用十六-十进制程序

LCALLDIS;

调用显示程序

JNBINT0_F,LP11

AJMPF_STEP

LP11:

JNBINT1_F,LP12

AJMPT_STEP

LP12:

JNBSECOND_F,$;

显示上面数据1S

CJNER3,#0,F_STEP;

变化显示数据

****************************

MOVR3,#FLASHT;

东西亮绿灯,南北闪烁黄灯

S_STEP:

MOVA,R3

MOVP1,#22H

LCALLH_D

LCALLDIS

JNBINT0_F,LP21

是否第一次出现外中断0,是转东西亮绿灯,南北亮红灯,

否则检测外中断1信号是否第一次出现

LP21:

JNBINT1_F,LP22

AJMPT_STEP;

外中断1第一次出现转东西亮红灯,南北亮绿灯

LP22:

JNBSECOND_F,$;

CLRSECOND_F;

示出现外中断正常显示

CJNER3,#0,LP1

LP1:

MOVP1,#02H

CJNER3,#0,S_STEP

*********************************

T_STEP:

MOVR3,#N_PASST;

南北亮绿灯,东西亮红灯

LP2:

MOVP1,#81H

JNBINT0_F,LP31

LP31:

JNBINT1_F,LP32

LP32:

CLRSECOND_F

CJNER3,#0,LP2

南北亮绿灯,东西闪烁黄灯

FORTH_STEP:

MOVP1,#41H

JNBINT0_F,LP41

LP41:

JNBINT1_F,LP42

LP42:

JNBSECOND_F,$

CJNER3,#0,LP3

LJMPT_LIGHT

LP3:

MOVP1,#40H

CJNER3,#0,FORTH_STEP

***************************

十六到十式转换

H_D:

MOVB,#10

DIVAB

MOVDIS_HB,A

JNZLP5

MOVA,#10

LP5:

MOVA,B

MOVDIS_LB,A

RET

********************************

时间显示子程序,显示两位十进制数,发光显示共阳极

DIS:

MOVR7,#2

MOVR0,#DIS_LB

DL0:

MOVA,@R0

ADDA,#0BH

MOVCA,@A+PC

MOVSBUF,A

DL1:

JNBTI,DL1

INCR0

DJNZR7,DL0

SEGTAB:

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

T0_INT:

CLRTR0

MOVTL0,#0DCH

INCR2

CJNER2,#8,RETURN

SETBSECOND_F

DECR3

RETI

INT_0:

CLREX0;

关外中断

CLREX1

JNBINT0_F,INT0LP1;

检测外中断0信号是否第一次,是则置位

CLRINT0_F;

外中断0信号第二次出现,恢复数据,启动定时器0

MOVR3,40H

开外中断

AJMPINT0LP2

INT0LP1:

CLRTR0;

外中断0信号第一次出现,关定时器0清1S标志位

SETBINT0_F;

置位外中断0标志位

MOV40H,R3;

保存数据

MOVR3,#99;

送99S显示

INT0LP2:

INT_1:

CLREX0

JNBINT1_F,INT1LP1

CLRINT1_F

SETBEX0

AJMPINT1LP2

INT1LP1:

SETBINT1_F

MOV40H,R3

MOVR3,#99

INT1LP2:

SETBEX1

RETURN:

END

五、电路仿真原理图

六、PCB制版图

七、主程序流程图及状态显示图:

八、课程设计总结

通过这次的课程设计让我受益匪浅,设计中我把80C51,74LS240和74LS146结合起来,加上7段数码管用作显示通过51单片机进行定时和计数运用到很多联系,感觉自己的只是还是不够,所以在网上收集了很多大致的材料,进行借鉴和修改,从而我能深一步的了解控制的内容和方法,让知识连贯起来运用到实际的设计中。

通过这次的课程设计,让我受益匪浅,也让我了解和掌握了一些编程思想和对I/O接口的使用和应用的条件的思考,对单片机的各个管脚功能的理解和掌握。

实现了软件和硬件的有效结合,缺一不可。

设计让我把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论的是实践的基础,实践有能检验理论的正确性,更激发了我对专业知识的渴求,这些对我以后参加工作或者继续学习都会有很大的帮助和影响。

一个小小的单片机居然涵盖了如此之多,输入输出端口不说,还有显示部分。

用到中断、串行口、更使我对单片机的基本原理、单片机应用系统、开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

而作为一位学生,在对交通灯的设计中,因知识和经验的不足,只能通过模仿其它的编程思路,再加上一些自己的思想去完成这个设计,因此在各个方面都会有一些不足,敬请指正。

但我会在以后的学习中逐渐去完善、巩固我的单片机知识。

所谓理论联系实际,控油理论知识而没有去动手操作,学的再好也还是书本上的知识,只有运用到实际中我们才可以发现利用自己所学的知识的价值,通过此次的课程设计,我更加明白了自己的知识和操作的不足,所以应当多涉猎点相关的知识并动手去做,这样才能让知识成为自己的利剑,让他大放异彩!

参考文献

(1)、倪志莲.《单片机应用技术》,北京理工大学出版社。

(2)、徐根耀.《电子元器件与电子制作》。

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

当前位置:首页 > 职业教育 > 职高对口

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

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