www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LC-Display Problem


Autor: S!m0n (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein Projekt für welches ich ein Display benötige. Es wird mit 
einem Atmega16 angesteuert und es handelt sich um ein Display mit 
HD44780 Controller 2x16 Zeichen. Beim lcd-routines.c und lcdroutines.h 
im anhang handelt es sich um den quellcode vom avr-gcc tutorial von 
mikrocontroller.net, welcher von mir für den 8bit-Modus angepasst wurde.
Das Problem ist folgendes:
Wenn ich einen Text aufs LCD schreibe funktioniert das wie gewollt. Es 
ist auch gleich nach dem Init möglich den Cursor in die zweite Zeile zu 
setzten und dann ein Text zu schreiben. Schreibe ich allerdings bevor 
ich den Cursor in die zweite Zeile setze schon einen Text als z.B. Text 
- Cursor setzen Text dann sieht das am Display so aus: Text komisches 
Zeichen Text und das alles in der ersten Zeile. Führe ich irgend ein 
sonstiges Command(Cursor Home, Clear,...) aus bekomme ich nur ein 
komisches Zeichen.
Wäre um ein Lösung für das Problem sehr froh und hoffe ich habe mich 
verständlich ausgedrückt.
Danke lg S!m0n

Autor: Manuel -- (ploana)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

mit welchem compiler arbeitest du??

Code Vision AVR, AVR Studion ??

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir fehlt noch etwas Kaffe im Blut, daher bin ich mir gerade nicht 
sicher, ob
 LCDC_PORT &= ~(1<<LCD_RS) | ~(1<<LCD_RW);        // RS und RW auf 0 setzen

wirklich das tut, was es soll. Ich bin fast davon überzeugt, das es das 
nicht tut. Bitte ersetze das mal Testweise durch
LCDC_PORT &= ~(1<<LCD_RS);
LCDC_PORT &= ~(1<<LCD_RW);

Bitte an beiden Stellen im Quelltext

Autor: S!m0n (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jop habs auch gerade gemerkt danke. falls jemand den code verwenden 
möchte einfach lcd_command vom anhang mit diesem tauschen dann müsste 
der 8bit-modus gehen.

void lcd_command(uint8_t temp1)
{

   LCDC_PORT &= ~(1<<LCD_RS) &  ~(1<<LCD_RW);        // RS und RW auf 0 
setzen
   LCDD_PORT = temp1;
   lcd_enable();

   _delay_us(42);
}

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder

LCDC_PORT &= ~( (1<<LCD_RS) | (1<<LCD_RW) );        // RS und RW auf 0 
setzen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.