mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik KS0066 mit ATMega32 ansteuern


Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich versuche vergeblichst ein LCD mithilfe eines ATMega32 anzusteuern.
Ich habe bereits verschiedene Code-Beispiele aus dem Forum/Wiki versucht 
jedoch vergeblich.
Das Display verwendet einen angeblich zum HD44780 kompatiblen 
Controller, im Forum wird jedoch öfters erwähnt, das dieser eine etwas 
andere Initialsierung benötigt. Deswegen habe ich mir das Datenblatt 
geholt, und die Initialisierungsroutine aus dem Codebeispiel aus dem 
Mikrocontroller.net-Wiki umgeschrieben. (Siehe weiter unten oder den 
Gesamten Source im Anhang)
Angesteuert wird das Display wie in dem angehängten Schaltplan.

Verwendetes LCD: Anag Vision AV2020 (Datenblatt: 
http://www.produktinfo.conrad.com/datenblaetter/17...)
LCD-Controller: KS0066 (Datenblatt: 
http://pdf1.alldatasheet.com/datasheet-pdf/view/37...)

Die veränderte Init-Funktion:
void lcd_init( void )
{
  // verwendete Pins auf Ausgang schalten
    uint8_t pins = (0x0F << LCD_DB) |           // 4 Datenleitungen
                   (1<<LCD_RS) |                // R/S Leitung
                   (1<<LCD_EN);                 // Enable Leitung
    LCD_DDR |= pins;
 
  LCD_PORT &= ~(1<<LCD_RS);      // RS auf 0, "Befehl"

  // Function set
  LCD_PORT |= (0x03 << LCD_DB);
  lcd_enable();
  LCD_PORT |= (0x03 << LCD_DB);
  lcd_enable();
  LCD_PORT |= (0x03 << LCD_DB);
  lcd_enable();
  _delay_ms(1);

  // Display on/off control 
  LCD_PORT = (0x00 << LCD_DB);
  lcd_enable();
  LCD_PORT |= (0x0F << LCD_DB);
  lcd_enable();
  _delay_ms(1);

  // entry mode
  LCD_PORT = (0x00 << LCD_DB);
  lcd_enable();
  LCD_PORT |= (0x01 << LCD_DB);
  lcd_enable();
  _delay_ms(1);

  // entry mode
  LCD_PORT = (0x00 << LCD_DB);
  lcd_enable();
  LCD_PORT |= (0x07 << LCD_DB);
  lcd_enable();
  _delay_ms(1); 

  
  lcd_clear();
  lcd_home();
}

Die veränderten Einstellungen in der Header-Datei:
/*
 * Pinbelegung
 * 
 */
 
//  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3
#define LCD_PORT      PORTC
#define LCD_DDR       DDRC
#define LCD_DB        PC0
 
//  LCD RS      <-->  PORTD Bit PD4     (RS: 0=Data, 1=Command)
#define LCD_RS        PC4
 
//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
#define LCD_EN        PC5
Der gesamte Source befindet sich im Anhang...


Ich hoffe ihr könnt mir helfen und danke schon im voraus,
Michael

Autor: Bin kein Experte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Michael, was wird denn angezeigt ? Nach meinem Verständis ist Pin3 
(V0/Contr) nicht gegen Masse sondern eine geeignete Spannungs zwischen 0 
und 5V.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die veränderte Init-Funktion:

Wo fast sämtliche wichtigen Delays scheinbar verschwunden sind.
Genauso wie die Umschaltung in den 4 Bit Modus.

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.