اطلاعیه

Collapse
No announcement yet.

نمایش مینیمم و ماکسیمم دما

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

    نمایش مینیمم و ماکسیمم دما

    سلام

    من یه برنامه ای نوشتم که مقدار ماکسیمم دما رو در سطر دوم lcd نمایش میده و قسمتی از برنامه که این کار رو انجام میده اینه (البته این فقط قسمتی از برنامه است!!) :

    C_max As String * 2

    Locate 2 , 1
    Lcd "Temp_max"
    If C > C_max Then
    C_max = C
    Locate 2 , 11
    Lcd C_max
    End If
    Waitms 1


    که در اینجا c مقدار دمای اصلیه که در سطر اول نشون میده و بخوبی کار میکنه


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

    لطفا بگین چه تغییراتی باید در برنامه بدم هر چه تلاش کردم نتونستم

    #2
    پاسخ : نمایش مینیمم و ماکسیمم دما

    نوشته اصلی توسط سون سگمنت
    سلام

    من یه برنامه ای نوشتم که مقدار ماکسیمم دما رو در سطر دوم lcd نمایش میده و قسمتی از برنامه که این کار رو انجام میده اینه (البته این فقط قسمتی از برنامه است!!) :

    C_max As String * 2

    Locate 2 , 1
    Lcd "Temp_max"
    If C > C_max Then
    C_max = C
    Locate 2 , 11
    Lcd C_max
    End If
    Waitms 1


    که در اینجا c مقدار دمای اصلیه که در سطر اول نشون میده و بخوبی کار میکنه


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

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

    دیدگاه


      #3
      پاسخ : نمایش مینیمم و ماکسیمم دما

      سلام
      من چون نمی دونستم متغییر c از چه جنسی هست مقدار min رو از نوع single گرفتم

      کد:
      C_max As String * 2
      dim minc as single
      
      Locate 2 , 1
      Lcd "Temp_max"
      If C > C_max Then
      C_max = C
      Locate 2 , 11
      Lcd C_max
      End If
      if c<minc then
      minc=c
      end if
      lcd " ";minc
      Waitms 1
      هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

      دیدگاه


        #4
        پاسخ : نمایش مینیمم و ماکسیمم دما

        سلام

        دست گلتون درد نکنه

        متغیر c:

        Dim C As String * 13

        دیدگاه


          #5
          پاسخ : نمایش مینیمم و ماکسیمم دما

          در ضمن الان فقط می خوام که مینیمم رو نشون بدم!!



          دیدگاه


            #6
            پاسخ : نمایش مینیمم و ماکسیمم دما

            نوشته اصلی توسط abolfazl_moradpour
            باز به همین صورت که نوشتین عمل کنید.یه متغییر جدید مثلا c_min تعریف کنید و مثل بالا هربار مقدار جدید رو با c_min مقایسه کنید اگر از c_min کوچکتر بود اون رو تو c_min بزارید.(بر عکس حالتی که دنبال ماکزیممید)
            من اینکار رو کردم ولی جواب نمیده

            اینم برنامش برای مینیمم:

            Locate 2 , 1
            Lcd "Temp_min"
            If C < C_min Then
            C_min = C
            Locate 2 , 11
            Lcd C_min
            End If


            اینم که دوست عزیز گفتن بازم جواب نداد:

            Locate 2 , 1
            Lcd "Temp_min"
            If C < C_min Then
            C_min = C
            end if
            Lcd " " ; C_min



            میخوام که فقط مینیمم نشون بده .........

            دیدگاه


              #7
              پاسخ : پاسخ : نمایش مینیمم و ماکسیمم دما

              نوشته اصلی توسط سون سگمنت
              من اینکار رو کردم ولی جواب نمیده

              اینم برنامش برای مینیمم:

              Locate 2 , 1
              Lcd "Temp_min"
              If C < C_min Then
              C_min = C
              Locate 2 , 11
              Lcd C_min
              End If


              اینم که دوست عزیز گفتن بازم جواب نداد:

              Locate 2 , 1
              Lcd "Temp_min"
              If C < C_min Then
              C_min = C
              end if
              Lcd " " ; C_min



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

              بهتره بود کل برنامه رو می زاشتین تا برنامه رو به دلخواهتون عوض کنم
              مثلا برنامه من بدین دلیل مشکل داره که نوع متغییرم از نوع سینگل هست و شما می خواین بدون تبدیل ریزینش داخل یه متغییر رشته و از جهتی هم متغییر c که من فرض می کردم عددی باشه انگار کارکتری هست بابت همین پیشنهادم اینه که عدد قبل از تبدیل به رشته ابتدا با شرط ها مقایسه بشه و سپس به کاربر نشون داده بشه اونم به چند دلیل
              1-متغییر رشته ای رو نمی شه از لحاظ کوچیکی و بزرگی اعدادش در شرط قرار داد چون مقدار عددی کارکترها با هم مقایسه می شن یا مقدار عددی کل عدد عبارت
              2-متغییر رشته رو نمی شه بدون تبدیل ریخت توی یه متغییر عدی و بلعکس

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

              منتظر پاسختون خواهم بود
              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

              دیدگاه


                #8
                پاسخ : نمایش مینیمم و ماکسیمم دما

                سلام
                قربان محبتتون :smile:

                پس حالا که اینطوره من هم برنامه اصلی رو میذارم و هم میرم سر اصل خواسته ام ...


                این برنامه گیرنده دما هستش که دما رو بخوبی روی سطر اول lcd نشون میده

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

                بهمین خاطر اول از بیشترین دما شروع کردم (بدون کلید و ...) که بخوبی نشون داد

                بعدش میخواستم که کمترین دما رو هم امتحان کنم و بعدش دو تا (شاید هم یدونه) کلید اضافه کنم و برنامه رو تغییر بدم
                یعنی با کلید تعیین کنم که کمترین دما رو نشون بده یا بیشترین دما رو


                اصل برنامه بدون مینیمم و ماکسیمم و کلید اینه:

                $regfile = "m8def.dat"
                $crystal = 1000000
                $baud = 9600
                Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.0 , Rs = Portb.5
                Cursor Off : Config Lcd = 16 * 2 : Cls

                '============================================ ===================================
                Dim C As String * 13 , Temp As Single
                Cursor Off
                '=============
                Deflcdchar 0 , 32 , 4 , 10 , 4 , 32 , 32 , 32 , 32

                Cls
                Temp:
                Input C
                Waitms 10
                Temp = Val(c)
                Waitms 5
                Locate 1 , 1 : Lcd "Temp: " ; Temp : Lcd Chr(0) ; "C "
                Goto Temp



                حالا شما ببینید طبق نیازم باید چیکار کنم؟؟؟؟؟؟

                دیدگاه


                  #9
                  پاسخ : نمایش مینیمم و ماکسیمم دما

                  سلام
                  یکی از غلطهای واضح برنامتون تعریف یک متغییر و همچنین یه لوپ به یک نام هست
                  شکل صحیح برنامه رو تست کنین


                  کد:
                  $regfile = "m8def.dat"
                  $crystal = 1000000
                  $baud = 9600
                  Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.0 , Rs = Portb.5
                  Cursor Off : Config Lcd = 16 * 2 : Cls
                  
                  '===============================================================================
                  Dim C As String * 13
                  Dim Temp As Single
                  Dim Cmax As Single
                  Dim Cmin As Single
                  Cursor Off
                  '=============
                  Deflcdchar 0 , 32 , 4 , 10 , 4 , 32 , 32 , 32 , 32
                  
                  
                  
                  Do
                  
                  Input C
                  Home
                  Cls
                  Waitms 10
                  Temp = Val(c)
                  If Temp > Cmax Then Cmax = Temp
                  If Temp < Cmin Then Cmin = Temp
                  
                  Locate 1 , 1 : Lcd "MAX: " ; Cmax : Lcd Chr(0) ; "C "
                  waitms 10
                  Locate 2 , 1 : Lcd "Min: " ; Cmin : Lcd Chr(0) ; "C "
                  waitms 10
                  Loop
                  
                  End
                  نکات مد نظر داشته باشین
                  1-تا وقتی که داده ای از پورت سریال دریافت نشه چیزی بار اول روی lcd نمی بینین اینم به علت صب کردن میکرو روی خط input تا دریافت کارکتری هست
                  2-اگر دادتون رو صفر روی lcd نشون داد سعی کنین ابتدا داخل برنامه داده هاتون رو در ماکزیمم مقدار اعشار ضرب کنین(مثلا اگر دقت اعشاروت دو رقم بعد از اعشار هست عدد رو ابتدا در 100 ضرب کنین و قبل از چاپ رو ال سی cmin و cmax رو تقسم بر 100 کنین(اگر مثلا عدد 132159.555 بود چون بعد از اعشار سه رقم هست پس دادهاتون رو در 1000 ضرب می کنین و در انتها در میکرو تقسیم بر 1000 کنین) و سپس ارسال و در میکرو هم تمامی متغییر temp رو به integer تبدیل کنین
                  هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                  دیدگاه


                    #10
                    پاسخ : نمایش مینیمم و ماکسیمم دما

                    شما خیلی شرمندم کردین

                    الان امتحانش کردم که ماکس رو نشون میده و مین رو صفر (همون طور که گفتین)

                    اما یه لرزشی داره (مثل زمانی که فیوزبیت ها تنظیم نشده باشه!!)


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

                    ببینین من می خوام که دمای محیط (منظورم دمای زنده هستش :mrgreen مستقیم روی سطر اول نشون داده بشه


                    اما در سطر دوم می خوام که دمای ماکس یا مین رو که توسط یه کلید تعیین میکنم که کدومشو می خوام نشون بده

                    یعنی اینکه در برنامه اولا یه کلید تعریف بشه (البته نمیدونم شاید دوتا لازم باشه) که دو تا حالت داشته باشه

                    مثلا اگه یک شد همیشه ماکس رو در سطر دوم نشون بده و اگه صفر شد مین رو (البته به نظرم دو تا کلید می خواد و یا یه کلید دو حالته

                    منظورم از ماکسیمم و مینیمم هم اینه:

                    مثلا در تابستان کلید ماکسیمم رو فعال میکنم که در طی شبانه روز (تا وقتی که ریستش نکردم) بیشترین دمایی رو که روی سطر اول نشون داده در روی سطر دوم ثبت کنه و ثابت نشون بده (تا وقتی که دوباره ریستش کنم و یا اینکه دما از اون هم بالا تر بره و تغییر کنه)


                    یا برعکسش در زمستون هم کمترین دمای شبانه روز رو ثبت کنه


                    ببخشید که وقتتون رو می گیرم

                    دیدگاه


                      #11
                      پاسخ : نمایش مینیمم و ماکسیمم دما

                      دوست عزیز کجا رفتی پس :angry: :angry: :angry:

                      دیدگاه

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