Forum: Mikrocontroller und Digitale Elektronik LCD DEM20486 Problem


von gb (Gast)


Lesenswert?

Hi ich hab ein kleines Problem mit dem oben genannten LCD. Ich habe das 
Teil auf einem Breadboard mit meinem Atmega32 verbunden. Verbindungen 
stehen.. Spannungen liegen an.. Habe ich alles gemessen und geprüft. Ich 
weiß nicht, was noch falsch sein könnte außer meinem Code. Ich habe das 
ganze mal in einer Consolenanwedungn in C laufen lassen und es sollte 
meiner Meinung nach funktionieren. Der LCD läuft im 4bit Mode..

Das passende Datenblatt findet ihr hier: 
http://www.e-lab.de/diverse/DEM20486.pdf

Hier kommt mein Programmcode und ich wollte fragen, ob ihr mir weiter 
helfen könntet.

hier die Funktionen die ich Verwende..
1
void lcd_enable()
2
{
3
  LCD_PORT |= (1<<LCD_ENABLE);
4
  _delay_ms(10);
5
  LCD_PORT &= ~(1<<LCD_ENABLE);
6
}
7
8
void lcd_write(unsigned char c)
9
{
10
  //sending first 4bit with lcd_enable
11
  LCD_PORT = (LCD_PORT & ~0xf0)|(c & ~0x0f);
12
  lcd_enable();
13
  //shift by 4 to get the lower bit which will be send next
14
  c = (c<<4);
15
  LCD_PORT = (LCD_PORT & ~0xf0)|(c & ~0x0f);
16
  lcd_enable();
17
18
}
19
20
void lcd_command(unsigned char c)
21
{
22
  LCD_PORT &= ~(1<<LCD_RS);
23
  lcd_write(c);
24
}
25
26
void lcd_data(unsigned char c)
27
{
28
  LCD_PORT |= (1<<LCD_RS);
29
  lcd_write(c);
30
}

Ein und ausgänge sind natürlich auch richtig gesetzt.. hier meine main 
Funktion mit einer blinkenden LED um zu sehen ob der richtige 
Programmcode drauf ist variiere ich immer mit den Zeiten..
1
int main()
2
{
3
  unsigned char init[5] = {0x20, 0x2C, 0x0F, 0x01, 0x06};
4
  unsigned char i;
5
6
  for(i = 0; i < 5; i++)
7
  {
8
    lcd_command(init[i]);
9
  }
10
11
  lcd_data('H');
12
  lcd_data('i');
13
14
  //test led
15
  DDRA = 0xff;
16
  while(1)
17
  {
18
    PORTA = 0x01;
19
    _delay_ms(100);
20
    PORTA = 0x00;
21
    _delay_ms(100);
22
  }
23
  return 0;
24
}

So das war der Code schonmal. Sonst hätte ich nur zu sagen, das ich die 
Hintergrundbeleuchtung weggelassen habe, das sollte aber nicht zum 
Problem werden oder?? Meiner Erfahrung her sollte ein LCD aufblinken, 
wenn man es mit Spannung versorgt, aber es zeigt sich bei mir keine 
Reaktion.

Gruß und ich hoffe auf eure Hilfe. Danke schonmal.

von michael_ng (Gast)


Lesenswert?

gb schrieb:
> Das passende Datenblatt findet ihr hier:
> http://www.e-lab.de/diverse/DEM20486.pdf

Schon mal einen Blick rein geworfen?
Ich würde die Init-Sequenz erst einmal genau so machen, wie der 
Hersteller möchte. Die haben meistens Recht (man muss es z. B. auch 
einschalten).
Ach ja, und das Timing ist u.U. auch nicht unwichtig, das steht dort 
auch nicht zum Spaß...

von spess53 (Gast)


Lesenswert?

Hi

Lies dir mal die Initialisierung für den 4-Bit-Mode durch:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD#Initialisierung_f.C3.BCr_4_Bit_Modus

MfG Spess

von gb (Gast)


Lesenswert?

Hi erstmal danke für die Antwort, aber ich gebe doch genau die 
Inititalisierungssequenz auf. In meiner Funktion verschiebe ich die 
Bits. und gebe somit die volle 8Bit aus. Aus dem Datenblatt habe ich 
entnommen, das die 4bit sequenz gleich der 8bit ist. Nur das diese 
aufgeteilt sind und das mache ich in der Funktion. Im Weiteren hat doch 
das Command mit dem byte 0x00 keinen Effekt also dürfte es auch nicht 
stören.

Das mit dem Timing werde ich anpassen und mir den Text von dem Link 
durchlesen. Nochmal vielen Dank.

gb

von michael_ng (Gast)


Lesenswert?

gb schrieb:
> Aus dem Datenblatt habe ich
> entnommen, das die 4bit sequenz gleich der 8bit ist.

Nicht in dem oben. Das Function Set z.B. besteht aus drei Nibblen!
Das sind keine logischen Bytes sondern die an den Pins anzulegenden 
Daten.
Also nicht einfach nur Bytes rausschieben....

von Jorir (Gast)


Lesenswert?

hi,
Ich habe dass gleiche Problem nur habe ich keine Ahnung von 
LCD-Bildschirmen.
Ich wollte dass Beispiel-Programm des Programmes (bascom-AVR)anzeigen 
lassen. Ich habe Das Display laut Datenblatt richtig angeschlossen zudem 
haben ich die LEDen angeschlossen. Der Bildschirm leuchtet  grün nur es 
ist kein Text vorhanden. Ihr vorher von einer Init-Sequenz gesprochen 
aber ich verstehe nichts davon (sorry). Könnte mir jemand erklären was 
ich  vielleicht falsch gemacht habe.  Und bitte keine Fachwörter wie 
Nibblen dar ich noch nie mit einer LCD-Anzeige gearbeitet habe.

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.