اطلاعیه

Collapse
No announcement yet.

نمایش متن روی lcd با دستور debounce

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

    نمایش متن روی lcd با دستور debounce

    سلام چطور میتونم چنتا حرف رو روی lcd با یه کلید با دستور debounce انجام بدم ؟در واقع یجور منو هستش که با زدن کلید یه کلمه نوشته بشه رو lcd بعد دوباره که کلید زدیم یه متن دیگه نوشته بشه.........یه کلید down یه کلید up .... :read:

    #2
    پاسخ : نمایش متن روی lcd با دستور debounce

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

    http://www.mediafire.com/view/mho5igg5bxgaoyb/meno.bas
    من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
    آلبرت اینشتین
    منبع: http://fa.wikiquote.org

    دیدگاه


      #3
      پاسخ : نمایش متن روی lcd با دستور debounce

      ببخشید من فراموش کردم میکرو و lcd رو در برنامه تعریف کنم خودتون یه چیزی تعریف کنید
      من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
      آلبرت اینشتین
      منبع: http://fa.wikiquote.org

      دیدگاه


        #4
        پاسخ : نمایش متن روی lcd با دستور debounce

        مرسی.چه تغییراتی باید بدم که متن نوشته شده تکی نمایش داده بشه بعد ک کلید زده شه باز متن دیگه؟


        $regfile = "m8def.dat"
        $crystal = 11059200
        $hwstack = 64
        $swstack = 64
        $framesize = 64

        'LCD
        Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1 , Db7 = _
        Pinc.0 , E = Pinc.4 , Rs = Pinc.5
        Config Lcd = 16 * 2

        Config Pind.6 = Input
        Config Pind.7 = Input
        Dim A As Byte
        Dim T As Byte
        Dim Y As Byte
        Dim U As Byte
        Dim I As Byte
        Dim O As Byte
        O = 5
        A = 1
        Config Debounce = 45
        Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32
        Deflcdchar 1 , 32 , 4 , 15 , 31 , 31 , 15 , 4 , 32
        ''''''''&# 039;'''''''&#03 9;'''''''' '''
        Cls : Cursor Off
        Gosub Show
        Main:
        Debounce Pind.6 , 1 , Ab
        Debounce Pinc.7 , 1 , Ac
        Goto Main

        ''''''''&# 039;'''''''&#03 9;'''''''' ''''
        Ab:
        If O > 2 Then
        If A <> 2 Then
        A = 2
        Elseif A = 2 Then
        Decr O
        End If
        Gosub Show
        End If
        Goto Main
        ''''''''&# 039;'''''''&#03 9;'''''''' ''''
        Ac:
        If O < 5 Then
        If A <> 1 Then
        A = 1
        Elseif A = 1 Then
        Incr O
        End If
        Gosub Show
        End If
        Goto Main
        End
        ''''''''&# 039;'''''''&#03 9;'''''''' ''''
        Show:
        T = O - 4
        Y = O - 3
        U = O - 2
        I = O - 1
        Cls
        Locate A , 15 : Lcd Chr(0)
        Locate A , 14 : Lcd Chr(1)
        Locate T , 1 : Lcd "aaaaaaaaaaaa"
        Locate Y , 1 : Lcd "bbbbbbbbbbbb"
        Locate U , 1 : Lcd "cccccccccccc"
        Locate I , 1 : Lcd "dddddddddddd"
        Locate O , 1 : Lcd "eeeeeeeeeeee"
        Return

        دیدگاه


          #5
          پاسخ : نمایش متن روی lcd با دستور debounce

          اینو با select case نوشتم البته در حالت اول هم میشه برنامه رو با select case نوشت
          http://www.mediafire.com/view/1pnhqcc291c0u8h/meno0.bas
          من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
          آلبرت اینشتین
          منبع: http://fa.wikiquote.org

          دیدگاه


            #6
            پاسخ : نمایش متن روی lcd با دستور debounce

            :read: سلام مرسی از جوابت یه مشکلی هست من میخواستم این دستوراتو با یه برنامه دیگه ادغامش کنم اما نشد چجور باید تغییر بدم؟ برنامه فرکانس متر رو میخواستم با اون برنامه که با debounce با هم یکیش کنم یعنی وقتی کلیدو بزنم اون متن نوشته شه بعد پاینش مد سیگنال نوشته شه ............. مثل شکل زیر:


            شکل برنامه فرکانس متر


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




            اینم شکل مثالی که من میخوام تغییرات ایجاد شه البته با فوتوشاپ انجام دادم .میخوام برنامه رو طوری تغییر بدم که مثل شکل زیر بشه خودم هرکاری کردم نشد مخواستم طوری بشه که برنامه اصلی روالش ثابت باشه فقط این متن بالاش بشه با یه کلید تغییرش داد!!!!!!!!!!!





            اینم کد برنامه فرکانس متر

            $regfile = "m8def.dat"
            $crystal = 11059200
            $hwstack = 64
            $swstack = 64
            $framesize = 64

            'LCD
            Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1 , Db7 = _
            Pinc.0 , E = Pinc.4 , Rs = Pinc.5
            Config Lcd = 16 * 2
            Cursor Off : Cls

            'Serial Port To PC
            Open "comb.5:9600,8,n,1,inverted" For Output As #1
            Print #1 , "serial output test"

            'I/O
            Config Pinb.0 = Input 'Key
            Set Portb.0 'Set PullUp Res

            'Timer
            Config Timer1 = Counter , Edge = Falling
            Config Timer0 = Timer , Prescale = 64
            Enable Interrupts
            Enable Timer0
            Enable Timer1
            On Ovf1 Pulse
            On Ovf0 Ov0

            'Variables
            Dim A As Long , I As Long , B As Byte , C As Single
            Waitms 500
            Start Timer0

            Do
            Loop
            End

            Ov0:
            Incr I
            If I = 675 Then

            Stop Timer0
            A = B * 65536
            A = A + Counter1
            Cls : Home
            If Pinb.0 = 0 Then
            Lcd "High: 1MHz-1GHz"
            Lowerline
            A = A * 12800
            C = A / 1000000
            Lcd "F= " ; Fusing(c , "#.&&&&&&&quot ; "MHz"
            Print #1 , "~"
            Print #1 , "F= " ; Fusing(c , "#.&&&&&&&quot ; "MHz"
            Else
            Lcd "Low: 1Hz-1MHz"
            Lowerline
            If A < 1000 Then
            Lcd "F= " ; A ; " Hz"
            Print #1 , "~"
            Print #1 , "F= " ; A ; "Hz"
            End If
            If A > 1000 Then
            C = A / 1000
            Lcd "F= " ; Fusing(c , "#.&&&&quot ; " KHz"
            Print #1 , "~"
            Print #1 , "F= " ; Fusing(c , "#.&&&&quot ; "KHz"
            End If
            End If
            Counter1 = 0 : B = 0 : I = 0
            Start Timer0
            End If
            Return

            Pulse:
            Incr B
            Counter1 = 0
            Return


            اینم کد debounce
            Dim O As Byte
            O = 5
            Config Debounce = 45
            Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32
            Deflcdchar 1 , 32 , 4 , 15 , 31 , 31 , 15 , 4 , 32
            ''''''''&# 039;'''''''&#03 9;'''''''' '''
            Cls : Cursor Off
            Gosub Show
            Main:
            Debounce Pinc.2 , 1 , Ab
            Debounce Pinc.3 , 1 , Ac
            Goto Main

            ''''''''&# 039;'''''''&#03 9;'''''''' ''''
            Ab:
            Incr O
            If O > 5 Then
            O = 5
            End If
            Gosub Show
            Goto Main
            ''''''''&# 039;'''''''&#03 9;'''''''' ''''
            Ac:
            Decr O
            If O < 1 Then
            O = 1
            End If
            Gosub Show
            Goto Main
            End
            ''''''''&# 039;'''''''&#03 9;'''''''' ''''
            Show:

            Cls
            Locate 1 , 15 : Lcd Chr(0)
            Locate 1 , 14 : Lcd Chr(1)
            Select Case O
            Case 5
            Locate 1 , 1 : Lcd "aaaaaaaaaaaa"
            Case 4
            Locate 1 , 1 : Lcd "bbbbbbbbbbbb"
            Case 3
            Locate 1 , 1 : Lcd "cccccccccccc"
            Case 2
            Locate 1 , 1 : Lcd "dddddddddddd"
            Case 1
            Locate 1 , 1 : Lcd "eeeeeeeeeeee"
            End Select
            Return

            ''''''''&# 039;'''''''&#03 9;'''''''' '''''

            :read:

            دیدگاه


              #7
              پاسخ : نمایش متن روی lcd با دستور debounce

              گزینه خط 2,1 که فرکانس موج ورودی به کانتر 1 هست وثابته و اما گزینه خط 1,2 که مربوط به محدوده فرکانسی هست ودو حالت بیشتر نداره یکی 1HZ-1Mhz و دیگری 1MHZ-1GHZ .

              خب این تغییر حالت به بیشتر از یک کلید (همانطوری که الان هست )

              نیاز نداره الان شما دقیقا می خواید چه گزینه هایی رو با دستور debounce جابجا کنید ؟
              من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
              آلبرت اینشتین
              منبع: http://fa.wikiquote.org

              دیدگاه


                #8
                پاسخ : نمایش متن روی lcd با

                مرسی silicon0 جان اره درسته من با اون برنامه در حالت اولیش کاری ندارم چون الان بایه کلید مد فرکانسیش مشخص میشه من میخوام مثل برنامه ای که گذاشتی درباره
                دستور debounce تو این برنامه جوری تغییر بدم که متنی با زدن کلید به جای اون 1hz..... نوشته بشه در حالی که مد فرکانسی که :f هستش پایین باشه مثل اون شکلی که بالا مثال زدم. :read: یعنی اینکه مثلا بخواییم چهار تا حرف جداگانه رو مثل a.b.c.d رو با زدن کلید به جای اون 1hz...... قرار بدیم طوری که اون f: تغییر نکنه.نمیدونم متوجه منظورم شدی یا ن

                دیدگاه


                  #9
                  پاسخ : نمایش متن روی lcd با دستور debounce

                  بفرمایید من کلیدهای debounce رو pinb.1 و pinb.2 تعریف کردم

                  http://www.mediafire.com/view/lxjh0ch6x1hdbth/frequency_meter-1.bas
                  من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
                  آلبرت اینشتین
                  منبع: http://fa.wikiquote.org

                  دیدگاه

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