Forum: Mikrocontroller und Digitale Elektronik LCD 4 Bit initalisierung


von lui (Gast)


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
}

von lui (Gast)


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

von lui (Gast)


Lesenswert?

ihr könnt mich steinigen -......

Viel spass :/


es funktioniert nurn grml

von Daniel B. (und3rt4ker)


Lesenswert?

Wo war denn der Fehla, hab auch kb dat grad durchzulesen, kanns ja grad 
ma sagen, was war^^

THx
und3rt4ker

von lui (Gast)


Lesenswert?

jo ich dödel hab vergessen die rw leitung anzuschließen ... ^^

von Daniel B. (und3rt4ker)


Lesenswert?

grins

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.