Forum: Mikrocontroller und Digitale Elektronik Atmega8 LCD Fehler im Programm


von Patrick K. (gnom69)


Angehängte Dateien:

Lesenswert?

Hi,
Ich habe übers verlängerte Wochenende mich endlich mal ans 
Mikrocontroller Tutorial gesetzt, und wollte einen LCD ansteuern (1602A; 
HD44780 kompatibel)
uC programmieren geht Problemlos, nur zur Ansteuerung bekomme ich es 
nicht hin, dass er ein Zeichen Ausgibt.


Wäre jemand so nett den Code zu überfliegen, und evtl. auf Fehler 
hinzuweisen?

von Wolfgang (Gast)


Lesenswert?

1
  LCD_Control |= _Enable;
2
  _delay_ms(10);
3
  LCD_Control ^= _Enable;

Da reißt dem Controller vielleicht der Geduldsfaden.
Daran wird's nicht liegen, aber was steht dafür in deinem Datenblatt als 
Minimalzeit.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Es fehlt ausserdem nach der Init der Befehl 0x0C, um das Display 
zumindest anzuschalten. Kann auch 0x0E sein, dann ist der Cursor auch 
gleich mit an.

Wolfgang schrieb:
> ber was steht dafür in deinem Datenblatt als
> Minimalzeit.

Hitachi sagt mindestens 1000nS = 1uS Enable Cycle Time.

von Patrick K. (gnom69)


Lesenswert?

Habs jetzt nicht genau gefunden, meine aber 220ns waren angegeben, aber 
mit 1us, 100us, 1ms funktioniert es auch nicht, aber das ich zu lange 
warte war ein berechtigter Einwand, vielen Dank für den Tipp schonmal.

von Patrick K. (gnom69)


Angehängte Dateien:

Lesenswert?

So,
Dass mit dem Display Einschalten hatte ich tatsächlich nicht gewusst, 
naja, Initialisierung komplett nach Datenblatt durchgeführt, und doch 
kein Zeichen bzw. Cursor auf dem Display.

Stimmt evtl. etwas bei der Daten-/Befehlsende Funktion nicht?

Anbei die nachgebesserte Version.

von spess53 (Gast)


Lesenswert?

Hi

>LCD_Control ^= _RS;

Ein XOR ist hier fehl am Platz

MfG Spess

von Dietrich L. (dietrichl)


Lesenswert?

Mal was ganz Anderes: hast Du auch schon an der Kontrasteinstellung 
gedreht? Vielleicht siehst Du einfach nur nichts!

Gruß Dietrich

von Patrick K. (gnom69)


Lesenswert?

spess53 schrieb:
>>LCD_Control ^= _RS;
>
> Ein XOR ist hier fehl am Platz

Habe ich durch
>LCD_Control &= 0xFE;
ersetzt.

und @Dietrich ja am Kontrastpoti drehe ich nach jedem Flashvorgang wie 
wild, in Hoffung dass sich was tut (benutze ein 25k Poti).

von Patrick K. (gnom69)


Lesenswert?

Endlich gefunden, Erfolgserlebnis^10.

>LCD_Control &= 0xFC;

muss
>LCD_Control &= 0xFB;
heißen und schon läufts.

Vielen Dank an alle die mir geholfen haben.

von spess53 (Gast)


Lesenswert?

Hi

>LCD_Control &= 0xFC;

>muss
>LCD_Control &= 0xFB;
>heißen und schon läufts.

Warum nicht gleich

LCD_Control &= ~(1<<_RS);

?

MfG spess

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.