اطلاعیه

Collapse
No announcement yet.

کمک برای عیب یابی پروژه کنترل هوشمند نور محیط با شمارشگر دوطرفه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک برای عیب یابی پروژه کنترل هوشمند نور محیط با شمارشگر دوطرفه

    سلام دوستان.
    این پروژه پایان ترم من هست،
    AUTOMATIC ROOM LIGHT CONTROLLER WITH BIDIRECTIONAL VISITOR COUNTER



    http://www.8051projects.net/download-d119-automatic-room-light-controller-visitor-counter-updated.html
    چیزی که ساختم:


    کنترل هوشمند نور محیط با شمارشگر اشخاص ورودی و خروجی با سنسورهای مادون قرمز و میکروکنترلر AT89S52
    به جای سنسور های سه پایه مادون قرمز کاری کردم که مدار با فوتوترانزیستور های دو پایه کار کنه و مشکلی نداره از این لحاظ.
    مدار رو بستم و تموم شده فقط یک مشکلی هست اینکه، موقع ورود شخص به طور صحیح شمارش انجام میشه ولی موقع برگشت درست تشخیص داده نمیشه! یعنی مثل بچه آدم Decrease نمیشه!


    درستش اینه که به این ترتیب عمل کنه:
    شمارش +

    تحریک سنسور یک
    تحریک سنسور دو


    شمارش منفی:

    تحریک سنسور دو
    تحریک سنسور یک


    ولی مشکل اینه که برای شمارش منفی باید اینجوری کنم:

    تحریک سنسور دو و ماندن دست جلو سنسور
    تحریک سنسور یک و ماندن دست جلو سنسور
    برداشتن دست از جلو سنسور یک
    برداشتن دست از جلو سنسور دو



    عیب یابی انجام دادم و به احتمال قوی بخش های سخت افزاری مشکلی ندارند و مشکل از برنامه هست.


    برنامه اسمبلی این پروژه:

    کد:
    INCLUDE reg_51.pdf
    RB0 EQU 000H ; Select Register Bank 0
    RB1 EQU 008H ; Select Register Bank 1 ...poke to PSW to use
    DIS_A EQU P0.2
    DIS_B EQU P0.3
    DIS_C EQU P0.4
    DIS_D EQU P0.6
    DIS_E EQU P0.5
    DIS_F EQU P0.1
    DIS_G EQU P0.0
    DIS1 EQU P0.7
    DIS2 EQU P2.6
    LIGHT EQU P2.7
    SEN1 EQU P1.0
    SEN2 EQU P1.1
    DSEG ; This is internal data memory
    ORG 20H ; Bit adressable memory
    COUNT: DS 1
    SPEED: DS 1
    VALUE_1: DS 1
    VALUE_2: DS 1
    NUMB1: DS 1
    NUMB2: DS 1
    NUMB3: DS 1
    VISITOR: DS 1
    STACK DATA 3FH
    CSEG AT 0 ; RESET VECTOR
    ;---------==========----------==========---------=========---------
    ; PROCESSOR INTERRUPT AND RESET VECTORS
    ;---------==========----------==========---------=========---------
    ORG 00H ; Reset
    JMP MAIN
    ORG 000BH ;Timer Interrupt0
    JMP REFRESH
    ;---------==========----------==========---------=========---------
    ; Main routine. Program execution starts here.
    ;---------==========----------==========---------=========---------
    
    MAIN:
    MOV PSW,#RB0 ; Select register bank 0
    MOV SP,STACK
    CLR LIGHT
    MOV VISITOR,#00H
    MOV SPEED,#00H
    MOV COUNT,#00H
    MOV VALUE_1,#15H
    MOV VALUE_2,#15H 
    CLR DIS1
    CLR DIS2
    MOV TMOD,#01H ;enable timer0 for scanning
    MOV TL0,#00H
    MOV TH0,#0FDH
    SETB ET0
    SETB EA
    SETB TR0 ;Start the Timer
    MOV VALUE_1,#00H
    MOV VALUE_2,#00H
    SETB SEN1
    SETB SEN2
    UPP: JNB SEN1,UP_COUNT
    JB SEN2,UPP
    MOV A,VISITOR ;DOWN COUNTING
    CJNE A,#00,UAPS
    CLR LIGHT
    JNB SEN2,$
    CALL DELAY
    JB SEN1,$
    CALL DELAY
    JNB SEN1,$
    CALL DELAY
    AJMP UPP
    UAPS:DEC VISITOR
    MOV A,VISITOR
    CJNE A,#00,UAPA
    CLR LIGHT 
    UAPA:MOV R2,VISITOR
    MOV R1,#00H
    MOV R3,#00D
    MOV R4,#00D
    MOV R5,#00D
    MOV R6,#00D
    MOV R7,#00D
    CALL HEX2BCD
    MOV VALUE_2,R3
    MOV VALUE_1,R4
    JNB SEN2,$
    CALL DELAY
    JB SEN1,$
    CALL DELAY
    JNB SEN1,$
    CALL DELAY
    AJMP UPP
    UP_COUNT:
    SETB LIGHT
    INC VISITOR
    MOV A,VISITOR
    CJNE A,#99,UPPS
    MOV VISITOR,#98
    JNB SEN1,$
    CALL DELAY
    JB SEN2,$
    CALL DELAY
    JNB SEN2,$
    CALL DELAY
    AJMP UPP
    UPPS:MOV R2,VISITOR
    MOV R1,#00H
    MOV R3,#00D
    MOV R4,#00D
    MOV R5,#00D
    MOV R6,#00D
    MOV R7,#00D
    CALL HEX2BCD
    MOV VALUE_2,R3
    MOV VALUE_1,R4
    JNB SEN1,$
    CALL DELAY
    JB SEN2,$
    CALL DELAY
    JNB SEN2,$
    CALL DELAY
    AJMP UPP
    ;**************************************************
    HEX2BCD:
    MOV B,#10D
    MOV A,R2
    DIV AB
    MOV R3,B ;
    MOV B,#10 ; R7,R6,R5,R4,R3
    DIV AB
    MOV R4,B
    MOV R5,A
    CJNE R1,#0H,HIGH_BYTE ; CHECK FOR HIGH BYTE
    SJMP ENDD
    HIGH_BYTE:
    MOV A,#6
    ADD A,R3
    MOV B,#10
    DIV AB
    MOV R3,B
    ADD A,#5
    ADD A,R4
    MOV B,#10
    DIV AB
    MOV R4,B
    ADD A,#2
    ADD A,R5
    MOV B,#10
    DIV AB
    MOV R5,B
    CJNE R6,#00D,ADD_IT
    SJMP CONTINUE
    ADD_IT:
    ADD A,R6
    CONTINUE:
    MOV R6,A
    DJNZ R1,HIGH_BYTE
    MOV B, #10D
    MOV A,R6
    DIV AB
    MOV R6,B
    MOV R7,A
    ENDD: RET
    ;***************************************************************************
    ;
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    ; 7 SEGMENT DISPLAY ROUTINE
    ;
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    DISP:
    MOV R2,SPEED
    CJNE R2,#00H,AAS1
    CLR DIS_A
    CLR DIS_B
    CLR DIS_C
    CLR DIS_D
    CLR DIS_E
    CLR DIS_F
    SETB DIS_G
    RET
    AAS1: CJNE R2,#01H,AS2
    CLR DIS_B
    CLR DIS_C
    SETB DIS_A
    SETB DIS_D
    SETB DIS_E
    SETB DIS_F
    SETB DIS_G
    RET
    AS2: CJNE R2,#02H,AS3
    CLR DIS_A
    CLR DIS_B
    CLR DIS_D
    CLR DIS_E
    CLR DIS_G
    SETB DIS_C
    SETB DIS_F
    RET
    AS3: CJNE R2,#03H,AS4
    CLR DIS_A
    CLR DIS_B
    CLR DIS_C
    CLR DIS_D
    CLR DIS_G
    SETB DIS_E
    SETB DIS_F
    RET
    AS4: CJNE R2,#04H,AS5
    CLR DIS_B
    CLR DIS_C
    CLR DIS_F
    CLR DIS_G
    SETB DIS_A
    SETB DIS_D
    SETB DIS_E
    RET
    AS5: CJNE R2,#05H,AS6
    CLR DIS_A
    CLR DIS_C
    CLR DIS_D
    CLR DIS_F
    CLR DIS_G
    SETB DIS_B
    SETB DIS_E
    RET
    AS6: CJNE R2,#06H,AS7
    CLR DIS_A
    CLR DIS_C
    CLR DIS_D
    CLR DIS_E
    CLR DIS_F
    CLR DIS_G
    SETB DIS_B
    RET
    AS7: CJNE R2,#07H,AS8
    CLR DIS_A
    CLR DIS_B
    CLR DIS_C
    SETB DIS_D
    SETB DIS_E
    SETB DIS_F
    SETB DIS_G
    RET
    AS8: CJNE R2,#08H,AS9
    CLR DIS_A
    CLR DIS_B
    CLR DIS_C
    CLR DIS_D
    CLR DIS_E
    CLR DIS_F
    CLR DIS_G
    RET
    AS9: CJNE R2,#09H,AS10
    CLR DIS_A
    CLR DIS_B
    CLR DIS_C
    CLR DIS_D
    CLR DIS_F
    CLR DIS_G
    SETB DIS_E
    RET
    AS10: CJNE R2,#15H,AS11 ;symbol for -
    SETB DIS_A
    SETB DIS_B
    SETB DIS_C
    SETB DIS_D
    SETB DIS_E
    SETB DIS_F
    CLR DIS_G
    RET
    AS11: CJNE R2,#16H,AS12 ;switch off all disp
    SETB DIS_A
    SETB DIS_B
    SETB DIS_C
    SETB DIS_D
    SETB DIS_E
    SETB DIS_F
    SETB DIS_G
    RET
    AS12: MOV SPEED,#00H
    AJMP DISP
    ;**********************************************************
    ; INTRRUPT ROUTINE TO REFRESH THE DISPLAY
    ;**********************************************************
    REFRESH:
    PUSH PSW ; save current registerset
    MOV PSW,#RB1
    PUSH ACC
    INC COUNT
    MOV R4,COUNT
    QA1: CJNE R4,#01H,QA2
    MOV SPEED,VALUE_1
    SETB DIS1
    CLR DIS2
    CALL DISP
    AJMP DOWN
    QA2: CJNE R4,#02H,QA3
    MOV SPEED,VALUE_2
    CLR DIS1
    SETB DIS2
    CALL DISP
    AJMP DOWN
    QA3: MOV COUNT,#01H
    MOV R4,COUNT
    AJMP QA1
    DOWN: MOV TL0,#0FFH
    MOV TH0,#0F0H
    POP ACC
    POP PSW
    RETI
    ;**********************************************************
    DELAY:MOV R1,#4FH
    REP2: MOV R2,#0FFH
    REP1: NOP
    DJNZ R2,REP1
    DJNZ R1,REP2
    RET
    ;**********************************************************
    END
    البته من فایلHex رو از این سایت دانلود کردم و مستقیم ریختم رو میکرو:
    http://www.8051projects.net/download-d119-automatic-room-light-controller-visitor-counter-updated.html


    کد:
    :0300000002000EED
    :10000B000201FD75D000853F81C2A77527007521C0
    :10001B0000752000752215752315C287C2A6758938
    :10002B0001758A00758CFDD2A9D2AFD28C752200D6
    :10003B00752300D290D2913090502091FAE527B4DD
    :10004B000016C2A73091FD1202362090FD12023627
    :10005B003090FD12023601421527E527B40002C28B
    :10006B00A7AA2779007B007C007D007E007F001211
    :10007B0000DE8B238C223091FD1202362090FD1274
    :10008B0002363090FD1202360142D2A70527E52732
    :10009B00B463177527623090FD1202362091FD1262
    :1000AB0002363091FD1202360142AA2779007B00FD
    :1000BB007C007D007E007F001200DE8B238C2230C3
    :1000CB0090FD1202362091FD1202363091FD120284
    :1000DB0036014275F00AEA84ABF075F00A84ACF095
    :1000EB00FDB90002802C74062B75F00A84ABF0244A
    :1000FB00052C75F00A84ACF024022D75F00A84AD42
    :10010B00F0BE000280012EFED9DC75F00AEE84AE43
    :10011B00F0FF22AA21BA000FC282C283C284C28618
    :10012B00C285C281D28022BA010FC283C284D2821D
    :10013B00D286D285D281D28022BA020FC282C283EA
    :10014B00C286C285C280D284D28122BA030FC282F8
    :10015B00C283C284C286C280D285D28122BA040FE6
    :10016B00C283C284C281C280D282D286D28522BA95
    :10017B00050FC282C284C286C281C280D283D2855D
    :10018B0022BA060FC282C284C286C285C281C280D5
    :10019B00D28322BA070FC282C283C284D286D2858F
    :1001AB00D281D28022BA080FC282C283C284C28695
    :1001BB00C285C281C28022BA090FC282C283C284A5
    :1001CB00C286C281C280D28522BA150FD282D28357
    :1001DB00D284D286D285D281C28022BA160FD28225
    :1001EB00D283D284D286D285D281D280227521004D
    :1001FB00211EC0D075D008C0E00520AC20BC010B7F
    :10020B00852221D287C2A6311E412BBC020B85232E
    :10021B0021C287D2A6311E412B752001AC2041088B
    :10022B00758AFF758CF0D0E0D0D032794F7AFF0011
    :05023B00DAFDD9F922F3
    :00000001FF

    #2
    پاسخ : کمک برای عیب یابی پروژه کنترل هوشمند نور محیط با شمارشگر دوطرفه

    Help
    :cry:

    دیدگاه


      #3
      پاسخ : کمک برای عیب یابی پروژه کنترل هوشمند نور محیط با شمارشگر دوطرفه

      کسی اینجا نیست؟
      any body
      no body
      HELP

      دیدگاه


        #4
        پاسخ : کمک برای عیب یابی پروژه کنترل هوشمند نور محیط با شمارشگر دوطرفه

        حیف که دیر رسیدم. مشکلتون حل شد؟

        دیدگاه


          #5
          پاسخ : کمک برای عیب یابی پروژه کنترل هوشمند نور محیط با شمارشگر دوطرفه

          سلام لطف می کنید برنامه این پروژه را برای من بفرستید
          m_zarorati@yahoo.com
          با تشکر.

          دیدگاه

          لطفا صبر کنید...
          X