登录
首页 单片机论坛
回帖 发帖
正文

主题:新手上路请帮忙

点击:1319 回复:3

我初学单片机,从电子报摘抄了一个交通灯的实验,现在运行程式时数显管显乱码,应是查码表错请帮忙改正
    一、硬件  硬件电路如附图。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
05-05-03 00:09
这些朋友真差劲,好几天了没一个帮忙的!
05-05-07 12:23
你的硬件图在哪呢?我没找到.
05-05-09 22:19
如果数码管接错线了也会显示乱码的.
05-05-11 21:29

工控新闻

更多新闻资讯