Mikro C lcd değişken yazdırma

Başlatan ahmetbudak, 01 Şubat 2015, 22:41:26

ahmetbudak

iyi akşamlar Mikro C de yazıp derlediğim aşağıdaki programda şöyle bir problem var  'a' değişkeninin değerinin basamak sayısı düştüğünde  mesela 'a' 100 iken  99'a düştüğünde Lcd de  990 olarak görünüyor yani önceki 100 değerinin birler basamağındaki 0 ekranda kalıyor. bu durumun önüne nesıl geçeriz.
cevaplarınız için şimdiden teşekkürler.
while(1){

    inttostr(a,b);
    ltrim(b);
    Lcd_Out(1,1,b);

}

MCansız

ltrim() fonksiyonunu neden kullandınız ?

basit olarak

int a=500;
char txt[10];

void main(){

 Lcd_Init();
                Lcd_Cmd(_LCD_CURSOR_OFF);
                Lcd_Cmd(_LCD_CLEAR);

while(1){
    inttostr(a,txt);
    Lcd_Out(1,1,txt);
    a--;
    
}

}


ahmetbudak

Alıntı yapılan: mk_29 - 01 Şubat 2015, 22:54:19
ltrim() fonksiyonunu neden kullandınız ?

basit olarak

int a=500;
char txt[10];

void main(){

 Lcd_Init();
                Lcd_Cmd(_LCD_CURSOR_OFF);
                Lcd_Cmd(_LCD_CLEAR);

while(1){
    inttostr(a,txt);
    Lcd_Out(1,1,txt);
    a--;
    
}

}



ltirm kullanılmadığına lcd 1 satırın 4. sütunundan yazmaya başlıyor.

tekosis

3. hane lcd nin hafızasında olduğundan siz yeni veri gönderdiğinizde eskiden kalma 3. hanedeki 0 ekranda asılı kalıyor. bunu engellemek için a kayıtçısının değeri 3 haneden 2 haneye düştüğünde lcd yi bir defa temizlemeniz yeterli olacaktır.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

MCansız

amacınız 4. sutundan yazdırmaksa

lcdout(1,4,txt);

şeklide yazdırın

ahmetbudak

#5
Alıntı yapılan: mk_29 - 01 Şubat 2015, 23:09:49
amacınız 4. sutundan yazdırmaksa

lcdout(1,4,txt);

şeklide yazdırın
1. satır 1.sütundan başlamıyor ki zaten.

mesaj birleştirme:: 02 Şubat 2015, 23:29:26

Alıntı yapılan: tekosis - 01 Şubat 2015, 23:08:24
3. hane lcd nin hafızasında olduğundan siz yeni veri gönderdiğinizde eskiden kalma 3. hanedeki 0 ekranda asılı kalıyor. bunu engellemek için a kayıtçısının değeri 3 haneden 2 haneye düştüğünde lcd yi bir defa temizlemeniz yeterli olacaktır.
mesela if(a<100) lcd_cmd(_lcd_clear);   gibi mi? bu durumda sonsuz döngü içinde 100 den küçük  a değerlerinde ekran titremez mi?

mesaj birleştirme:: 01 Şubat 2015, 23:42:23

şema ve kod dosyası aşağıdaki linkte
http://s3.dosya.tc/server31/iJNHAA/Yeniklas_r.rar.html
http://s3.dosya.tc/server31/iJNHAA/877_deneme.rar.html

mehmet

#6
Haneleri ayırıp bir diziye aktarın. Dizinin
her elamanını ayrı ayrı yazdırın.

Test örneği;
unsigned int sayi = 6789;
unsigned char hane[] = {0, 0, 0, 0};

hane[0] = sayi  % 10;
hane[1] = (sayi /10) % 10;
hane[2] = (sayi / 100) % 10;
hane[3] = (sayi / 1000);

if(hane[1] == 0) hane[0] = XXX;  //Burada XXX olan yere lcd yazdırma fonksiyonunuzda boş karakter çıkaran bir değer gireceksiniz.
if(hane[2] == 0) hane[0] = XXX; // boşluk karakterinin değeri olan 32 de olabilir ya da " " gibi bir değer de olabilir. Micro C' ye göre siz düzenlersiniz.
if(hane[3] == 0) hane[0] = XXX;

//hane[0] sıfır olunca nasıl bir değer görünmesini isterseniz de ona göre değişiklik yapabilirsiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr