mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Initialisierung ATMEGA8


Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Kann mir wer sagen, was an meine Initialisierung eines Displays am 
ATMEGA8 fehlt?
 /* 

PD2:  RS   = Enable
PD3:  E   = Enable
PD4:  DB4 = Datenbit 4
PD5:  DB5 = Datenbit 5
PD6:  DB6 = Datenbit 6
PD7:  DB7 = Datenbit 7

PB0:   Jumper R/W
PB1:  Jumper PWM

*/


#include <avr/io.h>

#ifndef F_CPU
#define F_CPU 3686400UL     
#endif

#include <util/delay.h>





int main (void)
{
void lcd_init( void )
{
    DDRD   = (1 << PIND2) | (1 << PIND3) | (1 << PIND4) | (1 << PIND5) | (1 << PIND6) | (1 << PIND7);    //Configured for the 4 Bit mode across port D
    PORTD   = (0 << PIND2) | (0 << PIND3) | (0 << PIND4) | (0 << PIND5) | (0 << PIND6) | (0 << PIND7);    //LCD - PORTD initialisieren
 
  
    _delay_ms(50);                              //Wait as many as 50 ms according to Power-ON
    
    
  PORTD   = (1 << PIND4) | (1 << PIND5) | (0 << PIND2);          //The display will be shifted into the initialisation mode according to send
                                      //0b0011xxxx (soft-reset) three times thereby RS = 0.
  PORTD   = (1 << PIND3);
  _delay_ms(5);
  

  PORTD   = (1 << PIND4) | (1 << PIND5) | (0 << PIND2);
  PORTD   = (1 << PIND3);
  _delay_us(100);

  PORTD   = (1 << PIND4) | (1 << PIND5) | (0 << PIND2);
    PORTD   = (1 << PIND3);

  PORTD   = (1 << PIND5);                          //LCD init 4 Bit
  PORTD   = (1 << PIND3);
  _delay_ms(5);

  PORTD   = (1 << PIND3) | (1 << PIND5);                  //LCD 2x16 konfig


                                      //LCD_cmd

  PORTD   = (1 << PIND3);                          //LCD_off
  PORTD   = (1 << PIND0);                          //LCD_clear
  PORTD   = (1 << PIND1) | (1 << PIND2);                  //set Entry-Mode

                                      //LCD_cmd
  PORTD   = (1 << PIND1) | (1 << PIND2) | (1 << PIND3);          //LCD_on    
  

  }
  
   lcd_init ();
  
  while (1)
  {

  };

  return (1);
} 

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt. Oder wenigstens der Name der Controllers. Behelfsweise 
eine Glaskugel.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh sorry. Standart Controller Hitachi HD44780 Controller.

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok. Jetzt musst Du nur noch(tm) die Bitmanipulationen richtig(tm) 
hinbiegen.. folgendes funktioniert so nicht (bzw. nicht so wies soll.. 
habs kurz annotiert):
// im 4-bit-modus initialisieren, dazu.. data setzen.. unlesbar aber
// sollte klappen
PORTD   = (1 << PIND4) | (1 << PIND5) | (0 << PIND2);

// jetzt E(nable) setzen..
PORTD   = (1 << PIND3);
       ^ 
       ..und dabei data wieder löschen.. *hust*

An (fast) allen anderen Stellen analog.. Falls es noch nicht klar ist, 
dann lies mal unter [1] ein bisschen nach, insbesondere [2]. Und wenn Du 
schon dabei bist, dann empfehle ich Dir zur Verbesserung der Lesbarkeit 
dringend ein paar mehr ∗aussagekräftige∗ defines für die Pinnamen 
anzulegen, so wies in [3] vorgeschlagen wird :-)

HTH und HF

[1] http://www.mikrocontroller.net/articles/Bitmanipulation
[2] 
http://www.mikrocontroller.net/articles/Bitmanipul...
[3] http://www.mikrocontroller.net/articles/Bitmanipul...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenn du weiterhin dabei bist, dann siehst du ins
AVR-GCC-Tutorial
in den Abschnitt: LCD

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.