LCD mit 18F4550 ansteuern - Code läuft nicht

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 26 11 2025  14:32:11      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Autor
LCD mit 18F4550 ansteuern - Code läuft nicht
Suche nach: lcd (4707)

    







BID = 444517

GoTo

Neu hier



Beiträge: 25
 

  


Hi,

ich habe ein Problem ein LCD mit einem 18F4550 anzusteuern. Ich arbeite erst seit kurzem mit den 18ern. Compilieren tue ich mit C18. Hier mal der fürs LCD relevante Code:



Code :


//Überprüfe LCDStatus
void waitForLCD(void)
{
//Steuerleitungen einstellen
LATE |= 0b00000010; //RW
LATE &= 0b11111011; //RS

//RD4..7 Inputs
LATD &= 0b00001111;
TRISD = 0xFF;

//Busyschleife
cBusy = 0x80;
do
{
LATE |= 0b00000001;
Delay1TCY();
cBusy = PORTD;
LATE &= 0b11111110;
Delay1TCY();
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;
}while((cBusy & 0b10000000) != 0x00);

//Leitungen zurücksetzen
LATE &= 0b11111001; //RW, RS
TRISD = 0x0F;
LATD &= 0b00001111;

return;
}

//Übertrage Steuerdaten an LCD
void sendCWToLCD(char cWord)
{
//Busy-Check
waitForLCD();

//Steuerleitungen einstellen
LATE &= 0b11111000;

//Übertragen der Bits 4..7
LATD &= 0b00001111;
LATD |= cWord & 0b11110000;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;

//Übertragen der Bits 0..3
LATD &= 0b00001111;
LATD |= (cWord & 0b00001111) << 4;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;
}

//Übertrage Daten an LCD
void sendDWToLCD(char cWord)
{
//Busy-Check
waitForLCD();

//Steuerleitungen einstellen
LATE &= 0b11111100; //RW
LATE |= 0b00000100; //RS

//Übertragen der Bits 4..7
LATD &= 0b00001111;
LATD |= cWord & 0b11110000;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;

//Übertragen der Bits 0..3
LATD &= 0b00001111;
LATD |= (cWord & 0b00001111) << 4;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;

LATE &= 0b11111011; //RS
}

//Initialisierung des LCD
void initLCD(void)
{
//15ms Warten
Delay10KTCYx(10);

//Sende Init-Byte (1)
LATD &= 0b00001111;
LATD |= 0b00110000;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;

//5ms Warten
Delay10KTCYx(5);

//Sende Init-Byte (2)
LATD &= 0b00001111;
LATD |= 0b00110000;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;

//100us Warten
Delay100TCYx(10);

//Sende Init-Byte (3)
LATD &= 0b00001111;
LATD |= 0b00110000;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;

Delay100TCYx(10);

//4-bit
LATD &= 0b00001111;
LATD |= 0b00100000;
LATE |= 0b00000001;
Delay1TCY();
LATE &= 0b11111110;

Delay100TCYx(10);

//Display löschen
sendCWToLCD(0b00000001);

//4-bit Interface und 5x8 Matrix
sendCWToLCD(0b00101000);

//Display aus
sendCWToLCD(0b00001000);

//Cursorrichtung rechts, Shift aus
sendCWToLCD(0b00000010);

//Display ein
sendCWToLCD(0b00001100);
}



Pinbelegung:

D4..7 -> RD4..7
E -> RE0
RW -> RE1
RS -> RE2

Nur damit ihr euch nicht wundert: An RD0..3 sind Eingänge für ne Tastermatrix.

Wenn ich das Programm laufen lasse passiert nix. Das Display zeigt nix bzw. bei runtergedrehter Kontrastspannung schwarze Kästen an, als wäre es nicht initialisiert.

mfg GoTo


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 16 Beiträge im Durchschnitt pro Tag       heute wurden bisher 5 Beiträge verfasst
© x sparkkelsputz        Besucher : 186829205   Heute : 26849    Gestern : 47700    Online : 223        26.11.2025    14:32
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0668039321899