交通灯程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PC1\PB1-b,
PC2\PB2-c,
PC3\PB3-d,
PC4\PB4-e,
PC5\PB5-f,
PC6\PB6-g
PC7\PB7 -SP接地
显示数值
dop g f e d c b a
驱动代码(16进制)
0
0 0 1 1 1 1 1 1
3FH
1
0 0 0 0 0 1 1 0
06H
2
0 1 0 1 1 0 1 1
通过仿真运行及其结果可知,此次课程设计基本上实现了每个方向有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口剩余时间,正常运行时间为60S。级上图4.3.1为系统仿真正常运行的仿真结果图,而4.3.3为60S后系统自动回复正常管理的仿真结果图。在特种车辆如119、120通过路口时,系统可通过中断请求自动转为特种车辆放行,也就是仿真图4.3.2上的LED全部为红灯亮,而其他车辆禁止通行的状态,15S后系统自动恢复正常管理,即仿真图4.3.4,图中为黄灯全亮,即为等待时间。
SETB EX1
SETB EA
MOV P0,#80H
MOV DPTR,#0700H
MOV R5,#0
SETB P2.2
(2)对于紧急情况的处理,使用中断INT0来控制,,为了保护现场,先把用到相关的寄存器入栈。
ORG 0003H
LJMP EMERGENCY
EMERGENCY: PUSH A
MOV A,R0
3电路设计
3.1电路原理图
3.2 单元电路设计
8255输出信号与数码管的连接:
LED的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如SP,g,f,e,d,c,b,a管角上加上7FH所以SP上为0伏,不亮其余为TTL高电平,全亮则显示为8.采用共阴级连接:
其中PC0\PB0-a,
5总结
通过本次课程设计,我对单片机这门课程有了更深的了解。基本上掌握了用单片机原理来实现交通灯控制电路的设计,充分利用了80C51芯片的I/O引脚来实现系统每个方向有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口剩余时间,正常运行须时间自定为60S。在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行的状态,15S后系统自动恢复正常管理。这次课程设计是我加深了对单片机原理与应用得理解,进一步提高了我的动手实践能力,为以后的专业学习打下了坚实的基础。然而在此次课程设计中任然存在许多的问题,电路原理图的链接,实际操作仿真,以及源程序的代码书写,尽管大体上正确,可是仍有不少的细节值得我注意。希望自己在以后的学习与实际操作中,能够引以为鉴,进一步提高自己的实践能力,完成好任务。
MOV A,R4
MOVC A,@A+DPTR
MOV P0,A
INC R4
RET
;数据应用表
ORG 0700H
HALT: DB 0D7H,28H,0E8H,15H,7DH,82H,0AEH,51H
DB 59H,58H,57H,56H,55H,54H,53H,52H,51H,50H
DB 49H,48H,47H,46H,45H,44H,43H,42H,41H,40H
PUSH A
MOV A,R1
PUSH A
MOV A,R2
PUSH A
……
MOV DPTR,#0000H
……
POP A
MOV R2,A
POP A
MOV R1,A
POP A
MOV R0,A
POP A
MOV DPTR,#0000H
MOVX @DPTR,A
MOV DPTR,#0100H
MOVX @DPTR,A
MOV P1,#0FFH
YELLOW: LCALL START
LCALL COUNT
CJNE R0,#0,YELLOW
MOV P1,#0
CJNE R5,#8,CONFIRM
LJMP MAIN
;60秒与30秒延时判初始化程序
DELAY: JNB P2.2,DELAY60
MOV R4,#8
MOV R0,#60
CLR P2.0
CLR P2.1
MOVC A,@A+DPTR
MOV P0,A
INC R5
MOV A,R5
SETB P2.0
MOVC A,@A+DPTR
MOV P0,A
INC R5
LCALL DELAY
REDANDGREEN: LCALL START
LCALL COUNT
CJNE R0,#3,REDANDGREEN
参考文献
[1]张毅坤.单片微型计算机原理及应用,西安电子科技大学出版社,1998
[2]余锡存,曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.
[3]雷丽文等.微机原理与接口技术[M].北京:电子工业出版社,1997.
[4]张俊谟.单片机中级教程—原理与应用[M].北京航空和航天出版社,2006.
CHANGE: CPL P2.2
RETI
;主程序
MAIN: MOV IP,#01H
SETB IT0
SETB EX0
SETB ET0
SETB IT1
SETB EX1
SETB EA
MOV P0,#80H
MOV DPTR,#0700H
MOV R5,#0
SETB P2.2
MOV P1,#0
CONFIRM: MOV A,R5
SETB P2.1
MOV P0,#15H
RET
;15延时程序
START: MOV R1,#250
READY: MOV R2,#100
GO: MOV R3,#10
LP: DJNZ R3,LP
DJNZ R2,GO
DJNZ R1,READY
DEC R0
RET
;计数程序
COUNT: MOV DPTR,#0700H
DB 39H,38H,37H,36H,35H,34H,33H,32H,31H,30H
DB 29H,28H,27H,26H,25H,24H,23H,22H,21H,20H
DB 19H,18H,17H,16H,15H,14H,13H,12H,11H,10H
DB 9H,8H,7H,6H,5H,4H,3H,2H,1H,00H
POP A
MOV R4,A
POP A
MOV R3,A
POP A
MOV R2,A
POP A
MOV R1,A
POP A
MOV R0,A
POP A
MOV DPTR,#0000H
MOVX @DPTR,A
MOV DPTR,#0100H
MOVX @DPTR,A
MOV DPTR,#0700H
RETI
;60秒与30秒转换程序
END
5 系统仿真
5.1系统仿真过程
(1)60s正常情况仿真图
4.3.160s正常情况仿真图
(2)15s特种车辆通过仿真图
4.3.2 15s特种车辆通过仿真图
(3)60s后自动恢复仿真图
4.3.3 60s后自动恢复仿真图
(4)15s后自动恢复仿真图
4.3.415s后自动恢复仿真图
5.2 仿真结果分析
MOV DPTR,#0100H
MOVX @DPTR,A
LCALL DELAY15
REDDELAY:LCALL START
LCALL COUNT
CJNE R0,#3,REDDELAY
MOV P1,#0FFH
FLASH:LCALL START
LCALL COUNT
CJNE R0,#0,YELLOW
MOV P1,#0
5BH
3
0 1 0 0 1 1 1 1
4FH
4
0 1 1 0 0 1 1 0
66H
5
0 1 1 0 1 1 0 0
6DH
6
0 1 1 1 1 1 0 0
7DH
7
0 0 0 0 0 1 1 1
07H
8
0 1 1 1 1 1 1 1
7FH
驱动代码表3.1.3
4 程序设计
4.1程序流程设计
(1)如图4.1所示系统流程图
图4.1系统流程图
(2)如图4.2所示紧急处理流程图
图3.2紧急中断处理程
(3)如图4.3所示倒计时判断转换流程图
图4.3倒计时判断转换流程图
4.2程序设计源代码
4.1分析和设计
(1)给中断安排优先级后,立即打开中断,并设置好8255的控制字。
MOV IP,#01H
SETB IT0
SETB EX0
SETB IT1
1 前言
用8255控制十字路口的交通灯每个方向有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口剩余时间,正常运行时间为60S。在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行的状态,15S后系统自动恢复正常管理。还可实现30s与60s通行管理转换等功能。此设计以单片机为控制核心,实现了硬件电路的设计、程序设计,并能够在PROTEUS平台实现仿真。
ORG 0013H
LJMP CHANGE
;紧急中断程序
ORG 0030H
EMERGENCY:PUSH A
MOV A,R0
PUSH A
MOV A,R1
PUSH A
MOV A,R2
PUSH A
MOV A,R3
PUSH A
MOV A,R4
PUBaidu NhomakorabeaH A
MOV DPTR,#0000H
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#0700H
RETI
4.2具体代码实现
用8051控制8255对交通灯进行控制,要求有120与119紧急处理,还要有60秒与30秒倒计时处理。
设置主程序入口
ORG 0000H
LJMP MAIN
;设置紧急处理入口
ORG 0003H
LJMP EMERGENCY
;设置60秒与30秒转换入口
2 方案设计
2.1设计任务
(1)实现交通灯的循环显示
(2)显示正常情况下的红、黄、绿灯所亮的剩余时间和特殊情况下计时牌显示AA;
(3)编写程序代码;
(4)程序分析与调试。
2.2 工程方案
此方案克根据以下流程来实行:在WINDOWS2000/XP系统中操作,用C语言或汇编语言实现程序设计,画出交通灯的流程图,具体分析系统各个模块用相应函数调用的实现。再用 proteus电子设计软件来绘制电路原理图,然后Proteus仿真软件中进行编译仿真。最后进行仿真结果分析,以及此次课程设计总结。
CLR P2.0
SETB P2.1
MOV P0,#60H
RET
;30秒延时状态初始化程序
DELAY60: MOV R4,#38
MOV R0,#30
CLR P2.0
SETB P2.1
MOV P0,#30H
RET
;15秒延时状态初始化程序
DELAY15: MOV R4,#53
MOV R0,#15
CLR P2.0
PC2\PB2-c,
PC3\PB3-d,
PC4\PB4-e,
PC5\PB5-f,
PC6\PB6-g
PC7\PB7 -SP接地
显示数值
dop g f e d c b a
驱动代码(16进制)
0
0 0 1 1 1 1 1 1
3FH
1
0 0 0 0 0 1 1 0
06H
2
0 1 0 1 1 0 1 1
通过仿真运行及其结果可知,此次课程设计基本上实现了每个方向有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口剩余时间,正常运行时间为60S。级上图4.3.1为系统仿真正常运行的仿真结果图,而4.3.3为60S后系统自动回复正常管理的仿真结果图。在特种车辆如119、120通过路口时,系统可通过中断请求自动转为特种车辆放行,也就是仿真图4.3.2上的LED全部为红灯亮,而其他车辆禁止通行的状态,15S后系统自动恢复正常管理,即仿真图4.3.4,图中为黄灯全亮,即为等待时间。
SETB EX1
SETB EA
MOV P0,#80H
MOV DPTR,#0700H
MOV R5,#0
SETB P2.2
(2)对于紧急情况的处理,使用中断INT0来控制,,为了保护现场,先把用到相关的寄存器入栈。
ORG 0003H
LJMP EMERGENCY
EMERGENCY: PUSH A
MOV A,R0
3电路设计
3.1电路原理图
3.2 单元电路设计
8255输出信号与数码管的连接:
LED的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如SP,g,f,e,d,c,b,a管角上加上7FH所以SP上为0伏,不亮其余为TTL高电平,全亮则显示为8.采用共阴级连接:
其中PC0\PB0-a,
5总结
通过本次课程设计,我对单片机这门课程有了更深的了解。基本上掌握了用单片机原理来实现交通灯控制电路的设计,充分利用了80C51芯片的I/O引脚来实现系统每个方向有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口剩余时间,正常运行须时间自定为60S。在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行的状态,15S后系统自动恢复正常管理。这次课程设计是我加深了对单片机原理与应用得理解,进一步提高了我的动手实践能力,为以后的专业学习打下了坚实的基础。然而在此次课程设计中任然存在许多的问题,电路原理图的链接,实际操作仿真,以及源程序的代码书写,尽管大体上正确,可是仍有不少的细节值得我注意。希望自己在以后的学习与实际操作中,能够引以为鉴,进一步提高自己的实践能力,完成好任务。
MOV A,R4
MOVC A,@A+DPTR
MOV P0,A
INC R4
RET
;数据应用表
ORG 0700H
HALT: DB 0D7H,28H,0E8H,15H,7DH,82H,0AEH,51H
DB 59H,58H,57H,56H,55H,54H,53H,52H,51H,50H
DB 49H,48H,47H,46H,45H,44H,43H,42H,41H,40H
PUSH A
MOV A,R1
PUSH A
MOV A,R2
PUSH A
……
MOV DPTR,#0000H
……
POP A
MOV R2,A
POP A
MOV R1,A
POP A
MOV R0,A
POP A
MOV DPTR,#0000H
MOVX @DPTR,A
MOV DPTR,#0100H
MOVX @DPTR,A
MOV P1,#0FFH
YELLOW: LCALL START
LCALL COUNT
CJNE R0,#0,YELLOW
MOV P1,#0
CJNE R5,#8,CONFIRM
LJMP MAIN
;60秒与30秒延时判初始化程序
DELAY: JNB P2.2,DELAY60
MOV R4,#8
MOV R0,#60
CLR P2.0
CLR P2.1
MOVC A,@A+DPTR
MOV P0,A
INC R5
MOV A,R5
SETB P2.0
MOVC A,@A+DPTR
MOV P0,A
INC R5
LCALL DELAY
REDANDGREEN: LCALL START
LCALL COUNT
CJNE R0,#3,REDANDGREEN
参考文献
[1]张毅坤.单片微型计算机原理及应用,西安电子科技大学出版社,1998
[2]余锡存,曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.
[3]雷丽文等.微机原理与接口技术[M].北京:电子工业出版社,1997.
[4]张俊谟.单片机中级教程—原理与应用[M].北京航空和航天出版社,2006.
CHANGE: CPL P2.2
RETI
;主程序
MAIN: MOV IP,#01H
SETB IT0
SETB EX0
SETB ET0
SETB IT1
SETB EX1
SETB EA
MOV P0,#80H
MOV DPTR,#0700H
MOV R5,#0
SETB P2.2
MOV P1,#0
CONFIRM: MOV A,R5
SETB P2.1
MOV P0,#15H
RET
;15延时程序
START: MOV R1,#250
READY: MOV R2,#100
GO: MOV R3,#10
LP: DJNZ R3,LP
DJNZ R2,GO
DJNZ R1,READY
DEC R0
RET
;计数程序
COUNT: MOV DPTR,#0700H
DB 39H,38H,37H,36H,35H,34H,33H,32H,31H,30H
DB 29H,28H,27H,26H,25H,24H,23H,22H,21H,20H
DB 19H,18H,17H,16H,15H,14H,13H,12H,11H,10H
DB 9H,8H,7H,6H,5H,4H,3H,2H,1H,00H
POP A
MOV R4,A
POP A
MOV R3,A
POP A
MOV R2,A
POP A
MOV R1,A
POP A
MOV R0,A
POP A
MOV DPTR,#0000H
MOVX @DPTR,A
MOV DPTR,#0100H
MOVX @DPTR,A
MOV DPTR,#0700H
RETI
;60秒与30秒转换程序
END
5 系统仿真
5.1系统仿真过程
(1)60s正常情况仿真图
4.3.160s正常情况仿真图
(2)15s特种车辆通过仿真图
4.3.2 15s特种车辆通过仿真图
(3)60s后自动恢复仿真图
4.3.3 60s后自动恢复仿真图
(4)15s后自动恢复仿真图
4.3.415s后自动恢复仿真图
5.2 仿真结果分析
MOV DPTR,#0100H
MOVX @DPTR,A
LCALL DELAY15
REDDELAY:LCALL START
LCALL COUNT
CJNE R0,#3,REDDELAY
MOV P1,#0FFH
FLASH:LCALL START
LCALL COUNT
CJNE R0,#0,YELLOW
MOV P1,#0
5BH
3
0 1 0 0 1 1 1 1
4FH
4
0 1 1 0 0 1 1 0
66H
5
0 1 1 0 1 1 0 0
6DH
6
0 1 1 1 1 1 0 0
7DH
7
0 0 0 0 0 1 1 1
07H
8
0 1 1 1 1 1 1 1
7FH
驱动代码表3.1.3
4 程序设计
4.1程序流程设计
(1)如图4.1所示系统流程图
图4.1系统流程图
(2)如图4.2所示紧急处理流程图
图3.2紧急中断处理程
(3)如图4.3所示倒计时判断转换流程图
图4.3倒计时判断转换流程图
4.2程序设计源代码
4.1分析和设计
(1)给中断安排优先级后,立即打开中断,并设置好8255的控制字。
MOV IP,#01H
SETB IT0
SETB EX0
SETB IT1
1 前言
用8255控制十字路口的交通灯每个方向有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口剩余时间,正常运行时间为60S。在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行的状态,15S后系统自动恢复正常管理。还可实现30s与60s通行管理转换等功能。此设计以单片机为控制核心,实现了硬件电路的设计、程序设计,并能够在PROTEUS平台实现仿真。
ORG 0013H
LJMP CHANGE
;紧急中断程序
ORG 0030H
EMERGENCY:PUSH A
MOV A,R0
PUSH A
MOV A,R1
PUSH A
MOV A,R2
PUSH A
MOV A,R3
PUSH A
MOV A,R4
PUBaidu NhomakorabeaH A
MOV DPTR,#0000H
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#0700H
RETI
4.2具体代码实现
用8051控制8255对交通灯进行控制,要求有120与119紧急处理,还要有60秒与30秒倒计时处理。
设置主程序入口
ORG 0000H
LJMP MAIN
;设置紧急处理入口
ORG 0003H
LJMP EMERGENCY
;设置60秒与30秒转换入口
2 方案设计
2.1设计任务
(1)实现交通灯的循环显示
(2)显示正常情况下的红、黄、绿灯所亮的剩余时间和特殊情况下计时牌显示AA;
(3)编写程序代码;
(4)程序分析与调试。
2.2 工程方案
此方案克根据以下流程来实行:在WINDOWS2000/XP系统中操作,用C语言或汇编语言实现程序设计,画出交通灯的流程图,具体分析系统各个模块用相应函数调用的实现。再用 proteus电子设计软件来绘制电路原理图,然后Proteus仿真软件中进行编译仿真。最后进行仿真结果分析,以及此次课程设计总结。
CLR P2.0
SETB P2.1
MOV P0,#60H
RET
;30秒延时状态初始化程序
DELAY60: MOV R4,#38
MOV R0,#30
CLR P2.0
SETB P2.1
MOV P0,#30H
RET
;15秒延时状态初始化程序
DELAY15: MOV R4,#53
MOV R0,#15
CLR P2.0