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

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

کنترل هوشمند نور محیط با شمارشگر اشخاص ورودی و خروجی با سنسورهای مادون قرمز و میکروکنترلر AT89S52
به جای سنسور های سه پایه مادون قرمز کاری کردم که مدار با فوتوترانزیستور های دو پایه کار کنه و مشکلی نداره از این لحاظ.
مدار رو بستم و تموم شده فقط یک مشکلی هست اینکه، موقع ورود شخص به طور صحیح شمارش انجام میشه ولی موقع برگشت درست تشخیص داده نمیشه! یعنی مثل بچه آدم Decrease نمیشه!
درستش اینه که به این ترتیب عمل کنه:
شمارش +
تحریک سنسور یک
تحریک سنسور دو
شمارش منفی:
تحریک سنسور دو
تحریک سنسور یک
ولی مشکل اینه که برای شمارش منفی باید اینجوری کنم:
تحریک سنسور دو و ماندن دست جلو سنسور
تحریک سنسور یک و ماندن دست جلو سنسور
برداشتن دست از جلو سنسور یک
برداشتن دست از جلو سنسور دو
عیب یابی انجام دادم و به احتمال قوی بخش های سخت افزاری مشکلی ندارند و مشکل از برنامه هست.
برنامه اسمبلی این پروژه:
البته من فایلHex رو از این سایت دانلود کردم و مستقیم ریختم رو میکرو:
http://www.8051projects.net/download-d119-automatic-room-light-controller-visitor-counter-updated.html
این پروژه پایان ترم من هست،
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
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
دیدگاه