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);
}
}
(https://i.imgyukle.com/2019/12/11/Rqu4bS.png)
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.
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 ?
printf(lcd_putc,"ADC=%04lu ",adc);
Alıntı yapılan: sadogan - 11 Aralık 2019, 11:23:05printf(lcd_putc,"ADC=%04lu ",adc);
tamamdır tşkler.