اطلاعیه

Collapse
No announcement yet.

کمک در مورد صفحه کلید 4*4

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

    کمک در مورد صفحه کلید 4*4

    سلام
    دوستان من چطوری میتونم کاری بکنم که وقتی یکی از کلید های کی برد فشار داده شد فقط مثل کلید های موبایل
    فقط همون یه بار فعال باشه وفقط یه عدد وارد بشه نه مثل کی برد کامپیوتر که وقتی انگشتتو میزاری روی یه کلید همینطور تا برنداری تایپ میشه
    لطفا راهنماییم کنید ممنون
    معلوليت محدوديت نيست

    آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

    #2
    پاسخ : کمک در مورد صفحه کلید 4*4

    با سلام
    برای این کار میتونید تابع تون رو طوری بنویسید که زمانی هیچ دکمه ای فشار داده نمیشه یک عدد به غیر از اعداد مربوط به کلیدها (مثلا برای یک کیپد 4*4 این عدد میتونه 16 باشه) برگردونه ، حالا در لحظه ورود به تابع اول بایید چک کنید که این عدد 16 هست یا خیر در صورت درست بودن تابع اجرا و در صورت اشتباه بودن با دستور مثلا break در زبان c از تابع خارج بشید.

    دیدگاه


      #3
      پاسخ : کمک در مورد صفحه کلید 4*4

      سلام میتونید از یه حلقه while بینهایت استفاده کنید به این صورت که تا وقتی دستتون روی کلید هست برنامه داخل حلقه بمونه.
      کد:
      if(!(PINB & 0b00010000))
      			{
      				while(!(PINB & 0b00010000))
      				{
      				}
      حتما از تاخیر بین دستور if و while استفاده کنید.
      نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

      دیدگاه


        #4
        پاسخ : کمک در مورد صفحه کلید 4*4

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

        دیدگاه


          #5
          پاسخ : کمک در مورد صفحه کلید 4*4

          با تشکر از همه دوستان
          من با بسکام کارمیکنم میشه با یه برنامه نمونه راهنماییم کنید من هرچی فکر کردم چیزی به ذهنم نرسید
          که چطور بفمونم که وقتی کلید فشار داده شد

          تا زمانی که این اتصال قطع نشده یا بقول خودمون

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

          آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

          دیدگاه


            #6
            پاسخ : کمک در مورد صفحه کلید 4*4

            یکسری به این تایپیک بزنید دقیقا در مورد همین مشکل شما توی بسکام یه راه حل گفته بودم فکر کنم کمکتون کنه :
            http://www.eca.ir/forum2/index.php?t...5867#msg205867

            دیدگاه


              #7
              پاسخ : کمک در مورد صفحه کلید 4*4

              با سلام
              دوست عزیز اون تاپیک دیدم ولی اگه میشه خودتون بیشتر توضیح بدین فکر کنم شما این مشکلو حل کردین :applause:
              معلوليت محدوديت نيست

              آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

              دیدگاه


                #8
                پاسخ : کمک در مورد صفحه کلید 4*4

                منظورم اینه :

                A = Getkbd()
                If A = 16 Then B = 0
                If B = 0 Then
                B = 1
                A = Lookup(a , Read_key)
                '..........
                '........
                '.........
                '.....
                End If

                دیدگاه


                  #9
                  پاسخ : کمک در مورد صفحه کلید 4*4

                  دوست عزیز خیلی خیلی ببخشید من متوجه نشدم :cry2:
                  معلوليت محدوديت نيست

                  آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

                  دیدگاه


                    #10
                    پاسخ : کمک در مورد صفحه کلید 4*4

                    خوب این رو امتحان کنید :


                    $regfile = "m32def.dat"
                    $crystal = 8000000
                    Config Lcdpin = Pin , Db4 = Porta.1 , Db5 = Porta.2 , Db6 = Porta.3 , Db7 = _
                    Porta.4 , E = Porta.5 , Rs = Porta.6
                    Config Lcd = 16 * 2
                    Dim A As Byte
                    Dim B As Byte
                    Config Kbd = Portc , Debounce = 50 , Delay = 255
                    Cls
                    Home
                    Do
                    A = Getkbd()
                    If A = 16 Then B = 0
                    If B = 0 Then '{----------------------
                    B = 1
                    A = Lookup(a , Read_key)
                    '------------------------
                    Select Case A
                    Case 0 To 9: 'number0...9
                    Case 10: 'F1(backspace)
                    Shiftcursor Left
                    Lcd " "
                    Shiftcursor Left
                    Case 11: 'F2(space)
                    Shiftcursor Right
                    Case 12: 'F3
                    Home
                    Case 13: 'F4
                    Locate 1 , 16
                    Case 14: 'ENTER(NEXT LINE)
                    Home L
                    Case 15:
                    Cls 'set(clearscreen)
                    End Select
                    '------------------------
                    End If '-------------------------------}
                    Loop
                    End 'end program
                    Read_key:
                    Data 13 , 14 , 0 , 15 , 12 , 9 , 8 , 7 , 11 , 6 , 5 , 4 , 10 , 3 , 2 , 1

                    دیدگاه


                      #11
                      پاسخ : کمک در مورد صفحه کلید 4*4

                      نوشته اصلی توسط mahdi210
                      سلام
                      دوستان من چطوری میتونم کاری بکنم که وقتی یکی از کلید های کی برد فشار داده شد فقط مثل کلید های موبایل
                      فقط همون یه بار فعال باشه وفقط یه عدد وارد بشه نه مثل کی برد کامپیوتر که وقتی انگشتتو میزاری روی یه کلید همینطور تا برنداری تایپ میشه
                      لطفا راهنماییم کنید ممنون
                      ببین اگه بخوام ساده برات بگم میشه این : شما تو یه جایی از برنامت وارد یه حلقه میشی تا کیبوردو دائما چک کنی تو یه جاش برای فراخوانی کلید فشار داده شده نوشتی :
                      var=getkbd() حالا برای رفع این مشکل فلقط باید تو بسکام جلوی همین خط دو تا نقطه بزاری و یه دستور تاخیر به میزانی که خودت دوست داری مثلا : wait 1 رو تایپ میکنی. راه دیگه هم استفاده از دستورات مربوط به config کردن کیبورد در اول برنامه هست ولی فکر کنم این بهتره اگه خواستی بگو تا برات بزارمش...
                      mer30

                      دیدگاه


                        #12
                        پاسخ : کمک در مورد صفحه کلید 4*4

                        با سلام
                        دوست عزیز این متغیر bمسئولیتش چیه آخرش چکار میکنه نوشتی b=1حالا چیکار میکنه شرطی هم نزاشتی میشه توضیح بدین ممنون
                        معلوليت محدوديت نيست

                        آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

                        دیدگاه


                          #13
                          پاسخ : کمک در مورد صفحه کلید 4*4

                          آقا ببخشید من یک مدتی هست که با بسکام برنامه ننوشتم همیچی قاطی پاتی شده یکدونه a<16 جا افتاده
                          این هم برنامه اصلاح شده :

                          $regfile = "m16def.dat"
                          $crystal = 8000000
                          Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = _
                          Porta.3 , E = Porta.4 , Rs = Porta.5
                          Config Lcd = 16 * 2
                          Dim A As Byte
                          Dim B As Byte
                          Config Kbd = Portd , Debounce = 50 , Delay = 255
                          Cls
                          Home
                          Do
                          A = Getkbd()
                          If A = 16 Then B = 0
                          If A < 16 And B = 0then
                          A = Lookup(a , Read_key)
                          B = 1
                          Lcd A
                          End If
                          Loop
                          End 'end program
                          Read_key:
                          Data 13 , 14 , 0 , 15 , 12 , 9 , 8 , 7 , 11 , 6 , 5 , 4 , 10 , 3 , 2 , 1

                          همین الان تستش کردم جواب داد
                          خوب و اما چه اتفاقی میوفته : از اونجا که تابع getkbd() در زمانی که هیچ کلیدی فشار داده نمیشه مقدار 16 رو برمیگردونه حالا ما از همین استفاده می کنیم به این ترتیب که با شرط a=16 مقدار b رو برایر با 0 می کنیم و در خط بعدی با چک کردن شروط a<16 و b=0 میفهمیم که آیا اصلا کلیدی فشار داده شده و همینطور اگه فشار داده شده آیا فبل از اینکه فشار داده بشه آیا انگشت از روی کلید برداشته شده یا نه که در صورت صحیح بودن بساختار if اجرا و در صورت غلط بودن ساختار if اجرا نمیشه و این حالت تا زمانی که انگشت بر روی کلید هست ادامه خواهد داشت !
                          حالا اگه تا ابدالدهر هم که طرف انگشتش رو روی کلید نگه داره فقط یک عدد دیتکت و نمایش داده میشه !

                          دیدگاه


                            #14
                            کمک در مورد صفحه کلید 4*4

                            سلام اقا مهدی عزیز.
                            اگه می خوای با فشار دادن هر کدام از کلید ها تا برداشتن دستت از روی اون فقط یه عدد رو نشون بده یا یه کار رو انجام بده از این حلقه استفاده کن.
                            Stay_here:
                            Keyread = Getkbd()
                            If Keyread <> 16 Then Goto Stay_here
                            با تشکر.
                            چرا ناراحتی پاتریک!
                            + امروز ی بچه دیدم سرچهارراه گل میفروخت
                            - از دیدنش ناراحت شدی؟
                            + نه
                            پس چی ناراحتت کرده
                            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                            ------------------------------------------------------------------------------------------------------
                            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                            ------------------------------------------------------------------------------------------------------
                            محصولات

                            دیدگاه


                              #15
                              پاسخ : کمک در مورد صفحه کلید 4*4

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

                              آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

                              دیدگاه

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