اطلاعیه

Collapse
No announcement yet.

چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟

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

    چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟

    با سلام :
    میدونم که سوال بچه گانه ای است اما چه کنم , نمی دونم دیگه :-/ #:Sمی خواستم ببینم چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم ؟؟همین. #:S :-/
    راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
    No Risk, No Reward

    #2
    پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

    امید جان دلبندم
    با ابروی امید ها بازی نکن
    سرچ کن حد اقل

    do
    a=getkbf()
    cls
    lcd a
    waitms 500
    loop
    علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

    دیدگاه


      #3
      پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

      امید جان عزیز این قدرها هم بوق نیستم (شایدم باشم :mrgreen:نمیدونم)
      منظور من اینه که بیام یک عدد مثلا" 0.002557 رو با کیپد وارد کنم که بعد بتونم ازش استفاده کنم؟؟
      راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
      No Risk, No Reward

      دیدگاه


        #4
        پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

        امید دلبندم خوب بگو عدد اعشاری
        این که شد عذر بدتر از گناه قربونت برم :mrgreen:

        ببین باید یه برنامه بنویسی که اگر طرف . رو زد از اون به بعد عددی رو که از کیبورد میگیره یه جای اینکه *10 کنه و با عدد قبلی جمع کنه /10 کنه و یه جا نگهش داره و اخر کار عدد اعشاری به دست اومده رو با عدد صحیح که قبل از . گرفتی جمع کنی
        علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

        دیدگاه


          #5
          پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

          :mrgreen: :mrgreen: :mrgreenkay مثل اینکه بوقم ها ولی خبر نداشتیم (ولی باید شروع کرد, بنده علاقه شدید دارم امیدوارم که استعدادمم خودشو کم کم نشون بده),
          ممنون امید جان که راهنماییم کردی,امیدوارم که روزی تمام امیدهایی رو که میشناسم و نمیشناسم رو روسفید کنم
          راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
          No Risk, No Reward

          دیدگاه


            #6
            پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

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

            دیدگاه


              #7
              پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

              سلام
              دوست من اینم برنامه ی شما
              این برنامه رو توی محیط سیمولوشن بسکام نگاه کنید چون صفحه کلید توی پروتوئوس بعضی مواقع کار نمی کنه یا که توی عمل ببینید
              یک نوع ماشین حساب معمولیه
              امید است که بدردتون بخوره
              اینم برنامش :NO:
              $sim
              $regfile = "m32def.dat"
              $crystal = 1000000
              Config Kbd = Portb
              Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , _
              Db7 = Portd.5 , Rs = Portd.0 , E = Portd.1
              Config Lcd = 16 * 2
              Dim A1 As Byte , Adad1 As Byte
              Dim Z As Long
              Dim A2 As Byte , Adad2 As Byte
              Dim T As Long
              Dim Zt As Single
              Lb:
              Z = 0
              T = 0
              Zt = 0
              L0:
              Do
              A1 = Getkbd()
              If A1 > 15 Then Goto L0
              Adad1 = Lookup(a1 , Key)
              Select Case Adad1
              Case Is = 10 : Goto Zarb
              Case Is = 11 : Goto Taghsim
              Case Is = 12 : Goto Jama
              Case Is = 15 : Goto Menha
              Case Is = 14 : Goto L0
              Case Is = 13 : Goto L0
              End Select
              Z = Z * 10
              Z = Z + Adad1
              If Z > 9999 Then
              Z = Z - Adad1
              Z = Z / 10
              End If
              Cls
              Lcd Z
              Loop
              Zarb:
              Lcd " * "
              Zarb1:
              Do
              A2 = Getkbd()
              If A2 > 15 Then Goto Zarb1
              Adad2 = Lookup(a2 , Key)
              Select Case Adad2
              Case 10 To 12 : Goto Zarb1
              Case 14 To 15 : Goto Zarb1
              Case Is = 13 : Gosub L20
              End Select
              T = T * 10
              T = T + Adad2
              If T > 9999 Then
              T = T - Adad2
              T = T / 10
              End If
              Cls
              Lcd Z
              Lcd " * "
              Lcd T
              Zt = Z * T
              Loop
              Taghsim:
              Lcd " / "
              Taghsim1:
              Do
              A2 = Getkbd()
              If A2 > 15 Then Goto Taghsim1
              Adad2 = Lookup(a2 , Key)
              Select Case Adad2
              Case 10 To 12 : Goto Taghsim1
              Case 14 To 15 : Goto Taghsim1
              Case Is = 13 : Gosub L20
              End Select
              T = T * 10
              T = T + Adad2
              If T > 9999 Then
              T = T - Adad2
              T = T / 10
              End If
              Cls
              Lcd Z
              Lcd " / "
              Lcd T
              Zt = Z / T
              Loop
              Jama:
              Lcd " + "
              Jama1:
              Do
              A2 = Getkbd()
              If A2 > 15 Then Goto Jama1
              Adad2 = Lookup(a2 , Key)
              Select Case Adad2
              Case 10 To 12 : Goto Jama1
              Case 14 To 15 : Goto Jama1
              Case Is = 13 : Gosub L20
              End Select
              T = T * 10
              T = T + Adad2
              If T > 9999 Then
              T = T - Adad2
              T = T / 10
              End If
              Cls
              Lcd Z
              Lcd " + "
              Lcd T
              Zt = T + Z
              Loop
              Menha:
              Lcd " - "
              Menha1:
              Do
              A2 = Getkbd()
              If A2 > 15 Then Goto Menha1
              Adad2 = Lookup(a2 , Key)
              Select Case Adad2
              Case 10 To 12 : Goto Menha1
              Case 14 To 15 : Goto Menha1
              Case Is = 13 : Gosub L20
              End Select
              T = T * 10
              T = T + Adad2
              If T > 9999 Then
              T = T - Adad2
              T = T / 10
              End If
              Cls
              Lcd Z
              Lcd " - "
              Lcd T
              Zt = Z - T
              Loop
              L20:
              Lcd " ="
              Locate 2 , 1
              Lcd Zt
              Goto Lb
              End
              Key:
              Data 1 , 2 , 3 , 10 , 4 , 5 , 6 , 11 , 7 , 8 , 9 , 12 , 13 , 0 , 14 , 15
              اگر خواستی توی محیط پروتوئوس یا توی عمل ببینی این دستور اول رو ( $sim ) حذفش کن ولی به نظر من محیط پروتوئوسو بیخیال شو
              چون صفحه کلید فقط بعضی مواقع توی پرتوئوس کار میکنه

              اما در مورد جدول لوکاپ به دستور قرمز نگاه کن این دستور بر طبق مقدار متغیر a2 میره به زیربرنامه key و عدد دلخواهو برمیداره و در متغیر adad2 میریزه
              مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

              دیدگاه


                #8
                پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

                سلا مجدد :
                امید جان من این دو برنامه رو نوشتم ولی نمی فهمم که چه جوری به هم ربطشون بدم در ضمن در برنامه اعشاری اگه بخوام مثلا" 0.00002 رو نمایش بدم نمیتونم(یعنی اول چند صفر رو بزارم بعد عدد رو) ولی مثلا" 0.123564 و ... رو میشه نوشت,امید جان چه کنم ؟؟؟ :angry: :angry: :angry: :angry: oo: oo:
                اگه ممکنه یک برنامه بنویس که کارم راه بیفته در عین حالم ایراد کارمم بگو.مرسی از اینکه توجه کردی.

                برنامه قسمت صحیح:
                $regfile = "m16def.dat"
                $crystal = 12000000

                Config Kbd = Portb , Debounce = 50

                '----------------
                Dim A As Byte
                Dim C As Single
                '----------------

                Cursor Off

                Q:

                A = Getkbd()
                If A > 15 Then Goto Q
                If C = 0 Then
                C = A
                Else
                C = C * 10
                C = C + A
                End If
                Locate 1 , 1
                Cls
                Lcd C
                Waitms 50
                Goto Q

                اینم برنامه مربوط به اعشاری:
                $regfile = "m16def.dat"
                $crystal = 8000000

                Config Kbd = Portb , Debounce = 50

                Dim A As Byte
                Dim A1 As Single
                Dim B As Single
                Dim C1 As Single
                Dim N As Byte
                N = 1
                B = 0

                Q2:
                A = Getkbd()
                If A > 15 Then Goto Q2
                A1 = A
                C1 = 10 ^ N
                A1 = A1 / C1
                B = B + A1
                Incr N
                Cls
                Lcd B
                Waitms 50
                Goto Q2
                راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
                No Risk, No Reward

                دیدگاه


                  #9
                  پاسخ : چطور می توان یک عدد رو با keypad بدیم و روی lcd ببینیم؟؟

                  با شبیه ساز خود بسکام تست کردم

                  به جای . از * استفاده شده است :mrgreen:
                  کد:
                  $regfile = "m16def.dat"
                  $crystal = 12000000
                  
                  Config Kbd = Portb , Debounce = 50
                  $sim
                  '----------------
                  Dim My_kbd As Byte , Count As Byte
                  Dim Total As Single , True As Long , Half As Single , Reserve As Single , Reserve2 As Single
                  '----------------
                  Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
                  
                  
                  Config Lcd = 20 * 4
                  Cursor Off
                  
                  Main:
                  Total = 0
                  True = 0
                  Half = 0
                  Count = 1
                  Do
                  Get_again:
                  My_kbd = Getkbd()
                  My_kbd = Lookup(my_kbd , My_data)
                  If My_kbd > 15 Then Goto Get_again
                  
                        'chek if * pressed go to ashaar
                  If My_kbd > 9 Then
                  If My_kbd = 12 Then Goto Ashaar
                  End If
                  
                  If True = 0 Then
                  True = My_kbd
                  Else
                  True = True * 10
                  True = True + My_kbd
                  End If
                  
                  Cls
                  Lcd "True" ; True
                  Lowerline
                  Lcd "kbd" ; My_kbd
                  Loop
                  
                  
                  Ashaar:
                  Cls
                  Lcd True ; ".00"
                  Do
                  Get_again2:
                  My_kbd = Getkbd()
                  My_kbd = Lookup(my_kbd , My_data)
                  If My_kbd > 15 Then Goto Get_again2
                  
                        'chek if * pressed go to ashaar
                  If My_kbd > 9 Then
                  If My_kbd = 12 Then
                  Cls
                  Home
                  Total = True + Half
                  Lcd "TOTAL IS " ; Total
                  Wait 5
                  End If
                  End If
                  
                  Reserve = My_kbd
                  Reserve2 = 10 ^ Count
                  Reserve = Reserve / Reserve2
                  Half = Half + Reserve
                  Incr Count
                  Cls
                  Home
                  Total = True + Half
                  Lcd "TOTAL IS " ; Total
                  Lowerline
                  'Lcd "half " ; Half
                  
                  Loop
                  
                  Goto Main
                  
                  
                  
                  'Cls
                  'Lcd B
                  'Waitms 50
                  My_data:
                  Data 1 , 2 , 3 , 10 , 4 , 5 , 6 , 11 , 7 , 8 , 9 , 13 , 12 , 0 , 14 , 15
                  علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                  دیدگاه


                    #10
                    پاسخ : چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟

                    این هم پزوتوس

                    10 ثانیه ظول میکشه تا پورت بی راه بیفته

                    دکمه سمت چپ پایین واسه . هست

                    فایل های پیوست شده
                    علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                    دیدگاه


                      #11
                      پاسخ : چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟

                      سلام:
                      :applause: :applause:مرسی امید جان الان میرم چک کنم امیدوارم به مشکلی نخورم ,lمرسی از توجه ای که میکنی, :applause: :read:
                      راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
                      No Risk, No Reward

                      دیدگاه


                        #12
                        پاسخ : چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟

                        باسلام مجدد:
                        امید جان دست درد نکه من تست کردم مشکلی نداشت,فقط یه مشکل هسته که نمی دونم در عمل این مشکل برطرف میشه یا نه اونم اینه که وقتی مثلا" می خوام بنویسم 0.0001 روی lcd در شبیه ساز پروتوس مینویسه 0.00019997 و یا وقتی مینویسم 0.0059 در Lcd پروتوس مینویسه 0.005899963 یا 45.003 رو مینویسه 45.002998351 و... حالا بنظر شما این مشکل در عمل حل میشه یا مشکل از جای دیگست .


                        در ضمن بعد از ریست کردن مغزم :mrgreen:این برنامه رو نوشتم مثل شما کامل نیست ولی همین مشکل رو داره oo: جریان چیه؟؟؟
                        یه خورده الکی طولانی شده چون هنوز ویرایش نشده :mrgreen:ولی کار میکنه (اون مشکلم داره ها)

                        کد:
                        $regfile = "m16def.dat"
                        $crystal = 8000000
                        '--------------------------------------
                        Config Kbd = Portd , Debounce = 50
                        '--------------------------------------
                        
                        Dim A As Byte
                        Dim B As Single
                        Dim C As Single
                        Dim D As Single
                        Dim E As Single
                        Dim F As Single
                        Dim G As Single
                        Dim H As Single
                        Dim I As Single
                        Dim J As Single
                        Dim K As Single
                        Dim M As Single
                        Dim N As Byte
                        Dim Y As Byte
                        
                        '--------------------------------------
                        B = 0
                        N = 2
                        Y = 1
                        F = 0
                        '--------------------------------------
                        One:
                        A = Getkbd()
                        A = Lookup(a , My_data)
                        If A = 12 Then Goto Two
                        If A > 9 Then Goto One
                        
                        If B = 0 Then
                        B = A
                        Else
                        B = B * 10
                        B = B + A
                        End If
                        Cls
                        Lcd B
                        Incr Y
                        Waitms 50
                        Goto One
                        
                        Two:
                        Locate 1 , Y
                        Lcd ". "
                        Waitms 50
                        Incr Y
                        Goto Three
                        
                        Three:
                        Do
                        A = Getkbd()
                        A = Lookup(a , My_data)
                        If A = 1 Then Goto Four
                        If A = 2 Then Goto Four
                        If A = 3 Then Goto Four
                        If A = 4 Then Goto Four
                        If A = 5 Then Goto Four
                        If A = 6 Then Goto Four
                        If A = 7 Then Goto Four
                        If A = 8 Then Goto Four
                        If A = 9 Then Goto Four
                        If A = 0 Then
                        Incr Y
                        C = 10 ^ N
                        D = 1 / C
                        E = B + D
                        Cls
                        Lcd E
                        'Locate 1 , Y
                        'Lcd "      "
                        Incr N
                        Waitms 50
                        End If
                        Goto Three
                        
                        Loop
                        
                        Four:
                        F = A
                        G = F * D
                        H = E + G
                        Cls
                        Lcd H
                        Waitms 50
                        Goto Five
                        
                        Five:
                        Do
                        A = Getkbd()
                        A = Lookup(a , My_data)
                        If A > 9 Then Goto Five
                        If A = 0 Then Goto Six
                        If A = 1 Then Goto Six
                        If A = 2 Then Goto Six
                        If A = 3 Then Goto Six
                        If A = 4 Then Goto Six
                        If A = 5 Then Goto Six
                        If A = 6 Then Goto Six
                        If A = 7 Then Goto Six
                        If A = 8 Then Goto Six
                        If A = 9 Then Goto Six
                        
                        Six:
                        M = A
                        I = 10 ^ N
                        J = M / I
                        K = H + J
                        Incr N
                        Cls
                        Lcd K
                        Waitms 50
                        M = 0
                        Loop
                        
                        
                        My_data:
                        Data 1 , 2 , 3 , 10 , 4 , 5 , 6 , 11 , 7 , 8 , 9 , 13 , 12 , 0 , 14 , 15

                        oo: :cry:فکر کنم در عمل حله,درسته؟؟
                        راههايي که به آينده ختم مي شوند رفتني نيستند، ساختني اند!
                        No Risk, No Reward

                        دیدگاه


                          #13
                          پاسخ : چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟

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

                          دیدگاه


                            #14
                            پاسخ : چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟


                            نوشته اصلی توسط omid soltani
                            باسلام مجدد:
                            امید جان دست درد نکه من تست کردم مشکلی نداشت,فقط یه مشکل هسته که نمی دونم در عمل این مشکل برطرف میشه یا نه اونم اینه که وقتی مثلا" می خوام بنویسم 0.0001 روی lcd در شبیه ساز پروتوس مینویسه 0.00019997 و یا وقتی مینویسم 0.0059 در Lcd پروتوس مینویسه 0.005899963 یا 45.003 رو مینویسه 45.002998351 و... حالا بنظر شما این مشکل در عمل حل میشه یا مشکل از جای دیگست .


                            در ضمن بعد از ریست کردن مغزم :mrgreen:این برنامه رو نوشتم مثل شما کامل نیست ولی همین مشکل رو داره oo: جریان چیه؟؟؟
                            یه خورده الکی طولانی شده چون هنوز ویرایش نشده :mrgreen:ولی کار میکنه (اون مشکلم داره ها)
                            متغیر های single 8 بیت رو برای اعشار اختصاص می دن
                            شما برای اون که خطا گرفته بشه باید از متغیر double استفاده کنی تا اعشار رو دقیق نشون بده
                            در ضمن توی پروتئوس هرچی نشون بده توی عمل هم اجرا میشه حتی از سیمولاتور بیسکام هم دقیق تره :mrgreen:





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

                            دیدگاه


                              #15
                              پاسخ : چطور می توان یک عدد اعشاری رو با keypad بدیم و روی lcd ببینیم مثل 0.0002و ..؟؟

                              نوشته اصلی توسط سعید باقرانی
                              در ضمن توی پروتئوس هرچی نشون بده توی عمل هم اجرا میشه حتی از سیمولاتور بیسکام هم دقیق تره :mrgreen:
                              دوست عزیز من بارها توی پروتوئوس جواب نگرفتم ولی توی عمل و سیمولوشن بسکام جواب گرفتم دوست عزیز نمیشه شما بگین که جواب گرفته اید کیپد و وصل کدوم پورت کرده اید توی پروتوئوس
                              سپاس
                              مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                              دیدگاه

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