交通信号灯控制实验——单片机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:交通灯信号控制实验
一、实验目的:
1.学习P1口的使用方法;
2.学习延时子程序的编写;
3. 学习单片机的开发环境及流程。
二、实验内容及步骤:
以P1口作为输出口,控制6个发光二极管,模拟交通信号灯的管理。在实验仪上选择两组红、黄、绿指示灯,代表交通信号灯。
要求:设有一个十字路口为东西南北方向,其中东西方向为支路,南北方向为主路。初始状态为4个路口的红灯全亮。之后,南北路口的绿灯亮,东西路口的红灯亮。南北路口方向通车,延时20秒后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁5次后红灯亮。而同时东西方向路口的绿灯亮,东西方向开始通车,延时10秒后,东西路口的绿灯熄灭,而黄灯开始闪烁。闪烁5次后,再切换到南北路口的绿灯亮,东西路口的红灯亮。之后重复上述过程。
三、实验电路
四、程序流程图
五、单片机程序(*.lst文件)
A51 MACRO ASSEMBLER JIAOTONGDENG 04/17/2010 11:17:58 PAGE 1
MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN jiaotongdeng.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE jiaotongdeng.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 ORG 0000H
2
3
0000 759018 4 START: MOV P1,#00011000B
0003 1155 5 CALL DALY1 ;调用0.5s延时子程序
0005 7590DB 6 MOV P1,#11011011B
0008 1133 7 CALL DALY;调用20s子程序
000A 7805 8 MOV R0,#5H
000C 74DD 9 LOOP1: MOV A,#11011101B ;P1口状态
000E F590 10 MOV P1,A
0010 1155 11 CALL DALY1 ; 调用0.5s延时子程序
0012 74DF 12 MOV A,#11011111B
0014 F590 13 MOV P1,A
0016 1155 14 CALL DALY1 ;调用0.5s延时子程序
0018 D8F2 15 DJNZ R0,LOOP1
001A 747E 16 MOV A,#01111110B
001C F590 17 MOV P1,A
001E 1144 18 CALL DALY2 ;调用10s延时子程序0020 7805 19 MOV R0,#5H
0022 74BE 20 LOOP2: MOV A,#10111110B
0024 F590 21 MOV P1,A
0026 1155 22 CALL DALY1 ;调用0.5s延时子程序0028 74FE 23 MOV A,#11111110B
002A F590 24 MOV P1,A
002C 1155 25 CALL DALY1 ;调用0.5s延时子程序002E D8F2 26 DJNZ R0,LOOP2
0030 020000 27 LJMP START
28
29 ;20s延时子程序
0033 7C64 30 DALY:MOV R4,#100
0035 7B64 31 DELAY1:MOV R3,#100
0037 7A14 32 DELAY2:MOV R2,#20
0039 792D 33 DELAY3:MOV R1,#45
003B D9FE 34 DELAY4:DJNZ R1,DELAY4
003D DAFA35 DJNZ R2,DELAY3
003F DBF6 36 DJNZ R3,DELAY2
0041 DCF2 37 DJNZ R4,DELAY1
0043 22 38 RET
39
40 ;10s延时子程序
0044 7C64 41 DALY2:MOV R4,#100
0046 7B64 42 DEAY1:MOV R3,#100
0048 7A0A43 DEAY2:MOV R2,#10
004A 792D 44 DEAY3:MOV R1,#45
004C D9FE 45 DEAY4:DJNZ R1,DEAY4
004E DAFA46 DJNZ R2,DEAY3
0050 DBF6 47 DJNZ R3,DEAY2
0052 DCF2 48 DJNZ R4,DEAY1
0054 22 49 RET
50
51 ;0.5s延时子程序
0055 7C64 52 DALY1: MOV R4,#100
0057 7B64 53 DEY1: MOV R3,#100
0059 7A19 54 DEY2: MOV R2,#25
005B DAFE 55 DEY3: DJNZ R2,DEY3
005D DBFA56 DJNZ R3,DEY2
005F DCF6 57 DJNZ R4,DEY1
0061 22 58 RET
04/17/2010 11:17:58 PAGE 2
59
60 END
04/17/2010 11:17:58 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
六、实验总结及感想
本次实验主要学习了单片机的开发环境和程序调试及运行两种模式,并通过交通灯信号控制实验进行了实例演练。在实验过程中,我按照老师的要求,分别用调试和全速运行两种模式对该程序进行了操作。
实验过程中,我遇到的一个问题是在进行调试和运行两种模式的转换时,操作步骤存在不清楚、混乱的情况。Keil软件相关参数设置一旦出问题,就导致了程序的调试无法正常进行。在请教了老师以后我解决了这一问题。另外,在改变程序重新进行调试时,按RESET键也容易遗漏。今后的实验中我将特别注意以上几点。
交通灯信号控制实验程序较为简单,需要注意的问题是延时程序中计数值的设置。