اطلاعیه

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



    (mainmicro) دانشجوی سال آخر دوره کارشناسی الکترونیک
    30 اذرپاییز سال1386 (از پروژه الکترونیک 3)


    طرز کار مدار

    1) بعد از روشن کردن دستگاه اطلاعاتی در مورد سازنده این مدار (قفل رمزی دیجیتال) و ... نمایش داده میشود و LED زرد رنگ روشن میگردد.



    2)در روی LCD پیام (inter password) نمایش داده میشود.


    3)در صورت درست بودن رمز LED سبز رنگ برای مدت 1 ثانیه روشن میشود و سپس خاموش میگردد.و همزمان کلمه(OK)روی LCD نمایش داده شده و دستگاه دوباره به مرحله2 میرود و منتظر ورود رمز میباشد .

    4)در صورت نادرست بودن کلمه رمز وارد شده LED قرمز رنگ روشن شده و تا 2 باردیگر فرصت است تا رمز صحیح وارد شود ؛ در صورت درست بودن رمز در هر مرحله از 2 بار فرصت, دستگاه به مرحله 3 میرودونیز LED قرمز رنگ خاموش میگردد , ولی در صورت نادرست بودن, دستگاه رمز دیگری را به نام (master word ) طلب میکند.

    5) در صورت درست وارد کردن (master password) دستگاه به مرحله 3 میرودو نیز LED قرمز رنگ خاموش میگردد.و در صورت نادرست بودن در این مرحله باقی میماند تا کد صحیح وارد گردد.

    6)کلید * برای تغییر (password) دستگاه میباشدو با فشار کلید * در هر مرحله از کار دستگاه دستگاه وارد پروسه تغییر رمز میشود(مرحله7).



    7) پروسه تغییر رمز:
    ابتدا دستگاه به منظور جلوگیری از تغییر رمز توسط افراد غیر مرتبط طلب رمز اصلی را مینماید(master password) ؛ در صورت نادرست بودن رمز دستگاه پیام (error) را نمایش داده و دوباره پیام (int masser password)را نمایش میدهد . ولی در صورت درست بودن به مرحله بعد رفته و پیام (inter new password )را نمایش میدهدومنتظر وارد شدن رمز جدید( passwordجدید) میماند در صورت وارد کردن رمز 4 رقمی جدید , رمز وارد شده را به مدت 2 ثانیه نمایش داده و سپس رمز تغییر کرده و دستگاه با رمز (password ) جدید به مرحله 3 میرود.



    8) کلید # برای تغییر master password میباشد و برای تغییر رمز اصلی در مواقع لزوم تعبیه شده است. مراحل عملکرد این کلید شبیه مرحله 7 میباشد.



    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 میلی ثانیه خوب جواب میدهد.
    در نرم افزار بسکام نیز این مدار به راحتی شبیه سازی میشود.ولی شماره اعداد روی صفحه کلید به هم میریزد.

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


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


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

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

    کار خیلی خوبی بود . ممنون.
    فقط چند تا نکته:
    --گاهی اوقات استفاده از دستور Select Case به جای If راحت تره.
    --برای شبیه سازی تو بیسکام میشه از دستور $Sim استفاده کرد که تاخیرهای زمانی رو از بین می بره.
    --در پیکربندی صفحه کلید اگه Delay و Debounce تعریف بشه بهتره. چون مسلما مقادیر پیش فرض برای صفحه کلیدهای مختلف ، مناسب نیست.
    --بهتره همیشه پیکربندی LCD تو برنامه نوشته بشه. چون تنظیم اون تو منوی مربوطه دائمی نیست . به عنوان مثال همین الان من تنها با برنامه به نحوه اتصال پایه های LCD به میکرو پی نمی برم.
    --همیشه بهترین پروژه اولین پروژه بوده(حداقل برای من که این طور بوده). آرزوی موفقیت دارم برات.

    دیدگاه


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

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

      دیدگاه


        #4
        پاسخ : پروژه قفل رمزی الکترونیکی از 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
        44) A مستر پسورد یا رمز اصلی میباشد که 1357 به صورت پیش فرض انتخاب شده است...........A = 1357
        نکته0 : خطوط اول تا خط 44 پس از هر بار روشن شدن میکرو فقط یکبار اجرا میشوند.
        نکته1: از دستور WAITMS برای ایجاد تاخیر به مدت میلی ثانیه استفاده میشودکه دقیق نیست و من 1000 میلی ثانیه تاخیر ایجاد کردم
        تا اطلاعات نمایش داده شده در روی LCD در مدار عملی قابل مشاهده باشند. (میکرو سریع به خط بعدی نرود)
        اگر فقط از خدا مطالبه کنید حتما به جواب میرسید. در آزمایشات انجام گرفته 100% نتیجه حاصل شده است.
        نکته 0 : فقط از خدا.

        دیدگاه


          #5
          پاسخ : پروژه قفل رمزی الکترونیکی از 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 : فقط از خدا.

          دیدگاه


            #6
            پاسخ : پروژه قفل رمزی الکترونیکی از 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 : فقط از خدا.

            دیدگاه


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

              با تشکر از ارسال خوبتون .....

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

              دیدگاه


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

                دوست عزیز شماتیک خاصی نمی خواد
                فقط یک lcd است و یک کیبورد و 3تا led که در بالا نوشته شده که به کدام پایه ها وصله.برای راحتی شما :

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

                پایه 0 پورت d به enable ال سی دی
                پایه 1 پورت d به پایه rs ال سی دی
                پایه 2 پورت d به db7 ال سی دی که فکر کنم پایه 14 ان در پروتئوس و پایه 16 ان در lcd واقعی بشود.
                پایه 3 پورت d به db6
                پایه 4 پورت dبه db5
                پایه 5 پورت d به db4
                پایه r/w ال سی دی رو زمین کنید.
                برای اتصال صفه کلید ماتریسی به میکرو
                سطر ها را به ترتیب َََa که سطر اول صفحه کلید است به پایه 0 پورت a
                b صفحه کلی(سطر دوم)د به پایه 1 پورت a
                و به همین ترتیب ادامه میدهیمتا طر اخر و بعد ستون هارا به ترتیب به پایه های بعدی وصل میکنیم.
                در آخر پینd7میکرو بدون اتصال میماند.


                Speech Enhancement

                دیدگاه


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

                  مدار رو توی پروتئوز رسم کردم ..ال ای دی زرد شروع به چشمک زدن می کنه ولی روی ال سی دی چیزی نشون نمی ده ..در برنامه BASCOM ال سی دی مشخصات رو نشون می ده .. بخاطر همین شماتیک کامل رو می خواستم ...

                  تشکر
                  باد در اختیار ما نیست ولی بادبانها در اختیار ما است

                  دیدگاه


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

                    [quote author=nemo21 link=topic=12400.msg56242#msg56242 date=1199471678]
                    مدار رو توی پروتئوز رسم کردم ..ال ای دی زرد شروع به چشمک زدن می کنه ولی روی ال سی دی چیزی نشون نمی ده ..در برنامه BASCOM ال سی دی مشخصات رو نشون می ده .. بخاطر همین شماتیک کامل رو می خواستم ...


                    سلام
                    تا به نتیجه رسیدن در این مدار کمکت میکنم
                    خوب به نکات زیر دقت کن و این مراحل رو به ترتیب انجام بده:

                    1)در نرم افزارbascom به قسمت Options و سپس به قسمت Compiler وسپس به گزینه Lcd بروید.

                    2)نوع Lcd را در پنجره باز شده در قسمت Lcd type دو در شانزده (2*16) انتخاب کنید.

                    3)رو به روی همون جایی که نوع Lcd رو انتخاب میکنید ؛ یکسری لیست کشویی میبینید که در بسکام به طور پیش فرض روی پورت B تعریف شده اند ولی شما باید ان را روی پورت D تعریف کنید و لیست را به صورت زیر تغییر دهید:

                    پایه 0 پورت d به enable ال سی دی
                    پایه 1 پورت d به پایه rs ال سی دی
                    پایه 2 پورت d به db7 ال سی دی که فکر کنم پایه 14 ان در پروتئوس و پایه 16 ان در lcd واقعی بشود.
                    پایه 3 پورت d به db6
                    پایه 4 پورت dبه db5
                    پایه 5 پورت d به db4

                    4) اون جایی که یک تاخیرو گفتم که میتونید تغییر بدهید(در زیر برنامه Mmain) که من اون رو 50میلی ثانیه گذاشتم ؛ برای شبیه سازی در پروتئوس ان را به 150 میلی ثانیه تغییر بدهید.

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

                    5) Led زرد رنگ را همونطور که گفتم به pinb.2 (که پایه دوم پورت B با شروع شمارش از صفر میشود) متصل کنید.

                    6) یک بار دیگر بعد از انجام این تغییرات برنامه رو کامپایل کنید و فایل هگزش رو بدهید به پروتئوس.

                    7) این مدار عمرا جواب نده = یعنی 100% جواب میدهد.

                    8) دقت کنید که در پروتئوس lcd را به پورت D متصل نموده باشید و کیپد را به پورت A و led هارو طبق مطالب گفته شده در تاپیک های قبلی به پورت B.

                    ان شا الله فایل کامل این پروژه شامل شماتیک مدار و فایل هگز و شبیه سازس با پرو تئوس را لینک خواهم گذاشت.

                    مشکلی بود من هستم...

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

                    دیدگاه


                      #11
                      پاسخ : پروژه قفل رمزی الکترونیکی از 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 : فقط از خدا.

                      دیدگاه


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

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

                        دیدگاه


                          #13
                          پاسخ : پروژه قفل رمزی الکترونیکی از 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 : فقط از خدا.

                          دیدگاه


                            #14
                            پاسخ : پروژه قفل رمزی الکترونیکی از 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 : فقط از خدا.

                            دیدگاه


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

                              به نام خدا
                              سلام دمت گرم خیلی باحالی :applause: :applause: :applause: :applause: :applause: :applause: :applause: :applause: :applause:

                              دیدگاه

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