Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 02:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 7 gru 2011, o 22:22 
Offline
Użytkownik

Dołączył(a): 07 gru 2011
Posty: 35
Pomógł: 0

Witam,

Wszystkie funkcje z tej biblioteki działają poprawnie za wyjątkiem funkcji lcd_defchar_P. Bibliotekę <avr\pgmspace> mam oczywiście załączoną.

Przykładowy znak zdefiniowany na początku programu to tablica tab1:

uint8_t tab1[] PROGMEM = {0,255,255,0,0,0,0,255}; /jakiś znak zdefiniowany na początku programu

Dalej w pętli głównej while(1) w funkcji lcd_defchar_P jako argumenty podaje pierwszy adres w pamięci CGRAM:

lcd_defchar_P(0x80,tab1);

następnie odczytuję w określonej lokalizacji:

lcd_locate(0,12);
lcd_str("0x80");

Niestety nic się nie wyświetla;( Co może być przyczyną?

Pozdrawiam
Krzysiek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2011, o 22:26 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

A zauważył kolega że w kodzie w cydzysłowach inaczej należy prezentować liczbę HEX ? ;)

lcd_str("\x80");

poza tym trzeba w pliku *.h zezwolić na korzystanie z tej funkcjonalności dając tam w opcji odpowiedniej wartość 1

proszę lepiej przyjrzeć się kodom źródłowym ale na płycie DVD - mam nadzieję, że tam kolega zaglądał ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2011, o 22:34 
Offline
Użytkownik

Dołączył(a): 07 gru 2011
Posty: 35
Pomógł: 0

Oczywiście zaglądałem.:) Przerobiłem całą bibliotekę - wcześniej korzystałem z biblioteki Joerga Wunscha.

Już wiem o co chodzi... Wyświetlam tab1 przez funkcję lcd_char();

Twoja biblioteka jest bardzo dobra.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2011, o 22:40 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

Ale mam nadzieję, że pobrałeś patch do LCD z naszego forum ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2011, o 15:33 
Offline
Użytkownik

Dołączył(a): 07 gru 2011
Posty: 35
Pomógł: 0

Taka mam nową bibliotekę.

Brakuje mi tylko jednej funkcji, która wyświetlałaby znak z pamięci CGRAM i później cyklicznie zmieniałaby jego definicję. Tak, żeby można było wyświetlać postać znaku, która na ekranie się ciągle zmienia.

Oto przykład takiej funkcji z zupełnie innej biblioteki:

void lcd_box(uint8_t y)
{
hd44780_outcmd(HD44780_CGADDR(0)); //Zaczynamy od znaku o kodzie 0
hd44780_wait_ready(40);
for(uint8_t c=0;c<y;c++) //Stwórz linie w włączonymi pikselami
{
hd44780_outdata(0xFF);
hd44780_wait_ready(40);
}
for(uint8_t c=y;c<8;c++) //Stwórz linie z wyłączonymi pikselami
{
hd44780_outdata(0x00);
hd44780_wait_ready(40);
}
}

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2011, o 16:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

Przecież można sobie przygotować tablicę zawierającą definicje kilku wersji znaku - np obracającego się śmigiełka, albo dyndającego dzwoneczka albo co tam tylko się chce, załadować te znaki do CGRAM a potem w pętli tylko kolejno i cyklicznie je wyświetlać. Inny sposób jeśli inne miejsca w cgram mają służyć do innych znaków, to można cyklicznie po prostu ładować za pomocą deflcdchar zawartość tego znaku i samo się będzie animowało.

Sorki ale ta funkcja tutaj pokazana to jakaś zgroza. Przecież napisanie sobie tego co opisałem wyżej może być dużo prostsze dzięki istniejącym już funkcjom bibliotecznym

Bo jak rozumiem chodzi o jakąś właśnie prostą animację na jednym znaku z CGRAM.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2015, o 08:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam!
Mam problem z wyświetlaniem znaku stopni Celsjusza w funkcji display_temp. Bibliteka LCD zaktualizowana.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Po kompilacji wyświetla się prawidłowy symbol (ale też nie za każdym razem), ale po wyłączeniu i włączeniu zasilania zamiast niego pojawia się biały prostokąt.
Co należy poprawić?

P.S. Problem związany był z definicją znaku i rozwiązałem go.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO