LCD problemi

Başlatan secretagent, 11 Aralık 2019, 10:40:30

secretagent

Basit olarak analog kanaldan okunan degeri 2.16 lcd ekranda göstermek istiyorum. Adc nin ham değerini lcd bastırıyorum normalde 0 dan 1023e çıkınca problem yok ekranda gösteriyor. 1023 den 0 a doğru azalınca 1000 den sonra 999 yazması gerekirken 9993 gibi sondaki rakam kalıyor neden acaba ?
#include <main.h>
#define LCD_ENABLE_PIN PIN_B5
#define LCD_RS_PIN PIN_B4
#define LCD_RW_PIN PIN_C0
#define LCD_DATA4 PIN_B0
#define LCD_DATA5 PIN_B1
#define LCD_DATA6 PIN_B2
#define LCD_DATA7 PIN_B3
#include <lcd.c>
unsigned int16 adc=0;
double volt;
void main()
{
  setup_adc_ports(ALL_ANALOG);
  setup_adc(ADC_CLOCK_DIV_32);
set_tris_b(0x00);
output_b(0x00);
lcd_init();
 set_adc_channel(0);
    delay_us(20);
  while(TRUE)
  {
  
    adc=read_adc();
    volt=(float)adc*0.004887585533;
    printf(lcd_putc,"ADC=%lu",adc);
    lcd_gotoxy(1,2);
    printf(lcd_putc,"VOLT=%.2f",volt);
    delay_ms(250);
    
  }

}

eem7490

Programında sorun yok, veriyi basarken tüm satıra veri bas sorun çözülür. Son segmentte kalan 3 değerinin yerine bişey yazılmadığı için öyle oluyor.

secretagent

Alıntı yapılan: eem7490 - 11 Aralık 2019, 11:02:58Programında sorun yok, veriyi basarken tüm satıra veri bas sorun çözülür. Son segmentte kalan 3 değerinin yerine bişey yazılmadığı için öyle oluyor.
evet ondan dolayı oluyor nasıl önüne geçebilirim ?

sadogan

printf(lcd_putc,"ADC=%04lu ",adc);

secretagent