LCD 8*2 - problem z inicjalizacja?
Masz problem? Zapytaj na forum elektroda.pl
From: "Marcin Białas" <max6_at_nospam_friko4.onet.pl>
Subject: LCD 8*2 - problem z inicjalizacja?
Date: Sat, 12 Mar 2005 00:40:02 +0100
Witam szanownych grupowiczow. Mam Wyswietlacz LCD o oznaczeniu WC0802C. Nie
potrafie sobie poradzic z jego inicjalizacjia napisana w C (w oparciu o
inicjalizacje z EP) Caly czas swieci sie 8 znakow w gornej lini. Sa to
czarne kwadraciki. Myslalem ze to kontrasta, lecz niestety nie. Dlaczego
dolna linia nie daje znaku zycia? Ponizej zalaczam kod w C. Prosze pomozcie
poczatkujacemu.
Z gory dzieki
MB
P.s. Kolejna nocka nad wyswietlaczem. Na marginesie troszeczeke jest po
"chinsku " podlaczony wyswietlacz, wiec roznia sie znaki inicjalizujace,
typowo 3 i 2.
#include <reg52.h>
#define Port P0
//opis podlaczenia LCD
// P0.6 - d7 1 0
// P0.5 - d6 1 0
// P0.4 - d5 1 1
// P0.3 - d4 1 0
// P0.2 - E 0 1
// P0.1 - RW 0 1
// P0.0 - RS 0 1
sbit LcdEn = P0^2 ;
sbit LcdRs = P0^0 ;
sbit LcdRw = P0^1 ;
/*****************************************
void Delay (unsigned int k)
{
unsigned int i,j;
for (j=0;j<k;j++)
for (i=0;i<=592;i++);
}
/*****************************************
void WriteByteToLcd(char X)
{
unsigned char Bufor;
Bufor = X;
LcdEn = 1;
Bufor &= 0xF0; //starsza czesc
Bufor>>=1;
Port &= 0x07; //zerwoanie magistrali wyswietlacza
Port = Port | Bufor;
LcdEn = 0;
Delay(1);
LcdEn=1;
Bufor = X&0x0F; //mlodsza czesc
Bufor<<=3;
Port &= 0x07; //zerwoanie magistrali wyswietlacza
Port = Port | Bufor;
LcdEn=0;
Delay(1);
}
/*****************************************
void WriteToLcdCtrlRegister(char X)
{
LcdRs = LcdRw = 0; // ustawienie sygnalów sterujacych
WriteByteToLcd(X);
}
/*****************************************
void LcdInit (void)
{
char i;
LcdRs=0;
LcdRw=0;
for (i=0; i<3; i++)
{
LcdEn = 1;
Port &=0x07; //zerowanie magistrali danych wyswoetlacza
Port = Port | 0x30; //wpis na magistrale danych 2
LcdEn = 0;
Delay(5);
}
LcdEn = 1; // wpisanie wartosci 2 do rejestru kontrolnego
Port &=0x07; //zerowanie magistrali
Port &= 0x10; // tylko "górne" 4 bity
LcdEn = 0;
Delay(1);
WriteToLcdCtrlRegister(0x28); // interfejs 4 bity,znaki 5x7
WriteToLcdCtrlRegister(0x08); // wylaczenie LCD
WriteToLcdCtrlRegister(0x01); // kasowanie ekranu, powrót do pozycji home
WriteToLcdCtrlRegister(0x07); // przesuwanie kursora z inkrementacja
WriteToLcdCtrlRegister(0x0C); // zalaczenie wyswietlacza
}
void LcdClrScr(void)
{
WriteToLcdCtrlRegister(0x01);
}
void main ()
{
LcdInit;
LcdClrScr;
while(1);
}
From: "Marek Dzwonnik" <mdz_at_nospam_WIADOMO_PO_CO_TO.message.pl>
Subject: Re: LCD 8*2 - problem z inicjalizacja?
Date: Sat, 12 Mar 2005 01:02:05 +0100
Użytkownik "Marcin Białas" <max6_at_nospam_friko4.onet.pl> napisał w wiadomości
news:d0ta8l$4uc$1_at_nospam_news.onet.pl
Witam szanownych grupowiczow. Mam Wyswietlacz LCD o oznaczeniu
WC0802C. Nie potrafie sobie poradzic z jego inicjalizacjia napisana w
C (w oparciu o inicjalizacje z EP) Caly czas swieci sie 8 znakow w
gornej lini. Sa to czarne kwadraciki.
http://www.google.pl/groups?selm=3e56756e%40news.home.net.pl
http://www.google.pl/groups?selm=3cd5a92c%40news.home.net.pl
??
--
Marek Dzwonnik, GG: #2061027 - zwykle jako 'niewidoczny'
(Uwaga Gadu-Gadulcowicze: Nie odpowiadam na anonimy.)
From: J.F. <jfox_xnospamx_at_nospam_poczta.onet.pl>
Subject: Re: LCD 8*2 - problem z inicjalizacja?
Date: Sat, 12 Mar 2005 01:54:42 +0100
On Sat, 12 Mar 2005 00:40:02 +0100, Marcin Białas wrote:
Witam szanownych grupowiczow. Mam Wyswietlacz LCD o oznaczeniu WC0802C. Nie
potrafie sobie poradzic z jego inicjalizacjia napisana w C (w oparciu o
inicjalizacje z EP) Caly czas swieci sie 8 znakow w gornej lini.
Mnie sie jakos glupio wydaje ze najpierw powinienes ustawic
odpowiedni stan liniach danych, RS, RW, a dopiero potem zrobic maly
impuls na Enable ..
J.