Forum: Mikrocontroller und Digitale Elektronik TMS320F2808 mit LCD


von Alex B. (plex)


Lesenswert?

Hallo,
ich versuche seit zwei Tagen ein LCD anzusteuern, bisher jedoch nur mit 
wenig Erfolg.
Ich benutze das TMS320F2808 Experimenter Kit von TI, dazu das Display 
TC1602A-08 mit einem HD44780 Controller.
Da ich keine fertige lcd.c Datei finden konnte wollte ich das ganze erst 
mal selber programmieren, um zu sehen ob ich was anzeigen lassen kann.
Hier ein Ausschnitt aus meinem Programm:

void LCD_WRITE(char *data)
{
int i;
for(i=0; i<=9; i++)
  {
  //RS
    if(i == 0 && data[i] == '0')GpioDataRegs.GPACLEAR.bit.GPIO11 = 1;
  if(i == 0 && data[i] == '1')GpioDataRegs.GPASET.bit.GPIO11 = 1;
    //RW
...

Ich hab das LCD durchgepiept und an allen Pins liegt das an was ich 
geschickt habe. Zwischendurch konnte ich mal was senden, nach einem 
Reset des MC ging aber nichts mehr (mit dem gleichen Programm)

Möglicherweise liegt das Signal am Enable vom Display zu lang/kurz an? 
Ich benutze den MC mit 20Mhz. hier meine Sendefunktion:

void LCD_ENABLE(void) // => Daten übertragen
{
DELAY_US(100);
GpioDataRegs.GPASET.bit.GPIO10 = 1;      //E    wenn auf 1, übernimmt mc 
die daten
asm(" nop");
asm(" nop");
asm(" nop");
GpioDataRegs.GPACLEAR.bit.GPIO10 = 1;
}

Ich habs auch mit 1, 10, 100 µs Versucht, was meiner Meinung aber zu 
lange ist.
Da ich das Display mit dem 8-bit Modus benutze hab ich keine 
Initialisierung geschrieben, ist das trotzdem nötig? Muss ich das 
Register des Displays am Anfang erst löschen und den Cursor auf die 1,1 
Position setzen?
Wo finde ich eine passende lcd.c?

Leider konnte ich im Forum nichts finden das mir weitergeholfen hat. Ich 
kenne mich bisher nur mit Atmel aus, TI ist Neuland.

Grüße aus Baden, Alex

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Ich denke schon, dass man das Display initialisieren muss.
Gibt es dazu irgendwo ein Datenblatt, ich hab es nicht gefunden?
Funktioniert das Interface überhaupt mit 3,3 Volt?

Grüße,

Peter

von Alex B. (plex)


Lesenswert?

Hallo Peter,

Danke für deine Antwort.
In diesem Tutorial steht, dass das Display am Anfang unter dem 8-bit 
Modus läuft, initialisiert werden muss es nur bei dem 4-bit Modus:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD
"Allerdings gibt es noch ein Problem. Wenn ein LCD eingeschaltet wird, 
dann läuft es zunächst im 8 Bit Modus."

Wenn du "nur" denkst, dass man es initialisieren muss, glaub ich lieber 
dem Tutorial, nichts für ungut ;)

Das Datenblatt für das Display gibts hier:
http://www.jameco.com/Jameco/Products/ProdDS/1585979.pdf
Hatte dafür auch ewig gesucht...

Ich hab an VSS/K GND, an Vdd/A 5V und für V0 ein 10k Poti eingebaut, so 
wie auf der Tutorial Seite beschrieben. Die Hintergrundbeleuchtung 
funktioniert, ich kann den Kontrast einstellen und hatte mit dem selben 
Aufbau schon mal was angezeigt (Mit dem gleichen MC). Aus dem Datenblatt 
entnehme ich, dass die 3,3V für die DB0-7 Pins am Display völlig 
aussreichen sind?

Zur Vervollständigung noch das Datenblatt des Controllers:
http://www.sparkfun.com/datasheets/LCD/HD44780.pdf

Ich hab grade in einem andren Forum gesehen, dass mehrere Leute mit dem 
Display Probleme hatte, das lag aber daran, dass R/W frei lag. Mein R/W 
liegt an einem Pin an.

Das Display wird als 2 Zeilen Display verkauft, ich kann jedoch nur eine 
sehen. Liegt aber bestimmt daran, dass man die zweite jedes mal extra 
anschalten muss?

Ich hatte das Display mal versucht über ein kaputtes Flachbandkabel 
anzusteuern (mit einem Atmega32), könnte es deswegen kaputt gegangen 
sein? Der eine schwarze Balken wird ja angezeigt...

Ich bin für jede Hilfe dankbar!

Einen schönen Tag noch, Alex

von Alex B. (plex)


Lesenswert?

Hallo nochmal,
ich hab möglicherweise die Lösung meines Problems.
Ich bin die ganze Zeit von einem HD44780 Controller ausgegangen, weil 
alle "normalen" LCDs diesen verwenden. Jetzt hab ich grad diese Seite 
gefunden:
http://www.alibaba.com/product-gs/200683260/Character_LCD_Module.html
Anscheinend ist in meinem Display ein SPLC780D1 Controller drin. Ob da 
ein Unterschied besteht und obs dann geht versuch ich jetzt gleich mal.
Grüße

von Alex B. (plex)


Lesenswert?

So, also das wars echt. Das LCD TC1602A-08 benutzt den Controller 
SPLC780D1, Datenblatt gibts hier:
http://andilcd.de.www28.your-server.de/medien/en/download/controller/andilcd_conchar_sheet_en_splc780d1.pdf
Wenn man die Befehle der Seite 9 nacheinander schickt, klappt alles.
Und jetzt darf sich Peter freuen, es lag eigentlich nur an der 
Initialisierung :D die anderen Befehle sind soweit ich das bisher 
gesehen habe gleich.
Alex

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.