LCD 4 Bit initalisierung

Gast #867850
Lesenswert?

Moin ich hab in meiner Bastel-Kiste ein 20 Zeichen 4 Zeilen Display 
gefunden mit dem 4478 Controller drauf. und ich dachte mir das man damit 
bestimmt nette sachen bauen kann als wollte ich mal testen ob es noch 
funktioniert.

nach kurzen anfangschwierigkeiten hab ichs dann hinbekommen das in zeile 
1 und 3 ein schwarze balken ist. also erst eindruck schonmal gut und 
wollte ich mal kurz nen text ausgeben.

irgendwie hat die initalisierung vom tuturial hier nicht bei mir 
geklappt. Ich verwende einen ATMEGA 32 und hab ein kleines programm 
geschrieben ich hab noch nie ein Display im 4 bit modus betrieben und 
hab ka ob dat überhaupt so stimmt.
1
#include <avr/io.h>
2
//#include "lcd-routines.h"
3
#include <util/delay.h>
4
 
5
int main(void)
6
{
7
     _delay_ms(200);
8
  _delay_ms(200);
9
  _delay_ms(200);
10

11
  DDRD  =  0xff;
12

13

14

15
  PORTD  =  0x03;
16
  PORTD  |= (1<<PD5);
17
    _delay_ms(10);
18
  PORTD &= ~(1<<PD5);           
19
  _delay_ms(10);
20

21
  PORTD  =  0x03;
22
  PORTD |= (1<<PD5);
23
    _delay_ms(10);   
24
  PORTD &= ~(1<<5);           
25
  _delay_ms(10);
26

27

28
  PORTD  =  0x03;
29
  PORTD |= (1<<PD5);
30
    _delay_ms(10); 
31
  PORTD &= ~(1<<5);           
32
  _delay_ms(10);
33

34

35
  PORTD  =  0x02;
36
  PORTD |= (1<<PD5);
37
    _delay_ms(10); 
38
  PORTD &= ~(1<<5);           
39
  _delay_ms(10);
40

41
  
42
//
43
  PORTD  =  0x02;
44
  PORTD |= (1<<PD5);    // 4bit operation
45
    _delay_ms(10);           
46
  PORTD &= ~(1<<5);           
47
  _delay_ms(10);
48

49

50
  PORTD  =  0x08;
51
  PORTD |= (1<<PD5);    //und 5x8 matrix
52
    _delay_ms(10); 
53
  PORTD &= ~(1<<5);           
54
  _delay_ms(10);
55

56
//
57

58
  PORTD  =  0x00;
59
  PORTD |= (1<<PD5);    //Display, Cursor, Blink on
60
    _delay_ms(10); 
61
  PORTD &= ~(1<<5);           
62
  _delay_ms(10);
63

64

65
  PORTD  =  0x0F;
66
  PORTD |= (1<<PD5);    //
67
    _delay_ms(10); 
68
  PORTD &= ~(1<<5);           
69
  _delay_ms(10);
70

71

72
  PORTD  =  0x00;
73
  PORTD |= (1<<PD5);    //
74
    _delay_ms(10); 
75
  PORTD &= ~(1<<5) ;          
76
  _delay_ms(10);
77

78

79
  PORTD  =  0x01;
80
  PORTD |= (1<<PD5);
81
    _delay_ms(10); 
82
  PORTD &= ~(1<<5);           
83
  _delay_ms(10);
84

85

86

87
 
88
    while(1)
89
    {
90
    }
91
 
92
    return 0;
93
}
Gast #867852
Lesenswert?

Achja die ganzen 10 ms zeiten sind drin weil ich schon gelesen hab das 
oft probleme mit den zeiten auftreten und angeschlossen hab ich es wie 
folgt

E an PD5
RS an PD4

DB4 an PD0
DB5 an PD1
DB6 an PD2
DB7 an PD3

wat könnt ich denn falsch gemacht haben

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren