دسته‌بندی نشده

آموزش BASCOM AVR – بسکام – جلسه سیزدهم

خیلی خب 🌟
حالا می‌ریم سراغ جلسه سیزدهم و این بار هم مفصل و کامل می‌نویسم تا شبیه یک فصل آموزشی باشه.


📘 آموزش BASCOM AVR – بسکام – جلسه سیزدهم

 

پروژه قفل رمز دیجیتال (Digital Password Lock)


۱. مقدمه

یکی از کاربردهای مهم میکروکنترلرها در سیستم‌های امنیتی است. در این جلسه یک قفل رمز دیجیتال طراحی می‌کنیم که با وارد کردن رمز صحیح، خروجی فعال شود (مثلاً رله یا LED روشن شود). این پروژه ترکیبی از مباحث قبلی است:

  • LCD کاراکتری برای نمایش پیام‌ها
  • کی‌پد ماتریسی برای ورود رمز
  • EEPROM برای ذخیره رمز عبور
  • شرط‌ها و حلقه‌ها برای بررسی صحت رمز

۲. اجزای مورد نیاز

  • میکروکنترلر ATmega32
  • LCD کاراکتری ۲×۱۶
  • کی‌پد ۴×۴
  • رله یا LED برای نمایش وضعیت قفل
  • مقاومت و سیم‌های اتصال

۳. الگوریتم کار

  1. کاربر رمز عبور را با کی‌پد وارد می‌کند.
  2. رمز وارد شده روی LCD نمایش داده می‌شود (یا به صورت ستاره * برای امنیت).
  3. برنامه رمز وارد شده را با رمز ذخیره‌شده در EEPROM مقایسه می‌کند.
  4. اگر درست بود، خروجی فعال می‌شود (قفل باز می‌شود).
  5. اگر اشتباه بود، پیام خطا نمایش داده می‌شود.
  6. امکان تغییر رمز با کلید خاص وجود دارد.

۴. کدنویسی در BASCOM

کد پایه:

' پروژه قفل رمز دیجیتال
$regfile = "m32def.dat"
$crystal = 1000000

Config Lcd = 16 * 2
Config Kbd = PortC

Dim Pass As String * 4
Dim InputPass As String * 4
Dim K As Byte

' ذخیره رمز پیش‌فرض در EEPROM
Writeeeprom "1234" , 0
Readeeprom Pass , 0

Cls
Lcd "Enter Password:"

Do
   InputPass = ""
   For I = 1 To 4
      Do
         K = Getkbd()
      Loop Until K <> 0
      InputPass = InputPass + Chr(K)
      Lcd "*"
   Next I

   If InputPass = Pass Then
      Cls
      Lcd "Access Granted"
      Set PORTA.0
   Else
      Cls
      Lcd "Access Denied"
      Reset PORTA.0
   End If

   Wait 2
   Cls
   Lcd "Enter Password:"
Loop
End

۵. توضیح خط‌به‌خط کد

  • Writeeeprom "1234" , 0 → رمز پیش‌فرض “1234” در EEPROM ذخیره می‌شود.
  • Readeeprom Pass , 0 → رمز ذخیره‌شده خوانده می‌شود.
  • حلقه For I = 1 To 4 → چهار رقم رمز از کی‌پد خوانده می‌شود.
  • Chr(K) → تبدیل کد کلید به کاراکتر.
  • If InputPass = Pass Then → بررسی صحت رمز.
  • اگر درست بود، پیام “Access Granted” نمایش داده می‌شود و خروجی فعال می‌شود.
  • اگر اشتباه بود، پیام “Access Denied” نمایش داده می‌شود و خروجی غیرفعال می‌شود.

۶. پروژه پیشرفته: تغییر رمز عبور

می‌توان کلید خاصی (مثلاً *) را برای تغییر رمز تعریف کرد.

کد:

If K = 42 Then        ' کلید * برای تغییر رمز
   Cls
   Lcd "New Password:"
   InputPass = ""
   For I = 1 To 4
      Do
         K = Getkbd()
      Loop Until K <> 0
      InputPass = InputPass + Chr(K)
      Lcd "*"
   Next I
   Pass = InputPass
   Writeeeprom Pass , 0
   Cls
   Lcd "Password Changed"
End If

۷. نکات عملی

  • برای امنیت بیشتر می‌توان تعداد دفعات ورود اشتباه را محدود کرد.
  • می‌توان رمز را به صورت ستاره (*) نمایش داد تا کسی نتواند آن را بخواند.
  • برای کنترل بارهای بزرگ (مثل قفل برقی) باید از رله یا ماسفت استفاده کرد.

۸. تمرین‌ها

  1. برنامه‌ای بنویسید که بعد از سه بار ورود اشتباه، سیستم قفل شود.
  2. رمز عبور را به صورت ۶ رقمی طراحی کنید.
  3. امکان تغییر رمز با ترکیب کلیدهای خاص (مثلاً # و *) اضافه کنید.

نتیجه جلسه سیزدهم

در این جلسه یاد گرفتیم:

  • طراحی قفل رمز دیجیتال با LCD، کی‌پد و EEPROM.
  • نحوه ذخیره و خواندن رمز عبور.
  • پروژه عملی تغییر رمز عبور.

🔹 جلسه چهاردهم: پروژه کنترل دما هوشمند با سنسور LM35، رله و LCD.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *