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?

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.

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 😉

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ść.

  • 1 miesiąc później...

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.

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?

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

  • 2 miesiące później...

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

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 😉 )

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...