项目设计报告
项目名称: 简易交通灯控制系统的设计
课 程 名 称: 单片机应用工程技术训练 学 院: 机电学院 专 业: 机械工程及自动化
学 号: *************/22/37 姓 名: 张梦迪 张博文 崔剑锋 成 绩:
2013年06月 04日
1、设计任务与要求
1.1.设计任务
设计基于51单片机的交通灯控制系统。
1.2. 设计要求
基本功能: (1)设计程序能够控制红灯、黄灯和绿灯的切换。假设十字路口为东西南北走向,南北方向为主干道,东西方向为辅干道,主干道通行时间长于辅干道。要求按表1实现过程控制。
交通灯控制顺序要求如表1所示
表1. 交通灯控制顺序要求 过程顺序 1 2 3 4 5 6 7 8
红绿灯状态 东西红灯,南北红灯 南北绿灯,东西红灯 南北绿灯闪烁3次,东西红灯 南北黄灯,东西红灯 南北红灯,东西绿灯 南北红灯,东西绿灯闪烁3次 南北红灯,东西黄灯 转过程2,循环执行 时 间 10秒 40秒 闪烁间隔1秒 4秒 30秒 闪烁间隔1秒 4秒 (2)应用两位动态显示的LED显示器倒计时显示通行时间,总时间应包含绿灯闪烁和黄灯亮的时间。
(3)当绿灯闪烁和黄灯亮时,蜂鸣器发声提示。 扩展功能:
处理紧急状况,由按键引发外部中断进入紧急状况。在紧急状况下东西、南北均为红灯,15秒钟后恢复进入紧急状况之前的正常运行状态。
1.3 材料清单
本设计中所需的材料如表2所示:
表2. 材料清单
序号 数量 直流电机的控制 1 2 1 4 交通灯模拟模块 独立式按键 规格
2、整体方案设计
单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本
上可以指挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。本系统在此基础上,加入了紧急情况处理与时间调整功能。
LED数码管 最小系统 外围接口电路 单片机 按键 控制电路 红黄绿信号灯
图1. 系统的总体框图
3、硬件设计
3.1 交通灯模组
本系统中使用的所使用的交通灯系统为凌阳科技股份有限公司生产的交通灯模组V3.0。
本系统为一套交通灯系统:包括一块驱动电路板(交通灯模组V3.0_驱动板)和四块LED板(交通灯模组V3.0_LED板)。
1)LED板中每个方向提供四组交通LED灯(包括左转、直行、右转、人行道四组),每组交通灯包括红、黄、绿三个灯,可以实现交通的通行控制;
2)LED板中每个方向提供两个数码管,可以实现100以内的倒计时。 本系统包含一块驱动板和四块LED板,驱动板框图如图 2.1:其中J1、J2、J3、J4为LED板的插接口,使用时可以直接把四块LED板插接在驱动板上;J5、J6、J7是单片机的接口,使用时可以直接用3根10pin排线与单片机连接;驱动电路模块用来驱动LED灯和数码管。驱动板结构框图如图2所示,交通灯模组电路图及单片机的接口电路如图3所示。
图2. 交通灯模组V3.0_驱动板结构框图
3.2 按键设计
本设计中要求用按键实现紧急状态触发与解除,所以使用独立式按键实现。按键部分电路图如图4所示。
图4. 按键部分电路图
3.3 功率驱动电路
对单片机发出的脉冲信号进行放大,来支持交通灯模组的运转。
功率驱动电路如图5所示。
图5. 驱动电路图
3.4 交通灯模组电路
使用交通灯模组来实现简易交通灯的控制。交通灯模组电路如图6所示。
图6. 交通灯模组电路
3.5 蜂鸣器部分
在东西和南北向绿灯闪烁和黄灯亮时,蜂鸣器响以提醒行人。蜂鸣器部分电路图如图7所示。
图7. 蜂鸣器电路图
4、 软件设计
4.1 程序主体设计流程
本设计的主体思路是:采用顺序控制,每个状态设置相应的标志位,分别写出每个状态LED灯和数码管显示的情况,当定时中断来临后,判断是否改变状态;若进入下一个状态,则改变相对应的变量,反之则循环执行显示子程序。
4.2 主程序设计
主程序中主要是进行系统的初始化,设置系统相应的标志位,判断是否中断,并且调用相应的子程序。主程序流程图如图8所示。
开始程序初始化是否为标志位1NY启动标志位1Y是否为标志位2NY启动标志位2是否为标志位3NY启动标志位3是否为标志位4NY启动标志位4是否为标志位5NY启动标志位5是否为标志位6NY启动标志位6是否为标志位7N启动标志位7返回
图8. 主程序流程图
4.3 定时器子程序设计
定时器可以使用查双字表,也可以通过设定一个基本定时时间再循环来实
现。在本次设计中,使用第二种定时方案比较简单;再根据定时器四种工作方式以及本次设计的要求,所以使用定时器0,工作方式TMOD=1,根据所需定时时间的分析,设定定时器的基本定时时间为t=50ms,计算计数初值:
X=216-50*10-3*12*106/12=63163=3CB0H,即定时器初值为:TH1=3CH TL1=0B0H
定时器子程序流程图如图10所示
进入N判断1S时间是否到Y判断处于哪种状态执行相应状态倒计时修改变量
图10. 定时器部分流程图
4.4 显示子程序设计
显示子程序中,实现LED灯的亮灭以及数码管的倒计时显示,数码管的显示采用动态显示。显示子程序流程图如图9所示。
进入取南北向显示数字取显示数字个位,查表并送显取十位,查表并送显取东西向显示数字取个位,查表并送显取十位,查表并送显判断处于哪种状态显示相应状态的LED灯返回
图9. 显示子程序流程图
5、 系统调试及结果
5.1列出调试内容、调试方法以及具体步骤
调试内容及具体操作控制方法如下:
当程序开始执行时,各个路口的灯及显示器显示按照表3所示进行变化。 其中数码管显示使用倒计时 表3. 交通灯控制顺序 过程顺序 1 2 3 4 5 6 7 8 红绿灯状态 东西红灯,南北红灯 南北绿灯,东西红灯 南北绿灯闪烁3次,东西红灯 南北黄灯,东西红灯 南北红灯,东西绿灯 南北红灯,东西绿灯闪烁3次 南北红灯,东西黄灯 转过程2,循环执行 时 间 10秒 40秒 闪烁间隔1秒 4秒 30秒 闪烁间隔1秒 4秒
具体调试方法为断点调试方法,单步执行。
5.2说明调试中出现的问题及解决方法
1. 在实现灯闪烁的时候,一开始不知道如何实现,后来经过讨论,决定用查表方式来实现灯闪烁。
2. 数码管显示的数字一开始变化太慢,为了节省时间,后来将基本定时时间缩短了一倍,数字变化就变快了,节省了时间。
6、 设计总结
这次的设计是做一个交通灯,题目虽然很简单,但是我们也遇到了不少困难,在编程仿真的时候,很多时候都达不到我们想要的效果,我们就三个人一起讨论,一遍一遍的修改程序,最终实现了我们想要的结果。布线是很关键的一步,怎样布线才能使电路看起来不乱,电路看起来美观非常重要,我们一起讨论,一起尝试,终于达到了比较满意的效果。程序的设计业是非常重要的,从开始的不太理解,通过不断地尝试,最后终于达到了比较满意的结果,达到了本次设计的基本要求。在这次的设计过程中,我们三人相互配合,相互磨合,都有了默契,为以后的设计做了很好的铺垫。
7、 参考资料
1. 参考教材一:《单片机接口技术实训指导书》 作者:北京联合大学机电学院
2. 参考教材二:《微机原理与接口技术实验指导书2009》 作者:北京联合大学机电学院
3.参考教材三:《单片机应用技术》,科学出版社 作者:赵林惠
8、 附件
8.1 系统电路原理图;
见附录I
8.2 程序清单及注释。
见附录II
组员签字:
、
附录I 系统电路原理图
附录II 程序清单及注释
;------------------------------------------------------------------------------------------------- BZ1 BIT 40H BZ2 BIT 41H BZ3 BIT 42H BZ4 BIT 43H BZ5 BIT 44H BZ6 BIT 45H BZ7 BIT 46H BZ8 BIT 47H
;--------------系统初始化--------------------- ORG 0000H AJMP MAIN ORG 0003H AJMP INT_0 ORG 000BH AJMP T_0 ORG 0050H
MAIN: MOV TMOD,#01H ;使用定时器T0状态1 MOV TH0,#3CH ; 定时50ms MOV TL0,#0B0H SETB EA SETB IT0 ;使用外部中断0 SETB EX0 SETB ET0 SETB BZ1 MOV P0,#00H ;对输出口清零 MOV P1,#00H MOV P2,#00H SETB P3.0 MOV R1,#10 ;对运行中间值设置初值 MOV R2,#10 MOV R4,#10 MOV R5,#10 MOV R6,#15 SETB TR0 ;打开定时器T0,开始计时
//--------------------计时和红绿灯显示-------------------------------------
DISPLAY: ACALL LOOP SJMP DISPLAY LOOP: MOV A,R4 ;南北向计时显示 MOV DPTR,#TAB_1 MOVC A,@A+DPTR
MOV R3,A
ANL A,#0FH
MOV DPTR,#TAB_2 MOVC A,@A+DPTR MOV P0,A MOV P2,#22H ACALL DELAY MOV P2,#00H MOV P0,#00H MOV A,R3 SWAP A ANL A,#0FH
MOV DPTR,#TAB_2 MOVC A,@A+DPTR MOV P0,A MOV P2,#11H ACALL DELAY MOV P2,#00H MOV P0,#00H MOV A,R5 MOV DPTR,#TAB_1 MOVC A,@A+DPTR MOV R6,A ANL A,#0FH
MOV DPTR,#TAB_2 MOVC A,@A+DPTR MOV P0,A MOV P2,#88H ACALL DELAY MOV P2,#00H MOV P0,#00H MOV A,R6 SWAP A ANL A,#0FH
MOV DPTR,#TAB_2 MOVC A,@A+DPTR MOV P0,A MOV P2,#44H ACALL DELAY MOV P2,#00H MOV P0,#00H D1: JNB BZ1,D2
MOV P0,#08H
东西向计时显示
;东西红灯,南北绿灯
;
MOV P1,#11H
ACALL DELAY MOV P1,#00H MOV P0,#08H MOV P1,#44H ACALL DELAY MOV P0,#00H MOV P1,#00H AJMP D8 D2: JNB BZ2,D3 SETB P3.0 MOV P0,#20H MOV P1,#11H ACALL DELAY MOV P1,#00H MOV P0,#08H MOV P1,#44H ACALL DELAY MOV P0,#00H MOV P1,#00H AJMP D8 D3: JNB BZ3,D4 CLR P3.0 MOV A,R4
MOV DPTR,#TAB_3 MOVC A,@A+DPTR MOV P0,A MOV P1,#11H ACALL DELAY MOV P1,#00H MOV P0,#08H MOV P1,#44H ACALL DELAY MOV P0,#00H MOV P1,#00H AJMP D8 D4: JNB BZ4,D5 CLR P3.0
MOV P0,#10H MOV P1,#11H ACALL DELAY MOV P1,#00H MOV P0,#08H MOV P1,#44H
;南北绿灯,东西红灯
;南北绿灯闪烁三次,东西红灯 ,蜂鸣器响
;南北黄灯,东西红灯,蜂鸣器响
D5: ACALL DELAY MOV P0,#00H MOV P1,#00H SJMP D8
JNB BZ5,D6 ;南北红灯,东西绿灯
SETB P3.0 MOV P0,#08H MOV P1,#11H ACALL DELAY MOV P1,#00H MOV P0,#20H
MOV P1,#44H ACALL DELAY MOV P0,#00H MOV P1,#00H SJMP D8
D6: JNB BZ6,D7 CLR P3.0
MOV P0,#08H MOV P1,#11H ACALL DELAY MOV P1,#00H MOV A,R5
MOV DPTR,#TAB_3 MOVC A,@A+DPTR MOV P0,A
MOV P1,#44H ACALL DELAY MOV P0,#00H MOV P1,#00H SJMP D8
D7: JNB BZ7,JJ CLR P3.0
MOV P0,#08H MOV P1,#11H ACALL DELAY MOV P1,#00H MOV P0,#10H MOV P1,#44H ACALL DELAY MOV P0,#00H MOV P1,#00H SJMP D8 JJ: SETB P3.0
;南北红灯,东西绿灯闪烁三次 ,蜂鸣器响;南北红灯,东西黄灯 ,蜂鸣器响
MOV P0,#08H MOV P1,#11H ACALL DELAY MOV P1,#00H MOV P0,#08H MOV P1,#44H ACALL DELAY MOV P0,#00H MOV P1,#00H D8: RET
//-------------定时T0中断----------------------------------
T_0: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,K2 MOV R2,#10 LOOP1: JNB BZ1,LOOP2 ;判断是否处于标志位1,即状态1 DJNZ R1, K1 ;进行状态1的运算 CLR BZ1 SETB BZ2 MOV R1,#40 MOV R4,#46 MOV R5,#50 AJMP EXIT_0 LOOP2: JNB BZ2,LOOP3 ;判断是否处于标志位2,即状态2 DJNZ R1,K1 ;进行状态2的运算 CLR BZ2 SETB BZ3 MOV R1,#6 MOV R4,#6 DEC R5 SJMP EXIT_0
LOOP3: JNB BZ3,LOOP4 ;判断是否处于标志位3,即状态3 DJNZ R1,EXIT_1 ;进行状态3的运算 CLR BZ3 SETB BZ4 MOV R1,#4 MOV R4,#4 DEC R5 SJMP EXIT_0
LOOP4: JNB BZ4,LOOP5 ;判断是否处于标志位4,即状态4 DJNZ R1,EXIT_1 ;进行状态4的运算 CLR BZ4
SETB BZ5 MOV R1,#30 MOV R4,#40 MOV R5,#30 SJMP EXIT_0
LOOP5: JNB BZ5,LOOP6 DJNZ R1,EXIT_1 CLR BZ5 SETB BZ6 MOV R1,#6 MOV R5,#6 DEC R4 K2: SJMP EXIT_0 K1: SJMP EXIT_1
LOOP6: JNB BZ6,LOOP7 DJNZ R1,EXIT_1 CLR BZ6 SETB BZ7 MOV R1,#4 MOV R5,#4 DEC R4 SJMP EXIT_0
LOOP7: JNB BZ7,LOOP8 DJNZ R1,EXIT_1 CLR BZ7 SETB BZ2 MOV R1,#40 MOV R4,#40 MOV R5,#50 SJMP EXIT_0 LOOP8: JNB BZ8,EXIT_0 DJNZ R1,EXIT_1 SETB BZ2 CLR BZ8 MOV R1,#40 MOV R4,#40 MOV R5,#50 AJMP EXIT_0 EXIT_1: DEC R4 DEC R5 EXIT_0: RETI
///////////////外部中断//////////////////////////// INT_0:
;判断是否处于标志位5,即状态5 ;进行状态5的运算
;判断是否处于标志位6,即状态6 ;进行状态6的运算
;判断是否处于标志位7,即状态7 ;进行状态7的运算
//PUSH 28H CLR BZ1 CLR BZ2 CLR BZ3 CLR BZ4 CLR BZ5 CLR BZ6 CLR BZ7 SETB BZ8 MOV R4,#15 MOV R5,#15 MOV R1,#15 LCALL LOOP RETI
//---------------------延时程序----------------------------- DELAY: MOV R7,#0FAH
DJNZ R7,$ ;延时1ms子程序 RET
TAB_1: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,10H,11H,12H,13H,14H,15H,16H,17H,18H,19H,20H,21H,22H,23H,24H,25H,26H,27H,28H,29H,30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,40H,41H,42H,43H,44H,45H,46H,47H,48H,49H,50H
TAB_2: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH TAB_3: DB 00H,20H,00H,20H,00H,20H,00H END
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务