PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme bei LCD-Ansteuerung



Rosenthal
21.07.2005, 10:40
Hallo, habe plötzlich ein Problem bei meinem 4x16 LCD. Das LCD funktionierte bis vor wenigen Tagen/Wochen einwandfrei. Jetzt bekomme ich nur noch irgend welche wirren Zeichen angezeigt.
Nach dem ich es endlich geschaft hatte, das Display anzusteuern, habe ich meinen mega163 über STK500 so Programmiert. dass er eine Spannung über den ADC einliest und diese via UART in einem Terminal am PC anzeigt. Diese Werte wollte ich dann auch auf dem LCD darstellen. Aber es funktionierte dann nicht mehr. Selbst das einfache Testprogramm was "Hallo" im Display anzeigt, funktioniert nicht mehr. Ich verwende die LIB von Peter Fleury. Das Testprogramm sieht so aus:


#include "lcd.h"
void lcd_display(void)
{
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_puts("Hallo");
}
int main(void)
{
lcd_display();
}
Ich bekomme dann in der 1. Zeile an Position 8 die Zeichen "Ooooo" angezeigt. Wenn ich dann öfters mal den Controller über AVRStudio programmiere, zeigt das Display diese Zeichen an einer anderen Stelle zerstückelt an und ab und zu ist auch ein H oder sogar Ha-llo zu erkennen. Woran kann das liegen?
Die Zeichen bleiben im übrigen selbst nach einem Erase des Controllers im Display stehen, sodass ich nach einigen Progammiervorgängen das Dsiplay voller Zeichen habe (lcd_clrscr() funktioniert nicht). Erst wenn ich die Spg. vom LCD nehme sind die Zeichen weg.

michaelb
21.07.2005, 14:53
hi rosenthal,
kann es sein dass dein LCD kaputt ist? ich meine den controller des lcds!
ich denk mal was hardwaretechnisches denn bei der software kann man nicht so viel falsch machen! verwendest du die gleiche displaybeschaltung wie vor den genannten paar wochen?
gruß michi

Rosenthal
21.07.2005, 15:21
Daran habe ich auch schon gedacht und habe mir ein 2.LCD zugelegt. Das Problem besteht aber weiterhin. Die Ausgänge des AVRs habe ich auch schon mal durchgetestet, dort gibt es auch keine Schwierigkeiten. Habe leider kein Oszi, sonst würde ich mir mal die Datenleitung beim Transfer anschauen. Ich habe das LCD so angeschlossen:

LCD-----Controller (DDRA)
1----------GND
2----------+5V
3----------ca.+1v (Kontrast)
4----------rs (PORT 4)
5----------r/w (PORT 5)
6----------e (PORT 6)
7----------frei
8----------frei
9----------frei
10--------frei
11--------PORT 0
12--------PORT 1
13--------PORT 2
14--------PORT 3
LCD und Controller sind mit einem ca. 40cm langem Flachbandkabel verbunden.
Kann es auch an irgendwelchen Einstellungen bei den Fuses-Bits liegen?
Habe in der Zwischenzeit auch von externen (selbst ins STK500 eingesteckten) Quarz auf den 3686400 Takt des STK500 umgeschaltet. Die LCD-Software habe ich aber geändert.

michaelb
21.07.2005, 15:28
Hi Rosenthal,
hast du die LIB an deine Ports angepasst?
Gruß Michi

Rosenthal
21.07.2005, 15:39
Ich habe mal die Dateien lcd.c und lcd.h als Attachment hinzugefügt. Vielleicht habe ich ja dort einen Fehler gemacht. Habe aber nur in lcd.h was geändert. lcd.c ist komplett übernommen worden. test_lcd.c ist ja oben beschrieben.

michaelb
21.07.2005, 15:44
hmmmm....hab mir die lcd.h angeschaut aber auch keinen Fehler gefunden! Ich muss das ganze noch mal überdenken!!
Gruß Michi

Rosenthal
22.07.2005, 08:45
Mal etwas anderes. Ich benutze seit kurzem auf der Arbeit ICCAVR von Imagecraft. Ich möchte zu Hause ebenfalls diese IDE benutzen.
Gibt es für diese IDE auch eine Lib für LCDs?
Oder hat sogar schon jemand mit diesem Prog ein LCD angesteuert?

Ich wäre für jede Hilfe Dankbar.

Gruß
Rosenthal

P.S.: Ich habe mal das Flachbandkabel kontrolliert. Pin0 und Pin1 Datenleitung 0 und 1)hatten ab und zu einen Kurzschluss an dem Klemmstecker. Habe das Kabel noch mal neu gemacht. Kein Kurzschluss mehr, allerdings habe ich noch immer das gleiche Problem. Das dürfte doch eigentlich das LCD nicht zerstört haben, oder? Wie ist das eigentlich, wenn DDRA als Ausgang definiert ist (0xff) aber der Ausgang ausgeschaltet ist (PORTA 0x01 Pin0 high der Rest low) sind dann die Ausgänge auf Masse gezogen?

Rosenthal
22.07.2005, 12:32
Habe das Problem mit den wirren Zeichen gefunden. Ich gehe von einem Labornetzteil auf eine kleine Platine mit einem 7805. Dieser versorgt das LCD. Das STK500 wird ebenfalls von dem Labornetzteil mit 12V versorgt. Ich dachte eigentlich es reicht, dass das LCD und STK500 an der gleichen Masse (Netzteil) angeschlossen sind. Aber Pustekuchen, es liegt eine Spannung von 0,75V zwischen den beiden Massen. Diese wird anscheinend durch die Eingangsdiode am STK500 erzeugt. Habe jetzt die Versorgung für das LCD direkt an das STK500 angeschlossen und siehe da, alles funktioniert wieder.

Das Problem, dass die Lib von Fleury nicht bei ICCV7 funktioniert bleibt jedoch weiterhin bestehen. Was müsste ich den alles in der Lib ändern, dass ich sie auch in diesem Programm verwenden kann?

Vielen Dank aber schon mal für die bisherigen Antworten.