资源描述
微机原理及机电接口技术课程设计第五组题目十字路口交通灯控制系统.明确任务1. 任务要求1) 、模拟十字路口交通灯变化规律能实现通行时间的倒计时显示;当特种车(消防、警车等)通过时,中断保护现场并使四个口红灯全亮,中断消除后恢复现场。2) 、用开关控制中断信号2.任务分析1)南北东西道路有信号灯显示2) 2 位 7 段数码管显示通行和禁行倒计时3)针对特种车经过要设计相应的中断程序,并且中断返回后能信号灯按原来的状态继续进行道路控制。.总体设计1 . 设计方案十字路口有南北方向和东西方向, 每个方向都设有红、 黄、 绿三色交通信号灯 12 盏,并配有相应的亮灯倒计时显示4 组。当南北为绿灯或黄灯时,东西向一定是红灯,即南北绿灯时间加南北黄灯时间应等于东西红灯时间。系统开始工作, 南北路口绿灯亮, 南北方向数码管进行绿灯 50S 倒计时显示,东西路口的红灯亮, 东西方向数码管进行红灯55S 倒计时显示。 当东西禁行方向剩 5S 时, 南北通行方向的绿灯灭黄灯亮, 同时数码管进行5S 黄灯倒计时显示,5S 后黄灯熄灭红灯亮,并进行南北红灯倒计时,同时东西方向红灯55S 计时时问到红灯灭绿灯亮,东西向开始通行南北向禁行。同样东西向绿灯50S计时时间到后转为黄灯,黄灯5S 计时时间到再转为红灯,之后重复上述过程。另设有点动按钮用来发出特种车经过时的中断信号2 .单片机选型选才? 89C51系列单片机3 .划分系统软、硬件功能数码管采用共阴极七段码动态显示4 .确定系统结构组成时钟电路,复位电路,红绿黄灯指示电路(采用各色发光二极管代替),动态显示电路和简单按键电路三.硬件电路设计年 bi 期 bJ U 解 N hTO 融 1Ali il, IJ liii 弃 m 的 STT k-TftrrI刊.七 7 k a ,1a.b WXF元器件清单:元件名称注释AT89C5151单片机7SEG-MPX2-CC2位共阴极七段码LED显示LED-GREEN绿灯LED-YELLOW黄灯LED-RED红灯RESP电阻RESPACK-8排阻CAP电容CRYSTAL晶振BUIION按钮P0 口作为数码显示段选控制,P1 口作为LED灯亮灭控制,P2 口作为数码显示位选控制。P3.3作为外部中断输入口P1.0:南北向红灯,高电平点亮P1.1:南北向黄灯,高电平点亮P12南北向绿灯,高电平点亮P1.3:东西向红灯,高电平点亮P1.4:东西向黄灯,高电平点亮P1.5:东西向绿灯,高电平点亮P2.7:南北向十位数码管位选信号P2.6:南北向个位数码管位选信号P2.5:东西向十位数码管位选信号P2.4:东西向个位数码管位选信号P0.0:数码管aP0.1:数码管bP0.2:数码管cP0.3:数码管dP0.4:数码管eP0.5:数码管fP0.6:数码管gP3.3:中断按钮,点动南北东西全部禁行,特种车通过四.软件设计1 .片内RAM的定义A_BIT EQU 20H :用于存放南北十位数B_BIT EQU 21H :用于存放南北个位数C_BIT EQU 22H :用于存放东西十位数 D_BIT EQU 23H :用于存放东西个位数TEMP1 EQU 24H :南北方向要显示的时间TEMP2 EQU 25H :东西方向要显示的时间SEC EQU 30H: 1S计时标志2 .程序设计由设计方案描述交通灯的显示可以分为以下 4种状态:状态一:南北绿灯亮并从50S开始倒计时显示,东西红灯亮并从55S开始倒计时显示状态二:南北黄灯亮并从5s开始倒计时显示, 东西红灯亮并继续55S倒计时显示.哂雌|肆状态三:南北红灯亮并从55S开始倒计时显示, 东西绿灯亮并从50S开始倒计时显示状态四:南北红灯亮并继续55S倒计时显示, 东西黄灯亮并从5s开始倒计时显示3.设计流程图初始化状态一 一调用BCD转换 一调用倒计时显示状态二 一调用BCD转换 一调用倒计时显示状态三 一调用BCD转换 一调用倒计时显示状态四 一调用BCD转换 一调用倒计时显示主程序流程图INT1中断程序流程图4.源程序:A_BIT EQU 20H ;用于存放南北十位数B_BIT EQU 21H ;用于存放南北个位数C_BIT EQU 22H ;用于存放东西十位数D_BIT EQU 23H ;用于存放东西个位数TEMPI EQU 24HTEMP2 EQU 25HSEC EQU 30H ;1S计时标志ORG 0000HAJMP MAINAJMP INTORG 0100HMAIN:MOV SP,#45HMOV IE,#84HSETB IT1;MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB TR0MOV SEC,#20MOV R7,#50MOV R6,#5MOV R5,#55MOV R4,#10开 INT0 中断下降沿触发; 定时器初始化;50ms 定时初值启动定时器T0;1S 循环常数绿灯时间黄灯时间; 红灯时间全部红灯的时间STA1:MOV P1,#00001100B ;南北绿灯东西红灯ST1:MOV TEMP1,R7MOV TEMP2,R5ACALL CONVERT调用BCM转换子程序STLOP1: ACALL DISPLAY ; 调用显示子程序JNB TF0,STLOP1;50MS定时未至ij,转至IJ STLOP1CLR TF0DEC SECMOV A,SECCJNE A,#0,STLOP1;1S 定时未到转到 STLOP1MOV SEC,#20; 东西倒计时数减一DEC R5DJNZ R7,ST1; 南北倒计时数减一STA2:MOV P1,#00001010B ;南北黄灯东西红灯ST2:MOV TEMP1,R6MOV TEMP2,R5ACALL CONVERT ;调用BCM转换子程序STLOP2: ACALL DISPLAY ; 调用显示子程JNB TF0,STLOP2CLR TF0DEC SECMOV A,SECCJNE A,#0,STLOP2MOV SEC,#20DEC R5DJNZ R6,ST2MOV R6,#5MOV R5,#55STA3:MOV P1,#00100001B ;南北红灯东西绿灯ST3:MOV TEMP1,R5MOV TEMP2,R7ACALL CONVERT ;调用BCM转换子程序STLOP3: ACALL DISPLAY ; 调用显示子程JNB TF0,STLOP3CLR TF0DEC SECMOV A,SECCJNE A,#0,STLOP3MOV SEC,#20DEC R5STA4:MOV P1,#00010001B ;南北红灯东西黄灯ST4:MOV TEMP2,R6MOV TEMP1,R5ACALL CONVERT ; 调用BCM转换子程序STLOP4: ACALL DISPLAY ; 调用显示子程JNB TF0,STLOP4CLR TF0DEC SECMOV A,SECCJNE A,#0,STLOP4MOV SEC,#20DEC R5DJNZ R6,ST4MOV R6,#5MOV R5,#55AJMP STA1INT:; 中断子程序PUSH 90H; 存入 46H 中PUSH PSWPUSH 00HPUSH 01HPUSH 02HPUSH 05HPUSH 06HPUSH 07HPUSH 22HPUSH 23HPUSH 24HPUSH 25HPUSH 30HPUSH TH0PUSH TL0MOV P1,#09H; 全部红灯CLR TF0MOV TH0,#3CHMOV TL0,#0B0HMOV SEC,#20L3:MOV TEMP1,R4MOV TEMP2,R4调用BCM转换子程序; 调用显示子程ACALL CONVERTL4:ACALL DISPLAYJNB TF0,L4CLR TF0DEC SECMOV A,SECCJNE A,#0,L4MOV SEC,#20DJNZ R4,L3MOV R4,#10POP TL0POP TH0POP 30HPOP 24HPOP 23HPOP 22HPOP 21HPOP 20HPOP 07HPOP 06HPOP 05HPOP 02HPOP 01HPOP 00HPOP PSWPOP 90HRETI转换子程序CONVERT:MOV A,TEMP1MOV B,#10DIV AB;AMOV A_BIT,A;MOV B_BIT,B;MOV A,TEMP2;MOV B,#10DIV AB;AMOV C_BIT,A;MOV D_BIT,B;RET将南北要显示的数存放到;A除以B商存A,余数存B将 A 放到20H将 B 放到21H将东西要显示的数存放到 A除以B商存A,余数存B将 A 放到22H将 B 放到23HDISPLAY: MOV DPTR ,#TAB 显示子程序;DPLOP1: MOV A,A_BIT; 将南北要显示的 10 位数送AMOVC A,A+DPTR; 查表MOV P0,ACLR P2.7;显示南北10 位数ACALL D1MS;延时 1MSSETB P2.7;灭南北10 位数MOV A,B_BIT;将南北要显示的个位数送AMOVC A,A+DPTR; 查表MOV P0,ACLR P2.6;显示南北个位数ACALL D1MS;延时 1MSSETB P2.6;灭南北个位数MOV A,C_BIT;将东西要显示的 10 位数送AMOVC A,A+DPTR; 查表MOV P0,ACLR P2.5;显示东西10 位数ACALL D1MS;延时 1MSSETB P2.5;灭东西10 位数MOV A,D_BIT;将东西要显示的个位数送AMOVC A,A+DPTR; 查表MOV P0,ACLR P2.4;显示东西个位数ACALL D1MS;延时 1MSSETB P2.4;灭东西个位数RETD1MS:MOV R3,#250;1MS延时子程序D2:NOPNOPDJNZ R3,D2RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND
展开阅读全文