发表于:2005/5/3 0:09:00
#0楼
我初学单片机,从电子报摘抄了一个交通灯的实验,现在运行程式时数显管显乱码,应是查码表错请帮忙改正
一、硬件 硬件电路如附图。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
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
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
一、硬件 硬件电路如附图。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
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
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