ساخت قفل رمزی 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 طراحی شده، پیوست فایل پروژه جهت دانلود قرار داده شده است، که می تواند شما را در یادگیری هر چه بهتر مدار و نحوه عملکرد آن یاری نماید.
سلام ، تنظیمات فیوز بیت لطفا
من مدار رو کامل بستم، ولی همش موقع پسورد ارور میده ، مشکل کجاست ؟
در ضمن تنطیمات فیوز بیت هم نگفته اید ،
سلام دوست عزیز
فیوزبیت های کریستال را بر روی مقدار فرکانس داخلی 8 مگاهرتز تنظیم کنید. برای مشکل پسورد هم احتمالا ترتیب اتصال کلیدها اشتباه است که باعث می شود رمز ورود اشتباه وارد شود.
فیوز بیت رو روی 8 مگاهرتز بزارید ارور حل میشه
سلام من مدار رو داخل نرم افزار بستم جواب نداد هر چی میزنم میگه اشتباهه