اطلاعیه

Collapse
No announcement yet.

راهنمایی برای مشکل قفل رمز دیجیتال

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

    راهنمایی برای مشکل قفل رمز دیجیتال

    سلام دوستان
    من برنامه یه قفل رمز دیجیتال رو نوشتم که به یک مشکل برخوردم.
    از این قفل برای درب بازکن استفاده کردم
    وقتی پسورد اشتباه باشه مشکلی پیش نمیاد و روی ال سی دی erorr نشون میده اما مشکل من وقتی هست که پسورد درسته و درب باز میشه.بعد یکی دو بار زدن پسورد درست, روی ال سی دی نوشته های عجق وجق میاد.البته توی این حالت مدار کار میکنه و اگه پسورد درست باشه درب رو باز میکنه اما روی ال سی دی همون نوشته های عجق وجقه.
    گفتم شاید وقتی رله فعال میشه جریان میکشه که اینجوری ال سی دی بهم میریزه.تایم فعال بودن رله رو 10 میلی ثانیه گذاشتم اما بازم وقتی رله فعال میشه همون مشکل پیش میاد.
    چی کار باید بکنم ؟
    اینم برنامم
    کد:
    '*************************** "Author: Hossein Saberi" ***************************'
    $regfile = "m8def.dat"
    $crystal = 1000000
    '************************* Config *************************'
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
    Config Lcd = 16 * 2
    Config Portb = Output
    Config Portc = Output
    Config Portd = Input
    Config Kbd = Portd , Debounce = 100
    '************************ Dim **********************************
    Dim A As Word
    Dim B As Word
    Dim C As Byte
    Dim D As Byte
    Dim K As Word
    Dim L As Word
    Dim Q As Byte
    Dim U As Byte
    Dim Y As Byte
    Dim Z As Byte
    Dim H As Word
    Dim L2 As Word
    Dim L3 As Word
    Dim W As Byte
    '********************
    Readeeprom L3 , 0
    '********************* Main ***********************
    Main:
    '***** Wait 30 Minute *****
    Cls
    If Q = 3 And Y = 1 Then
     Cls
     Lcd "--==( Lock )==--"
     Wait 1
     Cls
     Lcd " Wait 30 Minute "
     Wait 2
     Display Off
     Wait 1800
     Q = 0
     U = 0
     Y = 0
     Display On
     Cls
     Lcd "Insert Password  "
     Wait 1
     Goto Main
    End If
    '***** Wait 15 Minute *****
    Cls
    If Q = 3 And U = 1 Then
     Cls
     Lcd "--==( Lock )==--"
     Wait 1
     Cls
     Lcd " Wait 15 Minute "
     Wait 2
     Display Off
     Wait 900
     Q = 0
     U = 0
     Y = Y + 1
     Display On
     Cls
     Lcd "Insert Password  "
     Wait 1
     Goto Main
    End If
    '***** Wait 5 Minute *****
    Cls
    If Q = 3 Then
     U = U + 1
     Cls
     Lcd "--==( Lock )==--"
     Wait 1
     Cls
     Lcd " Wait 5 Minute "
     Wait 2
     Display Off
     Wait 300
     Q = 0
     Display On
     Cls
     Lcd "Insert Password  "
     Wait 1
     Goto Main
    End If
    '********************
    Main1:
     Cls
     Locate 1 , 1
     Lcd "*=CP"
     Locate 1 , 10
     Lcd "#=Clr"
     Locate 2 , 1
     Lcd "Password="
     Locate 2 , 11
    '********************
    For Z = 0 To 2
    Cursor Blink
    Do
      Do
      A = Getkbd()
       '***** Display OFF *****
       If W = 0 Then
        Display Off
       End If
       '***********************
      Loop Until A < 16
     Select Case A
     Case 0 : A = 1
     Case 1 : A = 2
     Case 2 : A = 3
     Case 4 : A = 4
     Case 5 : A = 5
     Case 6 : A = 6
     Case 13 : A = 0
     Case 8 : A = 7
     Case 9 : A = 8
     Case 10 : A = 9
     Case 12 : A = 10
     Case 14 : A = 11
     Case Else A = 100
     End Select
    Loop Until A < 100
      '***** On Display *****
      If A <> 100 Then
      Display On
      End If
      '***** Change Password *****
      If A = 10 Then
      A = 100
      Cls
      Lcd "Change Password"
      Wait 1
      Goto Change
      End If
      '***** CLR *****
      If A = 11 Then
      A = 100
      Goto Main
      End If
      '***** 1number *****
      If Z = 0 Then
      A = A * 100
      B = A
      W = W + 1
      Locate 2 , 11
      Lcd "*"
      Waitms 200
      End If
      '***** 2number *****
      If Z = 1 Then
      A = A * 10
      C = A
      W = W + 1
      Locate 2 , 12
      Lcd "*"
      Waitms 200
      End If
      '***** 3number *****
      If Z = 2 Then
      D = A
      W = W + 1
      Locate 2 , 13
      Lcd "*"
      Waitms 200
      End If
    Next Z
      '***** Sum Number *****
    K = B + C
    L = K + D
      '***** Check Pass *****
    If L3 = 65535 Then
     H = 123
    Elseif L3 <> 0 Then
     H = L3
    End If
    '******************** Open/Erorr ***********************
    If L = H Then
     U = 0
     Y = 0
     Q = 0
     W = 0
     Cls
    
     Set Portb.0
     Waitms 10
     Reset Portb.0
     Cls
     Goto Main1
    Else
     Q = Q + 1
     W = 0
     Cls
     Lcd "Erorr"
     Wait 1
     Goto Main
    End If
    End
    '******************************* Change ************************
    Change:
    B = 0
    C = 0
    D = 0
    K = 0
    L = 0
    Cls
    Locate 1 , 1
    Lcd "*=Exit"
    Locate 1 , 10
    Lcd "#=Clr"
    Locate 2 , 1
    Lcd "Old Pass="
    Locate 2 , 11
    Cursor Blink
    '********************
    For Z = 0 To 2
    Cursor Blink
    Do
      Do
      A = Getkbd()
      Loop Until A < 16
     Select Case A
     Case 0 : A = 1
     Case 1 : A = 2
     Case 2 : A = 3
     Case 4 : A = 4
     Case 5 : A = 5
     Case 6 : A = 6
     Case 13 : A = 0
     Case 8 : A = 7
     Case 9 : A = 8
     Case 10 : A = 9
     Case 12 : A = 10
     Case 14 : A = 11
     Case Else A = 100
     End Select
    Loop Until A < 100
      '***** Exit Change Pass *****
      If A = 10 Then
      A = 100
      W = 0
      Cls
      Lcd "Exit Change Pass"
      Wait 1
      Goto Main
      End If
      '***** CLs *****
      If A = 11 Then
      A = 100
      Goto Change
      End If
      '***** 1number *****
      If Z = 0 Then
      A = A * 100
      B = A
      Locate 2 , 11
      Lcd "*"
      Waitms 200
      End If
      '***** 2number *****
      If Z = 1 Then
      A = A * 10
      C = A
      Locate 2 , 12
      Lcd "*"
      Waitms 200
      End If
      '***** 3number *****
      If Z = 2 Then
      D = A
      Locate 2 , 13
      Lcd "*"
      Waitms 200
      End If
    Next Z
      '***** Sum Number *****
    K = B + C
    L = K + D
      '***** Check Pass *****
    If L3 = 65535 Then
    H = 123
    Elseif L3 <> 0 Then
    H = L3
    End If
    '********** Check Mach Pass **********
    If L = H Then
     Cls
     Lcd "Mach Pass"
     Waitms 500
     Goto New
    Else
     Cls
     Lcd "Erorr"
     Waitms 500
     Cls
     Lcd "Agin"
     Waitms 500
     Goto Change
    End If
    '****************************** new ***********************
    New:
    B = 0
    C = 0
    D = 0
    K = 0
    L = 0
    Cls
    Locate 1 , 1
    Lcd "*=Exit"
    Locate 1 , 10
    Lcd "#=Clr"
    Locate 2 , 1
    Lcd "New Pass="
    Locate 2 , 11
    Cursor Blink
    '********************
    For Z = 0 To 2
    Cursor Blink
    Do
      Do
      A = Getkbd()
      Loop Until A < 16
     Select Case A
     Case 0 : A = 1
     Case 1 : A = 2
     Case 2 : A = 3
     Case 4 : A = 4
     Case 5 : A = 5
     Case 6 : A = 6
     Case 13 : A = 0
     Case 8 : A = 7
     Case 9 : A = 8
     Case 10 : A = 9
     Case 12 : A = 10
     Case 14 : A = 11
     Case Else A = 100
     End Select
    Loop Until A < 100
      '***** Exit Change Pass *****
      If A = 10 Then
      A = 100
      W = 0
      Cls
      Lcd "Exit Change Pass"
      Wait 1
      Goto Main
      End If
      '***** CLs *****
      If A = 11 Then
      A = 100
      Goto New
      End If
      '***** 1number *****
      If Z = 0 Then
      A = A * 100
      B = A
      Locate 2 , 11
      Lcd "*"
      Waitms 200
      End If
      '***** 2number *****
      If Z = 1 Then
      A = A * 10
      C = A
      Locate 2 , 12
      Lcd "*"
      Waitms 200
      End If
      '***** 3number *****
      If Z = 2 Then
      D = A
      Locate 2 , 13
      Lcd "*"
      Waitms 200
      End If
    Next Z
      '***** Sum Number *****
    K = B + C
    L2 = K + D
      '***** Check Pass *****
    If L3 = 65535 Then
    H = 123
    Elseif L3 <> 0 Then
    H = L3
    End If
    '********************************* New2 **********************
    New2:
    B = 0
    C = 0
    D = 0
    K = 0
    L = 0
    Cls
    Locate 1 , 1
    Lcd "*=Exit"
    Locate 1 , 10
    Lcd "#=Clr"
    Locate 2 , 1
    Lcd "Repet Pass="
    Locate 2 , 13
    Cursor Blink
    '********************
    For Z = 0 To 2
    Cursor Blink
    Do
      Do
      A = Getkbd()
      Loop Until A < 16
     Select Case A
     Case 0 : A = 1
     Case 1 : A = 2
     Case 2 : A = 3
     Case 4 : A = 4
     Case 5 : A = 5
     Case 6 : A = 6
     Case 13 : A = 0
     Case 8 : A = 7
     Case 9 : A = 8
     Case 10 : A = 9
     Case 12 : A = 10
     Case 14 : A = 11
     Case Else A = 100
     End Select
    Loop Until A < 100
      '***** Exit Change Pass *****
      If A = 10 Then
      A = 100
      W = 0
      Cls
      Lcd "Exit Change Pass"
      Wait 1
      Goto Main
      End If
      '***** CLs *****
      If A = 11 Then
      A = 100
      Goto New2
      End If
      '***** 1Number *****
      If Z = 0 Then
      A = A * 100
      B = A
      Locate 2 , 13
      Lcd "*"
      Waitms 200
      End If
      '***** 2Number *****
      If Z = 1 Then
      A = A * 10
      C = A
      Locate 2 , 14
      Lcd "*"
      Waitms 200
      End If
      '***** 3Number *****
      If Z = 2 Then
      D = A
      Locate 2 , 15
      Lcd "*"
      Waitms 200
      End If
    Next Z
      '***** Sum Number *****
    K = B + C
    L3 = K + D
      '***** Check Pass *****
    If L3 = 65535 Then
    H = 123
    Elseif L3 <> 0 Then
    H = L3
    End If
    
    '********** Check Mach New Pass **********
    If L2 = L3 Then
    Writeeeprom L3 , 0
     Cls
     Lcd "Mach Pass"
     Waitms 500
     Cls
     Lcd "CHNAGE PASSWORD"
     Wait 2
     Goto Main
    Else
     Cls
     Lcd "Erorr"
     Waitms 500
     Cls
     Lcd "Donot Mach Pass"
     Waitms 500
     Cls
     Lcd "Agin"
     Waitms 500
     Goto New
    End If
    '************************************** END PROGRAM **********************************

    #2
    پاسخ : راهنمایی برای مشکل قفل رمز دیجیتال

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

    دیدگاه


      #3
      پاسخ : راهنمایی برای مشکل قفل رمز دیجیتال

      نوشته اصلی توسط mmh1
      ببین توی برنامه که نباید مشکلی باشه
      الببته من برنامت رو نخوندم
      ولی قریب به یقین چیز هایی که تو پروتئوس جواب می دن سالم هستند
      ببین اینایی رو که می گم چک کن
      بهنگام زده شدن رمز نباید جریان زیادی برای روشن شدن پمپ استفاده شود (حالا پمپ یا هرچی دیگه که وقتی رمز رو می زنی فعال می شه)
      در نزدیکی آی سی نباید رله ترایاک دیاک و یا سیم ولتاژ 220 عبور کند
      تنظیمات ال سی دی و اتصالاتش رو چک کن
      ممنون دوست من
      اتصالات ال سی دی درسته.یعنی اگه یه بار برق رو قطع و وصل کنم ال سی دی درست نشون میده اما بعد 1-2 بار پسورد زدن یه دفعه بهم میریزه.
      رله از ای سی دوره.
      220 هم تا 1 متری مدار نیست.

      دیدگاه


        #4
        پاسخ : راهنمایی برای مشکل قفل رمز دیجیتال

        یه سوال
        رله رو با جریان مستقیم میکرو روشن می کنی یا با ترانزیستور
        ولتاژت که صاف هست دیگه رپیل که نداره
        برای رله دیود ایزوله و یا خازن گذاشتی ؟؟؟؟؟؟؟؟
        اینا که گفتم خیلی مهم هستند

        دیدگاه


          #5
          پاسخ : راهنمایی برای مشکل قفل رمز دیجیتال

          نوشته اصلی توسط mmh1
          یه سوال
          رله رو با جریان مستقیم میکرو روشن می کنی یا با ترانزیستور
          ولتاژت که صاف هست دیگه رپیل که نداره
          برای رله دیود ایزوله و یا خازن گذاشتی ؟؟؟؟؟؟؟؟
          اینا که گفتم خیلی مهم هستند
          با ترانزیستور
          اره صافه
          اره دوست من دیود ایزوله هم داره

          دیدگاه


            #6
            پاسخ : راهنمایی برای مشکل قفل رمز دیجیتال

            من از این قفل برای درب بازکن استفاده کردم
            وقتی پسورد اشتباه باشه مشکلی پیش نمیاد و روی ال سی دی erorr نشون میده اما مشکل من وقتی هست که پسورد درسته و درب باز میشه.بعد یکی دو بار زدن پسورد درست, روی ال سی دی نوشته های عجق وجق میاد.البته توی این حالت مدار کار میکنه و اگه پسورد درست باشه درب رو باز میکنه اما روی ال سی دی همون نوشته های عجق وجقه.
            گفتم شاید وقتی رله فعال میشه جریان میکشه که اینجوری ال سی دی بهم میریزه.تایم فعال بودن رله رو 10 میلی ثانیه گذاشتم اما بازم وقتی رله فعال میشه همون مشکل پیش میاد.

            دیدگاه


              #7
              پاسخ : راهنمایی برای مشکل قفل رمز دیجیتال

              خب داداش این چیزایی که گفتی بار ها در پروژه های من هم به وجود آمده :mrgreen:
              دنبال جایی باش که وقتی رمز رو درست می زنی جریان زیادی می کشه (احتمالا ترانزیستورت نسوخته)
              چون در این صورت فوقش آی سی ریست می شه و شما متوجه نمی شید ولی ال سی دی هنگ میکنه این هنگ کردن نشان دهنده این هست که یک لحظه ولتاژی که بهش می رسیده به شدت کم شده :angry:
              موفق باشید :applause:

              دیدگاه


                #8
                پاسخ : راهنمایی برای مشکل قفل رمز دیجیتال

                دوست من مشکلم تقریبا" حل شد
                مشکل نویز هست که با دستور initlcd بعد از قطع رله این مشکل حل میشه

                دیدگاه

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