اطلاعیه

Collapse
No announcement yet.

اموزش 0 تا 100 ساخت قفل رمزی به زبان بیسیک

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

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

    مرسی مهندس داری عالی پیش میری
    یکم سرعتشو بیشتر کن که زودتر به قسمت های اصلی برسیم
    :applause: :applause: :applause: :applause: :applause:
    امير مسعود مقدم

    دیدگاه


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

      نوشته اصلی توسط masoud.moghaddam21
      مرسی مهندس داری عالی پیش میری
      یکم سرعتشو بیشتر کن که زودتر به قسمت های اصلی برسیم
      :applause: :applause: :applause: :applause: :applause:
      خواهش می کنم ... باشه چشم اگه وقت کنم حتما ... منم خیلی دوست دارم این بحثو به نتیجه برسونیم...
      *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
      http://electerodl.ir/forum

      دیدگاه


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

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

        کد:
        Dim B1 As Byte
        B1 = Lookup(2 , Dta)
        lcd B1 
        
        Dta:
        Data 1 , 2 , 3 , 4 , 5
        تو این مثال برنامه میاد و مقدار درون B1 رو از روی جدول لوکاپ می خونهو روی ال سی دی نشون میده...
        امدوارم متوجه شده باشین... با دیدن مثال های مختلف بیشتر متوجه این موضوع میشین...

        خوب حالا بریم گرفتن چندین رقم :
        اولین دستور ساده رو قبلا بهتون گفتم همون دستور getkbd() و استفاده از جدول lookup

        کد:
        Pass_07:
        K1 = Getkbd()
        If K1 > 15 Then Goto Pass_07
        K1 = Lookup(k1 , Code)
        با این دستورات فوق برنامه میاد و عدد گرفته شده رو از جدول لوکاپ بنام Code مقدار رو برمیگردونه...
        دستور مهم بعدی اما ساده:
        دستور Case
        این دستور رو هم فک کنم بهتون نگفتم قبلا... ( بدلیل شباهت با دستور IF )
        این دستور تقریبا شبیه به دستور IF عمل می کنه بدین صورت که میاد مقدار متغیری رو با اعداد و یا حروف مورد نظر شما مقایسه می کنه و در صورت مشابهت عمل خاصی رو انجام میده...

        کد:
        Select Case K1
        Case 0 To 9:
        کار خاصی که مد نظر ماست
        Case 11 :
        کار خاص مد نظر ما
        End Select
        خوب همون طور که دیدین میاد مقدار K1 اگر 0 تا 9 بود یه کار خاصی انجام میده و اگر 11 بود یه کار خاص دیگه ...
        بهمین سادگی...
        دستورات بعدی خیلی مهم هستش ...
        اصول کار گرفتن چند عدد و در نهایت ریختن درون یک متغیر اینه که یکی یکی اعداد رو میگیره و درون یه رشته میریزه و و در نهایت رشته رو تبدیل به یک متغیر عددی می کنه...
        خوب دستوری که می خوایم استفاده کنیم اینه...

        کد:
        W = W + String(1 , K1)
        این دستور میاد و اعدادی که توسط متغیر K1 از جدول لوکاپ گرفته شده به رشته تبدیل می کنه و در متغیر W قرار می گیرهو هر دفعه که عددی رو میگیرید در رشته w یه خانه به جلو میروید...(امیدوارم منظورم رو فهمیده باشید)
        دستور بعدی مهم ...

        کد:
        K2 = Val(w)
        این دستور میاد و رشته W رو به عدد تبدیل میکنه و تو k2 میریزه...
        حالا شما اعدادی که وارد کردید درون یک متغیر به اسم k2 ریختید و می تونید ازش استفاده کنید ...
        که بعدا میگم چجوری با رمز پیش فرض مقایسه کنید...

        اینم از برنامه گرفتن چند رقم:
        کد:
        Pass_07:
        K1 = Getkbd()
        If K1 > 15 Then Goto Pass_07
        K1 = Lookup(k1 , Code)
        Select Case K1
        Case 0 To 9:
        If N < 8 Then
        Incr N
        Lcd String(1 , K1)
        W = W + String(1 , K1)
        End If
        Goto Pass_07
        Case 11 :
        K2 = Val(w)
        End Select
        متغیر N هم بع عنوان شمارنده استفاده شده
        اگر اعداد 1 تا 9 وارد شد اعداد را بگیرد ولی اگر # ( بع عنوان مثال ) وارد شد تبدیل به عدد کرده و در K2 قرار میدهد...

        اگر بازم سوالی داشتید بپرسید...
        اینم از جدول لوکاپ که داشت یادم میرفت برای این مثال:
        کد:
        Code:
        Data 49 , 50 , 51 , 60 , 52 , 53 , 54 , 61 , 55 , 56 , 57 , 62 , 63 , 48 , 11 , 64
        *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
        http://electerodl.ir/forum

        دیدگاه


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

          سلام
          این بار با دادن رمز پیش فرض به قفل می خوایم برنامه رو کامل ترش کنیم...
          خوب برای این کار:
          کد:
          Dim M As Eram Long 
          If M = &HFFFFFFFF Then
          M = 1391
          Else
          Goto Pass_01
          End If
          و این قسمت متغیر M که به حافظه EEprom دسترسی داره رمز درونش قرار میگیرد...
          در ابتدا رمز پیشفرض را 1391 انتخاب کردم ... جهت ریست کردن رمز هم اگر متغیر M یک شود (FFFFFFFF) آنگاه رمز 1391 می شود....
          در غیر این صورت به زیر برنامه پرش می کند و در خواست رمز از کاربر میکنه...

          خوب حالا می خوام زیر برنامه pass_01 رو بگم...
          دستورات قبلا توضیح داده شدن...
          کد:
          Pass_01:
          
          Cls
          Home
          Lcd "Enter Password"
          Locate 2 , 1
          Call Pass_06
          If M = K2 Then
          ' کار دلخواه ما .... هر کاری دوست داریم اینجا بهمش می گیم انجام بده
          ' مثلا پرش به زیر برنامه منو و یا روشن شدن رله و ...
          Else
          Cls
          Home
          Lcd "Error"
          Wait 2
          Cls
          Home
          Goto Pass_01
          End If
          خوب یه توضیح مختصر در مورد برنامه بدم و برای امروز دیگه کافیه...
          بعد از نوشتن Enter password روی ال سی دی نوبت گرفتن رمزه که به زیر برنامه ی pass_06 پرش می کنه که اونجا از کاربر یه رمز چند رقمی میگیره ( که قبلا توضیح دادمش... ) بعد رمز رو با M (رمز پیش فرض) مقایسه می کنه اگه برابر بود کار دلخواه ما رو انجام میده در غیر این صورت روی ال سی می نویسه error...
          و دوباره به Pass_01 پرش میکنه و همین برنامه دوباره اجرا میشه...
          در آینده باز طریقه عوض کردن رمز رو میگم انشالله ... اگه دوستان هم کمک کنن و پا پیش بزارن... حداقل نظر بدین... :nice: :nice:
          *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
          http://electerodl.ir/forum

          دیدگاه


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

            سلام
            با گذاشتن قابلیت تغیر رمز امروز می خوایم تقریبا این پروژه رو کامل تر کنیم...
            اگر تا اینجا رو کامل یاد گرفتین بقیش دیگه سختی نداره...
            ولی قبلش منو رو توضیح بدم که کار راحتر پیش ره و قبل فهم تر...
            بعد از اینکه رمز رو وارد کردیم و درست بود باید به منو پرش کنهو در غیر این صورت یعنی اگه رمز اشتباه بود باید ارور بده حالا هر چیزی می تونه باشه مثلا روشن شدن یک LED و یا نوشتن هشدار ERRORE روی LCD و یا هر چیز دیگه ای که دوست دارینو در نهایت برگرده و دوباره از اول رمز رو بگیره...
            خوب تا اونجا گفتم که اگه رمز رو درست وارد کرد به منو بپره ...
            ( می تونین از لینک زیر آموزش قبلی رو مطالعه کنین
            http://www.eca.ir/forum2/index.php?topic=111706.msg734618#msg734618
            )
            خوب بعنوان مثال به زیربرنامه Menu_1 میریم...
            برنامه اش رو براتون می نویسم...
            کد:
            Menu_1:
            Cls
            Cursor Off
            Home
            Lcd "1= Exit "
            Locate 2 , 1
            Lcd "2= Change Pass"
            خوب تا اینجا روی LCD متن دلخواه خود را برای نشان دادن می نویسیم که کالا واضحه ... حالا ادامش...
            کد:
            K1 = Getkbd()
            
            If K1 > 15 Then Goto Pass_03
            
            K1 = Lookup(k1 , Code)
            
            If K1 = 50 Then Goto change_pass
            If K1 = 49 Then Goto first
            goto Menu_1
            در اینجا عددی از کیپد را فشار می دهیم که اگر 50 بود به زیر برنامه ای دیگر پرش می کنیم و اگر 49 بود به زیر برنامه ای دیگر( که منظور از اعداد 49 و 50 اعداد 1 و 2 می باشد)
            به همین سادگی می توانید چندین عدد دیگر از کیپد را به کار خاصی اختصاص دهید...
            خوب حال فرض می کنیم کاربر عدد یک را وارد کرد که قطعا به لیبلی که در ابندای برنامه قرار داده ایم پرش می کند و دوباره از کاربر رمز ورود را خواهد گرفت...
            اگر عدد 2 را وارد کرد به زیر برنامه تغییر رمز پرش خواهد کرد...
            خوب از اینجا به بعد روی زیر برنامه تغییر رمز کار می کنیم...
            کد:
            change_pass:
            Cls
            Cursor Off
            Home
            Lcd "Enter Pass Again"
            Locate 2 , 1
            Call Pass_06
            تا اینجا روی LCD درخواست می کند که رمز ورود را دوباره وارد کندو به زیر برنامه Pass_06 پرش می کند تا رمز را دریافت کند...
            کد:
            If M = K2 Then
            Goto Pass_05
            Else
            Cls
            Home
            Lcd "Error"
            Wait 2
            Goto change_pass
            End If
            با رمز قبلی که در متغیر M قرار دارد مقایسه می کند اگر درست بود به pass_05 پرش میکند در غیر صورت یعنی اگر اشتباه بود روی LCD متن ارور را می نویسد وبه زیر برنامه change_pass پرش می کند و دوباره درخواست رمز می کند...
            کد:
            Pass_05:
            Cls
            Cursor Off
            Home
            Lcd "Enter New Pass"
            Locate 2 , 1
            Call Pass_06
            M = K2
            goto menu_1
            روی LCD می نویسد که کاربر رمز جدید را وارد کند و رمز جدید را درون متغیر M می ریزد...
            و دوباره به منو پرش می کند...
            خوب اینم از تغییر رمز دیدید که کار چندان سختی نبود ...

            در ادامه اگر می خواهید امکانات جدیدی اضافه کنید بگین تا اونم آموزش بدم...
            *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
            http://electerodl.ir/forum

            دیدگاه


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

              عالی پیش میری مهندس
              خسته نباشی
              کامل توضیح میدی که این خیلی خوبه !
              یا علی
              امير مسعود مقدم

              دیدگاه


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

                خواهش می کنم ...

                این پروژه رمز تا 8 رقم قبول می کنه و با قطع برق رمز پاک نمیشه
                هر چندتا رله هم بخواین می تونین بهش اضافه کنین...

                اگه میشه بگین چه قابلیت های دیگه ای می خواین به پروژه اضافه کنین تا اونم اضافه کنم...
                *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
                http://electerodl.ir/forum

                دیدگاه


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

                  اگه امکانش هست بهش ساعت وتاریخ
                  وهمین طور rfidهم اضافه کن :applause: :nice:

                  دیدگاه


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

                    نوشته اصلی توسط ehsan2774
                    خواهش می کنم ...

                    این پروژه رمز تا 8 رقم قبول می کنه و با قطع برق رمز پاک نمیشه
                    هر چندتا رله هم بخواین می تونین بهش اضافه کنین...

                    اگه میشه بگین چه قابلیت های دیگه ای می خواین به پروژه اضافه کنین تا اونم اضافه کنم...

                    یه سوال ! زمانی از این دستور استفاده میکنیم و متغیر معرفی میکنیم
                    کد:
                    Dim M As Eram Long
                    متغیرمون هر چی توش ریخته بشه با قطع برق از بین نمیره آره ؟؟
                    امير مسعود مقدم

                    دیدگاه


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

                      سلام دوستان
                      مهندس دستت درد نکنه اموزش کاملی داره از اب در میاد
                      :applause:
                      ادامه بدین :smile:

                      دیدگاه


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

                        نوشته اصلی توسط masoud.moghaddam21

                        یه سوال ! زمانی از این دستور استفاده میکنیم و متغیر معرفی میکنیم
                        کد:
                        Dim M As Eram Long
                        متغیرمون هر چی توش ریخته بشه با قطع برق از بین نمیره آره ؟؟
                        بله درسته چون این متغیر اطلاعات داخلش رو از روی حافظه EEPROM بر میداره پس مسلما پاک نمیشه...
                        نوشته اصلی توسط saeed khakdan
                        سلام دوستان
                        مهندس دستت درد نکنه اموزش کاملی داره از اب در میاد
                        :applause:
                        ادامه بدین :smile:
                        ممنونم...


                        اضافه شده در تاریخ :
                        خوب برنامه رو کامل تا اینجا میزارم تا باز بعدا ادامش بدیم....
                        کد:
                        $regfile = "m16def.dat"
                        $crystal = 1000000
                        Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , _
                        Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
                        Config Lcd = 16 * 2
                        Config Kbd = Portb , Debounce = 50 , Delay = 200
                        Config Portd = Output
                        Declare Sub Pass_06
                        Dim K1 As Byte
                        Dim K2 As Long
                        Dim M As Eram Long
                        Dim N As Byte
                        Dim W As String * 8
                        '***********************************
                        Do
                        
                        If M = &HFFFFFFFF Then
                        M = 1391
                        Else
                        Goto Pass_01
                        End If
                        '***********************************
                        Pass_01:
                        
                        Cls
                        Home
                        Lcd "Enter Password"
                        N = 0
                        W = ""
                        Reset Portd.0
                        Reset Portd.1
                        Locate 2 , 1
                        
                        Call Pass_06
                        
                        If M = K2 Then
                        Set Portd.0
                        Set Portd.1
                        
                        Goto Pass_02
                        
                        Else
                        
                        Reset Portd.0
                        Reset Portd.1
                        Cls
                        Home
                        Lcd "Error"
                        Wait 2
                        Cls
                        Home
                        Goto Pass_01
                        End If
                        
                        '***********************************
                        
                        Pass_02:
                        
                        Cls
                        Cursor Off
                        Home
                        Lcd "1= Exit "
                        Locate 2 , 1
                        Lcd "2= Change Pass"
                        
                        '***********************************
                        
                        Pass_03:
                        
                        K1 = Getkbd()
                        
                        If K1 > 15 Then Goto Pass_03
                        
                        K1 = Lookup(k1 , Code)
                        
                        If K1 = 50 Then Goto Pass_04
                        If K1 = 49 Then Goto Pass_01
                        Goto Pass_03
                        
                        '***********************************
                        
                        Pass_04:
                        
                        Cls
                        Cursor Off
                        Home
                        Lcd "Enter Pass Again"
                        Locate 2 , 1
                        
                        Call Pass_06
                        
                        If M = K2 Then
                        Goto Pass_05
                        
                        Else
                        
                        Cls
                        Home
                        Lcd "Error"
                        Wait 2
                        Goto Pass_02
                        End If
                        
                        '***********************************
                        
                        Pass_05:
                        
                        Cls
                        Cursor Off
                        Home
                        Lcd "Enter New Pass"
                        Locate 2 , 1
                        Call Pass_06
                        M = K2
                        
                        Loop
                        
                        
                        End
                        
                        '***********************************
                        
                        Pass_06:
                        
                        N = 0
                        W = ""
                        
                        '***********************************
                        
                        Pass_07:
                        
                        K1 = Getkbd()
                        If K1 > 15 Then Goto Pass_07
                        
                        K1 = Lookup(k1 , Code)
                        
                        Select Case K1
                        
                        Case 48 To 57:
                        
                        If N < 8 Then
                        Incr N
                        Lcd String(1 , K1)
                        W = W + String(1 , K1)
                        
                        End If
                        
                        Goto Pass_07
                        
                        Case 11 :
                        
                        K2 = Val(w)
                        End Select
                        
                        Return
                        
                        '***********************************
                        
                        Code:
                        
                        Data 49 , 50 , 51 , 60 , 52 , 53 , 54 , 61 , 55, 56 , 57 , 62 , 63 , 48 , 11 , 64
                        *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
                        http://electerodl.ir/forum

                        دیدگاه


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

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

                          دیدگاه


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

                            نوشته اصلی توسط mpsms
                            سلام کدوم مدار عملیه واقعا جواب داده
                            میخوام دو تا رله داشته باشه یکی برای رمز درست و یکی برای غلط
                            از این استفاده کنید...
                            http://www.eca.ir/forum2/index.php?topic=111706.msg735588#msg735588
                            و برای رله ها هم
                            می تونین از دستور set portx.y استفاده کنین...
                            اگه آموزش رو دنبال کنین از برنامه سر در میارین...
                            ولی بازم اگه سر در نیاوردین بگین کمکتون کنم
                            *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
                            http://electerodl.ir/forum

                            دیدگاه


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

                              مهندس خسته نباشی.عالییی یه سوال:این پروژه هنگ نمیکمه یا باگی نداره؟چون من دوتا پروژه دارم یکیش گاهی اوقات رمز درست رو هم قبول نمیکنه.یکی دیگه هم بعضی وقتها موقع وارد کردن رمز قفل میکنه و باید میکرو ریست کرد!!اگه امکان داره تو پروژه تون از واچ داگ هم استفاده کنین و آموزش بدین.حسگر اثر انگشت هم اگه اضافه بشه عای میشه.سپاس از زحمتهایی که میکشین

                              دیدگاه


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

                                نوشته اصلی توسط gt2
                                مهندس خسته نباشی.عالییی یه سوال:این پروژه هنگ نمیکمه یا باگی نداره؟چون من دوتا پروژه دارم یکیش گاهی اوقات رمز درست رو هم قبول نمیکنه.یکی دیگه هم بعضی وقتها موقع وارد کردن رمز قفل میکنه و باید میکرو ریست کرد!!اگه امکان داره تو پروژه تون از واچ داگ هم استفاده کنین و آموزش بدین.حسگر اثر انگشت هم اگه اضافه بشه عای میشه.سپاس از زحمتهایی که میکشین
                                من خودم اینو بستم و جواب گرفتم و مشکلی نداشت ....
                                آره حسگر اثر انگشت هم خوبه اگه کسی بلده کار باهاش رو آموزش بده...
                                *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
                                http://electerodl.ir/forum

                                دیدگاه

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