项目训练二简易交通信号灯

上传人:lx****y 文档编号:252389247 上传时间:2024-11-15 格式:PPT 页数:22 大小:529.50KB
返回 下载 相关 举报
项目训练二简易交通信号灯_第1页
第1页 / 共22页
项目训练二简易交通信号灯_第2页
第2页 / 共22页
项目训练二简易交通信号灯_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,项目训练二,简易交通信号灯,1,一、任务目标,设计一个简易的交通信号灯控制器,其设计任务如下。,某交通十字路口,南北向为主干道,东西向为支道。每个道口安装一组信号灯,每组信号灯有红、黄、绿3种信号,各信号灯按以下规则循环显示交通信号指挥交通,见表1。,显示信号共有4种状态,称为四相。,2,要求使用单片机控制发光二极管完成表1的显示功能。,二、硬件,1、显示器件,显示状态共有红、黄、绿3种颜色,可以使用红、黄、绿色发光二极管,每组信号灯使用3只发光二极管,两个方向的道口各使用1组。控制系统需要6个开关量控制发光二极管,见图1。6只发光二极管的显示规则见表2。,表1 交通信号灯显示规则,3,图1 信号灯显示电路,4,方向,东西向,南北向,发光二极管,时间/s,D1,D2,D3,D4,D5,D6,红,黄,绿,红,黄,绿,25,灭,灭,亮,亮,灭,灭,5,灭,亮,灭,亮,灭,灭,15,亮,灭,灭,灭,灭,亮,5,亮,灭,灭,灭,亮,灭,2、驱动电路,为了提高89S51的驱动能力,89S51的端口经驱动器件ULN2803驱动发光二极管。,3、控制电路,表2 发光二极管显示规则,5,选用89S51的P0口驱动ULN2803时必须接上拉电阻,为了简化电路使用P2口输出。交通信号灯电路见图7-2。,4控制方法,根据显示规则,6只发光二极管一共有4种显示状态,每一种状态对应的P2口的输出状态见表3。需要改变输出时只需将P2口各位的状态组成一个字节发送到P2口即可,这样一个用于控制输出的数值称为控制字。四种状态的控制字见表3。,6,图2 交通信号灯电路,7,P2.5,南北绿,P2.4,南北黄,P2.3,南北红,P2.2,东西绿,P2.1,东西黄,P2.O,东西红,控制字P2,东西向信号灯,南北向信号灯,O,0,1,1,0,0,0CH,绿色,红色,0,O,1,0,1,O,0AH,黄色,红色,1,0,0,0,0,1,2lH,红色,绿色,0,1,0,0,O,1,1lH,红色,黄色,三、软件,1、算法分析,(1)定时时间,根据规则,信号灯显示时间的单位为秒(s),系统采用12MHz晶振时定时计数器的最长定时时间为65ms。为了计算方便,定时计数器设定为定时50ms。采用中断方式,中断,表3 信号灯控制方法,8,程序中设置,一,个计数器(S1),每计数20次(1s)后设定时间标志(SBZ)通知主程序。,(2)定时计数器设置,选用定时计数器0,模式1,定时计数器控制字为01H,见图3。,图 3 定时计数器控制字,9,定时计数器0初值计算:,1210,6,12,X=2,16,5010,-3,解得:X=15536。,可以利用汇编语言的运算功能计算出TH0与TL0的初值。,TH0=15536256 操作符“”表示整除运算:取商,截去余数。,TL0=15536 MOD 256 操作符“MOD”表示取模运算:取余数,截去商。,10,(3)定时计数器中断程序,定时计数器中断程序需完成的任务:每次中断后计数,当计数达到20次时设置标志SBZ通知主程序定时时间到,同时恢复计数器重新开始计数。,中断程序框图见图4。,(4)主程序,为了使程序具有通用性,将控制规则存放在数据区中,称为规则表(GZB),见图5。规则表中数据的存放方法如下。,11,CTC0:PUSH ACC,MOV TH0,#CTH MOV TL0,#CTL INC S1,MOV A,S1,CJNE A,#20,CTC1,MOV S1,#0,SETB SBZ,CTC1:POP ACC,RETI,图4 中断程序框图与程序,12,GZB:DB 25,0CH ;25s,控制字0CH,DB 5,0AH ;5s,控制字0AH,DB 15,21H ;15s,控制字21H,DB 5,11H ;5s,控制字11H,DB 0 ;结束标志,图5 规则表,则表每行对应一相规则,四相规则共有4行。,则表每行有两项数据,第一项为延时时问,第二项为输出控制字。,则表最后存放一个“0”,用做规则表结束标志。,主程序将第一项数据读出后存放在寄存器中用做计时器,并将第二项数据由P2口送出,控制显示状态。,13,每当SBZ=1,(定时ls时间到)时将计时器减1。当计时器减到“0”时,说明本相显示时间到,再读出规则表中下一行数据,如此重复。当从规则表中读出时间值为“0(结束标志)时,调整数据指针从规则表第一行重新开始读数据,实现循环显示。,这样当需要调整显示规则时只需修改规则表数据,而不必修改程序,从而使程序具有一定的通用性。,主程序框图见图6。,14,ORG 0000H,AJMP MAIN,ORG 000BH,AJMP CTC0,MAIN:MOV TMOD,#01H,MOV TH0,#CTH,MOV TL0,#CTL,SETB TR0,SETB ET0,SETB EA,PROG1:MOV DPTR,#GZB,15,PROG2:CLR A,MOVC A,A+DPTR,INC DPTR,JZ PROGQ,MOV R2,A,CLR A,MOVC A,A+DPTR,INC DPTR,MOV P2,A,WAIT:JBC SBZ,PROG3,SJMP WAIT,16,PROG3:DEC R2,CJNE R2,#0,WAIT,SJMP PROG2,图6 主程序框图与程序,17,2、程序清单,;自动交通信号灯,ORG 0000H,AJMP MAIN;跳转到主程序入口,ORG 000BH;定时计数器0中断入口,AJMP CTC0;跳转到定时计数器0中断程序,MAIN:MOV TMOD,#01H ;设定定时计数器0,为工作方式1,MOVTH0,#CTH ;设置计数器初值,MOVTL0,#CTL,SETB TR0;启动定时计数器0,18,SETB ET0;开定时计数器0中断,SETB EA;开总中断,PROG1:MOV DPTR,#GZB ;数据指针指向规则表,首地址,PROG2:CLR A ;取规则表中第一项数据(时间值),MOVC A,A+DPTR,INC DPTR ;移动指针到规则表下一项数据,JZ PROG1;如果时间值为0,说明规则表数据,已读完移动数据指针到规则表首地址,MOV R2,A;保存时间值,CLR A;取规则表下一项数据,MOVC A,A+DPTR,19,INC DPTR;调整数据指针,MOV P2,A;显示状态送P2口,WAIT:JBC SBZ,PROG3;等待秒计时时间,SJMP WAIT,PROG3:DEC R2;秒计时时间到,计时值-1,CJNE R2,#0,WAIT ;本相计时时间未到,继续等待,SJMP PROG2 ;本相计时时间到,取下一阶段数据,;=,;以下为定时计数器0中断程序,中断每50mS产生一次,CTC0:PUSH ACC;保护现场,20,MOV TH0,#CTH;恢复计数器初值,MOV TL0,#CTL,INC S1;中断次数累计,MOV A,S1;判断是否已中断20次,未到20次中断返回,CJNE A,#20,CTC1,MOV S1,#0;已到20次,计数器清0,SETB SBZ;设置秒计时标志,CTC1:POP ACC;恢复现场,RETI;中断返回,;=,21,;以下为数据设置,S1 DATA 30H;秒计数器,SBZ BIT 00H;时间标志,CTH EQU 15536/256;定时计数器0初值高位,CTL EQU 15536 MOD 256;定时计数器0初值低位,GZB:DB 25,0CH;显示规则表,DB 5,0AH,DB 15,21H,DB 5,11H,DB 0;规则表结束标志,END;程序结束,22,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!