单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯

上传人:E**** 文档编号:89503396 上传时间:2019-05-26 格式:PPT 页数:22 大小:1.33MB
返回 下载 相关 举报
单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯  _第1页
第1页 / 共22页
单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯  _第2页
第2页 / 共22页
单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯  _第3页
第3页 / 共22页
单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯  _第4页
第4页 / 共22页
单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯  _第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯 》由会员分享,可在线阅读,更多相关《单片机技术与应用 教学课件 ppt 作者 刘松 项目训练3 交通灯 (22页珍藏版)》请在金锄头文库上搜索。

1、项目训练三 简易交通信号灯,一、任务目标 设计一个简易的交通信号灯控制器,其设计任务如下。 某交通十字路口,南北向为主干道,东西向为支道。每个道口安装一组信号灯,每组信号灯有红、黄、绿3种信号,各信号灯按以下规则循环显示交通信号指挥交通,见表1。 显示信号共有4种状态,称为四相。,要求使用单片机控制发光二极管完成表1的显示功能。 二、硬件 1、显示器件 显示状态共有红、黄、绿3种颜色,可以使用红、黄、绿色发光二极管,每组信号灯使用3只发光二极管,两个方向的道口各使用1组。控制系统需要6个开关量控制发光二极管,见图1。6只发光二极管的显示规则见表2。,表1 交通信号灯显示规则,图1 信号灯显示电

2、路,2、驱动电路 为了提高89S51的驱动能力,89S51的端口经驱动器件ULN2803驱动发光二极管。 3、控制电路,表2 发光二极管显示规则,选用89S51的P0口驱动ULN2803时必须接上拉电阻,为了简化电路使用P2口输出。交通信号灯电路见图7-2。 4控制方法 根据显示规则,6只发光二极管一共有4种显示状态,每一种状态对应的P2口的输出状态见表3。需要改变输出时只需将P2口各位的状态组成一个字节发送到P2口即可,这样一个用于控制输出的数值称为控制字。四种状态的控制字见表3。,图2 交通信号灯电路,三、软件 1、算法分析 (1) 定时时间 根据规则,信号灯显示时间的单位为秒(s),系统

3、采用12MHz晶振时定时计数器的最长定时时间为65ms。为了计算方便,定时计数器设定为定时50ms。采用中断方式,中断,表3 信号灯控制方法,程序中设置一个计数器(S1),每计数20次(1s)后设定时间标志(SBZ)通知主程序。 (2) 定时计数器设置 选用定时计数器0,模式1,定时计数器控制字为01H,见图3。,图 3 定时计数器控制字,定时计数器0初值计算:,X=216 5010-3 解得:X=15536。 可以利用汇编语言的运算功能计算出TH0与TL0的初值。 TH0=15536256 操作符“”表示整除运算:取商,截去余数。 TL0=15536 MOD 256 操作符“MOD”表示取模

4、运算:取余数,截去商。,(3)定时计数器中断程序 定时计数器中断程序需完成的任务:每次中断后计数,当计数达到20次时设置标志SBZ通知主程序定时时间到,同时恢复计数器重新开始计数。 中断程序框图见图4。 (4)主程序 为了使程序具有通用性,将控制规则存放在数据区中,称为规则表(GZB),见图5。规则表中数据的存放方法如下。,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 中断程序框图与程序,GZB: DB 25,0C

5、H ;25s,控制字0CH DB 5, 0AH ;5s, 控制字0AH DB 15, 21H ;15s, 控制字21H DB 5, 11H ;5s, 控制字11H DB 0 ;结束标志,图5 规则表, 则表每行对应一相规则,四相规则共有4行。 则表每行有两项数据,第一项为延时时问,第二项为输出控制字。 则表最后存放一个“0”,用做规则表结束标志。 主程序将第一项数据读出后存放在寄存器中用做计时器,并将第二项数据由P2口送出,控制显示状态。,每当SBZ=1(定时ls时间到)时将计时器减1。当计时器减到“0”时,说明本相显示时间到,再读出规则表中下一行数据,如此重复。当从规则表中读出时间值为“0(

6、结束标志)时,调整数据指针从规则表第一行重新开始读数据,实现循环显示。 这样当需要调整显示规则时只需修改规则表数据,而不必修改程序,从而使程序具有一定的通用性。 主程序框图见图6。,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,PROG2: CLR A MOVC A, A+DPTR INC DPTR JZ PROGQ MOV R2,A CLR A MOVC A, A+DPTR

7、INC DPTR MOV P2,A WAIT: JBC SBZ,PROG3 SJMP WAIT,PROG3: DEC R2 CJNE R2,#0,WAIT SJMP PROG2,图6 主程序框图与程序,2、程序清单 ;自动交通信号灯 ORG 0000H AJMP MAIN ;跳转到主程序入口 ORG 000BH ;定时计数器0中断入口 AJMP CTC0;跳转到定时计数器0中断程序 MAIN:MOV TMOD,#01H ;设定定时计数器0 为工作方式1 MOV TH0,#CTH ;设置计数器初值 MOV TL0,#CTL SETB TR0 ;启动定时计数器0,SETB ET0 ;开定时计数器0

8、中断 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,INC DPTR ;调整数据指针 MOV P2,A ;显示状态送P2口 WAIT: JBC SBZ,PROG3 ;等待秒计时时间 SJMP WAIT PROG3: DEC R2

9、;秒计时时间到,计时值-1 CJNE R2,#0,WAIT ;本相计时时间未到,继续等待 SJMP PROG2 ;本相计时时间到,取下一阶段数据 ;= ;以下为定时计数器0中断程序,中断每50mS产生一次 CTC0: PUSH ACC ;保护现场,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 ;中断返回 ;=,;以下为数据设置 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 ;程序结束,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号