اطلاعیه

Collapse
No announcement yet.

پروژه قفل رمزی الکترونیکی از 0 تا 100

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پروژه قفل رمزی الکترونیکی از 0 تا 100

    پروژه قفل رمزی الکترونیکی


    این یک پروژه تهیه قفل رمز دیجیتالی الکترونیکی است. هدف در این پروژه مفید بودن مدار ساخته شده و کارکرد صحیح آن میباشد. ضمن اینکه در طی طراحی این مدار آشنایی عملی و بسیار خوب با میکرو avr وبعضی قطعات پرکاربرد الکترونیکی دیگر نظیر صفحه کلید و LCD و پروتکل های آن ها و چگونگی اتصال ان ها با میکرو صورت گرفت .

    پروژه قفل رمزی الکترونیکی


    همچنین برنامه نویسی عملی برای میکرو به این صورت, چگونگی عملکرد برنامه نوشته شده و صحت آن در مدار بسته شده خود حاوی تجارب بسیار مفیدی بود.و این راه را برای طراحی مدارات پیشرفته تر وپیچیده تر با میکرو آسان مینماید.

    این نکته قابل ذکر است که این اولین مدار میکرو کنترلی ساخته شده به صورت عملی برای من بود و تجربه چنین کاری بسیار با طراحی آن در نرم افزارهای شبیه ساز متفاوت است.(خطاهای برنامه و چگونگی اتصالات بین اجزای مختلف مدار و پروتکل های هر جز با شبیه سازی توسط نرم افزار متفاوت میباشد .)

    اجزای اساسی این مدار:

    1)میکرو ATMEGA32
    2)LCD کاراکتری 16*2
    3) صفحه کلید 3*4 ماتریسی
    4) LED
    5) برد بورد.
    6)سیم های رابط.
    7) مقاومت های1و0.680 کیلواهم



    نرم افزار:

    نرم افزار استفاده شده در این پروژه (bascom avr ) میباشد که زبان برنامه نویسی آن بیسیک است. تعداد خطوط برنامه ای که من برای این پروژه نوشتم 296 خط میباشد . این تعداد زیاد خط برنامه نویسی برای رفع تقریبا کامل باگ ها و خطاهای احتمالی و غیر احتمالی در مدار عملی و حین کار مدار و ارایه یک مدار بی نقص میباشد.در برنامه این نرم افزار از مجموعه ای از دستورات نرم افزای مثل دستورات شرطی و...و روشها و تکنیک های برنامه نویسی همچون روش نظاره به جدول(برای عملکرد صفحه کلید)و تعداد زیادی subroutine (زیر برنامه) و ایجاد تاخیر های مناسب برای عملکرد مدار را نام برد.

    نرم افزا دیگری که در طراحی این مدار برای تست طرز عملکرد مدار به کار گرفته شد (proteus) میباشد . ولی همان طور که گفته شد شبیه سازی با این نرم افزار تا پیاده سازی عملی و به نتیجه رسیدن در مدار عملی بسیار سخت تر از شبیه سازی با نرم افزار است.من از اینجا به این مهم رسیده ام که بدون اغراق بگویم برای پیاده سازی عملی این مدار 24 ساعت پشت سر هم بیدار بودم (که علت آن میتواند دلایلی همچون: اولین تجربه و خطا های گوناگون مدار عملی بسته شده در مقایسه با شبیه سازباشد معیوب بودن قطعات مورد کاربرد باشد).

    • از دیگر قابلیت های این مدار توانایی افزودن دیگر مدارات جانبی همانند سیستم کارت خوان و... میباشد.
    • این مدار قابلیت کاربرد در اماکن امنیتی و مهم و نیز در هر مکان و هر وسیله دیگری که فاکتور امنیت در آن مهم باشد را دارا میباشد . ضمن اینکه سبب آسانی و راحتی کاربران در هر محل کاربرد میباشد.

    رمز اولیه دستگاه هنگام روشن شدن آن 1234 میباشد و رمز اصلی آن (master password) عدد 1357 است.ضمن اینکه با فشردن کلید * میتوان رمز(password) را تغییر داد و با فشردن کلید # میتوان رمز اصلی (master password ) را تعویض نمود. تعداد ارقام مورد استفاده در دستگاه 4 رقم است که با تغییر در برنامه آن میتوان تعداد ارقام رمز (password) را 254 رقم افزایش داد

    امنیت:
    احتمال درست وارد کردن رمز توسط افراد غیر مرتبط ؛ با این تعداد ارقام(4 رقم) در فرصت اول 10000/1 میباشدو تا سه مرحله فرصتی که دستگاه برای وارد کردن رمز درست به افراد میدهد این عدد به 10000/3 میرسد که این عدد معادل 0003/. است که این نشان دهنده امنیت مناسب این دستگاه در برابر نفوذ اتفاقی میباشد.


    توان مصرفی:

    توان مصرفی در حالت عادی : 475 mW در ولتاژ 5 ولت.
    Maximum توان مصرفی : 771 mW در ولتاژ5 ولت.

    برنامه نوشته شده

    $regfile = "M32DEF.DAT"
    $crystal = 8000000
    Config Kbd = Porta
    Config Portb = Output
    Dim B As Byte
    Dim C As Byte
    Dim D As Byte
    Dim E As Byte
    Dim F As Byte
    Dim G As Byte
    Dim H As Byte
    Dim I As Byte
    Dim J As Word
    Dim L As Word
    Dim M As Word
    Dim N As Word
    Dim P As Word
    Dim Q As Word
    Dim R As Word
    Dim S As Word
    Dim K As Byte
    Dim O As Byte
    Dim A As Word
    Dim T As Byte
    Dim X As Word
    Dim Y As Word
    Set Portb.2
    Cursor Blink
    Cls
    Lcd "project name :"
    Locate 2 , 1
    Lcd "*digital luck*"
    Waitms 1000
    Cls
    Lcd "doen by:"
    Locate 2 , 1
    Lcd " mainmicroi"
    Waitms 1000
    Cls
    Lcd "ostad rahnema:"
    Locate 2 , 1
    Lcd "*mohandes*"
    Waitms 1000
    L = 1234
    G = 3
    T = 0
    O = 0
    K = 2
    A = 1357
    Maine:
    Cls
    Lcd "inter password"
    Y = L
    Mmain:
    Do
    Waitms 50
    B = Getkbd()
    If B < 12 Then
    Goto Main
    End If
    Loop
    Main:
    Do
    If B = 0 Then
    Reset B
    C = 1
    Goto Main2
    End If
    If B = 4 Then
    Reset B
    C = 2
    Goto Main2
    End If
    If B = 8 Then
    Reset B
    C = 3
    Goto Main2
    End If
    If B = 1 Then
    Reset B
    C = 4
    Goto Main2
    End If
    If B = 5 Then
    Reset B
    C = 5
    Goto Main2
    End If
    If B = 9 Then
    Reset B
    C = 6
    Goto Main2
    End If
    If B = 2 Then
    Reset B
    C = 7
    Goto Main2
    End If
    If B = 6 Then
    Reset B
    C = 8
    Goto Main2
    End If
    If B = 10 Then
    Reset B
    C = 9
    Goto Main2
    End If
    If B = 11 Then
    Reset B
    C = 12
    T = 3
    Goto Main2
    End If
    If B = 7 Then
    Reset B
    C = 0
    Goto Main2
    End If
    If B = 3 Then
    Reset B
    C = 11
    O = 3
    Goto Main2
    End If
    Loop
    Main2:
    If C = 11 Then
    Goto Main7
    End If
    If C = 12 Then
    Goto Main13
    End If
    If G = 3 Then
    Locate 2 , 1
    Lcd "*"
    E = C
    Decr G
    Goto Mmain
    End If
    If G = 2 Then
    Locate 2 , 2
    Lcd "*"
    F = C
    Decr G
    Goto Mmain
    End If
    If G = 1 Then
    Locate 2 , 3
    Lcd "*"
    H = C
    Decr G
    Goto Mmain
    End If
    If G = 0 Then
    Locate 2 , 4
    Lcd "*"
    I = C
    G = 3
    End If
    Main3:
    M = H * 10
    N = F * 100
    P = E * 1000
    Q = M + I
    R = N + Q
    S = P + R
    Goto Main7
    Main8:
    Do
    If L = A And T = 2 Then
    Goto Main13
    End If
    If L <> S And T = 1 Then
    Goto Main13
    End If
    If L = S Then
    Reset Portb.1
    Goto Main4
    End If
    If L <> S Then
    Set Portb.1
    End If
    Goto Main5
    Loop
    Main4:
    Cls
    Lcd "ok"
    Set Portb.0
    Waitms 100
    Reset Portb.0
    K = 2
    L = Y
    Goto Maine
    Main5:
    Do
    If K = 0 Then
    Goto Main6
    Else
    Cls
    Lcd "your try"
    Locate 1 , 10
    Lcd K
    Locate 2 , 9
    Lcd "!alarm!"
    Decr K
    Goto Mmain
    End If
    Loop
    Main6:
    Cls
    Lcd "int master pass"
    Reset L
    L = A
    K = 0
    Goto Mmain
    Main7:
    Do
    Main11:
    If O = 3 Then
    L = A
    Cls
    Lcd "int master pass"
    Decr O
    Goto Mmain
    End If
    If O = 2 And L = S Then
    Decr O
    Cls
    Lcd "int new password"
    Goto Mmain
    End If
    If O = 1 Then
    L = S
    Cls
    Lcd L
    Waitms 100
    Cls
    Decr O
    Goto Maine
    End If
    If O = 0 Then
    Goto Main8
    End If
    If O = 2 And L <> S Then
    Cls
    Lcd "eror"
    O = 3
    Waitms 100
    Goto Main11
    End If
    Loop
    Main13:
    Do
    Main14:
    If T = 3 Then
    X = L
    L = A
    Cls
    Lcd "int master pass"
    Decr T
    Goto Mmain
    End If
    If T = 2 And A = S Then
    Decr T
    Cls
    Lcd "new master pass"
    Goto Mmain
    End If
    If T = 1 Then
    A = S
    L = X
    Cls
    Lcd A
    Waitms 100
    Cls
    Decr T
    Goto Maine
    End If
    If T = 0 Then
    Goto Main8
    End If
    If T = 2 And A <> S Then
    Cls
    Lcd "eror"
    T = 3
    Waitms 100
    Goto Main14
    End If
    Loop
    End 'end program

    مراجع ومنابع:

    1. bascom-avr helpfile –version 1.11a

    2. کتاب مرجع کامل میکرو کنترل های avr .--انتشارات نص --نویسنده مظاهریان- پرتوی فر-بیانلو

    3. کتاب ساختار میکرو کنترل های avr .-- نشر شیخ بهایی—نویسنده: مهندس علی سلیمیان

    4. دیتا شیت های شرکت ATMEL مربوط به میکرو ATmega32



    (mainpersia) دانشجوی سال آخر دوره کارشناسی الکترونیک
    30 اذرپاییز سال1386 (از پروژه الکترونیک 3)
    270
    نسبتا
    0%
    117
    جالب نیست
    0%
    54
    خوب
    0%
    61
    قدیمیه (de mode)
    0%
    21
    عالی
    0%
    17
    اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
    نکته 0 : فقط از خدا.

    #2
    پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

    رای اتصال صفه کلید ماتریسی به میکرو
    سطر ها را به ترتیب َََa که سطر اول صفحه کلید است به پایه 0 پورت a
    b صفحه کلی(سطر دوم)د به پایه 1 پورت a
    و به همین ترتیب ادامه میدهیمتا طر اخر و بعد ستون هارا به ترتیب به پایه های بعدی وصل میکنیم.
    در آخر پینd7میکرو بدون اتصال میماند.


    نکته:
    1) برای دیدن سریع تر شبیه سازی در خود بسکام میتوانید تاخیر های با زمان 1000 میلی ثانیه را در برنامه کاهش دهید.
    2)در ابتدای برنامه یک سری مشخصات نمایش داده میشود که مربوط به پروژه خودم برای درس آزمایشگاه پروژه الک3 بود و من بعضی اطلاعات شخصی رو پاک کردم.
    3)مقاومت ها برای کنترل شدت نور led روشنایی lcd است.
    3) اماده پاسخگویی در مورد برنامه نوشته شده هستم .
    4)ممنون

    اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
    نکته 0 : فقط از خدا.

    دیدگاه


      #3
      پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

      1) ال ایدی سبز رنگ به پایه b.0 پایه 0 پورت b متصل میشود.
      2)ال ای دی زرد رنگ به پایه b.1 ...پایه 1پورت b متصل میشود
      3) ال ای دی قرمز به پایه b.2.....پایه 2 پورتb متصل میشود.

      ال سی دی به پورت dمتصل میشود .
      کیبورد 3*4 به پورتa متصل میشود.

      ا در پروتئوس مدار را تست کنید حتما جواب میگیرید.
      اگر با فشردن 1کلید روی کیبورد 4 رقم بسیار سریع پر شد(روی ال سی دی) ؛.....این تاخیر را روی 100 یا 150 قرار دهید:
      Mmain:
      Do
      این تاخیر را 100 یا 150 کنید: Waitms 50
      B = Getkbd()
      If B < 12 Then
      Goto Main
      End If
      Loop
      البته در مدار عملی با این تاخیر 50 میلی ثانیه خوب جواب میدهد.
      در نرم افزار بسکام نیز این مدار به راحتی شبیه سازی میشود.ولی شماره اعداد روی صفحه کلید به هم میریزد.

      در تاپیک بعدی طرز اتصال lcd وkeypad 3*4 را به پایه های میکرو میگم.
      اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
      نکته 0 : فقط از خدا.

      دیدگاه


        #4
        پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

        در تاپیک قبل جای led قرمز و زرد جا به جا گفته شد با عرض پوزش بدینوسیله اصلاح میکنم .
        و اما طرز اتصال ال سی دی به میکرو در نرم افزر پروتئوس.
        پایه 0 پورت d به enable ال سی دی
        پایه 1 پورت d به پایه rs ال سی دی
        پایه 2 پورت d به db7 ال سی دی که فکر کنم پایه 14 ان در پروتئوس و پایه 16 ان در lcd واقعی بشود.
        پایه 3 پورت d به db6
        پایه 4 پورت dبه db5
        پایه 5 پورت d به db4
        پایه r/w ال سی دی رو زمین کنید.
        اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
        نکته 0 : فقط از خدا.

        دیدگاه


          #5
          پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

          برای اتصال صفه کلید ماتریسی به میکرو
          سطر ها را به ترتیب َََa که سطر اول صفحه کلید است به پایه 0 پورت a
          b صفحه کلید(سطر دوم) به پایه 1 پورت a
          و به همین ترتیب ادامه میدهیمتا طر اخر و بعد ستون هارا به ترتیب به پایه های بعدی وصل میکنیم.
          در آخر پینd7میکرو بدون اتصال میماند.


          نکته:1) برای دیدن سریع تر شبیه سازی در خود بسکام میتوانید تاخیر های با زمان 1000 میلی ثانیه را در برنامه کاهش دهید.
          2)در ابتدای برنامه یک سری مشخصات نمایش داده میشود که مربوط به پروژه خودم برای درس آزمایشگاه پروژه الک3 بود و من بعضی اطلاعات شخصی رو پاک کردم.
          3) اماده پاسخگویی در مورد برنامه نوشته شده هستم .

          اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
          نکته 0 : فقط از خدا.

          دیدگاه


            #6
            پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

            برای تکمیل این مدار فقط باید هنگام تغییر رمز ان را در eeprom ذخیره کرد تا با خاموش کردن و روشن شدن دوباره؛ رمز قبلی (اخرین رمز تغییر داده شده) قابل دسترسی باشد.
            اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
            نکته 0 : فقط از خدا.

            دیدگاه


              #7
              پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

              واما تصمیم دارم اگر خدا بخواهد برنامه رو خط بخط توضیح بدم تا منطق نوشتن برنامه روشن بشود
              و هم اینکه اونایی که علاقه دارن بتونن برنامه رو به دلخواه خودشون تغییر بدن و استفاده ببرن.


              1)این خط برای معرفی میکرو atmega32به کار رفته است. قبل از ریج فایل باید علامت دلار بگذارید$..regfile = "M32DEF.DAT".........
              2)در این خط فرکانس اسیلاتور داخلی میکرو را تعیین میکنیم .اکثر دستورات در avr یک ماشین سیکل طول میکشد در نتیجه با
              این فرکانس کاری میشود گفت 8 میلیون دستور در 1 ثانیه اجرا میشود یا با کمی اغماض 8 میلیون خط دستور در 1 ثانیه
              اجرا میشود چه برسد به تقریبا 296 خط دستور این برنامه. قبل از کریستال نیز باید علامت دلار گذاشته شود........crystal = 8000000
              3)در این خط پورت اتصال کیپد به میکرو را پورت a انتخاب کردیم.برای استفاده از دستور )(config kbd به این تعریف نیاز داریم........Config Kbd = Porta
              4)پورت b رابه عنوان خروجی تعریف کردیم . برای اتصال led ها به پایه 0 تا 2 ان........Config Portb = Output
              5تا26) در این خطوط نوع متغیر های مورد استفاده در طی برنامه را تعریف کردم.متغیر های نوع byte برای
              ذخیره اعداد 8 بیتی یا دو رقمی ده دهی ومتغیر ها ی نوع word برای ذخیره اعداد 16 بیتی یا 4 رقمی ده هی
              استفاده میگردد. همانطور که میدانید رمز این مدار 4 رقمی میباشد و به همین دلیل متغیر های نو ع word تعریف شده اند.
              Dim B As Byte
              Dim C As Byte
              Dim D As Byte
              Dim E As Byte
              Dim F As Byte
              Dim G As Byte
              Dim H As Byte
              Dim I As Byte
              Dim J As Word
              Dim L As Word
              Dim M As Word
              Dim N As Word
              Dim P As Word
              Dim Q As Word
              Dim R As Word
              Dim S As Word
              Dim K As Byte
              Dim O As Byte
              Dim A As Word
              Dim T As Byte
              Dim X As Word
              Dim Y As Word
              27) با این دستور پین دوم پورت b که به led زرد رنگ متصل خواهد شد یک میشود که این برای نمایش روشن بودن
              دستگاه به کار میرود...........Set Portb.2
              28) با این دستور کرسر در lcd چشمک زن میشود(روشن و خاموش میشود)..........Cursor Blink
              29 تا 38) قابل حذف اند و ایجاد هیچ مشکلی در برنامه نمیشود.(این خطوط توضیحاتی کوناه وناقص در مورد مدار میدهند)
              Cls
              Lcd "project name :"
              Locate 2 , 1
              Lcd "*digital luck*"
              Waitms 1000
              Cls
              Lcd "doen by:"
              Locate 2 , 1
              Lcd " mainmicroi"
              Waitms 1000
              Cls
              Lcd "ostad rahnema:"
              Locate 2 , 1
              Lcd "*mohandes*"
              Waitms 1000
              39)ال (L) رمز یا password است که در ابتدای برنامه به صورت پیش فرض 1234 انتخاب شده است..........L = 1234
              40تا43)GوTوOوKدر ادامه برنامه توضیح داده خواهند شد.
              G = 3
              T = 0
              O = 0
              K = 2
              A(44 مستر پسورد یا رمز اصلی میباشد که 1357 به صورت پیش فرض انتخاب شده است...........A = 1357
              نکته0 : خطوط اول تا خط 44 پس از هر بار روشن شدن میکرو فقط یکبار اجرا میشوند.
              نکته1: از دستور WAITMS برای ایجاد تاخیر به مدت میلی ثانیه استفاده میشودکه دقیق نیست و من 1000 میلی ثانیه تاخیر ایجاد کردم
              تا اطلاعات نمایش داده شده در روی LCD در مدار عملی قابل مشاهده باشند. (میکرو سریع به خط بعدی نرود)
              اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
              نکته 0 : فقط از خدا.

              دیدگاه


                #8
                پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                ادامه توضیحات...

                تا خط 44 توضیح داده شد.

                45) یک زیر برنامه به نام maine ایجاد کردیم. در درون این زیر برنامه یک زیر برنامه دیگر به نام mmain ایجاد کردیم که وظیفه این زیربرنامه دریافت مقدارکلیدفشرده صفحه کلید ماتریسی 3*4 است...............:Maine

                نکته 0 : علت ایجاد زیر برنامه mmain در داخل زیربرنامه maine اینستکه بعد از اینکه پیام inter password برای اولین بار بعد از روشن شدن میکرو روی lcdنمایش داده شد, بعد از وارد کردن اولین رقم پسورد روند کار به زیر برنامه mmain منتقل شود و میکرو منتظر ورود رقم بعدی بماند.

                46) توسط این خط lcd پاک میشود(البته صفحه نمایش ال سی دی !!!!! ) ......... cls

                47) در این خط پیام inter password توسط دستور " فلان یا هر چیز دیگر " lcd روی lcd نمایش داده میشود.البته بین " "فقط میتوانید از حروف لاتین استفاده کنید.............Lcd "inter password"

                48) در خط مقدار متغیر Y را برابر مقدار متغیر L میدهیم . بعدا علت انجام این کارو میگم.فقط همینو بدونید که این یه طرفندی برای جلو گیری از تغییر مستر پسورد هنگام تغییر رمز مداره یا یه چیزی تو این مایه ها.............Y = L

                49) زیر برنامه mmain یکی از اساسی ترین زیربر نامه های این برنامه است که داخل ان حلقه ای برای دریافت 4 رقم از صفحه کلید طراحی شده است..................:Mmain

                نکته0:در این زیر برنامه یا حلقه برنامه در هر اجرا تنها میتواند یک رقم را از صفحه کلید در یافت کند که بعلت 4 رقمی بودن رمز ما 4 بار به این زیر برنامه رجوع میکنیم و این تعداد رجوع در بخش دیگری از برنامه کنترل میشود.
                نکته1: همانطور که گفتم تعداد ارقام password قابل افزایش است .اینو بعدا میگم چطوری میشه.

                50) شروع یک حلقه با دستور do که حتما باید با دستور loop همراه باشد..............Do

                نکته 0 : برنامه تا زمانی که رقمی روی صفحه کلید فشرده شود در این حلقه باقی میماند.یا این میکرو از انجام این حلقه زمانی فرار میکند یک کلید keypad ماتریسی فشرده شود.

                51) این دستور برای ایجاد یک تاخیر 50 میلی ثانیه ای در برنامه به کار رفته است...............Waitms 50

                نکته 0 : در شبیه سازی با بسکام میتوانید این تاخیر را حذف کنید.
                نکته 1: در شبیه سازی با پروتئوس این تاخیر را به 75 یا 50 تغییر دهید.
                نکته 2: این تاخیر عملا برای کاهش سرعت میکرو در انجام این حلقه به کار رفته .مدت زمان فشردن کلید روی صفحه کلید 3*4 هرچند برای ما بسار سریع باشد برای میکرو این سرعت عمل ما بسیار کند است.یعنی هنگامیکه ما میخواهیم یک رقم را روی صفحه کلید وارد کنیم میکرو به سرعت 4 بار این حلقه اجرا و تا زمانی که ما انگشت خود را (گفتم هرچند سریع) از روی صفحه کلید برداریم به مرحله بعد میرود.
                نکته3: راه دیگری برای جلوگیری از این اتفاقات وجود دارد . که من از ان استفاده نکردم.

                52) در این خط توسط دستور ()Getkbd مقدار فشرده شده روی صفحه کلید رو در متغیر B قرار میدهیم..........()B = Getkbd

                نکته 0: خدا پدر بسکام رو بیامرزه که این دستور رو نوشته!!!!!.

                53) خط If B < 12 Then رو برای این نوشتم که میکرو فقط اعداد کوچکتر از 12 رو از صفحه کلید بگیره.و یا میکروبفهمه که یک کلید روی صفحه کلید فشار داده شده...............If B < 12 Then

                54) این دستور مفر (محل فرار!!!! ) میکرواز انجام این حلقه است است و با درست بودن شرط بالا به محل یا زیر برنامه ای که جلوی دستور Goto نوشته شده میپرد.................Goto Main

                نکته0: زیر برنامه Main رو ان شا الله توضیح میدهم.

                55) این خط پایان دستور if است و باید حتما نوشته شود...............End If

                56) این دستور سبب تکرار حلقه تا هنگام فشرده شدن یک کلید روی صفحه کلید میشود.........Loop
                اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
                نکته 0 : فقط از خدا.

                دیدگاه


                  #9
                  پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                  57)زیر برنامه main که میکرو به محض دریافت رقم ورودی از کلید فشرده شده روی صفحه کلید به ان میرود و کار هایی روکه(در ادامه گفته میشود)را انجام میدهد.......:Main

                  58) یه حلقه ایجاد میکنم که میکرو بعد از گرفتن مقداراز صفحه کلید، مقدار واقعی این کلید رو در متغیری ذخیره کند.(تا میکرو این کارو نکنه از این حلقه بیرون نمیرود!!!!!)......Do

                  نکته0: علت ایجاد این زیر برنامه اینستکه با سیم بندی گفته شده در تاپیک های قبلی (سیم بندی یا چگونگی اتصال) مربوط به ارتباط کیپد با میکرو پس از انجام این نحوه اتصال ارقامی که روی صفحه کلید فشرده میشوند با مقدار واقعی رقم (چیزی که میکرو با دستور () getkbd میفهمد یکی نیست) پس باید از روش نظاره به جدول برای تصحیح اشکال استفاده کنیم.

                  نکته 1: من 5 خط رو توضیح میدهم .تا خط 120 همین کارو تکرار کردم.

                  59) با این شرط میکرو میفهمه که اگه کلید 1 روی صفحه کلید فشرده شد میکرو برود به زیر برنامهmain2 میرود . .....................If B = 0 Then

                  نکته0: همون طور که گفتم هنگامیکه ما کلید 1 رو روی صفحه کلید فشار میدهیم میکرو مقدار 0 رو در متغیر B ذخیره میکند .ولی ما برای اصلاح ان این شرط رو مینویسیم. یعنی برای اینکه با فشردن کلید 1 مقدار 1 در یه متغیری به نام C ذخیره بشه که ما بعدا با این C کار داریم.

                  60)این خط خیلی هم بیخودی نیست.(مقذار متغیر B را برای استفاده مجدد 0 میکند)...............Reset B

                  61) این خط مقدار C را به همون دلیلی که گفتم برابر1 میکند.(زیرا ما دکمه 1 رو روی صفحه کلید فشار داده ایم و باید همین عدد 1 را میکرو برای ما برای استفاده بعدی ذخیره کند.).................C =1

                  62) بعد از درست بودن شرط و انجام دو خط بالا این خط اجرا شده و میکرو از حلقه خارج به زیر برنامه main2 میرود................Goto Main2

                  63)اعلام پایان دستور شرط با نوشتن این خط................End If


                  If B = 4 Then( 64
                  Reset B ( 65
                  C = 2
                  Goto Main2
                  End If
                  If B = 8 Then
                  Reset B
                  C = 3
                  Goto Main2
                  End If
                  If B = 1 Then
                  Reset B
                  C = 4
                  Goto Main2
                  End If
                  If B = 5 Then
                  Reset B
                  C = 5
                  Goto Main2
                  End If
                  If B = 9 Then
                  Reset B
                  C = 6
                  Goto Main2
                  End If
                  If B = 2 Then
                  Reset B
                  C = 7
                  Goto Main2
                  End If
                  If B = 6 Then
                  Reset B
                  C = 8
                  Goto Main2
                  End If
                  If B = 10 Then
                  Reset B
                  C = 9
                  Goto Main2
                  End If
                  If B = 11 Then
                  Reset B
                  C = 12
                  T = 3
                  Goto Main2
                  End If
                  If B = 7 Then
                  Reset B
                  C = 0
                  Goto Main2
                  End If
                  If B = 3 Then
                  Reset B
                  C = 11
                  O = 3
                  Goto Main2
                  End If (120

                  120) شبیه مراحل بالا تا این خط تکرار شده..............End If
                  نکته0: شاید در شمارش خطوط از 64 تا 120 اشتباه شده باشد یا شاید هم درست باشد.

                  121) این خط همراه همیشگی دستور DO است منتها در آخر برنامه.................Loop

                  نکته مهم0:در خط فکر کنم 118 یه کار دیگه علاوه بر مراحل گفته شده انجام شده که ان تساوی O=3 میباشد (یعنی O با عدد 3 مقدار دهی اولیه شده است).علت انجام این کار بعدا گفته میشود فقط همین رو بدونید که خطوط 117 تا 120 هنگامی اجرا میشوند که دکمه * روی صفحه کلید فشرده شود.که همونطور که میدونید ( در تاپیک های قبلی گفته شد)این کلید برای تغییر رمز به کار میرود.

                  نکته مهم1:در خط احتمالا 107 اگر به خطوط بالا نگاه کنید معلوم است مقدار متغیر T که در اول برنامه معرفی شد برابر 3 قرار داده شده است این کار مشابه نکته بالا است منتها برای عملیات تغییر master password این مقدار دهی انجام میشود که دلیل این در ادامه برنامه گفته میشود.
                  اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
                  نکته 0 : فقط از خدا.

                  دیدگاه


                    #10
                    پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                    در لینک های زیر میتوانید فایل های مربوط به مدارو رو دانلود کنید.

                    شماتیک مدار:
                    http://rapidshare.com/files/81539924/untitled.bmp.html

                    عکس های راهنما :
                    عکس1) http://rapidshare.com/files/81539925/untitled.1.bmp.html
                    عکس2) http://rapidshare.com/files/81539926/untitled.2.bmp.html
                    عکس3) http://rapidshare.com/files/81539927/untitled.3.bmp.html

                    فایل هگز:

                    http://rapidshare.com/files/81635290..._luck.HEX.html

                    نکته0: اگر از مرورگر mozilla firefox استفاده کنید میتوانید براحتی اینارو دنلود نمایید.
                    نکته1: لینک شبیه سازی پرو تئوس هم در ادامه اگر خدا بخواهد خواهم گذاشت.
                    اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
                    نکته 0 : فقط از خدا.

                    دیدگاه


                      #11
                      پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                      ادامه ماجرا.....

                      122)در این خط یک زیربرنامه به نام main2 ایجاد میکنیم.اگر توجه کرده باشید در خطوط قبل یا بهتر بگم در زیربرنامه قبلی که به منظور شناسایی کلید فشرده شده روی صفحه کلید نوشته شده بوددر آخر هر دستور شرطی یک پرش به زیر برنامه main2 ایجاد کرده بودیم که شرط پرش درست بودن عبارت جلوی هر شرط بود.............. Main2:

                      123)در ابتدا این زیربرنامه یک دستور شرطی ایجاد میکنیم به این منظور که هرگاه کلید* روی صفحه کلید فشرده شد برنامه به پروسه تغییر رمز برود.که شرط پرش به زیربرنامه تغییر رمز برابر بودن c=11 میباشد.و همانطور که در برنامه مشخص است c هنگامی 11 میشود که کلید * روی کیپد فشرده شود..............If C = 11 Then

                      نکته0:این خط مشخص میکند که میکرو در هر بخشی از مراحل دریافت رمز باشد، بهمحض فشردن کلید* به پروسه تغییر رمز میرود.

                      124)پرش به زیربرنامه main7 در صورت درست بودن شرط بالا..................Goto Main7

                      125)پایان دستور شرط................End If

                      126) در این زیربرنامه یک دستور شرطی ایجاد میکنیم به این منظور که هرگاه کلید# روی صفحه کلید فشرده شد برنامه به پروسه تغییر master password برود.که شرط پرش به زیربرنامه تغییر رمز برابر بودن c=12 میباشد.و همانطور که در برنامه مشخص است c هنگامی 12 میشود که کلید # روی کیپد فشرده شود..............If C = 12 Then

                      127)پرش به زیربرنامه main13 در صورت درست بودن شرط بالا............ Goto Main13

                      128)پایان دستور شرط.............End If

                      129)هنگامیکه هیچیک از دو کلید *یا# روی کیپد فشرده نشوند برنامه خط زیر را اجرا میکند. در این خط G=3قرار داده شده به این معنی که ما در حال وارد کردن رقم اول از 4 رقم رمز میباشیم یا بهتر بگم برنامه در این خط و خطوط زیر ان مشخص میکند که ما در حال وارد کردن کدام یک از 4 رقم رمز میباشیم. . همونطور در خط 40 برنامه گفتم مقدار Gدر این خط برابر 3 قرار داده شده است............. If G = 3 Then

                      نکته0:اینمقدار (4)قرار داده شد زیرا رمز ما 4 رقمی است.

                      130)با این دستور موقیت بعدی که باید نوشه ما روی LCD نمایش داده شود را مشخص میکنیم.رقم اول بعد از دستورLOCATE سطر دوم LCD راتعیین میکند و رقم دوم ستون اول ........Locate 2 , 1

                      نکته0: LCD ما در این برنامه 2 سطر دارد و 16 ستون.

                      131) با این خط ما علامت * را که معمولا هنگام وارد کردن رمز روی نمایشگر ها نشان داده میشود را به ازی رقم اول رمز نشان میدهیم............"*"LCD

                      نکته مهم0:اولین رقم که ما وارد میکنیم پر ارزش ترین رقم است(Msb).

                      تا بعد........



                      اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
                      نکته 0 : فقط از خدا.

                      دیدگاه


                        #12
                        پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                        تا خط 131 توضیح داده شد .
                        ادامه توضیحات.....

                        132)در این خط E را برابر C قرار دادیم به این منظور که رقم با ارزش رمز 4 رقمی ر ا برای مراحل بعدی ذخیره کند.............Mmain

                        نکته 0:البته شاید این سوال پیش میاد که چرا از همون متغیر Cکه مقدار را در خودش ذخیره کرده استفاده نکردیم که جواب اینستکه متغیر Cدر عملیات در یافت 3 رقم بعدی رمز تغییر میکند.
                        نکته 1:منظور از مراحل بعدی ،عملیاتی است که در زیر برنامهMian3 انجام میشود.

                        133) از G یک عدد کم کردیم در نتیجه Gالان 2 میباشد و برنامه را برای دریافت رقم دوم رمز یا رقم صدگان رمز 4 رقمی اماده میکند....... Decr G

                        نکته 0: عمل بالا یعنی فهماندن به برنامه برای دریافت رقم دوم با دستور شرطی انجام میگیرد.

                        134)پرش به زیر برنامه Mmainوانتظار برای فشردن صفحه کلید برای در یافت رقم دوم.(رقم صدگان رمز) ............ Goto Mmain

                        135)پایان دستور شرط بالا.یعنی شرط خط شماره 129............End If

                        136)مشابه خط 129 این خط دستور شرطی است برای فهمیدن اینکه ایا این رقم جدید وارد شده رقم دومی است که ما وارد کرده ایم یا نه.
                        یعنی اگر G=2باشد فرامین زیر که تا اعلام پایان دستور شرط(خط143) نوشته شده رو اجرا کن............If G = 2 Then

                        نکته0: یکبار دیگه توضیح میدهم که رمز برنامه 4 رقمی است . و ما اینو با دادن مقدار عددی3 به G به برنامه حالی کردیم .
                        نکته1:بعد از در یافت رقم اول یکی از Gکم کردیم و G الان 2 است .

                        137) مشابه انچه در بالا گفته شد این دستور به LCD فرمان میده که ما میخواهیم در سطر 2 و ستون 2 بنویسیم.........Locate 2 , 2

                        نکته0:چرا اینجا نوشتیم ؟ چون سطر اول مار رو خط int password پر کرده است . و برای جلوگیری از بیریخت شدن نوشته ها روی صفحه LCD این کارو کردم.

                        139) با این دستور علامت * را طبق همان توضیحات خط 131 مینوسیم................."*"LCD

                        140)مقدار رقم ذخیره شده در متغیر C را در متغیر F ذخیره کردم.علت= نکته 0خط 132..............F = C

                        نکته0: البته اینبار رقمی که در F ذخیره میشود رقم صدگان رمز است.

                        141)یکی از Gکم کرده و برنامه را برای در یافت رقم سوم رمز 4 رقمی
                        یا رقم دهگان ان اماده میکنیم (با پرش به زیر برنامه Mmain این کارو انجام میدهم)....................Decr G

                        142) پرش به زیر برنامهMmain و انتظار برای در یافت رقم سوم رمز.................Goto Mmain

                        143)پایان دستور شرطی نوشته شده در خط136........................End If

                        ادامشو انشاالله .........میگم
                        اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
                        نکته 0 : فقط از خدا.

                        دیدگاه


                          #13
                          پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                          144)) در این خط دستور شرط 1 شدن G را بررسی میکند و در صورت درستی آن دستورا بدنه شرط اجرا میشود.....................If G = 1 Then

                          145) مکان نمای روی Lcd در سطر دوم و ستون سوم توسط این دستور قرار میگیرد....................Locate 2 , 3

                          146)علامت *روی Lcd در سطر دوم و ستون سوم توسط این دستور نوشته میشود................Lcd "*"

                          147)مقدار گرفته شده از صفحه کلید که در متغییر C در مراحل قبلی دریافت شده در متغیر H برای استفاده درمراحل بعدی ریخته میشود....................H = C

                          148) با این دستور یکی از G کم میشود.............Decr G

                          149)پرش به زیر برنامه Mmainوانتظار برای دریافت رقم بعدی....................Goto Mmain

                          150)اعلان پایان دستور شرط اغاز شده در خط 144با این دستور. .................End If

                          151)مشابها یک دستور شرطی دیگر برای بررسی ودریافت کم ارزش ترین رقم رمز ایجاد میکنیم...............If G = 0 Then

                          152)کرسر را در سطر دوم وستون چهارم Lcdقرار میدهیم...............Locate 2 , 4

                          153)علامت * را در محل گفته شده در خط قبل مینویسیم................."*"Lcd

                          نکته ظریف0:با این سرعت بالای avr اگر ما بعد از این خط یک تاخیر کوچولو ایجاد نکنیم میکرو بلافاصله بعد از دریافت رقم چهارم رمز به مرحله بعدی میرود و زحمت ما در نوشتن خط بالا به هدر .پس ایجاد یک تاخیر مناسب بعد از این خط مهم است که من یادم رفته بنویسم........ icon_mad

                          154)مقدار کم ارزش ترین رقم رمز را در متغیر I برای استفاده در مراحل بعدی ذخیره میکنیم...............I = C

                          155)مقدار متغیر G برابر 3 قرار داده میشود................G = 3

                          نکته مهم 0:در این خط G رار برابر 3 قرار دادیم زیرا ما با رسیدن به این قسمت از برنامه 4 رقم رمز را دریافت کرده ایم و برای وارد کردن مجدد 4 رقم رمز و بررسی دستورات شرطی در یافت ارقام رمز احتیاج داریم که برنامه با بار گذاری یا بهتر بگویم با مقدار دهی دوباره به متغیر G منتظر دریافت رمز 4 رقمی ما با شروع کاستن یکی یکی ازمتغیرG از 3 تا 0 باشد.

                          نکته1:به نظر من اینجا بهترین مکان برای مقدار دهی دوباره به متغیر G میباشد.

                          156)اعلان پایان دستورشرطی خط151...............End If

                          157) ایجاد زیر برنامه به نام Main3 برای ارزش گذاری مناسب ارقام دریافت شده از مراحل قبل به ترتیب از کم ارزش ترین رقم به با ارزش ترین رقم برای ایجاد عدد 4 رقمی رمزبرای استفاده در ادامه برنامه.....:Main3
                          اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
                          نکته 0 : فقط از خدا.

                          دیدگاه


                            #14
                            پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                            جدیدا مشاهده شده بعضی اساتید محترم اندکی پدیت شده اند و پی برده اند که مدار قفل دیجیتال با 4 رقم به صورت اسانی از اینترنت قابل دریافت و ارائه است... :biggrin:

                            پس در پروژه های ارائه شده به دانشجویان قفل 5 رقمی پیشنهاد میدهند :surprised:

                            ولی همانطور که در پست های قبلی گفتم مدار طرح شده در این پروژه قابلیت افزایش ارقام به تعداد بسیار زیاد را دارا میباشد. :angry:

                            من باب مثال من رمز 4 رقمی رو به 5 رقمی تبدیل کردم و لینکش رو برای دریافت فایل هگز و برنامه نوشته شده در زیر قرار میدهم.

                            لینک فایل هگز :

                            http://rapidshare.com/files/11803531...DIGIT.HEX.html


                            و اینم لینک برنامه (متن برنامه) که با notepad قابل باز شدن است.

                            http://rapidshare.com/files/118035686/digital_luck_whit_5_digit.bas.html

                            نکته بسیار مهم:

                            نکته 0: رمز 5 رقمی (12345) است. و توجه شود که برای راحتی به خاطر سپردن ،مستر کد(مستر پسورد) به (54321) تغییر یافته است.

                            نکته 1 : شماتیک مدار همان شماتیک گفته شده در تاپیک های قبلی است و تغییری نکرده.

                            نکته 2: فایل هگز با پروتوئس ورژن 7 به بالا به خوبی جواب میده.

                            برای مدار عملی این حلقه رو پیدا کنید


                            Mmain:
                            Do
                            Waitms 100
                            B = Getkbd()
                            If B < 12 Then
                            Goto Main
                            End If
                            Loop

                            و در خط Waitms 100مقدار 100 را طبق مطالب گفته شده در تاپیک های قبل کم یا زیاد کنید تا مقدار مناسبش دستتون بیاد.(حدکثر 50 تا زیاد و کم کنید.)

                            نکته مهم: این خط برای این استکه با فشاردادن یک دکمه صفحه کلید یهو 5 رقم پر نشه ؛ چون سرعت میکرو خیلی از سرعت انگست ما بیشتره.
                            اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
                            نکته 0 : فقط از خدا.

                            دیدگاه


                              #15
                              پاسخ : پروژه قفل رمزی الکترونیکی از 0 تا 100

                              باسلام
                              من به این موضوع علاقه مندشدم ولی لینکهایکه برای ذخیره کردن گذاشتید کار نمیکند لطفا برای رفع مشکل چاره ای بیندیشید یا اینکه برای من به آدرسbehesht2009@yahoo.com بفرستید . با تشکر massih

                              دیدگاه

                              لطفا صبر کنید...