اطلاعیه

Collapse
No announcement yet.

ال سی دی کاراکتری

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

    ال سی دی کاراکتری

    عرض سلام و ادب و ارزوی قبولی عبادات.
    میخواستم بدونم چطوری میشه همزمان روی ال سی دی هم متغییر float و هم int رو نشون داد؟ چون هرکار کردم فقط میشه یکی از اینا رو نشون داد
    لطفا کمک کنین
    ممنون.

    #2
    پاسخ : ال سی دی کاراکتری

    نوشته اصلی توسط donnarumma نمایش پست ها
    عرض سلام و ادب و ارزوی قبولی عبادات.
    میخواستم بدونم چطوری میشه همزمان روی ال سی دی هم متغییر float و هم int رو نشون داد؟ چون هرکار کردم فقط میشه یکی از اینا رو نشون داد
    لطفا کمک کنین
    ممنون.
    سلام .
    لطفا کدتون رو اینجا قرار بدین تا بتونیم راهنماییتون کنیم

    دیدگاه


      #3
      پاسخ : ال سی دی کاراکتری

      نوشته اصلی توسط peypy نمایش پست ها
      سلام .
      لطفا کدتون رو اینجا قرار بدین تا بتونیم راهنماییتون کنیم

      #include <mega32.h>
      #include <delay.h>
      #include <stdio.h>
      #include <alcd.h>
      #include <shtxx.h>


      eeprom unsigned int second=0,minute=0,hour=0,day=0;
      eeprom unsigned int i,j,k;


      interrupt [TIM1_OVF] void timer1_ovf_isr(void)
      {
      TCNT1H=0x85EE >> 8;
      TCNT1L=0x85EE & 0xff;
      if(second>=59){
      second=0;
      if(minute>=59){
      minute=0;
      if(hour>=23){
      hour=0;
      if(day>=46)
      day=0;
      else
      day++;
      }
      else
      hour++;
      }
      else
      minute++;
      }
      else
      second++;


      }


      void main(void)
      {
      float Temperature ;
      float Humidity ;
      char Buffer_LCD[16];
      char timer_lcd[32];
      lcd_init(16);
      DDRB.7=0;
      PORTB.7=1;
      DDRB.6=1;
      PORTB.6=0;

      // Timer/Counter 1 initialization
      // Clock source: System Clock
      // Clock value: 31.250 kHz
      // Mode: Normal top=0xFFFF
      // OC1A output: Disconnected
      // OC1B output: Disconnected
      // Noise Canceler: Off
      // Input Capture on Falling Edge
      // Timer Period: 1 s
      // Timer1 Overflow Interrupt: On
      // Input Capture Interrupt: Off
      // Compare A Match Interrupt: Off
      // Compare B Match Interrupt: Off
      TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
      TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (0<<CS11) | (0<<CS10);
      TCNT1H=0x85;
      TCNT1L=0xEE;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;
      // Timer(s)/Counter(s) Interrupt(s) initialization
      TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);






      while (1)
      {
      lcd_clear();
      sprintf(timer_lcd,"%d %d:%d:%d ",day,hour,minute,second);
      lcd_puts(timer_lcd);
      delay_ms(2000);
      lcd_clear();
      Humidity=read_sensor(0);
      Temperature=read_sensor(1);
      lcd_clear();
      sprintf(Buffer_LCD,"HUMIDITY =%3.1f%%",Humidity); lcd_gotoxy(0,0); lcd_puts(Buffer_LCD);
      sprintf(Buffer_LCD,"TEMP =%3.1fC",Temperature); lcd_gotoxy(0,1); lcd_puts(Buffer_LCD);
      delay_ms(1000);

      }
      }
      ممنونم

      دیدگاه


        #4
        پاسخ : ال سی دی کاراکتری

        دقیقا کدوم خط از کد مشکل شما هست؟

        دیدگاه


          #5
          پاسخ : ال سی دی کاراکتری

          نوشته اصلی توسط expl نمایش پست ها
          دقیقا کدوم خط از کد مشکل شما هست؟
          خط اول تا چهارم بعد از(1) while

          دیدگاه


            #6
            پاسخ : ال سی دی کاراکتری

            نوشته اصلی توسط donnarumma نمایش پست ها
            خط اول تا چهارم بعد از(1) while


            اگه متغیر اصلی خودش از نوع float هست و شما می خواهید به صورت integer در نظر گرفته بشه، کافیه پشتش (int) بگذارید که اصلاحا بهش میگن type-casting. اگر هم ای نوع int هست و می خواهید به صورت float نشون داده بشه (که قطعا اعشارش صفر خواهد بود) کافیه پشت متغیر عبارت (float) بنویسید. مثلا:
            کد:
            [FONT=Yekan]float day,hour,minute,second;
            
            sprintf(timer_lcd, "%d %d %d %d, (int)day, (int)hour, (int)minute, (int)second); ===> print float as integer
            sprintf(timer_lcd, "%0.2f %0.2f %0.2f %0.2f, day, hour, minute, second); ==> print float as float
            
            [/FONT]
            [FONT=Yekan][/FONT]

            دیدگاه

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