欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    单片机交通信号灯模拟系统设计.doc

    • 资源ID:4144554       资源大小:37.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机交通信号灯模拟系统设计.doc

    基于单片机的交通信号灯模拟系统设计主要内容:利用单片机中的定时器、IO接口、中断系统等资源,设计一个十字路口交通信号灯的控制模拟系统。基本要求:(1)利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭。 (2)可通过按键对红绿灯点亮和熄灭时间进行调整及设置。(3)能对红绿灯点亮和熄灭时间进行倒计时时间显示。提高部分:(4)可进行紧急或特殊情况的人工处理控制。(5)有内部24小时钟,可根据时间表对对红绿灯点亮和熄灭时间进行自动调整。(如高峰期:7:30-8:30,17:00-18:30或夜间时段红绿灯主次干道时长比等)。(6)可根据交通流量自动调整对红绿灯点亮和熄灭时间。程序:Z8279 EQU 0FF82H ;8279 状态/命令口地址D8279 EQU 0FF80H ;8279 数据口地址LEDMOD EQU 00H ;左边输入八位字符显示 ;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址READKB EQU 40H ;读FIFO RAM 地址0 的命令字;-ORG 0000HLJMP START ORG 0003H LJMP EMERGENCY ORG 000BH ;定时器中断的入口地址 LJMP COUNTER ORG 0040HSTART: MOV SP,#60H LCALL INIT8279 ;初始化 MOVTMOD,#01H MOVTL0,#056H ;50ms时间常数 MOVTH0,#4CH MOVR2,#20 ;设置循环次数20次,定时1s MOV R3,#1 MOV 20H,#5MOV 21H,#2 MOV R6,#06H ;时 MOV R1,#59H ;分 MOV R0,#45H ;秒 MOV R7,#00H ;交通灯状态选择 SETB ET0 ;允许定时器中断, SETB TR0 ;启动T0 SETB EX0 ;允许外部中断中断 SETB IT0 ;外部中断为电平触发方式 SETB EA ;开CPU开中断 ;-WAIT: LCALL GETKEY ;读键盘 CJNE A,#0FFH,CONT ;判断是否有键输入 MOV A,B CJNE A,#3CH,KEY_B ;输入键是'C',转CLEAR_T LCALL CLEAR_TKEY_B: CJNE A,#3BH,KEY_A ;输入键是'B',转SET_T LCALL SET_T KEY_A: ;输入键是'A',转START_T CJNE A,#3AH,KEY_E LCALL START_TKEY_E: ;输入键是'E',进行高峰处理,调整时间 CJNE A,#3EH,KEY_F MOV 20H,#10 ;红绿灯时间为10s KEY_F: CJNE A,#3FH,KEY_D ;输入是'F',进行低峰处理,调整时间MOV 20H,#3KEY_D: CJNE A,#3DH,CONT ;输入是'D',进行常态处理,调整时间MOV 20H,#5CONT: LCALL DISPLAY ;显示时间 SJMP WAIT ;循环CLEAR_T: ;时间清零 CLR TR0 MOV R3,#0H MOV R6,#0H ;时 MOV R1,#0H ;分 MOV R0,#0H ;秒 LCALL DISPLAY RETSTART_T: ;电子钟计时子程序 SETB TR0 RETSET_T: ;设置初值子程序 CLR TR0 ;关计数器 MOV R4,#1 LCALL GETWORD ;读秒数 CJNE A,#0FFH,INVALID ;判断输入合法性 MOV A,B ADD A,#156 JC INVALID ;判断输入秒值<100 MOV A,B CJNE R7,#01H,T1 ;若为状态1,保存输入值 MOV 20H,A MOV R3,20H LCALL DISPLAY T1: CJNE R7,#02H,T2 ;若为状态2,保存输入值 MOV 21H,A MOV R3,21H LCALL DISPLAYT2: CJNE R7,#03H,T3 ;若为状态3,保存输入值 MOV 20H,A MOV R3,20H LCALL DISPLAYT3: CJNE R7,#00H,T4 ;若为状态4,保存输入值 MOV 21H,A MOV R3,21H LCALL DISPLAYT4: SETB TR0RETINVALID: LCALL CLEAR_T ;时间清零 ;-GETWORD: ;读数子程序 WKEY1: LCALL GETKEY ;读键盘 CJNE A,#0FFH,WKEY1;无键输入,则再读 MOV A,B ADD A,#0C6H JC ERROR1 ;判断输入是否大于 MOV A,B SUBB A,#30H JC ERROR1 ;判断输入是否小于 MOV R5,A LCALL DISLED ;显示输入的字符 MOV B,#10 MUL AB PUSH ACC ;保存输入的值 WKEY2: LCALL GETKEY ;读键盘 CJNE A,#0FFH,WKEY2;无键输入则再读 MOV A,B ADD A,#0C6H ;判断输入是否大于 JC ERROR2 MOV A,B SUBB A,#30H ;判断输入是否小于 JC ERROR2 DEC R4 MOV R5,A LCALL DISLED ;显示输入的字符 MOV B,A POP ACC ADD A,B MOV B,A ;把得到的值存在B MOV A,#0FFH ;置合法输入标志 AJMP KEYOKERROR2: POP ACCERROR1: MOV A,#0 ;置非法输入标志KEYOK: RET ;-;定时器的中断服务程序COUNTER: ;INT_T0中断服务子程序 PUSH ACC ;保护现场 PUSH PSW CLRTR0 MOVTL0,#056H ;重新设置初值MOVTH0,#4CHLCALL DISPLAY ;1s时间到,显示当前倒计时的时间DJNZ R2,RETURN1MOV R2,#20HCJNE R0,#59H,SECOND;判断秒=59 MOV R0,#99H CJNE R1,#59H,MINUTE;判断分=59 MOV R1,#99H CJNE R6,#23H,HOUR ;判断时=23 MOV R6,#99HHOUR: MOV A,R6 ADD A,#1 ;时加1 DA A MOV R6,AMINUTE: MOV A,R1 ADD A,#1 ;分加1 DA A MOV R1,ASECOND: MOV A,R0 ADD A,#1 ;秒加1 DA A MOV R0,A CJNE R6,#5H,TURN LJMP TURNTURN: LCALL DISPLAY1 MOV A,R7 ;显示交通灯的状态SUBB A,#02HJNC L3 CJNE R7,#00H,L2 ;通过标志位来判断交通灯当前的状态 DJNZ R3,RETURN CJNE R6,#5H,SH MOV 20H,#10 MOV 21H,#3 SH: JC SH1MOV 20H,#10MOV 21H,#3CJNE R6,#7H,SH1MOV 20H,#5MOV 21H,#2SH1: JC SH2MOV 20H,#5MOV 21H,#2SH2: MOV R3,20H MOV DPTR,#8300H ;南北绿灯,东西红灯 MOV A,#96H MOVX DPTR,A MOV R7,#01H ;设置交通灯状态标志为下一个状态 SJMP RETURNRETURN1:LJMP RETURNL2: DJNZ R3,RETURN MOV R3,21H MOV DPTR,#8300H ;南北黄灯,东西红灯 MOV A,#06H MOVX DPTR,A MOV R7,#02H SJMP RETURN L3: CJNE R7,#02H,L4 DJNZ R3,RETURN MOV R3,20H MOV DPTR,#8300H ;南北红灯,东西绿灯 MOV A,#69H MOVX DPTR,A MOV R7,#03H SJMP RETURN L4: DJNZ R3,RETURN MOV R3,21H MOV DPTR,#8300H ;南北红灯,东西黄灯 MOV A,#09H MOVX DPTR,A MOV R7,#00H RETURN: SETB TR0 POP PSW ;恢复现场 POP ACC RETI;-EMERGENCY: PUSH PSW ;保护现场 PUSH ACC MOV DPTR,#8300H MOV A,#0FH ;南北,东西都亮红灯 MOVX DPTR,A MOV R3,#10 LCALL DISPLAY SETB TR0 ;启动定时器 POP ACC ;恢复现场 POP PSW RETI;-INIT8279: ;8279初始化子程序 PUSH DPH ;保存现场 PUSH DPL PUSH ACC LCALL DELAY ;延时 MOV DPTR ,#Z8279 MOV A,#LEDMOD ;置工作方式 MOVX DPTR,A MOV A,#LEDFEQ ;置键盘扫描速率 MOVX DPTR,A MOV A,#LEDCLS ;清除LED 显示 MOVX DPTR,A POP ACC ;恢复现场 POP DPL POP DPH RET;-GETKEY: ;读取键盘子程序 ;输入: 无; 输出: B: 读到的键码A: 按键的标志 PUSH DPH ;保存现场 PUSH DPL PUSH PSW MOV DPTR,#Z8279 MOVX A,DPTR ;读状态 ANL A,#07H ;屏蔽D7-D3 JNZ GETVAL ;判断是否有键输入 MOV A,#0H ;置标志(无键输入) SJMP RECOVERGETVAL: MOV A,#READKB ;读FIFO RAM 命令 MOVX DPTR,A MOV DPTR,#D8279 MOVX A,DPTR ;读键 ANL A,#3FH ;屏蔽SHIFT 和CTRL 键 MOV DPTR,#KEYCODE;键码表起始地址 MOVC A,A+DPTR ;查表 MOV B,A ;置返回键值 MOV A,#0FFH ;置标志(有键输入)RECOVER: POP PSW ;恢复现场 POP DPL POP DPH RET;-DISLED: ;显示字符子程序 ;输入: R4,位置R5,值 PUSH DPH ;保存现场 PUSH DPL PUSH ACC MOV A,#LEDWR0 ;置显示起始地址 ADD A,R4 ;加位置偏移量 MOV DPTR,#Z8279 MOVX DPTR,A ;设定显示位置 MOV DPTR,#LEDSEG ;置显示常数表起始位置 MOV A,R5 MOVC A,A+DPTR ;查表 MOV DPTR,#D8279 MOVX DPTR,A ;显示数据 POP ACC ;恢复现场 POP DPL POP DPH RET;-DELAY: ;延时子程序 PUSH 0 ;保存现场 PUSH 1 MOV 0,#0HDELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1 POP 1 ;恢复现场 POP 0 RET;-DISPLAY1: MOV A,R6 ANL A,#0FH ADD A,#10H MOV R5,A MOV R4,#6 LCALL DISLED ;显示小时低位 MOV A,R6 SWAP A ANL A,#0FH MOV R5,A MOV R4,#7 LCALL DISLED ;显示小时高位 MOV A,R1 ANL A,#0FH ADD A,#10H MOV R5,A MOV R4,#4 LCALL DISLED ;显示分钟低位 MOV A,R1 SWAP A ANL A,#0FH MOV R5,A MOV R4,#5 LCALL DISLED ;显示分钟高位 MOV A,R0 ANL A,#0FH ADD A,#10H MOV R5,A MOV R4,#2 LCALL DISLED ;显示秒低位 MOV A,R0 SWAP A ANL A,#0FH MOV R5,A MOV R4,#3 LCALL DISLED ;显示秒高位 RETDISPLAY: MOV A,R3 MOV B,#10 DIV AB MOV R5,B MOV R4,#0 LCALL DISLED ;显示秒低位 MOV R5,A MOV R4,#1 LCALL DISLED ;显示秒高位 RET;- ;LED显示常数表LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F' DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,087H ;'0.,1.,2.,3.,4.,5.,6.,7.' DB 0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H ;'8.,9.,A.,B.,C.,D.,E.,F.' DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, ' ;键盘键码表KEYCODE: DB 30H,31H,32H,33H,34H,35H,36H,37H ;'0,1,2,3,4,5,6,7' DB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FH ;'8,9,A,B,C,D,E,F' END

    注意事项

    本文(单片机交通信号灯模拟系统设计.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备2025010119号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开