Problem mit DOGM204W-A Display und Atmega 328 P

#3875671
Lesenswert?

Hallo,

ich bin noch recht neu in diesem Bereich deshalb brauche etwas Hilfe.

Ich habe hier ein DOGM204W-A Display von EA, welches ich über den 8 Bit 
Mode mit einem Atmega 328P ansteure. Ich habe die Pins PD0 - PD7 an die 
Pins D0 - D7, des Displays angeschlossen (PD0 an D0 usw.) und den Enable 
Pin an PB0 angeschlossen. Der Rest ist wie im 8-Bit Beispiel vom 
Datasheet angeschlossen.

Jetzt zum Problem:
Ich bekomme es einfach nicht zum laufen/ initialisiert.
(Es erscheint kein blinkender Cursor.)



Hier mein C-Code:
1
#define F_CPU 10000000UL
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6
void InitDisplay();
7
void SendData(int Data);
8

9
int main(void)
10
{
11
  DDRD=0xFF;
12
  DDRB=0xFF;
13
  InitDisplay();
14
    while(1)
15
    {
16
    }
17
}
18

19
void InitDisplay(){
20
  _delay_ms(200);
21
  SendData(0x3A);//1.Command
22
  SendData(0x09);//2.
23
  SendData(0x06);//3.
24
  SendData(0x1E);//4.
25
  SendData(0x39);//5.
26
  SendData(0x1B);//6.
27
  SendData(0x6E);//7.
28
  SendData(0x57);//8.
29
  SendData(0x72);//9.
30
  SendData(0x38);//10.
31
  SendData(0x0F);//11.
32
  PORTB=0;
33
  PORTD=0;
34
}
35

36
void SendData(int Data){
37
  PORTD=Data;
38
  _delay_ms(1);
39
  PORTB=0x01;//Enable 1
40
  _delay_ms(1);
41
  PORTB=0x00;//Enable 0
42
  _delay_ms(1);
43
}
Wo liegt der Fehler?

Es gibt hier schon ähnliche Posts, diese haben mir aber nicht wirklich 
weitergeholfen.
Gast #3875720
Lesenswert?

Cursor at Home
oder
Clear Display
braucht bei den alten Controllern 1,53ms.
Will mir aber jetzt nicht das Datenblatt vom neuen durchlesen.
Must du machen ;)
und schauen ob der neue das schneller kann.
Sonst könnte die 1ms zu kurz sein.
#3875740
Lesenswert?

Ich habe nun den Kontrast und die Wartezeit erhöht und es tut sich immer 
noch nichts.
1
  SendData(0x3A);//1
2
  SendData(0x09);//2
3
  SendData(0x06);//3
4
  SendData(0x1E);//4
5
  SendData(0x39);//5
6
  SendData(0x1B);//6
7
  SendData(0x6E);//7
8
  SendData(0x57);//8
9
  SendData(0x7F);//9
10
  SendData(0x38);//10
11
  SendData(0x0F);//11
12
  SendData(0x01);//12
13
  
14
  PORTB=0;
15
  PORTD=0;
16
}
17

18
void SendData(int Data){
19
  PORTD=Data;
20
  _delay_ms(2);
21
  PORTB=0x01;
22
  _delay_ms(2);
23
  PORTB=0x00;
24
  _delay_ms(2);
25
}
#3875753
Lesenswert?

g457 schrieb:
>> Nein, die werden nicht initialisiert und sie sind immer auf 0.
>
> Warum sind sie (logisch) 0 wenn sie nicht initialisiert sind? Externe
> pull-down-Widerstände? Oder hat der SSD1803 solche drin?

Mit 0 meinte ich einfach nur, dass sie nicht initialisiert sind(War 
etwas blöd geschrieben) und es sind keine pull-down-Widerstände 
vorhanden.
#3875763
Lesenswert?

g457 schrieb:
> ..gemäß Datenplatt halt. Ich tippse mal auf R/W output/low für schreiben
> (output/high für lesen) und RS output/low für Instruktionen (output/high
> für Daten).

Gemacht. Immer noch nichts...
1
#define F_CPU 10000000UL
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6
void InitDisplay();
7
void SendData(int Data);
8

9
int main(void)
10
{
11
  DDRD=0xFF;
12
  DDRB=0xFF;
13
  DDRC=0xFF;
14
  InitDisplay();
15
    while(1)
16
    {
17
    }
18
}
19

20
void InitDisplay(){
21
  _delay_ms(200);
22
  PORTC=0;
23
  SendData(0x3A);//1
24
  SendData(0x09);//2
25
  SendData(0x06);//3
26
  SendData(0x1E);//4
27
  SendData(0x39);//5
28
  SendData(0x1B);//6
29
  SendData(0x6E);//7
30
  SendData(0x57);//8
31
  SendData(0x7F);//9
32
  SendData(0x38);//10
33
  SendData(0x0F);//11
34
  SendData(0x01);//12
35
  
36
  PORTB=0;
37
  PORTD=0;
38
}
39

40
void SendData(int Data){
41
  PORTD=Data;
42
  _delay_ms(2);
43
  PORTB=0x01;
44
  _delay_ms(2);
45
  PORTB=0x00;
46
  _delay_ms(2);
47
}
#3876805
Lesenswert?

F. Fo schrieb:
> Vielleicht findest du hier was?
> http://www.mikrocontroller.net/articles/DOGMxxx_LCD_Routinen
>
> Vor allem diesen Satz fand ich interessant:
>
> Nachtrag eines Users. Ich hatte in der while(busy) Schleife die delay
> Zeit auf 0.4 stellen müssen damit das Display richtig funktioniert.

Ich habe das mal ausprobiert und die Pins im Header und die 
Init.-Routine entsprechend angepasst. Nur leider immer noch nichts.

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