Witajcie na potrzeby forum.atnel.pl napisałem malutką funkcję do istniejących bibliotek LCD HD44780 z Niebieskiej Książki wydawnictwa Atnel.
Na uwagę zasługuje fragment funkcji dzięki któremu nie musimy używać czyszczenia całego wyświetlacza
Do bibliotek lcd44780 z BB:
dodajemy do pliku .h deklarację funkcji:
1 2 |
void lcd_int_long(uint32_t val); void lcd_offset_r_zmienna(uint8_t y, uint8_t offset, uint8_t max_znakow, uint32_t cyfry); //ustawienie zmiennej do prawej strony |
do pliku .c biblioteki lcd44780 dodajemy funkcję:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
void lcd_int_long(uint32_t val) { char bufor[17]; lcd_str( ultoa(val, bufor, 10) ); } void lcd_offset_r_zmienna(uint8_t y, uint8_t offset, uint8_t max_znakow, uint32_t cyfry){ char tablica_cyfr[15]; char *wskaznik = ultoa(cyfry, tablica_cyfr, 10); uint8_t wynik = strlen(wskaznik); uint8_t do_prawej = LCD_COLS - wynik; do_prawej -= offset; uint8_t zajete_znaki = ( do_prawej - max_znakow ) + wynik; int8_t x; for(x = zajete_znaki; x<do_prawej; x++){ lcd_locate(y,x); lcd_str(" "); } lcd_locate(y,do_prawej); lcd_int_long(cyfry); } |
Natomiast w kodzie programu funkcję wywołujemy w ten sposób:
1 |
lcd_offset_r_zmienna(0, 3, 8, liczba); |
gdzie:
0 to pierwsza linia wyświetlacza – można zamienić na 1 czyli drugą linię wyświetlacza
3 to jest offset czyli ile miejsc pustych zostawiamy po prawej stronie
8 to jest maksymalna ilość znaków
liczba to jest zmienna uint32_t
a funkcja działa w taki sposób:
Funkcja rozwinęła się dzięki moim przemyśleniom z dnia dzisiejszego lecz zostałem uprzedzony przez kolegę jacekk232 z forum.atnel.pl :) , nie mniej zamysł przekazywania zmiennej do funkcji mieliśmy taki sam :)
Pozdrawiam i życzę miłego korzystania z funkcji we własnych projektach gdy tylko będzie ona potrzebna :)