www.mikrocontroller.net

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


Autor: Andre Wojciech (andy4wpt)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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é

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit deinen Änderungen in lcd.c hast du dir mehr geschadet als du gut 
gemacht hast
//------------------------------------------------------------------------------
void lcd_write (char Data,char CD)
//------------------------------------------------------------------------------
{
  
  
    //Wait until LCD is ready
  //while ((lcd_read(0)&(1<<BUSYBIT)) > 0 && timeout++ < 500) {};
  
  //Set Port Direction Register to Output for LCD Databus and LCD Controlbus
  //LCD_Port_DDR = LCD_DataOutput+(1<<LCD_RS | 1<<LCD_RW | 1<<LCD_E | 1<<LCD_LED);
  DDRA = 0xFF;
  
  
  //Soll ins Seuer oder Datenregister geschrieben werden?
  
  if (CD == 0)
    {
    PORTA &= ~(1<<LCD_RS); //RS = 0 Steuerregister
    }
    else
    {
    PORTA |= (1<<LCD_RS); //RS = 1 Dataregister
    }
  
  //Schreibsignal setzen
  PORTA &= ~(1<<LCD_RW);//Zum Schreiben RW-Pin = Low
  
  
  //Schreiben der 1. 4Bit an das LCD Display
  ucTempPortA = (Data & 0xF0);
  ucTempPortA = (ucTempPortA >>1);
  //uiTempPortA = (uiTempPortA << 3);
  //PORTA |=  0x78 & (uiTempPortA << 3);  //Write Nibbel MSB
  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.

Autor: Andre Wojciech (andy4wpt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, das habe ich nicht bedacht...

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


Danke André


PS: Arbeitszimmer 36 °C ;-)

Autor: Andre Wojciech (andy4wpt)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Mf Spess

Autor: Andre Wojciech (andy4wpt)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andre Wojciech (andy4wpt)
Datum:

Bewertung
0 lesenswert
nicht 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é

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.