Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung problem mit Steuerport


von Mark K. (spliff)


Lesenswert?

Tachen

versuche gerade ein LCD (normales HD44780 2x16) im 4 Bit Modus 
anzusteuern, leider funkts irgendwie nicht so richtig, weil er mir am 
Steuerport nichts ausgibt. Der Steuerport ist PORT E wenn ich es jedoch 
auf PORT A umschreibe tut sich ebenfalls nichts. Woran könnte das 
liegen?

ich verwende einen PIC 16f877A mit 20MHz Takt und schreibe das Programm 
in C++. (das Board verwendet negative Logik!!!)

Hier ein kurzer Ausschnitt:

void main()
{
  trise = 0x00;    // Ausgang Steuerport
  trisd = 0x00;    // Ausgang Steuerport

  Sleeping_for(100);  //10ms

  Set_to_4bit();    // Auf 4 Bit Modus

  Sleeping_for(400);

  Turn_on_D();    // Display ON
  Sleeping_for(400);

  Set_Adress(0);    // Adresse auf 0 Setzen (Home)

  Write_Data(65);    // Ausgabe 65 = A



}

void Set_to_4bit(void)
{
  porte.0 = 1;    // RS = 0  write in IR
  porte.1 = 1;    // R/W =0

  portd = 2;      // DB5

  Enable();

  delay_ms(100);
}

void Enable(void)
{
  Sleeping_for(100);
  porte.2 = 0;
  Sleeping_for(100);
  porte.2 = 1;
  Sleeping_for(100);
}

von Niels H. (monarch35)


Lesenswert?

Also ich erkenne mindestens zwei Fehler:

1. Das ist nicht der komplette Quellcode
2. Kein verdrahtungsplan anhängig.

von Mark K. (spliff)


Lesenswert?

Also:

RE2=E
RE1=R/W
RE0=RS

RD0-3 = DB4-7

und nein das ist nicht der Ganze code, aber in den anderen Teilen steht 
auch nicht viel mehr drin und wenn sich hier schon PORT E nicht ändert, 
tut er es auch sonst nirgends

von holger (Gast)


Lesenswert?

Schalte mal in ADCON1 die Ports von analog auf digital.

von Mark K. (spliff)


Lesenswert?

wie geht das?

von Niels H. (monarch35)


Lesenswert?

Schonmal Google benutzt? Das ist son cooles Ding im Internet; nennt sich 
"Suchmaschine". Da gibt man einfach ein paar Suchbegriffe ein und schon 
finden selbst Leute wie ich, die noch nie einen PIC schief angeguckt 
haben, tolle Ergebnisse. Wie das hier:
1
void main(void)
2
{
3
  ADCON1=0x0F;// Alle AD-Eingänge als Digitale Eingänge Einstellen
4
  TRISA=0;   //Port A: alles Ausgänge
5
  TRISB=0;   //Port B: alles Ausgänge
6
  TRISC=0;   //Port C: alles Ausgänge
7
8
while(1)
9
  { 
10
  LATAbits.LATA0=!LATAbits.LATA0; // RA0 togglen
11
  }
12
}


seuftz

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.