1、实验三交通灯控制实验D南昌大学实验报告学生姓名:学 号: 专业班级:实验类型:验证 综合设计 创新 实验日期: 实验成绩:实验三交通灯控制实验掌握十字路口交通灯控制方法。.实验内容利用系统提供的双色LED显示电路,和四位静态数码管显示电路模拟十字路口交通信 号灯。4位LED数码管显示时间,LED显示红绿灯状态。3. 实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。4. 实验说明和电路原理图交通信号灯控制逻辑如下: 假设一个十字路口为东西南北走向。 开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20 秒) ,东西路口的绿灯 ,闪烁
2、若干次后( 3 秒),东西路口的绿灯熄灭,同时东西路口的黄灯 亮 , 延时一段时间后( 2 秒) , 东西路口的红灯亮 ,南北路口的绿灯亮 ,南北路口方向通车 ,延时 一段时间后( 20 秒) ,南北路口的绿灯闪烁若干次后( 3 秒) ,南北路口的绿灯熄灭,同时 南北路口的黄灯亮,延时一段时间后( 2 秒) ,再切换到东西路口的绿灯亮 ,南北路口的红灯 亮,之后重复以上过程。双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,共用负极,当红色 正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时, 绿灯亮;两端都加高电平时,黄灯亮。本实验需要用到 CPU
3、模块( 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)观察十字路口交通灯效果。七实验程序/*SECOND1EQU30H;东西秒寄存器SECOND2EQU31
4、H;南北秒寄存器DBUFEQU40H;显示缓冲 1TEMPEQU44H;显示缓冲 2LED_G1BITP1.0;东西绿灯LED_R1BITP1.1;东西红灯LED_G2BITP1.2;南北绿灯LED_R2BITP1.3;南北红灯DinBITP1.6;串行显示数据CLKBITP1.7;串行显示时钟ORG0000HLJMPSTARTORG0100HSTART:LCALLSTATE0;调用状态 0LCALLDELAY;调用延时MOVTMOD,#01H;置 T0 工作方式 1MOVTH0, #3CH;置 T0 定时初值 50mSMOVTL0, #0B0HSETBTR0;启动 T0CLREALOOP:
5、MOVMOVMOVMOVR2,#20R3,#20SECOND1,#25SECOND2,#25;置 1S 计数初值;红灯 20S;东西秒显示初值;南北秒显示初值50mS*20=1S25S25SLCALL DISPLAYLCALLSTATE1;调用状态 1WAIT1: JNBTF0,WAIT1;查询 50mS 到否CLRTF0MOVTH0, #3CH;恢复 T0 定时初值 50mSMOVTL0, #0B0HSETBTR0;启动 T0DJNZR2,WAIT1;判 1S 到否 ?未到继续状态 1MOVR2,#20;置 50mS 计数初值DECSECOND1;东西秒显示减一DECSECOND2;南北秒显
6、示减一LCALLDISPLAYDJNZR3,WAIT1;状态 1 维持 20S*MOVR2,#5;置 50mS 计数初值5*4=20MOVR3,#3;绿灯闪 3SMOVR4,#4;闪烁间隔 200mSMOVSECOND1,#5;东西秒显示初值5SMOVSECOND2,#5;南北秒显示初值5SLCALL DISPLAYWAIT2: LCALLSTATE2;调用状态 2JNBTF0,WAIT2;查询 50mS 到否CLRTF0MOVTH0, #3CH;恢复 T0 定时初值 50mSMOVTL0, #0B0HDJNZR4,WAIT2;判 200mS 到否 ?未到继续状态 2CPLLED_G1;东西绿
7、灯闪MOVR4,#4;闪烁间隔 200mSDJNZR2,WAIT2;判 1S 到否 ?未到继续状态 2MOVR2,#5;置 50mS 计数初值DECSECOND1;东西秒显示减一DECSECOND2;南北秒显示减一LCALLDISPLAYDJNZR3,WAIT2;状态 2 维持 3S*MOV R2,#20 ;置 50mS 计数初值MOV R3,#2 ;黄灯 2SMOVSECOND1,#2;东西秒显示初值2SMOVSECOND2,#2;南北秒显示初值2SLCALLDISPLAYWAIT3: LCALLSTATE3;调用状态 3JNBTF0,WAIT3;查询 30mS 到否CLRTF0MOVTH0
8、, #3CH;恢复 T0 定时初值50mSMOVTL0, #0B0HDJNZR2,WAIT3;判 1S 到否 ?未到继续状态 3MOVR2,#20;置 50mS 计数初值DECSECOND1;东西秒显示减一DECSECOND2;南北秒显示减一LCALLDISPLAYDJNZR3,WAIT3;状态 3 维持 2S*MOV R2,#20;置 50mS 计数初值MOVR3,#20 ;红灯 20SMOVSECOND1,#25 ;东西秒显示初值25SMOVSECOND2,#25 ;南北秒显示初值25SLCALLDISPLAYWAIT4: LCALLSTATE4;调用状态 4JNBTF0,WAIT4;查询
9、 50mS 到否CLRTF0MOVTH0, #3CH;恢复 T0 定时初值 50mSMOVTL0, #0B0HDJNZR2,WAIT4;判 1S 到否 ?未到继续状态 4MOVR2,#20;置 50mS 计数初值DECSECOND1;东西秒显示减一DECSECOND2;南北秒显示减一LCALLDISPLAYDJNZR3,WAIT4;状态 4 维持 20S*MOVR2,#5;置 50mS 计数初值5*4=20MOVR4,#4;闪烁间隔 200mSMOVR3,#3;绿灯闪 3SMOVSECOND1,#5;东西秒显示初值5SMOVSECOND2,#5;南北秒显示初值5SLCALLDISPLAYWAI
10、T5: LCALLSTATE5;调用状态 5JNBTF0,WAIT5;查询 50mS 到否CLRTF0MOVTH0, #3CH;恢复 T0 定时初值 100mSMOVTL0, #0B0HDJNZR4,WAIT5;判 200mS 到否 ?未到继续状态 5CPLLED_G2;南北绿灯闪MOVR4,#4;闪烁 200mSDJNZR2,WAIT5;判 1S 到否 ?未到继续状态 5MOVR2,#5;置 100mS 计数初值DECSECOND1;东西秒显示减一DECSECOND2;南北秒显示减一LCALLDISPLAYDJNZR3,WAIT5;状态 5 维持 3S*MOVR2,#20;置 50mS 计数
11、初值MOVR3,#2;黄灯 2SMOVSECOND1,#2;东西秒显示初值2SMOVSECOND2,#2;南北秒显示初值2SLCALLDISPLAYWAIT6: LCALLSTATE6;调用状态 6JNBTF0,WAIT6;查询 100mS 到否CLRTF0MOVTH0, #3CH;恢复 T0 定时初值 100mSMOVTL0, #0B0HDJNZR2,WAIT6;判 1S 到否 ?未到继续状态 6MOVR2,#20;置 100mS 计数初值DECSECOND1;东西秒显示减一DECSECOND2;南北秒显示减一LCALLDISPLAYDJNZR3,WAIT6;状态 6 维持 2SLJMPLO
12、OP;大循环STATE0:;状态 0MOVP1,#0CLRLED_G1SETBLED_R1;东西红灯亮CLRLED_G2SETBLED_R2;南北红灯亮RETSTATE1:;状态 1SETBLED_G1;东西绿灯亮CLRLED_R1CLRLED_G2SETBLED_R2;南北红灯亮RETSTATE2:;状态 2CLRLED_R1CLRLED_G2SETBLED_R2;南北红灯亮RETSTATE3:;状态 3SETBLED_G1SETBLED_R1;东西黄灯亮CLRLED_G2SETBLED_R2;南北红灯亮RETSTATE4:;状态 4CLRLED_G1SETBLED_R1;东西红灯亮SETB
13、LED_G2;南北绿灯亮CLRLED_R2RETSTATE5: ;状态 5CLR LED_G1SETB LED_R1 ;东西红灯亮CLR LED_R2RETSTATE6: ;状态 6CLR LED_G1SETB LED_R1 ;东西红灯亮SETB LED_G2SETB LED_R2 ;南北黄灯亮RETDISPLAY: ;数码显示MOVA, SECOND1;东西秒寄存器MOVB, #10;16 进制数拆成两个 10 进制数DIVABMOVDBUF+1,AMOVA,BMOVDBUF, AMOVA, SECOND2;南北秒寄存器MOVB, #10;16 进制数拆成两个DIVABMOVDBUF+3,
14、AMOVA,BMOVDBUF+2, AMOVR0,#DBUFMOVR1,#TEMPMOVR7,#4MOVDPTR,#LEDMAPMOVA,R0MOVCA,A+DPTRMOVR1,AINCR0INCR1DJNZR7,DP10MOVR0,#TEMPDP10:10 进制数MOVR1,#4DP12:MOVR7,#8MOVA,R0DP13:RLCAMOVDIN,CCLRCLKSETBCLKDJNZR7,DP13INCR0DJNZR1,DP12RETLEDMAP: DB3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5DB7DH,7,7FH,6FH,77H,7CH ;6,7 ,8,9,A
15、 ,BDB58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -Delay: movr5, #5DLoop0:movr6, #0DLoop1:movr7, #0DLoop2:NOPNOPdjnzr7, DLoop2djnzr6, DLoop1djnzr5, DLoop0retEND八实验现象及小结当程序开始运行时,东西绿灯亮,南北红灯亮,且持续的时间为 25 秒,数码管显示计 数器的当前值,当还剩三秒的时候,绿灯开始闪烁。计时到 0 时,东西转黄灯,时间为 5 秒,计满之后东西红灯, 南北绿灯。 南北方向上的情况与之前东西的情况一致。当南北黄灯 状态的计数值计满时,转回初始状态,完成一个循环。通过这次实验, 我了解到了用单片机实现综合功能的例子了。 很强大, 交通灯利用计数 器和控制 LED 灯,以及数码管的显示来实现交通灯的功能。程序中包含咧很多子程序,逐 一调用,并且按照一定的顺序调用, 使得整个程序变得有条有理。 在单片机的学习中, 程序 的编辑也是很有必要掌握的。 要做到利用最简洁的语言来实现最复杂的功能, 这是我们的目 标。而我们还需要更多的去练习。-可编辑修改 -可编辑修改 -THANKS !学习课件等等致力为企业和个人提供合同协议, 策划案计划书,打造全网一站式需求
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1