文档详情

用单片机控制交通灯源程序代码及流程图.doc

发布:2017-11-24约8.99千字共15页下载文档
文本预览下载声明
用单片机控制交通灯 传统的交通灯控制电路一般由数字电路构成,电路复杂、体积大、成本高。采用单片机控制交通灯不但可以解决上述问题,而且还具有时间显示功能,非常方便。下面介绍一种用单片机控制交通灯的方法。 一、硬件 硬件电路如附图。AT89C2051的P1.7~P1.5和P1.3~P1.1直接驱动红、黄、绿灯,利用单片机的串口和二片74LS164串/并转换移位寄存器实现时间显示,七段数码管为共阴管,硬件电路极为简单。 二、软件 交通灯有红、黄、绿三种。红灯亮,停止通行;绿灯亮,允许通行;黄灯亮,作过渡。红灯亮60秒,绿灯亮55秒,黄灯亮5秒。每组灯的亮暗状态以2分钟为周期循环,故程序采用主、子程序方式,循环结构。另外,为了简化电路,红、黄、绿灯采用低电平点亮。 源程序清单如下:    ORG 0000H START:MOV DRTR,#TAB MOV SCON,#00H MOV P1,#6CH ;点亮红、绿灯 MOV R0,#0 ;R0清零 LEFT: INC R0 CJNE R0,#55,LP0 ;R0<55,转LP0 MOV P1,#6AH ;R0=55,点亮红、黄灯 LJMP LP1 LP0: CJNE R0,#60,LP1 ;R0<60,转LP1 字串7 MOV P1,#0C6H ;R0=60,点亮绿、红灯 LJMP RIGHT LP1: LCALL DBDB LCALL DISP LJMP LEFT ;20H为1, 转LEFT RIGHT:DEC R0 CJNE R0,#5,LP2 ;R0>0,转LP2 MOV P1,#0A6H ;R0=5,点亮黄、红灯 LJMP LP3 LP2: CJNE R0,#0,LP3 MOV P1,#6CH ;R0=0,点亮红、绿灯    LJMP LEFT LP3: LCALL DBDB LCALL DISP LJMP RIGHT DBDB: MOV A,R0 MOV B,#10 DIV AB MOV R1,A MOV R2,B RET DISP: MOV A,R2 MOVC A,@A+DPTR MOV SBUF,A JNB TI,$;查TI位 CLR TI    MOV A,R1 MOVC A,@A+DPTR MOV SBUF,A       JNB T1,$       CLR TI       LCALL DEALY       RET DELAY:MOV R3,#09H K1:   MOV R4,#100 字串8 K2:   MOV R5,#250 K3:   DJNZ R5,K3       DJNZ R4,K2       KJNZ R3,K1       RET TAB:  DB 3FH,06H,5BH       DB 4FH,66H       DB 6DH,7DH,07H       DB 7FH,6FH 字串2 ? 三.实验电路及连线 四.实验说明 1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。 2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。 五.实验程序框图 程序框图: ? 源代码: ??????? ORG???? 0000H ??????? LJMP??? START ??????? ORG???? 0040H START: ??????? MOV???? SP,#60H ??????? LCALL?? STATUS0???????? ;初始状态(都是红灯) CIRCLE: LCALL?? STATUS1???????? ;南北绿灯,东西红灯 ??????? LCALL?? STATUS2???????? ;南北绿灯闪转黄灯,东西红灯 ??????? LCALL?? STATUS3???????? ;南北红灯,东西绿灯 ??????? LCALL?? STATUS4???????? ;南北红灯,东西绿灯闪转黄灯 ??????? LJMP??? CIRCLE STATUS0:??????????????????????? ;南北红灯,东西红灯 ??????? MOV???? DPTR,#8300H ??????? MOV???? A,#0FH
显示全部
相似文档