Hallo ich hab ein Display gekauft und würd jetzt gerne dazu die Funktionen zum Ansteuern selbst schreiben aber irgent wie bekomm ich kein Lebenszeichen vom Display, Ich hab im Daten Blatt anchgeschauf wie man das Display initialisiert und hab dann das auch so gemacht aber der Display zeigt gar nichts an:(. Ich wollt fragen der PIN 6 (Enable (fallende Flanke)) soll dem Display immer zu verstehen geben dass es jetzt den Befehl oder wert anschauen soll, er dient sozusagen zur synchronisation, oder? Danke im foraus für jede Hilfe mgf alex
zeig mal deinen Code :) Enable wird eigentlich immer zuerst auf low gezogen und am Ende wieder auf high gezogen. Welche Programmiersprache verwendest du? Was für einen µC? Da das Display hd44870 kompatibel ist und ich mal annehme du verwendest einen AVR und C: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
Die Zeiten im Datenblatt wurden eingehalten ? Allenfalls muss man das Datenblatt des displaycontroller noch herunterladen um die letzten Fragen beantworten zu koennen.
Danke Also einen Fehler hab ich Gefunden ich hab das Display in einen Sockel reingesteckt und da hat es nicht richtig alle Kontackte berührt, jetzt hab ichs diereckt reingelötet und wenn ich jetzt nur die Betriebsspannung anschließe leuchten alle Pixel (ich hoffe ich habs noch nich kaputt gemacht:( ) Ja aber Enable ist auf der fallenden Flanke aktiv steht im Datenblatt, Ich verwende den PIC18F452 mit dem MPLAP-C18 Compiler mein Testcode ist:
1 | #include <stdio.h> |
2 | #include <math.h> |
3 | #include "p18f452.h" |
4 | #include "delays.h" |
5 | |
6 | #define RS LATEbits.LATE0
|
7 | #define RW LATEbits.LATE1
|
8 | #define E LATEbits.LATE2
|
9 | |
10 | int init[4]={48,15,1,6}; // das sind die Beispielinitialisierund im Datash |
11 | int i; |
12 | |
13 | void initialisierung(); |
14 | |
15 | void main () |
16 | {
|
17 | LATD = 0x00; |
18 | TRISD = 0x00; |
19 | LATC=0x00; |
20 | TRISC=0x00; |
21 | LATE=0x00; |
22 | TRISE=0x00; |
23 | E=1; |
24 | Delay10KTCYx(100); |
25 | Delay10KTCYx(100); |
26 | |
27 | initialisierung(); |
28 | |
29 | while(1); |
30 | |
31 | } // Ender der main |
32 | |
33 | void initialisierung() |
34 | {
|
35 | for(i=0;i<4;i++) |
36 | {
|
37 | |
38 | LATD=init[i]; |
39 | E=0; // fallende Flanke |
40 | Delay10KTCYx(100); |
41 | E=1; |
42 | Delay10KTCYx(100); |
43 | }
|
44 | }
|
:D so ca. eine halbe sekunde, ich weiß es ist sehr lange aber ich habs so damit ich auch die Zustände mit LED's kontrollieren kann, oich hoffe dass durch die langen Delays die funktion des Displays eingeschrenkt wird
Hi, 1) schau mal ob alle Leitungen die vom Controller weggehen dort ankommen wo du sie erwartest (durchklingeln) auch mal gucken ob Brücken entstanden sind beim Löten. 2) die Init Beispielzahlen, wie hast du sie errechnet? Im Datenblatt stehen doch sicher Hex Zahlen, vielleicht meintest du 0x48 etc... oder hast du sie in eine Dezimalzahl umgerechnet? Tip: Für Defines ist es immer hilfreich wenn man weiß zu welcher Hardware sie gehören -> LCD_E oder LCD_RW wie auch immer :-) oder: #define LCD_E=1 LCD_E_SET #define LCD_E=0 LCD_E_RESET Funktion dann z.B. LCD_init (void). Tip2: Variablen nicht global machen, nimm i in die initfunktion. Alternativ könnte auch das gehen: for(int i=0;i<4;i++) Gruß, JJ
alex le. schrieb: > #define RS LATEbits.LATE0 > #define RW LATEbits.LATE1 > #define E LATEbits.LATE2 An welchen Stellen setzt Du die Signale RS und RW?
Die Verbindungen sind alle ok, hab sie alle durchgetestet. die init Beispiel zahlen hab ich aus dem Datenblatt errechnent(dort stehen is Binär und ich hab sie dann in dez umgerechnet) bin dez 0b00110000 -> 48 0b00001111 -> 15 0b00000001 -> 1 ob00000110 -> 6 die sollten stimmen, ich könnte schon die variable i in der funktion deklarieren aber das Problem liegt nich an dem Programm. Es lässt sich kompillieren und auch ausführen, ich habs auch mit dem oszi angeschaut und ich glaub ich hab jetzt dem Fehler gefunden, Das Display ist ja auf fallender Flanke Aktiv. ich hab mir jetzt auf dem Oszi CH1 (Enable) dargestellt und auf CH2 das Bit0 auf dem Data Display wo ich die Befehle schicke, Ein fehler liegt darin dass ich immer bei der fallenden Flanke die Zustände auf den Datenleitung ändere, und genau zu diesen Zeitpunkt müssen sie ja eindeutig sein, ich geh mal das Programm korrigieren und dann mal schaun obs dann funzt.
:( funzt immer noch nicht:(, Wenn ich dem Display d Spannung gebe und alle Pixel leuchten wird er wohl nicht kaputt sein ??????
Hi >Wenn ich dem Display d >Spannung gebe und alle Pixel leuchten wird er wohl nicht kaputt sein >?????? Meist nicht. Hast du schon mal am Kontrast gedreht? MfG Spess
alex le. schrieb: > :( funzt immer noch nicht:(, > > Wenn ich dem Display d > Spannung gebe und alle Pixel leuchten wird er wohl nicht kaputt sein > ?????? ich denke nicht, aber die Kontastspannung wird zu hoch sein - eigentlich sollten alle Pixel aus sein. Du hast die Frage nach den Steueranschlüssen RS und RW noch nicht beantwortet. Und das nächste 8-Bit oder 4-Bit Anschluss?? Sascha
Danke Im datenblatt steht bei Kontrastspannung in Klammer "(0V)", desshalb hab ich es auf Masse glegt. RS und RW sind Low steht im Initialisierungsbeispiel, jedoch RS sollte eigentlich HIGH sein das es ja Befehle sind und keine Daten, bei Ersten mal hab ich auch das Datenblatt hochgeladen da kannst es anschauen. ich arbeite im 8 bit modus (LATC geht zu D0-D7)(habs richtig angeschlossen) Also zu beginn hab ich das Display versucht zu testen und da hat es kine Versorgungsspannung bekommen weil es im Sockel nicht Kontackt gemacht hat. villeicht hab ich es da kaputt gemacht, oder ?:( mgf alex danke für jegliche Ratschläge
alex le. schrieb: > Danke > > Im datenblatt steht bei Kontrastspannung in Klammer "(0V)", desshalb hab > ich es auf Masse glegt. da steht "Circa 0V" normal macht man sich da mit einem 10k Poti eine einstellbare Spannung. Meistens landet man bei gutem Kontrast tatsächlich nahe bzw. direkt auf 0V. Aber eben nur meistens. > RS und RW sind Low steht im Initialisierungsbeispiel, jedoch RS sollte > eigentlich HIGH sein das es ja Befehle sind und keine Daten, Low ist aber richtig. Diesen 2 Seiter würd ich maximal als 'minimalistisches Datenblatt' akzeptieren. > Also zu beginn hab ich das Display versucht zu testen und da hat es kine > Versorgungsspannung bekommen weil es im Sockel nicht Kontackt gemacht > hat. > villeicht hab ich es da kaputt gemacht, oder ?:( Vergiss das mit dem 'kaputt machen'. So schnell geht das nicht. Wenn du keine Versorgungsspannung wegen Kontaktproblemen hattest, hast du die anderen Leitungen durchgemessen, ob es da auch irgendwo Kontaktprobleme gibt?
Danke Die Kontrastspannung hab ich nun mit einem 10k Poti eingestell (0V). und die Verbindungen hab ich alle durchgetestet und sind alle ok. Ja das ist wirklich ein minimalistisches Datasheet abern es gibt nur dieses:(
Sorry jetzt hab ich die init noch mal probiert und dann hab ich den Kontrast neu eingestellf :), man konnt e vorhin nur nicht erkennen dass der Kursor blinkt, Danke jedoch für eure hilfe. mgf alex
Eine Frage ist das Display kaputt wenn es nur die Hälfte vom 4 und 5 ten Zeichen anzeigt?
ich würde sagen - JA, verändert sich was wenn du in dem Bereich vorsichtig auf das Display drückst? Vermutlich ein Problem mit einem der Leitgummis - an die du bei der Bauform sicher schlecht rankommen wirst. Am besten umtauschen, wenn geht. Sascha
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.