实验三交通灯控制实验.docx

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

实验三交通灯控制实验.docx

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

实验三交通灯控制实验.docx

实验三交通灯控制实验

D南昌大学实验报告

学生姓名:

学号:

专业班级:

实验类型:

□验证□综合□设计□创新实验日期:

实验成绩:

实验三交通灯控制实验

掌握十字路口交通灯控制方法。

.实验内容

利用系统提供的双色LED显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。

4位LED数码管显示时间,LED显示红绿灯状态。

3.实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

4.实验说明和电路原理图

交通信号灯控制逻辑如下:

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

开始为四个路口的红灯

全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。

双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,共用负极,当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。

本实验需要用到CPU模块(F3区)、静态数码管/双色LED显示模块(B4区)实验框图如图:

5.实验预习要求

学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。

6.实验步骤

1)系统各跳线器处在初始设置状态。

P10同时接G1、G3;P11同时接R1、R3;P1.2同时接G2、G4;P1.3同时接R2、

R4;P1.6、P1.7分别接静态数码显示的DIN、CLK。

2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)观察十字路口交通灯效果。

七.实验程序

//*

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

SECOND1

EQU

30H

;东西秒寄存器

SECOND2

EQU

31H

;南北秒寄存器

DBUF

EQU

40H

;显示缓冲1

TEMP

EQU

44H

;显示缓冲2

LED_G1

BIT

P1.0

;东西绿灯

LED_R1

BIT

P1.1

;东西红灯

LED_G2

BIT

P1.2

;南北绿灯

LED_R2

BIT

P1.3

;南北红灯

Din

BIT

P1.6

;串行显示数据

CLK

BIT

P1.7

;串行显示时钟

ORG

0000H

LJMP

START

ORG

0100H

START:

LCALL

STATE0

;调用状态0

LCALL

DELAY

;调用延时

MOV

TMOD,#01H

;置T0工作方式1

MOV

TH0,#3CH

;置T0定时初值50mS

MOV

TL0,#0B0H

SETB

TR0

;启动T0

CLR

EA

 

LOOP:

MOV

MOV

MOV

MOV

R2,#20

R3,#20

SECOND1,#25

SECOND2,#25

;置1S计数初值

;红灯20S

;东西秒显示初值

;南北秒显示初值

50mS*20=1S

25S

25S

 

LCALLDISPLAY

LCALL

STATE1

;调用状态1

WAIT1:

JNB

TF0,WAIT1

;查询50mS到否

CLR

TF0

MOV

TH0,#3CH

;恢复T0定时初值50mS

MOV

TL0,#0B0H

SETB

TR0

;启动T0

DJNZ

R2,WAIT1

;判1S到否?

未到继续状态1

MOV

R2,#20

;置50mS计数初值

DEC

SECOND1

;东西秒显示减一

DEC

SECOND2

;南北秒显示减一

LCALL

DISPLAY

DJNZ

R3,WAIT1

;状态1维持20S

・***************************************************

MOV

R2,#5

;置50mS计数初值

5*4=20

MOV

R3,#3

;绿灯闪3S

MOV

R4,#4

;闪烁间隔200mS

MOV

SECOND1,#5

;东西秒显示初值

5S

MOV

SECOND2,#5

;南北秒显示初值

5S

LCALLDISPLAY

WAIT2:

LCALL

STATE2

;调用状态2

JNB

TF0,WAIT2

;查询50mS到否

CLR

TF0

MOV

TH0,#3CH

;恢复T0定时初值50mS

MOV

TL0,#0B0H

DJNZ

R4,WAIT2

;判200mS到否?

未到继续状态2

CPL

LED_G1

;东西绿灯闪

MOV

R4,#4

;闪烁间隔200mS

DJNZ

R2,WAIT2

;判1S到否?

未到继续状态2

MOV

R2,#5

;置50mS计数初值

DEC

SECOND1

;东西秒显示减一

DEC

SECOND2

;南北秒显示减一

LCALL

DISPLAY

DJNZ

R3,WAIT2

;状态2维持3S

・***************************************************

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

MOVR3,#2;黄灯2S

MOV

SECOND1,#2

;东西秒显示初值

2S

MOV

SECOND2,#2

;南北秒显示初值

2S

LCALL

DISPLAY

WAIT3:

LCALL

STATE3

;调用状态3

JNB

TF0,WAIT3

;查询30mS到否

CLR

TF0

MOV

TH0,#3CH

;恢复T0定时初值

50mS

MOV

TL0,#0B0H

DJNZ

R2,WAIT3

;判1S到否?

未到继续状态3

MOV

R2,#20

;置50mS计数初值

DEC

SECOND1

;东西秒显示减一

DEC

SECOND2

;南北秒显示减一

LCALL

DISPLAY

DJNZ

R3,WAIT3

;状态3维持2S

・***************************************************

MOVR2,#20

;置50mS计数初值

MOV

R3,#20;红灯20S

MOV

SECOND1,#25;东西秒显示初值

25S

MOV

SECOND2,#25;南北秒显示初值

25S

LCALL

DISPLAY

WAIT4:

LCALL

STATE4

;调用状态4

JNB

TF0,WAIT4

;查询50mS到否

CLR

TF0

MOV

TH0,#3CH

;恢复T0定时初值50mS

MOV

TL0,#0B0H

DJNZ

R2,WAIT4

;判1S到否?

未到继续状态4

MOV

R2,#20

;置50mS计数初值

DEC

SECOND1

;东西秒显示减一

DEC

SECOND2

;南北秒显示减一

LCALL

DISPLAY

DJNZ

R3,WAIT4

;状态4维持20S

・***************************************************

MOV

R2,#5

;置50mS计数初值

5*4=20

MOV

R4,#4

;闪烁间隔200mS

MOV

R3,#3

;绿灯闪3S

MOV

SECOND1,#5

;东西秒显示初值

5S

MOV

SECOND2,#5

;南北秒显示初值

5S

LCALL

DISPLAY

WAIT5:

LCALL

STATE5

;调用状态5

JNB

TF0,WAIT5

;查询50mS到否

CLR

TF0

MOV

TH0,#3CH

;恢复T0定时初值100mS

MOV

TL0,#0B0H

DJNZ

R4,WAIT5

;判200mS到否?

未到继续状态5

CPL

LED_G2

;南北绿灯闪

MOV

R4,#4

;闪烁200mS

DJNZ

R2,WAIT5

;判1S到否?

未到继续状态5

MOV

R2,#5

;置100mS计数初值

DEC

SECOND1

;东西秒显示减一

DEC

SECOND2

;南北秒显示减一

LCALL

DISPLAY

DJNZ

R3,WAIT5

;状态5维持3S

・***************************************************

MOV

R2,#20

;置50mS计数初值

MOV

R3,#2

;黄灯2S

MOV

SECOND1,#2

;东西秒显示初值

2S

MOV

SECOND2,#2

;南北秒显示初值

2S

LCALL

DISPLAY

WAIT6:

LCALL

STATE6

;调用状态6

JNB

TF0,WAIT6

;查询100mS到否

CLR

TF0

MOV

TH0,#3CH

;恢复T0定时初值100mS

MOV

TL0,#0B0H

DJNZ

R2,WAIT6

;判1S到否?

未到继续状态6

MOV

R2,#20

;置100mS计数初值

DEC

SECOND1

;东西秒显示减一

DEC

SECOND2

;南北秒显示减一

LCALL

DISPLAY

DJNZ

R3,WAIT6

;状态6维持2S

LJMP

LOOP

;大循环

STATE0:

;状态0

MOV

P1,#0

CLR

LED_G1

SETB

LED_R1

;东西红灯亮

CLR

LED_G2

SETB

LED_R2

;南北红灯亮

RET

STATE1:

;状态1

SETB

LED_G1

;东西绿灯亮

CLR

LED_R1

CLR

LED_G2

SETB

LED_R2

;南北红灯亮

RET

STATE2:

;状态2

CLR

LED_R1

CLR

LED_G2

SETB

LED_R2

;南北红灯亮

RET

STATE3:

;状态3

SETB

LED_G1

SETB

LED_R1

;东西黄灯亮

CLR

LED_G2

SETB

LED_R2

;南北红灯亮

RET

STATE4:

;状态4

CLR

LED_G1

SETB

LED_R1

;东西红灯亮

SETB

LED_G2

;南北绿灯亮

CLR

LED_R2

RET

STATE5:

;状态5

CLRLED_G1

SETBLED_R1;东西红灯亮

CLRLED_R2

RET

STATE6:

;状态6

CLRLED_G1

SETBLED_R1;东西红灯亮

SETBLED_G2

SETBLED_R2;南北黄灯亮

RET

DISPLAY:

;数码显示

MOV

A,SECOND1

;东西秒寄存器

MOV

B,#10

;16进制数拆成两个10进制数

DIV

AB

MOV

DBUF+1,A

MOV

A,B

MOV

DBUF,A

MOV

A,SECOND2

;南北秒寄存器

MOV

B,#10

;16进制数拆成两个

DIV

AB

MOV

DBUF+3,A

MOV

A,B

MOV

DBUF+2,A

MOV

R0,#DBUF

MOV

R1,#TEMP

MOV

R7,#4

MOV

DPTR,#LEDMAP

MOV

A,@R0

MOVC

A,@A+DPTR

MOV

@R1,A

INC

R0

INC

R1

DJNZ

R7,DP10

MOV

R0,#TEMP

DP10:

10进制数

MOV

R1,#4

 

DP12:

MOV

R7,#8

MOV

A,@R0

DP13:

RLC

A

MOV

DIN,C

CLR

CLK

SETB

CLK

DJNZ

R7,DP13

INC

R0

DJNZ

R1,DP12

RET

LEDMAP:

DB

3FH,6,5BH,4FH,66H,6DH;0

,1,2,3,4,5

DB

7DH,7,7FH,6FH,77H,7CH;6

,7,8,9,A,B

DB

58H,5EH,7BH,71H,0,40H;C

,D,E,F,,-

Delay:

mov

r5,#5

DLoop0:

mov

r6,#0

DLoop1:

mov

r7,#0

DLoop2:

NOP

NOP

djnz

r7,DLoop2

djnz

r6,DLoop1

djnz

r5,DLoop0

ret

END

八.实验现象及小结

当程序开始运行时,东西绿灯亮,南北红灯亮,且持续的时间为25秒,数码管显示计数器的当前值,当还剩三秒的时候,绿灯开始闪烁。

计时到0时,东西转黄灯,时间为5秒,计满之后东西红灯,南北绿灯。

南北方向上的情况与之前东西的情况一致。

当南北黄灯状态的计数值计满时,转回初始状态,完成一个循环。

通过这次实验,我了解到了用单片机实现综合功能的例子了。

很强大,交通灯利用计数器和控制LED灯,以及数码管的显示来实现交通灯的功能。

程序中包含咧很多子程序,逐一调用,并且按照一定的顺序调用,使得整个程序变得有条有理。

在单片机的学习中,程序的编辑也是很有必要掌握的。

要做到利用最简洁的语言来实现最复杂的功能,这是我们的目标。

而我们还需要更多的去练习。

-可编辑修改-

-可编辑修改-

THANKS!

!

!

学习课件等等

致力为企业和个人提供合同协议,策划案计划书,

打造全网一站式需求

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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