Witam.
Bawię się tym LCD i stosuję bibliotekę z tej strony: http://hobbyelektronik.org/Elo/AVR/3510i/index.htm
Wywaliłem zbędne rzeczy i zacząłem korzystać z funkcji czyszczącej ekran. Ekran niby się czyści, po czym wyświetlam daną z ADC w kilku miejscach tą samą. Funkcje wyświetlenia są w while(1) jedna za drugą. Efektem powinny być te same wartości pod sobą koloru czarnego na białym tle. Jednak tak nie jest. Wartości im są wyżej górnej krawędzi LCD tym bardziej mrugają i nie wiem dlaczego. Wartość na samym dole w ogóle nie mruga. Nie mam pojęcia dlaczego tak się dzieje.
Tak wygląda wyświetlenie:
Czy to ma coś wspólnego z napięciem przetwornicy? Rozumiem, jakby mrugały tak samo wszystkie wartości jednakowo, przecież są wyświetlane zaraz po sobie w jednym obiegu pętli.
Funkcję LCD_Clear() trochę zmodyfikowałem dodając współrzędne początkowe, bo ich tam nie było:
Do tego ok 3 linijek od dołu nie ma tła białego, tylko różne piksele, tak jakby obraz nie czyścił się do końca, dlaczego?
Bawię się tym LCD i stosuję bibliotekę z tej strony: http://hobbyelektronik.org/Elo/AVR/3510i/index.htm
Wywaliłem zbędne rzeczy i zacząłem korzystać z funkcji czyszczącej ekran. Ekran niby się czyści, po czym wyświetlam daną z ADC w kilku miejscach tą samą. Funkcje wyświetlenia są w while(1) jedna za drugą. Efektem powinny być te same wartości pod sobą koloru czarnego na białym tle. Jednak tak nie jest. Wartości im są wyżej górnej krawędzi LCD tym bardziej mrugają i nie wiem dlaczego. Wartość na samym dole w ogóle nie mruga. Nie mam pojęcia dlaczego tak się dzieje.
Tak wygląda wyświetlenie:
while(1){
odczyt = ADCW; //odczyt ADC(10 bit w 16 bit)
TZad_buf = (int)odczyt/10; //zapis wartosci od 0-102;
ADCSRA |= _BV(ADSC);
LCD_SetColor(15, 15, 15);
LCD_Clear(); //wypelnienie ekranu
LCD_SetColor(0, 0, 0);
LCD_WriteInt(TZad_buf, 3, 10, 10);
LCD_WriteInt(TZad_buf, 3, 20, 10);
LCD_WriteInt(TZad_buf, 3, 30, 10);
LCD_WriteInt(TZad_buf, 3, 45, 10);
LCD_WriteInt(TZad_buf, 3, 55, 10);
LCD_WriteInt(TZad_buf, 10, 10, 10);
}Czy to ma coś wspólnego z napięciem przetwornicy? Rozumiem, jakby mrugały tak samo wszystkie wartości jednakowo, przecież są wyświetlane zaraz po sobie w jednym obiegu pętli.
Funkcję LCD_Clear() trochę zmodyfikowałem dodając współrzędne początkowe, bo ich tam nie było:
void LCD_Clear() {
uint16_t cnt;
//x-Koordinate setzen
LCD_Out(0x2A, 1);
LCD_Out(0, 0);
LCD_Out(103,0);
//y-Koordinate setzen
LCD_Out(0x2B, 1);
LCD_Out(0, 0);
LCD_Out(83,0);
LCD_Out(0x2C, 1);
for(cnt = 0; cnt < 3283; cnt++) { // wyslanie kolory w 3 bajtach na 2 pix.
LCD_Out(lcd_clr[0], 0);
LCD_Out(lcd_clr[1], 0);
LCD_Out(lcd_clr[2], 0);
}
}Do tego ok 3 linijek od dołu nie ma tła białego, tylko różne piksele, tak jakby obraz nie czyścił się do końca, dlaczego?