mikrocontroller.net

Forum: Compiler & IDEs LCD Displaytech 204B & ATmega32


Autor: Pascal (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe das Display 204B der Firma Displaytech Ltd. von Reichelt (4x20) 
mit Chip lt. Datenblatt Typ KS0066U und Treiber x2 KS0063.
Der uC ist ein ATmega32.
Das Display ist derzeit an Port B angeschlossen (auch schon mit Port D 
getestet).
Angeschlossen ist so:

Display        uC
--------------------
DB4            PB0
DB5            PB1
DB6            PB2
DB7            PB3
RS             PB4
RW             PB5
E              PB6

& Vcc etc. natürlich. Als lcd-lib nehme ich die lcdlibrary von Peter 
Fleury. Der uC läuft derzeit mit 1 Mhz int. Oz.. Mein Programm sieht so 
aus:

#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "lcd.h"
#include <util/delay.h>

/*
** constant definitions
*/
/*static const PROGMEM unsigned char copyRightChar[] =
{
  0x07, 0x08, 0x13, 0x14, 0x14, 0x13, 0x08, 0x07,
  0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x10, 0x00
};
*/

int main(void)
{
    unsigned int i;
  for(i=0; i<=100; i++)
      _delay_ms(10);

    /* initialize display, cursor off */
    lcd_init(LCD_DISP_ON);

    for (;;) {                           /* loop forever */

        lcd_clrscr();

        /* put string to display */
        lcd_puts("Hello");
    }
}

Die lcd.h ist im Anhang, das Datenblatt vom Display findet man hier:
http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=1;INDE...

Nicht zu vergessen ist, dass ich den Kontrast vom Display schon 
eingepegelt habe, das funktioniert. An einem anderen uC mit anderem 
Programm geht es auch, daher ist die Hardware ok.
Einen zweiten uC habe ich auch schon genommen.

Mein Problem:

Schalte ich ein, dann erscheinen auf dem Display in Zeile 1 und 3 
schwarze Balken, diese verschwinden nach ca. 1 Sekunde. Sollte laut 
Programm auch so sein. D.h. init sollte funktionieren. Jetzt habe ich 
nur das Problem, dass es mir einfach nichts schreiben will. Was mache 
ich da falsch, was muss ich da einstellen?

Sämtliche alten Posts hier im Forum bringen mich einfach nicht weiter 
und nach nun fast 8 Stunden wollt ich Euch mal um Hilfe bitten.

Danke für irgendwelche Tipps hierzu,
Grüße aus Kassel, Pascal

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
For
#include <util/delay.h>

muss die Taktfreqeunz definiert werden, sonst kann es sein, dass die 
Delays nicht richtig sind.
#define F_CPU 1000000L

MFG
Falk

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

daran liegt es nicht. Im AVRStudio habe ich das unter Compileroptionen 
mit drin. Habe es sicherheitshalber jetzt nochmal ergänzt, aber es 
bringt keine Änderung.
In dem Zusammenhang habe ich auch mal verschiedene Optimierungsstufen 
probiert, aber alles ohne Erfolg. Langsam verzweifel ich...

Grüße Pascal

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
    for (;;) {                           /* loop forever */
        lcd_clrscr();

        /* put string to display */
        lcd_puts("Hello");
    }

Löschen... Schreiben... Löschen... Schreiben...
Ist dein µC vielleicht schneller als du denkst?

Autor: Dennis U. (atmegadennis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du ein anderes Display um die funktionalität zu testen ??

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, habe einmal die Schleife weggenommen -> Keine Änderung, also nix 
zu schnell oder wie auch immer.

Anderes Display: Habe ein 2x16 mit KS0070B Chip, geht damit auch nicht. 
Kann ich aber noch nichtmal init machen.

Auf dem 4x20 Display hier: Mit dem AVR-GCC Tutorial-Skripting geht es... 
Wollte eben nur die Fleury-Komforts haben.
Woran kann das noch liegen?

Mfg Pascal

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du schon probiert das Display im lcd.h als
#define LCD_CONTROLLER_KS0073 1  /**< Use 0 for HD44780 controller, 1 for KS0073 controller */
zu betreiben?

Bzw. hast du mal die Abweichungen/Gemeinsamkeiten des KS0066U zu HD44780 
und/oder KS0073 in den Datenblättern nachgeschlagen?

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Stefan,

ja, klar, habe auch schon mit KS0073 Controller probiert, das war meine 
alle erste Idee. Natürlich nichts...

Wo finde ich denn solche Datenblätter? Das Problem ist (siehe den 
Datenblatt-Link oben in meinem originial-Post) das da auch ein KS 
kompatibler drin sein kann (lt. Datenblatt). Wie finde ich sowas raus?
Hat denn noch niemand mit dem Display von Reichelt was gemacht?

Grüße Pascal

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Pascal!

Wollte nur fragen, ob Du nun Erfolg hattest mit Deinem LCD?
Habe genau das gleiche Problem...

-  KS0073 Controller
-  ATmega32
-  C Programmiert

Hat Jemand vielleicht schon Erfahrungen mit den Controllern?

Liebe Grüsse
Roland

Autor: Maik B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du DB0 - DB3 mal auf GND gesetzt?
Das war bei mir mal das Problem.

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.