[求助] 请大家过来看看我的毕业设计出了什么问题

mrfantexi   2011-12-10 15:10 楼主

7.png

我现在正在做毕业设计,但是遇到了点问题 请大家过来帮忙看下

下面是我的程序

ORG  0000H
LJMP MAIN
ORG     0003H    ;外部中断0入口(夜间模式)
LJMP NIGHT
ORG     0013H    ;外部中断1入口(紧急模式)
LJMP DANGER
ORG     0100H

MAIN:            ;主程序实现正常工作状态
SETB EA                  ;开总中断
SETB EX0           ;开外部中断0
CLR     PX0              ;中断0低优先级
CLR     IT0           ;电平触发
SETB EX1           ;开外部中断1
SETB PX1           ;中断1高优先级
CLR     IT1           ;电平触发
MOV     60H,#03H      ;黄灯闪烁次数
MOV     R0,#00H       ; 
MOV     P2,R0       ;灯全灭
SETB P2.7       ;南北绿灯亮
SETB P2.1       ;东西红灯亮
ACALL DISPLAY       ;显示倒计时
SETB    P1.0
SETB    P1.1
CLR     P2.7          ;南北绿灯灭
CLR     P2.1    ;东西红灯灭
SETB P2.6       ;南北黄灯亮
ACALL FLASH1       ;南北方向黄灯闪烁
CLR     P2.6          ;南北黄灯灭
CLR     P2.1       ;东西红灯灭
SETB P2.3       ;东西绿灯亮
SETB P2.5       ;南北红灯亮
ACALL DISPLAY       ;显示倒计时
SETB    P1.0
SETB    P1.1
CLR     P2.3       ;东西绿灯灭
CLR     P2.5    ;南北红灯灭
SETB P2.2       ;东西黄灯亮
ACALL   FLASH2       ;东西方向黄灯灯闪烁
CLR     P2.2       ;东西黄灯灭
LJMP MAIN       ;循环执行正常模式

DISPLAY:
    MOV 30H,#30
L1: MOV A,30H
    MOV B,#10
    DIV AB
    MOV DPTR,#TABLE
    MOV R0,A
    MOV R1,B
    MOV R2,#10              ;增加循环用于延时。
K1: SETB P1.1
    CLR P1.0
    MOVC A,@A+DPTR
    MOV P0,A
    LCALL DEL
    MOV DPTR,#TABLE
    SETB P1.0
    CLR  P1.1
    MOV A,R1
    MOVC A,@A+DPTR
    MOV P0,A
    MOV A,R0
    LCALL DEL
    DJNZ R2,K1              ;判断循环次数到了没  
    DJNZ 30H, L1         ;判断25减完了没有
    RET

DISPLAY1:
    MOV 31H,#9
L2: MOV A,31H
    MOV B,#10
    DIV AB
    MOV DPTR,#TABLE
    MOV R0,A
    MOV R1,B
    MOV R2,#10              ;增加循环用于延时。
K2: SETB P1.1
    CLR P1.0
    MOVC A,@A+DPTR
    MOV P0,A
    LCALL DEL
    MOV DPTR,#TABLE
    SETB P1.0
    CLR  P1.1
    MOV A,R1
    MOVC A,@A+DPTR
    MOV P0,A
    MOV A,R0
    LCALL DEL
    DJNZ R2,K2              ;判断循环次数到了没  
    DJNZ 31H, L2         ;判断30S减完了没有
    RET

DEL: MOV R5,#5
DD2: MOV R6,#20
DD1: MOV R7,#248
     DJNZ R7,$
     DJNZ R6,DD1
     DJNZ R5,DD2
  RET

FLASH1: SETB P2.6  ;南北方向黄灯闪烁子程序
        SETB    P2.1  ;东西方向红灯闪烁子程序
     ACALL DELAY1  ;短延时1
      CLR     P2.6     ;南北方向黄灯灭
  CLR     P2.1  ;东西方向红灯灭
     ACALL DELAY1  ;短延时1
     DJNZ 60h,FLASH1 ;循环3次
     MOV     60h,#3     ;重装循环次数
     RET

FLASH2: SETB P2.2  ;东西方向黄灯闪烁子程序
        SETB    P2.5  ;南北方向红灯闪烁子程序
     ACALL DELAY1  ;短延时1
     CLR     P2.2  ;东西方向黄灯灭
  CLR     P2.5  ;南北方向红灯灭
     ACALL DELAY1  ;短延时1
     DJNZ 60h,FLASH2 ;循环3次
     MOV     60h,#3  ;重装循环次数
     RET


DELAY1: MOV  R2,#10  ;短延时1子程序
DEL8: MOV  R3,#100
DEL7: MOV  R4,#75
DEL6: NOP
       NOP
       DJNZ  R4,DEL6
       DJNZ  R3,DEL7
       DJNZ  R2,DEL8
       RET

DELAY2: MOV  R2,#1  ;短延时2子程序
D8:   MOV  R3,#10
D7:     MOV  R4,#10
D6:     NOP
       NOP
       DJNZ  R4,D6
       DJNZ  R3,D7
       DJNZ  R2,D8
       RET

NIGHT:  MOV     R0,#00H      ;夜间模式
        MOV     P2,R0        ;灯全灭
        SETB    P2.7         ;南北绿灯亮
        SETB    P2.1         ;东西红灯亮
        ACALL   DISPLAY1     ;显示倒计时
  SETB    P1.0
        SETB    P1.1
        CLR     P2.7         ;南北绿灯灭
  CLR     P2.1   ;东西红灯灭
        SETB    P2.6         ;南北黄灯亮
        ACALL FLASH1      ;南北方向黄灯闪烁
        CLR     P2.6         ;南北黄灯灭
        CLR     P2.1         ;东西红灯灭
        SETB    P2.3         ;东西绿灯亮
        SETB    P2.5         ;南北红灯亮
        ACALL   DISPLAY1     ;显示倒计时
  SETB    P1.0
        SETB    P1.1
        CLR     P2.3         ;东西绿灯灭
  CLR     P2.5   ;南北红灯灭
        SETB    P2.2         ;东西黄灯亮
        ACALL FLASH2      ;东西方向黄灯闪烁
        CLR     P2.2         ;东西黄灯灭
     LJMP NIGHT

 

DANGER: MOV     P2,#00H   ;紧急状态通行子程序
        SETB    P1.0
        SETB    P1.1
     SETB P2.5  ;南北红灯亮
     SETB P2.1  ;东西红灯亮
     CALL DELAY2  ;短延时2
     SJMP DANGER  ;紧急状态循环

 


TABLE:  DB 3FH ,06H, 5BH ,4FH ,66H ,6DH, 7DH ,07H ,7FH, 6FH
        END

 

在proteus模拟的时候是没问题的 但是在做硬件的时候无论怎么改程序发光二极管却一直亮,而且那个数码管一直没反应不亮,数码管用的是共阴的,led灯也是共阴接法,是什么问题呢 补充一句,我模拟的时候是at89c51,但是硬件用的是stc89c52

keil.rar (20.8 KB)
(下载次数: 6, 2011-12-10 16:26 上传)
proteus.rar (96.74 KB)
(下载次数: 8, 2011-12-10 16:26 上传)

[ 本帖最后由 mrfantexi 于 2011-12-10 16:26 编辑 ]

回复评论 (11)

LZ最好上传下仿真图文件,好调试
点赞  2011-12-10 16:12

回复 沙发 孤獨の快樂 的帖子

怎么这几天发现,好多帖子都有你的足迹~~呵呵
你是学生吧~~
大几哦?
点赞  2011-12-10 23:27
汇编 爱莫能助啊
点赞  2011-12-10 23:48
引用: 原帖由 _Justin 于 2011-12-10 23:27 发表 怎么这几天发现,好多帖子都有你的足迹~~呵呵 你是学生吧~~ 大几哦?
大四了,天天逛该论坛,懂的就回答
点赞  2011-12-11 10:26
这两芯片程序可以通用的
初步猜想,应该是你的硬件问题,你试下P2输出全低是不是led都灭
点赞  2011-12-11 10:39

今天我再试了一遍,先从红绿黄灯入手,发现可以运作,但是绿灯亮度不够,基本不亮,细微观察是亮的,而黄灯基本亮,三个灯中红灯最亮,为什么会出现这种情况?应该这三个口输出电流都一样的啊

点赞  2011-12-11 20:59

回复 7楼 mrfantexi 的帖子

你的灯的话 最好是 VCC - R - LED - IO口 这样的话 应该不会出现你这样的问题。
点赞  2011-12-11 23:05
引用: 原帖由 mrfantexi 于 2011-12-11 20:59 发表 今天我再试了一遍,先从红绿黄灯入手,发现可以运作,但是绿灯亮度不够,基本不亮,细微观察是亮的,而黄灯基本亮,三个灯中红灯最亮,为什么会出现这种情况?应该这三个口输出电流都一样的啊
我也做过交通灯,只能说绿色的LED亮度就是比较暗。建议电阻改小点吧
点赞  2011-12-12 09:46

LED灯的标称电压是有差别的

红色的最低,蓝色最高,绿色在中间,我还是同意8楼的看法采用VCC - R - LED - IO这样的方式比较好
点赞  2011-12-12 10:26
谢谢,换成8楼那样就解决了,不过现在还有个问题,我的数码管现在也能用了,就是会一直闪烁,我采用的是静态的。
点赞  2011-12-12 15:07

回复 4楼 常见泽1 的帖子

汇编我也不会啊。。。
点赞  2011-12-13 00:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复