Forum: Mikrocontroller und Digitale Elektronik Display ES DIPS082 // Hilfe Das Ding will nicht


von Andre W. (andy4wpt)


Angehängte Dateien:

Lesenswert?

Guten Morgen,

die Initialisierung scheint zu funktionieren...

Ich sehe es blinken. :-) Schreibe ich allerdings etwas aufs Dislay,
sieht es so aus als ob das Display die Initialisierung vergisst.

DISPLAY : EA DIPS082 ohne Hintergrundbeleuchtung

Besten Dank für eure Hilfe

Lg
André

von Karl H. (kbuchegg)


Lesenswert?

Mit deinen Änderungen in lcd.c hast du dir mehr geschadet als du gut 
gemacht hast
1
//------------------------------------------------------------------------------
2
void lcd_write (char Data,char CD)
3
//------------------------------------------------------------------------------
4
{
5
  
6
  
7
    //Wait until LCD is ready
8
  //while ((lcd_read(0)&(1<<BUSYBIT)) > 0 && timeout++ < 500) {};
9
  
10
  //Set Port Direction Register to Output for LCD Databus and LCD Controlbus
11
  //LCD_Port_DDR = LCD_DataOutput+(1<<LCD_RS | 1<<LCD_RW | 1<<LCD_E | 1<<LCD_LED);
12
  DDRA = 0xFF;
13
  
14
  
15
  //Soll ins Seuer oder Datenregister geschrieben werden?
16
  
17
  if (CD == 0)
18
    {
19
    PORTA &= ~(1<<LCD_RS); //RS = 0 Steuerregister
20
    }
21
    else
22
    {
23
    PORTA |= (1<<LCD_RS); //RS = 1 Dataregister
24
    }
25
  
26
  //Schreibsignal setzen
27
  PORTA &= ~(1<<LCD_RW);//Zum Schreiben RW-Pin = Low
28
  
29
  
30
  //Schreiben der 1. 4Bit an das LCD Display
31
  ucTempPortA = (Data & 0xF0);
32
  ucTempPortA = (ucTempPortA >>1);
33
  //uiTempPortA = (uiTempPortA << 3);
34
  //PORTA |=  0x78 & (uiTempPortA << 3);  //Write Nibbel MSB
35
  PORTA = ucTempPortA;

Gratuliere. Mit der letzten Zuweisung an PORTA hast du die ganze vorher 
mühsam gemachter Einstellung des RS bzw RW Bits am LCD zur Makulatur 
gemacht.

von Andre W. (andy4wpt)


Lesenswert?

OK, das habe ich nicht bedacht...

Werde diese Stellen überarbeiten... Bis Später.


Danke André


PS: Arbeitszimmer 36 °C ;-)

von Andre W. (andy4wpt)


Lesenswert?

So,

jetzt läuft es. Ich hatte den Originalcode vorher auch schon  verwendet 
hatte aber einen Denkfehler und habe es daher selbst versucht... :-)

Die überarbeitung hat es gebracht.

Eine kleines Problem besteht jedoch nach wie vor. Die zweite 
Displayzeile lässt sich nicht adressieren.

Wenn hier jemand eine Idee hat währe icg dankbar.


Lg
André


PS.: Arbeitszimmer 39°C ;-)

von Karl H. (kbuchegg)


Lesenswert?

Andre Wojciech schrieb:

> Eine kleines Problem besteht jedoch nach wie vor. Die zweite
> Displayzeile lässt sich nicht adressieren.

gib einen langen String in der 1. Zeile / 1. Spalte aus

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

und dann sieh nach welches Zeichen in der 2. Zeile / 1. Spalte als 
erstes auftaucht. Abzählen im langen String ergibt dir dann den Offset, 
den du bei den Cursorpositionierroutinen für die 2. Zeile eintragen 
musst.

von spess53 (Gast)


Lesenswert?

Hi

Die zweite Zeile beginnt meist auf Adresse $40. Da könnte der String zu 
kurz sein.

Mf Spess

von Andre W. (andy4wpt)


Lesenswert?

Nix zu machen. Der Displaykontroller fängt in der gleichen Zeile wie an.

Die zweite Zeile wird gar nich angesprochen.

Hier noch mal die Initialisierung des KS0066U:

Ich bin für jeden Vorschlag dankbar.

Lg
André




DDRA = 0xFF;


  //Wait a short Time afer Power on
  _delay_ms(100);


  lcd_write (0x20,0);    //FunktionSet

  lcd_write (0x20,0);

  lcd_write (0xC0,0);    //2Lines & Display On
  _delay_ms(1);

  lcd_write (0x0F,0);    //Display on  Coursor on  Blink on
  _delay_ms(1);

  lcd_write (0x01,0);    //Display Clear
  _delay_ms(2);

  lcd_write (0x07,0);    //Display Clear

von spess53 (Gast)


Lesenswert?

Hi


>  lcd_write (0xC0,0);    //2Lines & Display On

'Function Set' für 4-Bit und 2 Zeilen ist $28.

>lcd_write (0x07,0);    //Display Clear

Das ist eigentlich 'Entry Mode Set'

MfG Spess

von Andre W. (andy4wpt)


Lesenswert?

Habe ich ausprobiert, keine Veränderung. Die zweite Zeile lässt sich 
weder mit C0 noch mit 28 aktivieren.

Mittlerweile habe ich

- OptimizerLevel
- Timing
- Portsetting
- Display getauscht
- ne runge um en Block gemacht


ausprobiert alles ohne erfolgt. Vielleicht hat noch wer eine Idee.
Würde mich freuen

Lg

André

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.