ساخت قفل رمزی 8 رقمه
در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, قفل رمزی 8 رقمه با قابلیت تغییر رمز و ذخیره در EEPROM, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. در این پروژه که هدف ما ساخت دربازکن دیجیتالی است، توسط یک کی پد KeyPad 4*4 می توانید رمز عبور خود را وارد نمائید و سپس در صورتی که رمز عبور صحیح باشد می توانید انتخاب کنید که رله فعال شود یا رمز عبور خود را تغییر دهید.
نقشه شماتیک پروژه
شرح عملکرد پروژه
در حالت پیش فرض رمز عبور “99999999” می باشد که می توانید آن را به راحتی تغییر دهید، همچنین لازم است بدانید در طراحی این پروژه از حافظه EEPROM میکروکنترلر ATmega8 جهت ذخیره رمز استفاده شده است به همین دلیل با قطع برق رمز ورود شما در حافظه میکروکنترلر AVR باقی می ماند و از بین نمی رود.
برای نمایش پیغام ها و عددهای وارد شده توسط کی پد KeyPad از یک LCD کاراکتری در سایز 16 در 2 استفاده شده است، که شما توسط آن قادر خواهید بود به راحتی با سیستم کار کنید. این پروژه یکی از نمونه های عالی برای یادگیری و درک بیشتر دستورات کاربردی Bascom و تکنیک های برنامه نویسی است که علاوه بر مزیت آموزشی آن دارای قابلیت های جالب نیز است.
برنامه میکروکنترلر به زبان بیسیک BASIC در نرم افزار BASCOM-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
$regfile = "m8def.dat" $crystal = 8000000 '---------------------------------------------------LCD Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1 , Db7 = _ Pinc.0 , E = Pinc.4 , Rs = Pinc.5 Config Lcd = 16 * 2 : Cursor Off Deflcdchar 0 , 32 , 4 , 12 , 31 , 12 , 4 , 32 , 32 '---------------------------------------------------Keypad Config Kbd = Portb '---------------------------------------------------I/O Config Pind.0 = Input 'Default Config Pind.1 = Output 'Speaker Config Pind.2 = Output 'Relay Set Portd.0 'Active Pullup Res Default Alias Pind.0 Speaker Alias Pind.1 Relay Alias Portd.2 '---------------------------------------------------Var Dim A As Byte , K As Byte , Result As Byte , Num As String * 1 Dim Pass(8) As String * 1 , Pass1(8) As String * 1 , Pass2(8) As String * 1 Dim Pass_eeprom(8) As Eram String * 1 , Rcv(8) As String * 1 '---------------------------------------------------Sub Declare Sub Check Declare Sub Change '---------------------------------------------------StartUp Sound Speaker , 120 , 20 If Default = 0 Then For A = 1 To 8 Pass_eeprom(a) = "9" Waitms 20 Next A Cursor Off Cls : Home : Lcd "Memoey Erased!" Lowerline : Lcd "Pass=99999999" Sound Speaker , 120 , 60 Waitms 1500 End If For A = 1 To 8 Pass(a) = Pass_eeprom(a) Waitms 20 Next A Clear: Cls : Home : Lcd "Password? F1=" ; Chr(0) Home L : Cursor Blink Sound Speaker , 120 , 60 A = 0 Wait 1 Get_pass: K = Getkbd() If K > 15 Then Goto Get_pass If K = 7 Or K = 11 Or K = 12 Or K = 14 Or K = 15 Then Goto Get_pass If K = 3 Then Goto Clear '<- Sound Speaker , 120 , 20 Incr A Num = Lookupstr(k , Decode) Locate 2 , A : Lcd "*" Rcv(a) = Num If A = 8 Then 'Pass Entered Call Check If Result <> 8 Then Sound Speaker , 120 , 80 Cls : Home : Lcd "Error!" : Cursor Noblink : Waitms 500 Goto Clear Else Result = 0 Goto Main End If End If Waitms 300 Goto Get_pass '******************************* Main Menu ************************************* Main: Cls : Home : Cursor Noblink : Lcd "F1=Relay F2=Exit" Lowerline : Lcd "F3=Change Pass" Sound Speaker , 120 , 100 Sound Speaker , 120 , 80 Sound Speaker , 120 , 60 Menu: K = Getkbd() If K > 15 Then Goto Menu If K = 12 Or K = 14 Or K = 15 Then Goto Menu Sound Speaker , 120 , 20 If K = 3 Then Toggle Relay End If If K = 7 Then Goto Clear If K = 11 Then Call Change Waitms 300 Goto Menu End '************************** Keypad Decode Data Table *************************** Decode: Data "1" , "2" , "3" , "F1" Data "4" , "5" , "6" , "F2" Data "7" , "8" , "9" , "F3" Data "*" , "0" , "#" , "Enter" '************************** Password Checker Subroutine ************************ Sub Check Result = 0 For A = 1 To 8 If Rcv(a) = Pass(a) Then Incr Result Next A End Sub '************************* Change Password Subrounite ************************** Sub Change Clear1: A = 0 Cls : Home : Lcd "New Password? " Sound Speaker , 120 , 60 Home L : Cursor Blink First: K = Getkbd() If K > 15 Then Goto First If K = 11 Or K = 12 Or K = 14 Or K = 15 Then Goto First If K = 3 Then Goto Clear1 '<- If K = 7 Then Goto Clear 'Exit Sound Speaker , 120 , 20 Incr A Num = Lookupstr(k , Decode) Pass1(a) = Num Locate 2 , A : Lcd "*" Waitms 300 If A = 8 Then Goto Check1 Goto First Check1: Sound Speaker , 120 , 60 A = 0 Cls : Home : Lcd "Confirm F1=" ; Chr(0) Home L Last: K = Getkbd() If K > 15 Then Goto Last If K = 7 Or K = 11 Or K = 12 Or K = 14 Or K = 15 Then Goto Last If K = 3 Then Goto Check1 Sound Speaker , 120 , 20 Incr A Num = Lookupstr(k , Decode) Pass2(a) = Num Locate 2 , A : Lcd "*" Waitms 300 If A = 8 Then Goto Check2 Goto Last Check2: Cursor Noblink Result = 0 For A = 1 To 8 If Pass1(a) = Pass2(a) Then Incr Result Next A If Result = 8 Then For A = 1 To 8 Pass(a) = Pass1(a) Pass_eeprom(a) = Pass1(a) Waitms 20 Next A Cls : Home : Lcd "Pass Changed!" Sound Speaker , 120 , 100 Sound Speaker , 120 , 80 Sound Speaker , 120 , 60 Wait 1 : Goto Clear Else Sound Speaker , 120 , 80 Cls : Home : Lcd "Error!" : Waitms 500 : Goto Clear1 End If End Sub |
همچنین فایل شبیه ساز این پروژه نیز که با نرم افزار Proteus 8 Professional طراحی شده، پیوست فایل پروژه جهت دانلود قرار داده شده است، که می تواند شما را در یادگیری هر چه بهتر مدار و نحوه عملکرد آن یاری نماید.
سلام اصلا گزینه دانلود نداره توروخدا درستش کنید
سلام دوست عزیز
از بخش انتهایی پروژه میتونید اقدام به خرید و دانلود پروژه به صورت آنلاین کنید.
درود
فایل pcb مدار هم وجود داره ؟
سلام دوست عزیز
خیر
چطور میشه رمزش رو عوض کرد
لطفا دقیقا بگید که رله به کدام قسمت وصل می شود؟
سلام دوست عزیز
برای اتصال رله باید از پورت PD.2 استفاده کنید، که در اینجا برای نمایش عملکرد آن از یک لامپ LED استفاده شده است.
برای تغییر رمز عبور نیز باید بر روی کی پد کلید F3 را فشار دهید.
با اجرای فایل شبیه ساز این پروژه در نرم افزار Proteus می توانید نحوه عملکرد مدار را مشاهد کنید.
سلام می خواستم بدونم شکل پی سی بی این این مدار نیست ؟.
بعد اگه بخوام جای کلید های فشاری کیبرد 3*4بزاریم باید چجوری به ایسی وصل کنیم
سلام دوست عزیز
برای این پروژه PCB طراحی نشده است، اتصال کیپد 3*4 نیز دقیقا به همین صورت است تنها تفاوت آن این است که ما تنها به 7 پایه از میکروکنترلر جهت اتصال کیپد نیاز داریم.
سلام خسته نباشید , ببخشید فایل برنامه نویسی به زبان c شو میخوام
سلام دوست عزیز
در حال حاضر تنها این پرژه به زبان بیسیک نوشته شده است.
با سلام
فایل Digital Look KeyPad.pdsprj باپروتوس 8 باز نمیشود لطفا راهنمایی کنید چگونه باید شبیه سازی انجام شود.
با تشکر
سلام دوست عزیز
فایل هیچگونه مشکلی ندارد، لطفا از نرم افزار Proteus ارائه شده در سایت الکترونیک98 جهت باز کردن فایل استفاده کنید.
با سلام
من دقیقا کد و مدار رو طبق دستور بستم اما همش واسه پسوورد ارور میده و پسوورد رو تایید نمیکنه… توی پروتئوس…
لطفا راهنمایی کنید مشکل کجاست
سلام دوست عزیز
مدار در محیط واقعی به درستی کار می کند، مشکل عدم تایید پسورد در proteus به این دلیل می باشد که، اطلاعاتی که در حافظه EEPROM میکروکنترلر در هنگام شبیه سازی مدار ذخیره می شود بعد از نگه داشتن شبیه سازی و شروع مجدد شبیه سازی، به صورت کامل حذف می شوند. البته این مشکل در محیط واقعی وجود ندارد و داده ها در حافظه EEPROM میکروکنترلر ذخیره می شوند.