اطلاعیه

Collapse
No announcement yet.

مشکل در مدار قفل دجیتال با اسمارت کارت

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

    مشکل در مدار قفل دجیتال با اسمارت کارت

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


    لینک مدار و توضیحات: http://ir2up.ir/up17/0457bed4fb1.pdf










    کد:
           $regfile = "M16def.dat"
    $crystal = 8000000
    
    '--------------------------- ALIAS
    
    '------------------------- THIS PIN CONNECT TO CARD READER SENSOR
    '------------------------- PIN = 1 WHEN USER INSERT CARD
    
    Sensor Alias Pind.5
    Config Sensor = Input
    Portd.5 = 1
    
    '------------------------- THIS PIN CONNECT TO PUSH BOTTON
    '------------------------- PIN = 0 WHEN USER PUSH THIS BOTTON
    
    Key Alias Pind.6
    Config Key = Input
    Portd.6 = 1
    
    '------------------------ THIS PIN CONNECT TO BUZZER
    
    Buzzer Alias Portd.7
    Config Buzzer = Output
    Portd.7 = 0
    
    '----------------------- THIS PIN CONNECT TO RELAY FOR OPEN THE DOOR
    
    Relay Alias Portc.0
    Config Relay = Output
    Relay = 0
    
    '-------------------- J1 & J2 PINS CONNECT TO JUMPER
    '-------------------- IF J1 CONNECT TO J2 THEN PROGRAM DELETE THE MASTER USER
    
    J1 Alias Portc.1
    Config J1 = Output
    Portc.1 = 0
    
    
    J2 Alias Pinc.2
    Config J2 = Input
    Portc.2 = 1
    
    '------------------- 7-SEG CONNECT TO THIS PORT
    
    7_seg Alias Porta
    Config 7_seg = Output
    
    '------------------- THIS PIN CONNECT TO SMART CARD
    
    Io Alias Pinb.0
    Rst Alias Portb.1
    Clk Alias Portb.2
    Config Io = Input
    Config Rst = Output
    Config Clk = Output
    
    
    '------------------------- DIM
    
    '----
    
    Dim Card_cod(11) As Byte
    Dim Cod_e(30) As Eram Byte
    Dim Cod(30) As Byte
    
    '----
    
    Dim Conter0 As Byte
    Dim Conter1 As Byte
    Dim Conter2 As Byte
    Dim Conter3 As Byte
    Dim Conter4 As Byte
    
    Dim Time1 As Word
    Dim Time2 As Word
    Dim Time3 As Word
    
    Dim Select1 As Bit
    Dim Select2 As Byte
    
    Dim Error As Byte
    Dim Status As Byte
    Dim User_num As Byte
    
    
    '--------------------- LOAD E2PROM DATA
    
    For Conter1 = 1 To 30
    Cod(conter1) = Cod_e(conter1)
    Waitms 10
    Next
    
    '------------------------- PERUSE JUMPER CONNECTION
    '------------------------- IF J1 CONNECT TO J2 SO PROGRAM DELETE THEMASTER USER
    
    J1 = 1
    Waitms 10
    If J2 = 1 Then
     J1 = 0
     Waitms 10
     If J2 = 0 Then
      Cod(1) = 0
      Buzzer = 1
      7_seg = &B01110011
      Waitms 800
      Buzzer = 0
      Waitms 300
     End If
    
    End If
    
    J1 = 0
    
    
    '------------------------ PROGRAM START
    
    Buzzer = 1
    7_seg = 255
    Waitms 100
    7_seg = 0
    Buzzer = 0
    Waitms 300
    7_seg = 255
    Buzzer = 1
    Waitms 100
    '7_seg = 0
    
    Buzzer = 0
    Waitms 500
    
    '------------------------ IF COD(1) <> 1 THEN MASTER USER NOT REGISTERED
    '------------------------ SO NEW MASTER USER SAVE TO RAM
    
     Start_program:
    
    If Cod(1) <> 1 Then
    
    7_seg = &B00110110
    
    Bitwait Sensor , Set
    
    Waitms 100
    
    If Sensor <> 1 Then Goto Start_program
    
    Gosub Read_data
    
    If Error <> 0 Then
      7_seg = &B01001111
      Buzzer = 1
      Waitms 800
      Buzzer = 0
      Wait 1
      Goto Start_program
    
    End If
    
    Gosub Register_new_card
    7_seg = &B01000010
    Buzzer = 1
    Gosub Save_to_eram
    Buzzer = 0
    Waitms 100
    Buzzer = 1
    Waitms 100
    Buzzer = 0
    
    
    Wait 1
    
    
    End If
    
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir ******************* START MAIN PROGRAM LOOP    ****************
    '******************************                 ****************
    '*******************************************************************************
    
    Do
    '----------------------------------------------- DO
    
    7_seg = 1
    
    For Conter0 = 1 To 11
    
    Waitms 100
    
    
    Shift 7_seg , Left
    If 7_seg > 63 Then 7_seg = 1
    
    If Key = 0 Then
     Incr Time1
    Else
     Time1 = 0
    End If
    
    '--------------------- IF USER INSERTED THE CARD SO GOSUB OPEN_DOOR
    
    If Sensor = 1 Then Gosub Open_door
    
    
    Next
    
    '--------------
    Waitms 100
    7_seg = 0
    Waitms 200
    7_seg = &B10000000
    Waitms 200
    
    '--------------------- IF USER INSERTED THE CARD SO GOSUB OPEN_DOOR
    
    
    If Sensor = 1 Then Gosub Open_door
    
    7_seg = 0
    Waitms 200
    7_seg = &B10000000
    Waitms 200
    7_seg = 0
    
    '------------------- TIME > 3 WHEN USER PUSHED AND HOLD THE BOTTON
    '------------------- SO PROGRAM GO TO MENU
    
    If Time1 > 3 Then Gosub Menu
    
    
    '----------------------------------------------- LOOP
    Loop
    
    '*******************************************************************************
    '**************************                   ****************
    '* iseee.ir *************** END OF MAIN PROGRAM AND START SUB ****************
    '**************************                   ****************
    '*******************************************************************************
    
    
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir *******************       OPEN DOOR      ****************
    '******************************                 ****************
    '*******************************************************************************
    
    
    Open_door:
    
    Gosub Read_data
    Gosub Search
    
    If Error = 0 And Status = 5 Then
    
     Relay = 1
     7_seg = &B00110111
     Buzzer = 1
     Waitms 100
     Buzzer = 0
     Waitms 200
     Buzzer = 1
     Waitms 100
     Buzzer = 0
     Waitms 700
     Gosub Diplay_un
     Relay = 0
     Waitms 1500
     7_seg = 0
     Waitms 500
    
    Else
    
     7_seg = &B01001111
     Buzzer = 1
     Waitms 900
     Buzzer = 0
     Wait 2
    End If
    
    
    
    
    
    Return
    
    
    '*******************************************************************************
    '******************                          **********
    '* iseee.ir ******* MENU OF PROGRAM FOR REGISTER NEW OR DELETE USER **********
    '******************                          **********
    '*******************************************************************************
    
    Menu:
    
    
    7_seg = &B00110110
    Buzzer = 1
    Waitms 300
    Buzzer = 0
    
    Time1 = 0
    
    '-------------------------- INCR TIME1 TO EXIT SUB WHEN TIME OUT
    
    While Time1 < 70
    
     Waitms 100
     Incr Time1
     If Time1 > 50 Then Return
    
     '--------------------- WAIT UNTIL INSERT MASTER CARD
     If Sensor = 1 Then
      Gosub Read_data
      Gosub Search
    
      '----------------------- ONLY MASTER USER ALLOW TO ACCESS
    
      If Error = 0 And Status = 5 And User_num = 1 Then
       Exit While
      Else
       Buzzer = 1
       7_seg = &B01001111
       Waitms 700
       Buzzer = 0
       7_seg = 0
       Return
      End If
    
      '-----------------------
    
     End If
    
     '--------------------
    
    Wend
    
    '------------------------
    
    
    Buzzer = 1
    7_seg = &B01011110
    Waitms 100
    Buzzer = 0
    Waitms 100
    Buzzer = 1
    Waitms 100
    Buzzer = 0
    Waitms 500
    
    
    
    '-------------------------- SELECT1 = 1 ---> REGISTER NEW
    '-------------------------- SELECT1 = 0 ---> DELETE USER
    Select1 = 1
    7_seg = &B01000010
    '--------------------------
    
    Time1 = 0
    Time2 = 0
    
    '-------------------------- INCR TIME1 TO EXIT SUB WHEN TIME OUT
    
    While Time1 < 70
    
    Incr Time1
    
    Waitms 100
    
    If Key = 0 Then
     Time1 = 0
     Incr Time2
    End If
    
    
    '------------------------------ IF KEY=1 AND TIME2 >0 ---> USER PUSHED THE KEY
    '------------------------------ SO PROGRAM CHANGE THE SELECTION
    
    If Time2 > 0 And Time2 < 20 And Key = 1 Then
    Time2 = 0
    Buzzer = 1
    Toggle Select1
    
    '---------------------- DISPLAY r OR d FOR REGISTER OR DELETE USER IN 7-SEG
    
    If Select1 = 1 Then 7_seg = &B01000010
    If Select1 = 0 Then 7_seg = &B01110011
    '---------------------
    Waitms 100
    Buzzer = 0
    End If
    
    
    
    '----------------------- IF TIME2>15 THEN USER PUSHED AND HOLD THE KEY
    '----------------------- SO PROGRAM START THE SELECTED ACTION
    
    If Time2 > 15 Then
      '------------------------------------ SELECT1=1 ---> REGISTER NEW CARD
      If Select1 = 1 Then
    
       7_seg = &B00110110
       Buzzer = 1
       Waitms 200
       Buzzer = 0
    
        '----------------------------
        Time1 = 0
        While Time1 < 70
    
         Waitms 100
         Incr Time1
         If Sensor = 1 Then Exit While
    
    
        Wend
    
        If Time1 > 69 Then Return
    
        '----------------------------
        Waitms 100
    
        Gosub Read_data
        Gosub Search
        '------------------------ IF STATUS=5 THEN CARD ALREADY REGISTERED
        If Status = 5 Then
    
          Buzzer = 1
          '------------- DISPLAY (S) IN 7-SEG
          7_seg = &B01101101
          '-------------
          Waitms 100
          Buzzer = 0
          Waitms 50
          Buzzer = 1
          Waitms 100
          Buzzer = 0
          Waitms 50
          Buzzer = 1
          Waitms 100
          Buzzer = 0
          Waitms 50
          Buzzer = 1
          Waitms 100
          Buzzer = 0
          '--------------
          Waitms 1500
          Return
    
        End If
    
        '-----------------------------------------------------------------
    
        If Error = 0 Then
    
         '-------------- IF USER PUSH KEY SO SAVE NEW CARD COD FOR MASTER USER
    
         If Key = 0 Then
           Waitms 100
           If Key = 0 Then Cod(1) = 0
         End If
         '--------------------------------------------------------------------
           Gosub Register_new_card
    
         '------------------------- IF STATUS=20 SO MEMORY IS FULL
    
         If Status = 20 Then
    
         '------------ DISPLAY (F) IN 7-SEG
           7_seg = &B01000010
         '-------------------
           Buzzer = 1
           Waitms 100
           Buzzer = 0
           Waitms 100
           Buzzer = 1
           Waitms 100
           Buzzer = 0
           Waitms 600
           Gosub Save_to_eram
         Else
          '----------- IF STATUS <> 20 SO NEW CARD REGISTERED SUCCESSFULLY
          '----------- DISPLAY (r) IN 7-SEG
          7_seg = &B01000010
           Buzzer = 1
           Waitms 600
           Buzzer = 0
           Waitms 300
    
    
    
         End If
    
         '-------------------------
    
        Else
         7_seg = &B01001111
         Buzzer = 1
         Waitms 600
         Buzzer = 0
    
        End If
    
      End If
    '------------------------------------ SELECT1=0 ---> DELETE USER
      If Select1 = 0 Then
    
      7_seg = &B01110011
      Buzzer = 1
      Waitms 500
      Buzzer = 0
    
      User_num = 2
      Gosub Diplay_un
      Time1 = 0
      Time2 = 0
    
      '-------------------------- INCR TIME1 TO EXIT SUB WHEN TIME OUT
    
      While Time1 < 70
    
    
       Waitms 100
       Incr Time1
    
       If Key = 0 Then
         Time1 = 0
         Incr Time2
       End If
    
    
       '-------------------------- IF KEY=1 AND TIME2 >0 ---> USER PUSHED THE KEY
       '-------------------------- SO PROGRAM INCR USER NUMBER
    
       If Time2 > 0 And Key = 1 Then
         Time2 = 0
         Buzzer = 1
         Incr User_num
         Waitms 100
         Buzzer = 0
         If User_num > 5 Then User_num = 2
         Gosub Diplay_un
    
       End If
    
       '----------------------- IF TIME2>15 THEN USER PUSHED AND HOLD THE KEY
       '----------------------- SO PROGRAM DELET THE SELECTED USER
    
       If Time2 > 15 Then
    
       Gosub Delete_user
    
         Return
       End If
    
      Wend
      '-------------------------- TIME OUT WHILE END
    
      End If
    
    '-------------------------------------
    
    Wait 1
    Return
    End If
    
    '------------------------
    
    Wend
    
    
    
    Return
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir *******************   DISPLAY NUMBER IN 7-SEG   ****************
    '******************************                 ****************
    '*******************************************************************************
    
    Diplay_un:
    
    Select Case User_num
    Case 1:
      7_seg = &B00110000
    Case 2:
      7_seg = &B01011011
    Case 3:
      7_seg = &B01111001
    Case 4:
      7_seg = &B01110100
    Case 5:
      7_seg = &B01101101
    End Select
    
    
    Return
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir *******************    DELETE SELECTED USER   ****************
    '******************************                 ****************
    '*******************************************************************************
    
    Delete_user:
    
    Buzzer = 1
    7_seg = &B01110011
    Wait 1
    7_seg = 0
    Buzzer = 0
    
    Decr User_num
    User_num = User_num * 6
    Incr User_num
    
    Conter2 = User_num + 5
    
    For Conter1 = User_num To Conter2
     Cod(conter1) = 0
    Next
    Gosub Save_to_eram
    
    Return
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir *******************     REGISTER NEW USER    ****************
    '******************************                 ****************
    '*******************************************************************************
    
    Register_new_card:
    
    '----------------- STATUS = 30 WHEN MEMORY IS FULL
    Status = 30
    '-----------------
    
    For Conter0 = 1 To 30 Step 6
    
      If Cod(conter0) <> 1 Then
        Cod(conter0) = 1
        Incr Conter0
        Conter3 = Conter0 + 4
        Conter4 = 4
    
        For Conter2 = Conter0 To Conter3
    
            Cod(conter2) = Card_cod(conter4)
            Incr Conter4
    
        Next
        '-------------------- STATUS =20 WHEN CARD REGISTER SUCCESSFULLY
        Status = 20
        '--------------------
        Exit For
    
      End If
    Next
    
    Return
    
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir ******************* SEARCH THE CARD ID IN MEMORY  ****************
    '******************************                 ****************
    '*******************************************************************************
    
    Search:
    
    User_num = 0
    For Conter0 = 1 To 25 Step 6
      Incr User_num
    
      Status = 0
    
      If Cod(conter0) = 1 Then
       Conter3 = Conter0 + 5
       Conter4 = 4
       Conter1 = Conter0 + 1
       For Conter2 = Conter1 To Conter3
    
         If Card_cod(conter4) = Cod(conter2) Then Incr Status
         Incr Conter4
       Next
    
      End If
     If Status = 5 Then Exit For
    Next
    
    Return
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir *******************      READ CARD ID     ****************
    '******************************                 ****************
    '*******************************************************************************
    
    Read_data:
    
    Error = 0
    
    '---------------- RESET THE CARD
    '    _______
    'RST ___|    |___
    '     ___
    'CLK _____|  |_____
    
    Set Rst
    Set Clk
    Waitus 50
    Reset Clk
    Reset Rst
    Waitms 5
    
    '-------------- READ CARD DATA
    '
    '    __  __  __
    'CLK __| |__| |__| |__ .....
    
    '    __ __ __ __
    'I/O  / \/ \/ \/  .....
    '  __/\__/\__/\__/\__
    '
    '
    
    Conter0 = 1
    For Conter1 = 1 To 10
      For Conter2 = 0 To 7
        Set Clk
        Waitus 10
        Card_cod(conter0).conter2 = Io
        Waitus 20
        Reset Clk
        Waitus 30
      Next
      Incr Conter0
    Next
    
    '----------------------- IF ALL DATA IS 0 OR 255 THEN OCCUR ERROR
    
    If Card_cod(4) = 0 And Card_cod(5) = 0 And Card_cod(6) = 0 And Card_cod(7) = 0 And Card_cod(8) = 0 Then Error = 1
    
    If Card_cod(4) = 255 And Card_cod(5) = 255 And Card_cod(6) = 255 And Card_cod(7) = 255 And Card_cod(8) = 255 Then Error = 1
    
    '------------------------
    
    
    Return
    
    '*******************************************************************************
    '******************************                 ****************
    '* iseee.ir ******************* SAVE RAM DATA TO E2PROM    ****************
    '******************************                 ****************
    '*******************************************************************************
    
    Save_to_eram:
    
    For Conter4 = 1 To 30
     Cod_e(conter4) = Cod(conter4)
     Waitms 10
    Next
    
    Return
    
    
    '*******************************************************************************
    '******************************                 ****************
    '****************************** END OF PROGRAM IN       ****************
    '* iseee.ir ******************* THIS LINE = 800        ****************
    '******************************                 ****************
    '*******************************************************************************
    
    End
    
    
    
    'WWW.ISEEE.IR
    'YEAR 2011
    هر اقدام بزرگی ابتدا محال به نظر میرسد

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

    کسی نمیدونه مشکل از چیه؟ :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry:
    فردا باید تحویلش بدم!!!!! :angry: :angry: :angry: :angry: :cry: :cry:
    هر اقدام بزرگی ابتدا محال به نظر میرسد

    دیدگاه

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