Skocz do zawartości

Problem z LCD


Pomocna odpowiedź

Bardzo wam dziękuje. Wszystko jużdziała. Błędy które miałem to - nie dałem do r/w minusa i kondensatora 100nF przy zasilaniu lcd. A tak swoją drogą, to czy można spalić stabilizator (7805) odwrotnym podpięciem zasilania?

Link to post
Share on other sites
A tak swoją drogą, to czy można spalić stabilizator (7805) odwrotnym podpięciem zasilania?

Zależy jaki zasilanie i jak długo miałeś je podpięte, ale raczej się to nie zdarza. Za to LCD jest bardzo wrażliwy na odwrotne zasilanie (jak już podłączysz to masz praktycznie po LCD) i lepiej żeby nie zaliczył gleby. Ja uszkodziłem już niestety 3 LCD, w jednym działa tylko lewa połowa, w drugim tylko dolna linia a trzeci wyświetla krzaczory.

Link to post
Share on other sites

LCD dziala bo sprawdzałem. Podpiąłem odwrotnie 11V. Wydaje mi się, że po tym odwrotnym podłączeniu 7805 stabilizuje nie na 5V,tylko na jakieś niższe...

[ Dodano: 19 Sty 10 08:31 ]

Znalazłem drugi 7805 wiec wymieniłem i teraz działa 😉

Link to post
Share on other sites

Ja z LCD mam to samo, ale drugi 1 liniowy mi działa, więc wina podłączenia to nie jest, chyba że ma inne wyprowadzenia pinów. Może to być inne kodowanie. Długo nie moge go rozgryść.

Link to post
Share on other sites

Przeprasam, że dopiero teraz odpowiadam, ale nie wchodziłem na ten temat, a maila mi automatycznie nie wiem czemu przeniosło do kosza.

Zgodny raczej nie jest. zaprogramowałem procka, podłączyłem najpierw ten 1-liniowy i działa. Wkładam ten 2-l. i pokazuje jakieś chińskie znaczki, nawet nie litery. Wyświetlacz ma 3 napisy na płytce: BMX-01 E226252 ; CBC016002A29-00 ; ART016002E31-BIW-R-01 090723.

Link to post
Share on other sites

Dwie sprawy - posprawdzaj zgodność połączeń z konfiguracją LCD w sofcie i sprawdź, czy na pewno dobrze ustawiłeś taktowanie (fuse bity dla zewn. rezonatora itp).

Na 99% to jedna z tych dwóch rzeczy.

Nie doczytałem... Na pewno zmieniasz w konfiguracji ilość wierszy wyświetlacza?

Link to post
Share on other sites

Zapomniałem dodać, że ten 1 liniowy jest inny.Jego konfiguracja to 16*2 czy tam 2*16. On działa tak: Znaki od 1 do 8 to pierwsza linia pierwsze 8, a znaki wyśw. od 9 do 16 to druga linia tez pierwsze 8.Miejsce 8 to

Location 1,8

Miejsce 9 to

Location 2,1

a 16 to

Location 2,8

Apropo rezonatra to jest wewnętrzny 4mhz ustawione w fusebits

PS. dlatego tez przekładam je bez zmieniania programu

Link to post
Share on other sites

Witam,
Nie tworzę nowego tematu, tylko kontynuuję w tym.

Posiadam dwa wyświetlacze alfanumeryczne:

WC1602A0-SFYLYNC06 - 2 sztuki

http://www.sheikhyo.webpark.pl/WC1602A.pdf

sterownik KS0066 - "zgodny" z HD44780

oraz SSC2M16ULGY-03 - 1 sztukę

sterownik zgodny z HD44780

Wyświetlacze testowałem na płytce uniwersalnej, program w c radzia

http://radzio.dxp.pl/hd44780/

Sterowanie w trybie 4-bitowym bez odczytu flagi zajętości z dowolnym przypisaniem linii sterujących

Inicjalizacja dla sterownika HD44780:

http://www.sheikhyo.webpark.pl/hd44780init.pdf

program:


void _LCD_OutNibble(unsigned char nibbleToWrite)
{
if(nibbleToWrite & 0x01)
LCD_DB4_PORT |= LCD_DB4;
else
LCD_DB4_PORT  &= ~LCD_DB4;

if(nibbleToWrite & 0x02)
LCD_DB5_PORT |= LCD_DB5;
else
LCD_DB5_PORT  &= ~LCD_DB5;

if(nibbleToWrite & 0x04)
LCD_DB6_PORT |= LCD_DB6;
else
LCD_DB6_PORT  &= ~LCD_DB6;

if(nibbleToWrite & 0x08)
LCD_DB7_PORT |= LCD_DB7;
else
LCD_DB7_PORT  &= ~LCD_DB7;
}

void _LCD_Write(unsigned char dataToWrite)
{
LCD_E_PORT |= LCD_E;
_LCD_OutNibble(dataToWrite >> 4);
LCD_E_PORT &= ~LCD_E;
LCD_E_PORT |= LCD_E;
_LCD_OutNibble(dataToWrite);
LCD_E_PORT &= ~LCD_E;
_delay_us(50);
}

void LCD_Initalize(void)
{
unsigned char i;
LCD_DB4_DIR |= LCD_DB4; // Konfiguracja kierunku pracy wyprowadzeń
LCD_DB5_DIR |= LCD_DB5; //
LCD_DB6_DIR |= LCD_DB6; //
LCD_DB7_DIR |= LCD_DB7; //
LCD_E_DIR 	|= LCD_E;   //
LCD_RS_DIR 	|= LCD_RS;  //
_delay_ms(15); // oczekiwanie na ustalibizowanie się napiecia zasilajacego
LCD_RS_PORT &= ~LCD_RS; // wyzerowanie linii RS
LCD_E_PORT &= ~LCD_E;  // wyzerowanie linii E

for(i = 0; i < 3; i++) // trzykrotne powtórzenie bloku instrukcji
 {
 LCD_E_PORT |= LCD_E; //  E = 1
 _LCD_OutNibble(0x03); // tryb 8-bitowy
 LCD_E_PORT &= ~LCD_E; // E = 0
 _delay_ms(5); // czekaj 5ms
 }

LCD_E_PORT |= LCD_E; // E = 1
_LCD_OutNibble(0x02); // tryb 4-bitowy
LCD_E_PORT &= ~LCD_E; // E = 0

_delay_ms(1); // czekaj 1ms 
LCD_WriteCommand(0x28); // interfejs 4-bity, 2-linie, znak 5x7
LCD_WriteCommand(0x08); // wyłączenie wyswietlacza
LCD_WriteCommand(0x01); // czyszczenie zawartosći pamieci DDRAM
_delay_ms(2);
LCD_WriteCommand(0x06);// inkrementaja adresu i przesuwanie kursora
LCD_WriteCommand(0x0C); // włącz LCD, bez kursora i mrugania
}

To co jest w datasheecie dla sterownika HD44780 jest proste i oczywiste, pokrywa się z programem. I działa dla wyświetlacza SSC2M16ULGY-03. Nie działa natomiast dla obu wyświetlaczy WC1602A0-SFYLYNC06 - czarne kwadraciki w górnej linii. Sugerują one, że z wyświetlaczami jest wszystko ok, natomiast nie została przeprowadzona odpowiednio inicjalizacja.

I to jest właśnie problemem, że teoretycznie sterownik KS0066 jest zgodny z HD44780, zgadza się to odnośnie instrukcji typu FUNCTION SET itp... wszystko jest identycznie, tylko przy inicjalizacji są różnice - w tym czasowe. Fragment dokumentacji dla KS0066:

http://www.sheikhyo.webpark.pl/ks0066init.pdf

No i tutaj już nie jest wszystko tak oczywiste, próbowałem oczywiście jak na tym forum było to doradzane wydłużać znacznie czasy czekania, wysyłać instrukcje zgodnie z ks0066init.pdf na różne możliwe sposoby i nic. Dalej tylko czarne prostokąty.

Wyświetlacze przetestowałem również w BASCOMIE zgodnie z programem SABRE'a:

$regfile = "2313def.dat"
$crystal = 1000000


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Waitms 100
Initlcd
Cls

Lcd "test"
Do

Loop
End

Tutaj również działa on tylko dla wyświetlacza SSC2M16ULGY-03, natomiast nie działa dla teoretycznie zgodnego z HD44780 WC1602A0-SFYLYNC06 ze sterownikiem KS0066.

Na różnych forach szukałem rozwiązań tego problemu, sporo ludzi właśnie miało ten problem, natomiast nie udało mi się znaleźć niczego przydatnego.

I tu pytanie czy ktoś miał podobny problem i udało się rozwiązać, a jeśli nie to czy mógłbym prosić o pomoc poprawieniu tej inicjalizacji w c dla

http://www.sheikhyo.webpark.pl/ks0066init.pdf

, bo nie bardzo już po wielu próbach ogarniam, brak już sił 🙂

Z góry dziękuję za wszelką pomoc i pozdrawiam

Link to post
Share on other sites

Witam

Ciekawie się złożyło, ponieważ posiadam _identyczny_ wyświetlacz, kupiony jakiś czas temu w sklepie avt.pl (chodzi o ten WC1602A0-SFYLYNC06).

O dziwo, również miałem problemy z jego uruchomieniem. Także próbowałem wykorzystać kod napisany w C od radzio.dxp.pl, jednak nie działał. W końcu zauważyłem, że linie danych wyświetlacza mam podpięte do portu C mojej atmegi16. Nie byłoby nic w tym złego, gdyby nie fakt, że tam znajduje się niewyłączony JTAG 🙂 Po jego wyłączeniu za pomocą fusów, odpowiednim ustawieniu rejestrów

Mcucsr = Mcucsr Or &H80

oraz napisaniu najprostszego kodu w bascom, jakimś cudem udało mi sie zmusić go do wyświetlania.

Na zdjęciu mój nieukończony line follower, narazie zasilany z kabla 😉. Następnym krokiem będzie napisanie kodu w C (działającego 😉 )

Link to post
Share on other sites

heh... no moj tez zaczal dzialac 🙂 , wczesniej z tym wyswietlaczem walczylem

na zestawie startowym ZL11AVR, po inicjalizacju ktorego kwadraciki znikaly, natomiast nie pokazywaly sie zadne znaki. Co sie okazalo cos jest nie tak z zestawem - teoretycznie odpowiednie zworki przestawione. Potem na ZL przetestowalem ten dobry wyswietlacz i dzialo się to samo. No a przy testach na plytce uniwersalnej ten dobry wyświetlacz każdy PIN na kabelku wtykałem pod odpowiednie piny ... a co do tego z sterownikiem KS0066 to wtykając listwę i łączkami łącząc piny LCD z mikrokontrolerem zapomniałem zewrzeć do masy pinu R/W...

Także potwierdzam zgodność wyświetlaczy KS0066 ze sterownikiem HD44780 - jeśli coś nie działa to prawdopodobnie coś jest nie tak podłączone albo coś może być ze ścieżkami itp.

swierkdeck ten program radzia jest prosty i działa 🙂

pozdrawiam

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.