Hallo Bekomme das Display nicht initíalisiert. Habe schon alles ausprobiert es zeigt nichts an außer einen schwarzen strich 1 pixel dick am oberen rand. Mode ist 8080 generic. Hier ist die Init. Habe diese von der S1335 LIB die auch schon mit einen Epson S1335 funktioniert. Display ist ein :CFAG320240CX-TFH-T-TS. WAIT,DISPL,FGND sind nicht Beschaltet lt Hersteller nicht notwendig. Hat jemadn noch einen Rat?? Besten Dank Gruß Paulchen
Habe schon alle Verbindungen geprüft MEga zum Display aber nichts nur ein Schwarzer strich der nach der INIT verschwindet. Habe auch sämmtliche Commadn Write Data Write Prozeduren durch sind alle total Unterschiedlich immer das gleiche Problem. Kann ich die Gleiche INIT nehmen wie beim 1335 Epson dort geht mein LEdsee 320x240 Display??? Danke Gruß Paul
Hallo Ich habe mal die Beiden Schaltungen verglichen vom Ledsee Display und vom Crystalfontz. Das Ledsee wird Kontrastmäßig über GND und VEE gesteuert Das Crystalfontz über 5V und VEE. Ist das so???? Ich bekomme an VO maximal -9V bis +4,5V typisch laut DB ist -18V. Kann es damit zusammenhängen das nach dem INIT der Streifen oben weg ist und ich nichts sehe weil der Kontrast nicht sauber geht???? Poti 10K eine seite an +5V die andere an VEE -25V und der Schleifer an VO. Messen tue ich VO und GND. Danke Gruß Paul
Hallo Fehler ist gefunden habe den Kompletten Anschlußstecker Stftleisten falsch verbunden PIN 1 = PIN20 Alles umeglötet. Nur habe ich das Problem das Layer 1 Grafiklayer geht aber Layer 2 und 3 nur Müll anzeigen. Habe die SAD1L+H Adressen vom 1335 Übernommen. 320/8=40 240*40=9600 =0x0000 Start 0x2580 ende Layer1 0x8581 start 0x4b01 ende Layer2 0x4b02 start 0x7082 ende Layer3 ist das beim 13700 genau so laut Datenblatt ja. Danke Gruß Paul
Hallo
Also die Adressen für die Layer passen.
Es wird auch schon was angezeigt fonts und grafik.
Das was nicht geht sind linien und Kreise.
Die lib verwende ich auch 1:1 mit einen SED 1335 dort gehts.
void GLCD_Line(int X1, int Y1,int X2,int Y2,int layer)
{
int CurrentX, CurrentY, Xinc, Yinc,
Dx, Dy, TwoDx, TwoDy,
TwoDxAccumulatedError, TwoDyAccumulatedError;
Dx = (X2-X1); // obliczenie sk³adowej poziomej
Dy = (Y2-Y1); // obliczenie sk³adowej pionowej
TwoDx = Dx + Dx; // podwojona sk³adowa pozioma
TwoDy = Dy + Dy; // podwojona sk³adowa pionowa
CurrentX = X1; // zaczynamy od X1
CurrentY = Y1; // oraz Y1
Xinc = 1; // ustalamy krok zwiêkszania pozycji w poziomie
Yinc = 1; // ustalamy krok zwiêkszania pozycji w pionie
if(Dx < 0) // jesli sk³adowa pozioma jest ujemna
{
Xinc = -1; // to bêdziemy siê "cofaæ" (krok ujemny)
Dx = -Dx; // zmieniamy znak sk³adowej na dodatni
TwoDx = -TwoDx; // jak równie¿ podwojonej sk³adowej
}
if (Dy < 0) // jeœli sk³adowa pionowa jest ujemna
{
Yinc = -1; // to bêdziemy siê "cofaæ" (krok ujemny)
Dy = -Dy; // zmieniamy znak sk³adowej na dodatki
TwoDy = -TwoDy; // jak równiez podwojonej sk³adowej
}
GLCD_SetPixel(X1,Y1, color,layer); // stawiamy pierwszy krok (zapalamy
pierwszy piksel)
if ((Dx != 0) || (Dy != 0)) // sprawdzamy czy linia sk³ada siê z wiêcej
ni¿ jednego punktu ;)
{
// sprawdzamy czy sk³adowa pionowa jest mniejsza lub równa sk³adowej
poziomej
if (Dy <= Dx) // jeœli tak, to idziemy "po iksach"
{
TwoDxAccumulatedError = 0; // zerujemy zmienn¹
do // ruszamy w drogê
{
CurrentX += Xinc; // do aktualnej pozycji dodajemy krok
TwoDxAccumulatedError += TwoDy; // a tu dodajemy podwojon¹
sk³adow¹ pionow¹
if(TwoDxAccumulatedError > Dx) // jeœli TwoDxAccumulatedError
jest wiêkszy od Dx
{
CurrentY += Yinc; // zwiêkszamy aktualn¹ pozycjê w pionie
TwoDxAccumulatedError -= TwoDx; // i odejmujemy TwoDx
}
GLCD_SetPixel(CurrentX,CurrentY, color,layer);// stawiamy
nastêpny krok (zapalamy piksel)
}while (CurrentX != X2); // idziemy tak d³ugo, a¿ osi¹gniemy
punkt docelowy
}
else // w przeciwnym razie idziemy "po igrekach"
{
TwoDyAccumulatedError = 0;
do
{
CurrentY += Yinc;
TwoDyAccumulatedError += TwoDx;
if(TwoDyAccumulatedError>Dy)
{
CurrentX += Xinc;
TwoDyAccumulatedError -= TwoDy;
}
GLCD_SetPixel(CurrentX,CurrentY, color,layer);
}while (CurrentY != Y2);
}
}
}
void GLCD_SetPixel(unsigned int x,unsigned int y, int color,int layer)
{
unsigned char tmp = 0;
unsigned int address;
if(layer==1)address=SED1335_GRAPHICSTART1 + (40 * y) + (x/8);
if(layer==2)address=SED1335_GRAPHICSTART2 + (40 * y) + (x/8);
if(layer==3)address=SED1335_GRAPHICSTART3 + (40 * y) + (x/8);
GLCD_SetCursorAddress(address);
GLCD_WriteCommand(SED1335_MREAD);
tmp = GLCD_ReadData();
if(color)
tmp |= (1 << (SED1335_FX - (x % 8)));
else
tmp &= ~(1 << (SED1335_FX - (x % 8)));
GLCD_SetCursorAddress(address);
GLCD_WriteCommand(SED1335_MWRITE);
GLCD_WriteData(tmp);
}
Die Linen sind gestrichelt.
Hat jemand eine Idee???
Vielen Dank
Gruß
Paul
Hallo
Nun ist alles IO.
Der fehler liegt in den Timing beim ReadGLCD.
Hier der Code der jetzt funktioniert
unsigned char GLCD_ReadData(void)
{
unsigned char tmp;
SED1335_DATA_DIR = 0x00;
SED1335_CONTROL_PORT &= ~(SED1335_CS);
SED1335_CONTROL_PORT &= ~(SED1335_RD);
_delay_us(10); //Hier war der fehler habe da 10µs eingefügt und nun
gehts
tmp = SED1335_DATA_PIN;
asm("nop");
asm("nop");
SED1335_CONTROL_PORT |= (SED1335_RD | SED1335_CS );
return tmp;
}
der 1S13700 scheint ziemlich kritsisch mit Timings zu sein der 1335 war
da nicht anfällig.
So aber nun gehts.
Das Display ist bedeutend besser im Tageslicht betrieb als das ledsee.
Das BL habe ich Dimmbar gemacht über PWM und Mosfet geht auch ganz gut.
Nun muß ich noch den Touch anschließen.
Danke
Gruß
Paul
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.