GLCD Problem

Başlatan salih_arel, 23 Haziran 2012, 11:47:22

salih_arel

Merhaba arkadaşlar. I2C ile okuduğum sıcaklık bilgisiniz glcd ekranda yazdıramıyorum. yani lcd_text57 komutu sadece char değerleri yazabiliyor fakat benim okuduğum değerler int bunları nasıl yazdırıcam. Bir fikri olan varmı?? :'(

kodlarım ise şu şekilde

#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define FAST_GLCD    // Try commenting this out to see the differences
#include <HDM64GS12.c>
#include <graphics.c>
#define GLCD_WIDTH   128
#include <stdlib.h>
#include   <stdio.h>
#include <math.h>
#include <lcd.c>
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use I2C(master, SCL=PIN_C3, SDA=PIN_C4)

char data;
int ack;

char ctrl,f;
long int fahr,celc;
char out[7];

void main(){

glcd_init(on);
while (TRUE)
    {     
   printf("Okumayi Baslatmak icin Enter Basiniz \r\n\n");
   ctrl=getc();
   delay_ms(500);
      if(ctrl==13)
        {
       
        printf("Olcum Yapiliyor\r\n");
        i2c_start();
        ack = i2c_write(0x9a);
        ack = i2c_write(0x00);

        /* send start again */
        i2c_start();
        ack = i2c_write(0x9b);
        data = i2c_read(0);
        i2c_stop();

        // Convert the A/D value to fahrenheit
       
        celc = ((long)data);
        fahr = celc*9/5+32;
        //f=celc+'o';
       
        // burada takılıyorum işte**************************
        glcd_fillScreen (0);
        sprintf(out,"data= %f",(double)celc);
        glcd_rect(0,0, 127, 63, NO, ON);           // dis cerceve ciz
         glcd_rect(1,1, 126, 62, NO, ON);           // dis cerceve ciz
         glcd_text57(1,32, out, 2, ON);       //
         glcd_update();
       
        printf ("Temperature  Celciosu   : %ld\r\n",celc); 
        printf ("Temperature  Fahrenheit : %ld\r\n",fahr);   
        printf("\r\n");
        delay_ms(200);
        }
    }
}

metalstorm35

sprintf(lcd,"%d",karakter);
glcd_text57(26,25,lcd,2,ON);

burada karakter dediğim int değeri neyse içinde yüklü olan örneğin 30 sayısı var bunu %d ile int için lcd kalıbına yüklüyorsun sonra glcd_text57 kodu ile aynı şekilde ama içine attığın lcd kalıbını yazdır öyle dene bi unutma eğer int16 gibi yüksek ise karakter %d değil %ld olur yani long decimal :)