KS0066 mit ATMega32 ansteuern

Gast #1746334
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/175000-199999/183350-da-01-ml-LCD_Modul_20x2_Zeichen_de_en.pdf)
LCD-Controller: KS0066 (Datenblatt: 
http://pdf1.alldatasheet.com/datasheet-pdf/view/37318/SAMSUNG/KS0066.html)

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

11
  // Function set
12
  LCD_PORT |= (0x03 << LCD_DB);
13
  lcd_enable();
14
  LCD_PORT |= (0x03 << LCD_DB);
15
  lcd_enable();
16
  LCD_PORT |= (0x03 << LCD_DB);
17
  lcd_enable();
18
  _delay_ms(1);
19

20
  // Display on/off control 
21
  LCD_PORT = (0x00 << LCD_DB);
22
  lcd_enable();
23
  LCD_PORT |= (0x0F << LCD_DB);
24
  lcd_enable();
25
  _delay_ms(1);
26

27
  // entry mode
28
  LCD_PORT = (0x00 << LCD_DB);
29
  lcd_enable();
30
  LCD_PORT |= (0x01 << LCD_DB);
31
  lcd_enable();
32
  _delay_ms(1);
33

34
  // entry mode
35
  LCD_PORT = (0x00 << LCD_DB);
36
  lcd_enable();
37
  LCD_PORT |= (0x07 << LCD_DB);
38
  lcd_enable();
39
  _delay_ms(1); 
40

41
  
42
  lcd_clear();
43
  lcd_home();
44
}

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


Ich hoffe ihr könnt mir helfen und danke schon im voraus,
Michael
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.