Forum: Mikrocontroller und Digitale Elektronik DOGM LCD Kontrast


von Lokus P. (derschatten)


Lesenswert?

Ich versuche mich gerade daran ein DOGM 162 an einem MEGA88 zu 
betreiben.
Dazu habe ich mich an das Beispiel hier im Forum gehalten: 
http://www.mikrocontroller.net/articles/DOGMxxx_LCD_Routinen

Als Pufferkondensatoren verwende ich 1yF Elko für CAP1 und 2,2yF Elko 
für VIN/OUT

Das Schaltung und die weiße Hintergrundbeleuchtung wird mit 3,6V (3xAA 
Batterien) betrieben.
Der AVR ist mit internen 8MHz getaktet.

Jetzt habe ich das Problem das die Schrift kaum zu erkennen ist.

Jemand einen Tip für mich?
Das gleiche tritt übrigens auch auf wenn ich die Schaltung und das 
Display laut Datenblatt beschalten, mit 5V betreibe.

Wenn ich das dem Code richtig entnehme, müßte das in der Initialisierung 
stattfinden:
1
// ************************************************************
2
// Initialize LCD module
3
// ************************************************************
4
5
void dogm_init(void)
6
{
7
  dogm_port_init();                     // initialize ports
8
9
  _delay_ms(400);                       // 40ms delay
10
  dogm_write_once(0x30);                // Function Set #1: DL=1
11
  _delay_ms(2);                         // 2ms delay
12
  dogm_write_once(0x30);                // Function Set #2: DL=1
13
14
  _delay_us(30);                        // 30us delay
15
  dogm_write_once(0x30);                // Function Set #3: DL=1
16
  _delay_us(30);                        // 30us delay
17
18
  dogm_chk_busy();                      // Check busy flag
19
  dogm_write_once(0x20);                // Function Set #4: DL=0
20
21
  _delay_us(30);                        // 30us delay
22
  dogm_write_check(0, 0x29);            // Function Set #5: DL=0, N=1, IS2=0, IS1=1
23
  _delay_us(30);                        // 30us delay
24
25
  dogm_write_check(0, 0x14);            // Bias Set: BS=0, FX=0
26
  _delay_us(30);                        // 30us delay
27
28
  dogm_write_check(0, 0x78);            // Contrast Set: C3=1, C2=C1=C0=0
29
  _delay_us(30);                        // 30us delay
30
31
  dogm_write_check(0, 0x5E);            // Power/ICON/Contrast: Icon=1, Bon=1, C5=1, C4=0
32
  _delay_us(30);                        // 30us delay
33
34
  dogm_write_check(0, 0x6A);            // Follower Ctrl: Fon=1, Rab2=0, Rab1=1, Rab0=0
35
  _delay_us(30);                        // 30us delay
36
37
  dogm_write_check(0, 0x0C);            // DISPLAY ON: D=1, C=0, B=0
38
  _delay_us(30);                        // 30us delay
39
40
  dogm_write_check(0, 0x01);            // CLEAR DISPLAY
41
  _delay_ms(2);                         // 2ms delay
42
43
  dogm_write_check(0, 0x06);            // Entry mode set: I/D=1, S=0
44
  _delay_us(30);                        // 30us delay
45
}

von spess53 (Gast)


Lesenswert?

Hi

>Jemand einen Tip für mich?

Ja. Mache die Initialisierung wie im Datenblatt angegeben.

MfG Spess

von Lokus P. (derschatten)


Lesenswert?

Ok, die Anzeige funktioniert jetzt auf einem MEGA8 problemlos
Jedoch nicht am MEGA88. Da wird der Text abgeschnitten.

Mehr als "Hallo Wel" erscheint nicht.

Bin jetzt draufgekommen das das Display anscheinend Probleme hat wenn 
der AVR schneller als 4MHz läuft.

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.