Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Uklad wykonawczy zl1mcs51 z AT89S8252 a LCD, POMOCY!!!!

adriankrzesniak
-
-
Posty: 9
Rejestracja: 30 sie 2005, o 17:29
Lokalizacja: Ostróda - koszalin

Uklad wykonawczy zl1mcs51 z AT89S8252 a LCD, POMOCY!!!!

Postautor: adriankrzesniak » 31 sie 2005, o 14:54

Czesc!!!!

Kupilem uklad wykonawczy btc.pl (zl1mcs51) tutaj jest schemat układu
http://www.btc.pl/pdf/zl1mcs51.pdf wsadziłem do niego proca AT89S8252
tak jak w schemacie powyżej i wyswietlacz z serii
WM-C2002M a konkretnie WM-C2002M-1YNNb (2x20).

Wykorzystuje prace LCD z 4-bitową szyną danych.Wyświetlacz podłaczam do portu P2 (tak jak na schemacie) tylko nie wiem gdzie mam sygnały RS - (wybór rejestu), R/W - read/write i E - sygnał zezwalający.


Sciągnąłem przekładowy program (poniżej)
Tylko ze moje RS i E znajduja się gdzie indziej i nie wiem gdzie???

Czy moglibyście przejrzeć schemat i zobaczyć gdzie mam te wyjscia i
co powinienem zmienić w programie by LCD zaczął działać ??
Zobacz czy wejscia D4,D5,D6,D7 mogą być tak u mnie zdefiniowane??
Pamiętaj ze to wyswietlacz (2x20)?

#include <ATMEL/REG8252.H>
#define PORT P2
sbit RS = PORT^2;
sbit E = PORT^3;
sbit D4 = PORT^4;
sbit D5 = PORT^5;
sbit D6 = PORT^6;
sbit D7 = PORT^7;


void Delay(char k)
{
char x,y;
while(k)
{
k--;
for (x = 248; x > 0 ; x--);
for (y = 248; y > 0 ; y--);
}
}
void WriteToLcd(char X)
{
E = 1;
PORT |= 0xF0;
PORT &= (X | 0x0F);
E = 0;
E = 1;
X <<= 4;
PORT |= 0xF0;
PORT &= (X | 0x0F);
E = 0;
Delay(1);
}
void WriteCommand(char X)
{
RS = 0;
WriteToLcd(X);
}
void WriteChar(char X)
{
RS = 1;
WriteToLcd(X);
}
void WriteText(char *S)
{
while(*S)
{
WriteChar(*S);
S++;
}
}
void DefineCharacters(char *znaki)
{
WriteCommand(0x40);
WriteText(znaki);
WriteCommand(0x80);
}

void LcdInit(void)
{
char i;
Delay(15);
PORT = 0x0F;
for (i = 0; i<3; i++)
{
E = 1;
PORT &= 0x3F;
E = 0;
Delay(5);
}
E = 1;
PORT &= 0x2F;
E = 0;
Delay(1);
WriteCommand(0x28);
WriteCommand(0x08);
WriteCommand(0x01);
WriteCommand(0x06);
WriteCommand(0x0C);
}
void main(void)
{
LcdInit();
WriteText("ABCDEFGHIJKLMNO");
while(1);
}

Za okazana pomoc dziękuje i pozdrawiam wszystkich.

Mam nadzieje ze program wreszcie mi zadziala !!!!http://www.btc.pl/pdf/zl1mcs51.pdf

a_antoniak
-
-
Posty: 645
Rejestracja: 13 sty 2005, o 18:38
Lokalizacja: Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 31 sie 2005, o 15:58

LCD:

1-GND
2-VCC
3-Vo
4-RS
5-R/W
6-E
7-D0
8-D1
9-D2
10-D3
11-D4
12-D5
13-D6
14-D7

Spóż na schemat i zobacz do czego są podłączone a potem zmień przypisania "sbit ...".

Awatar użytkownika
ACeK
-
-
Posty: 1520
Rejestracja: 30 mar 2003, o 19:35
Lokalizacja: Kielce

Postautor: ACeK » 31 sie 2005, o 17:16

:) na schemacie Twoj wyswietlacz jest podlaczony w trybie 8bit (co nie przeszkadza by pracowal jako 4bit) gdzie port P2 obsluguje bity danych a P3 bity sterujace. Na plytce nie ma zwor wiec musisz zmienic sygnaly sterujace w programie z P2 na P3 z rozpiska taka jaka podal a_antoniak :wink:
:D

Wróć do „8051”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 36 gości