پروژه قفل دیجیتالی با آی سی 8051

نوشته شده توسط:robofaadmin در پروژه های آماده میکروکنترلر

شاید در فیلمهای مختلف دیده باشید که یک نفر برای بازکردن درب گاوصندوق و یا اتاق کار فوق امنیتی خود، بدون داشتن کلید و تنها با استفاده از یک کلمه عبور اقدام میکند. خوب این پروژه همان قفل دیجیتالی است . پروژه کامل و آماده ساخت قفل دیجیتالی درب با میکروکنترلر 8051 به همراه نقشه مدارها و فایل برنامه نویسی پروژه را در این پست از بخش پروژه های میکروکنترلری سایت صنایع آموزشی روبوفا به چشمان پرمهر شما تقدیم میکنیم و امیدواریم از ساخت این پروژه نهایت لذت را برده و طعم واقعی لذت الکترونیک را بچشید. مغز متفکر این پروژه آی سی 8051 است و یک کی پد یا صفحه کلید در کنار آن قرار گرفته تا شما بتوانید رمز قفل را وارد کنید. همچنین از یک ال سی دی کاراکتری در این پروژه استفاده شده است تا پیامها و مقادیر ورودی و خروجی را مشاهده نمایید. بازوی این قفل یک رله 12 ولت است که به کمک آن میتوانید هر محرکی که برای بازشدن درب نیاز به تحریک دارد را فعال کنید. برای مثال میتوانید آن را به درب بازکن یا جک هیدولیکی متصل نمایید.

لازم به ذکر است از این پروژه میتوانید به عنوان قفل دیجیتالی وسایلی نظیر تلویزیون، کامپیوتر و ... هم استفاده کنید و یا با ترکیب آن با مدارات دیگر یک سیستم امنیتی کامل بسازید. نقشه شماتیک مدار را در شکل زیر مشاهده مینمایید:

پروژه کامل و آماده قفل دیجیتال با میکروکنترلر 8051

در این پروژه قفل ما دارای یک رمز عبور 5 رقمی است که کاربر باید به ترتیب این عدد 5 رقمی را وارد کند تا قفل دیجیتالی باز شود. رمز فوق الذکر از پیش تعیین شده و در برنامه قفل قرار گرفته است. اگر رمز درست وارد شود رله برای مدتی فعال و دوباره غیر فعال میشود و اگر رمز اشتباه باشد رله عمل نکرده و قفل بسته میماند. لازم به ذکر است که در بخش پروژه های میکروکنترلری روبوفا تعداد زیادی پروژه با آی سی 8051 قرار داده ایم که شما را به دیدن این مطالب نیز دعوت میکنیم.در جدول زیر قطعات مصرفی را مشاهده مینمایید:

8051 – AT89S51 – 1 16×2 LCD Module – 1
4X4 Keypad – 1 10K Resistor Network – 1
12V Relay – 1  
Transistor – BC548 – 1 Diode – 1N4007 – 1
Push Button Switch – 1 Crystal – 11.059Mhz – 1
Capacitors
33pF -2 0.1uF -1
10uF -1 1
Resistors
10K Ohm – 1 100 Ohm -1
8.2K Ohm – 1 330 Ohm -1
4.7K Ohm – 1

همچنین باید بدانید که در این پروژه از یک کیپد 4*4 استفاده کرده ایم که به Port 3 آی سی 8051 متصل گردیده است. در کنار این کیپد ال سی دی 16*2 کاراکتری برای نمایش خطاها و پیامهای پروژه قفل دیجیتالی قرارداده شده است که در مد 8 بیتی استفاده شده است (آموزش نحوه اتصال ال سی دی به میکروکنترلر را در بخش آموزشگاه آنلاین سایت روبوفا میتوانید مشاهده کنید.

کلیدی که در مدار تعبیه شده جهت ریست کردن میکروکنترلر استفاده گردیده است. همچنین از یک رله 12V SPDT برای پروژه قفل درب دیجیتال استفاده می شود و به P2.0 وصل شده است که از یک ترانزیستور (BC548 به عنوان درایور رله استفاده گردیده که استفاده از این ترانزیستور تقریبا ضروری است.

ما در این پروژه رمز پیشفرض را 12345 قرار داده ایم که تکه برنامه آن به شکل زیر است:

PASSW: DB 49D,50D,51D,52D,53D,0 // Decimal equivalent of 1,2,3,4,5 is stored in address label PASSW

 

برنامه نویسی پروژه قفل رمزدار دیجیتال به شرح ذیل میباشد:

	RS EQU P2.7
RW EQU P2.6
E  EQU P2.5
SEL EQU 41H



ORG 000H 
CLR P2.0
MOV TMOD,#00100001B
MOV TH1,#253D
MOV SCON,#50H
SETB TR1
ACALL LCD_INIT
MOV DPTR,#TEXT1
ACALL LCD_OUT
ACALL LINE2
MOV DPTR,#TEXT2
ACALL LCD_OUT



MAIN:ACALL LCD_INIT
     MOV DPTR,#TEXT1
     ACALL LCD_OUT
     ACALL LINE2
     MOV DPTR,#TEXT2
     CLR P2.0
     ACALL LCD_OUT
     ACALL DELAY1
     ACALL DELAY1
     ACALL READ_KEYPRESS
     ACALL LINE1 
     MOV DPTR,#CHKMSG
     ACALL LCD_OUT
     ACALL DELAY1
     ACALL CHECK_PASSWORD      
     SJMP MAIN

LCD_INIT: MOV DPTR,#INIT_COMMANDS
          SETB SEL
          ACALL LCD_OUT
          CLR SEL
          RET      

LCD_OUT:  CLR A
           MOVC A,@A+DPTR
           JZ EXIT
           INC DPTR
           JB SEL,CMD
           ACALL DATA_WRITE
           SJMP LCD_OUT
CMD:      ACALL CMD_WRITE 
           SJMP LCD_OUT
EXIT:	   RET          

LINE2:MOV A,#0C0H 
    ACALL CMD_WRITE
    RET   
    
LINE1: MOV A,#80H    
ACALL CMD_WRITE
RET

CLRSCR: MOV A,#01H
ACALL CMD_WRITE
RET

CMD_WRITE: MOV P0,A
    CLR RS
    CLR RW
    SETB E
    CLR E
    ACALL DELAY
    RET

DATA_WRITE:MOV P0,A
    SETB RS
    CLR RW
    SETB E
    CLR E
    ACALL DELAY
    RET

DELAY: CLR E
    CLR RS
    SETB RW
    MOV P0,#0FFh
    SETB E
    MOV A,P0
    JB ACC.7,DELAY
    CLR E
    CLR RW
    RET
    
DELAY1:MOV R3,#46D
BACK:  MOV TH0,#00000000B   
       MOV TL0,#00000000B   
       SETB TR0             
HERE1: JNB TF0,HERE1         
       CLR TR0             
       CLR TF0             
       DJNZ R3,BACK
       RET
       
DELAY2: MOV R3,#250D
BACK2:   MOV TH0,#0FCH 
        MOV TL0,#018H 
        SETB TR0 
HERE2:  JNB TF0,HERE2 
        CLR TR0 
        CLR TF0 
        DJNZ R3,BACK2
        RET       


READ_KEYPRESS: ACALL CLRSCR
ACALL LINE1
MOV DPTR,#IPMSG
ACALL LCD_OUT
ACALL LINE2
MOV R0,#5D
MOV R1,#160D
ROTATE:ACALL KEY_SCAN
MOV @R1,A
ACALL DATA_WRITE
ACALL DELAY2
INC R1
DJNZ R0,ROTATE
RET



CHECK_PASSWORD:MOV R0,#5D
MOV R1,#160D
MOV DPTR,#PASSW 
RPT:CLR A
MOVC A,@A+DPTR
XRL A,@R1
JNZ FAIL
INC R1
INC DPTR
DJNZ R0,RPT
ACALL CLRSCR
ACALL LINE1
MOV DPTR,#TEXT_S1
ACALL LCD_OUT
ACALL LINE2
ACALL DELAY1
SETB P2.0
MOV DPTR,#TEXT_S2
ACALL LCD_OUT
ACALL DELAY1
SJMP GOBACK
FAIL:ACALL CLRSCR 
ACALL LINE1
MOV DPTR,#TEXT_F1
ACALL LCD_OUT
ACALL DELAY1
ACALL LINE2
MOV DPTR,#TEXT_F2
ACALL LCD_OUT
ACALL DELAY1
GOBACK:RET



KEY_SCAN:MOV P3,#11111111B 
CLR P3.0 
JB P3.4, NEXT1 
MOV A,#49D
RET

NEXT1:JB P3.5,NEXT2
MOV A,#50D

RET
NEXT2: JB P3.6,NEXT3
MOV A,#51D

RET
NEXT3: JB P3.7,NEXT4
MOV A,#65D

RET
NEXT4:SETB P3.0
CLR P3.1 
JB P3.4, NEXT5 
MOV A,#52D

RET
NEXT5:JB P3.5,NEXT6
MOV A,#53D

RET
NEXT6: JB P3.6,NEXT7
MOV A,#54D
RET
NEXT7: JB P3.7,NEXT8
MOV A,#66D

RET
NEXT8:SETB P3.1
CLR P3.2
JB P3.4, NEXT9 
MOV A,#55D

RET
NEXT9:JB P3.5,NEXT10
MOV A,#56D

RET
NEXT10: JB P3.6,NEXT11
MOV A,#57D

RET
NEXT11: JB P3.7,NEXT12
MOV A,#67D

RET
NEXT12:SETB P3.2
CLR P3.3
JB P3.4, NEXT13 
MOV A,#42D

RET
NEXT13:JB P3.5,NEXT14
MOV A,#48D

RET
NEXT14: JB P3.6,NEXT15
MOV A,#35D

RET
NEXT15: JB P3.7,NEXT16
MOV A,#68D
RET
NEXT16:LJMP KEY_SCAN




INIT_COMMANDS:  DB 0CH,01H,06H,80H,3CH,0    

TEXT1: DB "PASSWORD BASED",0 
TEXT2: DB "SECURITY SYSTEM",0 
IPMSG: DB "INPUT 5 DIGITS",0
CHKMSG: DB "CHECKING PASSWORD",0
TEXT_S1: DB "ACCESS - GRANTED",0
TEXT_S2: DB "DOOR OPENED",0
TEXT_F1: DB "WRONG PASSWORD",0
TEXT_F2: DB "ACCESS DENIED",0
PASSW: DB 49D,50D,51D,52D,53D,0
END