您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 交通信号灯模拟控制器
1昆明冶金高等专科学校教学教案课题:编程实例2教学时数:2学时教学目的:1、通过交通灯控制的编程掌握单片机的编程方法2、学习中断服务程序的编写方法。重点、难点:中断服务程序的编写。主要教学内容(提纲):一、课题内容二、编程指导三、参考程序教学方法、手段:课堂讲授,学生练习课内外练习将所编程序在实验仪验证.课后小结2讲授要点一、课题内容编写一程序实现城市“十字”路口正常情况下以及特殊情况和紧急情况下交通信号灯的模拟控制。1、在十字路口东西南北各设置红、黄、绿三种信号灯,如图1所示。正常情况下,东西、南北方向轮流放行。当东西方向(A线)放行、南北方向(B线)禁行时,东西方向(A线)绿灯亮25秒,然后黄灯亮5秒,南北方向(B线)红灯亮30秒;当南北方向(B线)放行、东西方向(A线)禁行时,南北方向(B线)绿灯亮25秒,然后黄灯亮5秒,东西方向(A线)红灯亮30秒。如此循环,实现交通灯定时控制。2、有急救车优先通过功能。当有急救车到达时,路口的信号灯全部变红灯,以便急救车通过,急救车的通行时间为10秒,急救车过后,交通灯恢复先前状态。3、交通灯在红、绿灯交替点亮中,用两个数码管显示点亮的灯还能持续的时间。图1交通灯布置示意图二、编程指导1、电路图北西东南3交通灯控制电路的核心元件采用单片机芯片AT89C51,其内部带有4KB的ROM,无须扩展存储器。信号灯的控制由单片机的P1.0~P1.5控制,6只信号灯以共阴极方式连接,当P1口输出为高电平时,信号灯点亮,为实现上述控制要求,P1口共输出四种控制码,如表1所示。表1:交通灯信号控制码空空B道绿灯B道黄灯B道红灯A道绿灯A道黄灯A道红灯控制码P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0状态说明000011000CHA道放行、B道禁止000010100AHA道警告、B道禁止0010000121HA道禁止、B道放行0001000111HA道禁止、B道警告2、控制程序(1)流程图软件包括主程序、延时、显示子程序、中断服务程序,各程序流程图如图2所示。4开始初始化显示初始值设置A道放行,B道禁行延时显示A道警告,B道禁行延时5SA道禁行,B道放行置显示初始值A道禁行,B道警告显示延时延时显示延时1ms显示十位数设置显示次数秒十位数转字形码R1秒个位数转字形码拆分秒数秒数转十进制显示秒数减1开始个位数十位数R2显示个位数延时1msYN显示次数=0?主程序流程图显示子程序流程图返回中断服务程序恢复现场保护现场中断响应紧急情况返回A道放行,B道禁行延时10s图2程序流程图三、参考程序主程序:ORG2000HMAIN:MOVDPTR,#7F00HMOVA,#0BH;PA、PC口均为输出MOVX@DPTR,AMAIN:SETBEA;开中断SETBEX05MOV50H,#1FH;设置时间显示初值MOVP1,#0CH;A道放行,B道禁行MOVR7,#19H;延时秒数MAIN1:LCALLDISP;调1秒延时、及显示子程序DJNZR7,MAIN1MOVP1,#0AH;A道警告,B道禁行MOVR7,#05H;延时秒数MAIN2:LCALLDISPDJNZR7,MAIN2MOV50H,#1FH;设置时间显示初值MOVP1,#21H;A道禁行,B道放行MOVR7,#19H;延时秒数MAIN3:LCALLDISPDJNZR7,MAIN3MOVP1,#11H;A道禁行,B道警告MOVR7,#05H;延时秒数MAIN4:LCALLDISPDJNZR7,MAIN4AJMPMAIN;循环延时、显示子程序:ORG2000HDISP:MOVR6,#01H;设置显示位寄存器初值(右边一位MOVTMOD,#01H;定时器T0设置为定时方式的模式1MOVR5,#0AH;定时器操作循环10次DEL1:MOVTH0,#3CH;定时器100ms计数器的初始值MOVTL0,#B0HSETBTR0;启动定时器DEL2:DEC50H;显示秒数减1MOVA,50H6MOVB,#0AHDIVB;拆分秒数ADDA,#2BHMOVCA,@A+PC;查表个位数的字形码MOVR1,A;个位数字形码送R1MOVA,BADDA,#25HMOVCA,@A+PC;查表十位数的字形码MOVR2,A;十位数字形码送R2MOVA,R6;位控码MOVDRTP,#7F03HMOVX@DPTR,AMOVA,R1;送个位数显示MOVDPTR,#7F01HMOVX@DPTR,ALCALLDELAY;延时1msMOVA,R6RLA;位控左移MOVR6,AMOVDPTR,#7F03HMOVX@DPTR,AMOVA,R2;送十位数显示MOVDPTR,#7F01HMOVX@DPTR,ALCALLDELAY;延时1msJNBTF0,$;检测100ms定时是否到CLRTF0DJNZR5,DEL1;100ms循环控制RET;返回TABLE:DBC0H,F9H,A4H,B0H,99HDB92H,82H,F8H,80H,90HDELAY:MOVR7,#02H;延时1ms子程序7DEL3:MOVR6,#0F9HDEL4:DEL2:DJNZR6,DEL2DJNZR7,DEL1RETEND中断服务程序:ORG0003H;外部中断0入口地址LJMPINTER0ORG2100HINTER0:PUSH50H;保护现场PUSHP1MOVP1,#00H;两车道禁止MOVR7,#0AH;延时10秒INT0:LCALLDISP;调显示DJNZR7,INT0POPP1;恢复现场POP50HRETI;中断返回
本文标题:交通信号灯模拟控制器
链接地址:https://www.777doc.com/doc-313219 .html