Display ansteuern

OP #2794658
Lesenswert?

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
Angehängte Dateien:
OP #2794806
Lesenswert?

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
}
Gast #2794932
Lesenswert?

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
OP #2796206
Lesenswert?

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.
Angehängte Dateien:
#2796906
Lesenswert?

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
OP #2796923
Lesenswert?

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
#2796936
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren