Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: EA DIP128 Display ansteuern Kategorie: Sonstige Hardware (von wernerAZ - 26.03.2007 10:18)
Als Antwort auf Re: EA DIP128 Display ansteuern von André H. - 25.03.2007 17:27
Ich nutze:
C164CI-ControllerBoard, CC2-Application-Board, OSOPT V3.1
Sorry Andre',
ich bin da mit Foren nicht so vertraut, versuche mich zu bessern.
Dauert das eigentlich immer eine Woche, bis eine Antwort kommt?
Ich wollte nämlich das Display schon zurückschicken.
Aber jetzt probiere ich es noch mal.
Bei dem Display gibt es ein 4-seitiges Datenblatt. Ich habe es nach der Schaltung Beispiel 3
am Printer-Port das AplikationsBoards angeschlossen
und noch P1H4 an pin 23 und P1H3 am pin 25 an JP2(Appl.Board)  angelegt.
P1H3 an E2 vom Display
P1H4 an E1
P1H5 an Reset
P1H6 an D/I
P1H7 an R/W
Dann habe versucht, ein Programm für das Display zu schreiben.
Anbei, jetzt mit Code-Tags.
Da ich ausser ein paar LEDs auf den Datenleitungen(nicht direkt, sondern über Treiber)
nur noch den Beeper hatte, wollte ich mir mit den verschiedenen Tönen nur merken,
wo sich das Programm befindet. Ist aber nicht wichtig.
Ich möchte nur ein Pixel auf das Display bekommen.

function rst()
{
ports.set(13,0);  //Reset
sleep 10;
ports.setb(0,0x11100000);
}
function status()
{
int stat;
ports.set(11,0);   //E2
ports.set(12,1);   //E1
ports.set(13,1);   //Res
ports.set(14,0);    //D/I
ports.set(15,1);    //R/W
stat=ports.getb(0); //Datenleitungen lesen
sleep 10;
ports.set(12,0);    //E1
ports.setb(0,stat);
sleep 3000;
}
function befehl(int data)
{
ports.setb(0,data);
ports.set(11,0);   //E2
ports.set(12,1);   //E1
ports.set(13,1);   //Res
ports.set(14,0);   //D/I
ports.set(15,0);   //R/W
sleep 10;
ports.set(12,0);
ports.set(14,1);
ports.set(15,1);
}
function schreiben(int data)
{
ports.setb(0,data);
ports.set(11,0);   //E2
ports.set(12,1);   //E1
ports.set(13,1);   //Res
ports.set(14,1);   //D/I
ports.set(15,0);   //R/W
sleep 10;
ports.set(12,0);
ports.set(14,1);
ports.set(15,1);
}
function lesen() returns int
{
int x;
ports.set(11,0);   //E2
ports.set(12,1);   //E1
ports.set(13,1);   //Res
ports.set(14,0);   //D/I
ports.set(15,1);   //R/W
ports.getb(0);
sleep 10;
ports.set(12,0);
ports.set(14,1);
ports.set(15,1);
return x;

}
thread main
{
int d;
status();
rst();                 //Reset
plm.beep(1);
status();
befehl(0x00111111);  //Display on
plm.beep(2);
status();
befehl(0x00111110);  //Display off
plm.beep(3);
status();
befehl(0x00111111);  //Display on
plm.beep(4);
status();
befehl(0x11000001);  //Zeile 1
plm.beep(5);
status();
befehl(0x10111000);  //Page 0
plm.beep(6);
status();
befehl(0x01000011);  //Spalte 3
plm.beep(7);
status();
for d=0 ... d<50
    {
    schreiben(0x11001010);      //schreibe auf Display-Ram(Position)
    }
plm.beep(8);
status();
d=lesen();                  //Display auslesen
plm.beep(9);
status();
ports.setb(0,d);            //Wert auf LEDs
plm.beep(10);
sleep 3000;
befehl(0x11000001);  //Zeile 1
plm.beep(5);
status();
befehl(0x10111000);  //Page 0
plm.beep(6);
status();
befehl(0x01000011);  //Spalte 3
plm.beep(7);
status();
d=lesen();                  //Display auslesen
plm.beep(9);
status();
ports.setb(0,d);            //Wert auf LEDs
plm.beep(10);
sleep 3000;
plm.beep(-1);
loop
    {
    }

}


 Hallo Werner,
>
> Zuerst: Verwende bitte die Code-Tags, und das bitte so, wie es oberhalb
> des Eingabefeldes angegeben ist.
> Also:
> <code>
> C2-Quellcode
> </code>
> Daraus
> wird dann:
>
> C2-Quellcode
>

> Ohne irgendeine Formatierung, wie auch übersichtliches Einrücken, macht es keinen
> SpaÃ? Quellcode zu lesen.
> Daher habe ich mir Dein Programm nicht näher angesehen.
>
> Ich selbst habe kein EA DIP128 Grafikdisplay.
> Ich verwende bei Grafik gleich eines der eDIPs. Das ist einfacher und portsparender.
> Denn bei Grafik-LCDs wird's komplizierter als bei Text-LCDs.
> Zunächst brauchst Du immer einen 8Bit-Datenbus.
> Dann kommen noch Steuerleitungen hinzu.
> Neben RS(Register-Select),R/W und Enable hast Du noch weitere Steuerleitungen.
> Bei 128x64-Displays existieren meist noch zwei CS-Leitungen, da das LCD
> in eine linke und in eine rechte Hälfte unterteilt ist.
>
> Du solltest zu allererst den korrekten Anschlu� des Displays überprüfen.
> Dazu hilft Dir das Datenblatt sicher weiter.
>
> MfG André H.
>
>
> > Hallo,
> > mein Versuch das LCD anzusteuern ist fehlgeschlagen.
> > Bekomme kein einziges Pixel auf Display.
> > Anbei mein Versuch.
> > Was mache ich falsch?
> > code
> > function rst()
> > {
> > ports.set(13,0);  //Reset
> > sleep 10;
> > ports.setb(0,0x11100000);
> > }
> > function status()
> > {
> > int stat;
> > ports.set(11,0);   //E2
> > ports.set(12,1);   //E1
> > ports.set(13,1);   //Res
> > ports.set(14,0);    //D/I
> > ports.set(15,1);    //R/W
> > stat=ports.getb(0); //Datenleitungen lesen
> > sleep 10;
> > ports.set(12,0);    //E1
> > ports.setb(0,stat);
> > sleep 1000;
> > }
> > function befehl(int data)
> > {
> > ports.setb(0,data);
> > ports.set(11,0);   //E2
> > ports.set(12,1);   //E1
> > ports.set(13,1);   //Res
> > ports.set(14,0);   //D/I
> > ports.set(15,0);   //R/W
> > sleep 10;
> > ports.set(12,0);
> > ports.set(14,1);
> > ports.set(15,1);
> > }
> > function schreiben(int data)
> > {
> > ports.setb(0,data);
> > ports.set(11,0);   //E2
> > ports.set(12,1);   //E1
> > ports.set(13,1);   //Res
> > ports.set(14,1);   //D/I
> > ports.set(15,0);   //R/W
> > sleep 10;
> > ports.set(12,0);
> > ports.set(14,1);
> > ports.set(15,1);
> > }
> > function lesen() returns int
> > {
> > int x;
> > ports.set(11,0);   //E2
> > ports.set(12,1);   //E1
> > ports.set(13,1);   //Res
> > ports.set(14,0);   //D/I
> > ports.set(15,1);   //R/W
> > ports.getb(0);
> > sleep 10;
> > ports.set(12,0);
> > ports.set(14,1);
> > ports.set(15,1);
> > return x;
> >
> > }
> > thread main
> > {
> > int d;
> > status();
> > rst();                 //Reset
> > plm.beep(1);
> > status();
> > befehl(0x00111111);  //Display on
> > plm.beep(2);
> > status();
> > befehl(0x00111110);  //Display off
> > plm.beep(3);
> > status();
> > befehl(0x00111111);  //Display on
> > plm.beep(4);
> > status();
> > befehl(0x11000001);  //Zeile 1
> > plm.beep(5);
> > status();
> > befehl(0x10111000);  //Page 0
> > plm.beep(6);
> > status();
> > befehl(0x01000011);  //Spalte 3
> > plm.beep(7);
> > status();
> > for d=0 ... d<50
> >     {
> >     schreiben(0x11001010);      //schreibe auf Display-Ram(Position)
> >     }
> > plm.beep(8);
> > status();
> > d=lesen();                  //Display auslesen
> > plm.beep(9);
> > status();
> > ports.setb(0,d);            //Wert auf LEDs
> > plm.beep(10);
> > sleep 3000;
> > befehl(0x11000001);  //Zeile 1
> > plm.beep(5);
> > status();
> > befehl(0x10111000);  //Page 0
> > plm.beep(6);
> > status();
> > befehl(0x01000011);  //Spalte 3
> > plm.beep(7);
> > status();
> > d=lesen();                  //Display auslesen
> > plm.beep(9);
> > status();
> > ports.setb(0,d);            //Wert auf LEDs
> > plm.beep(10);
> > sleep 3000;
> > plm.beep(-1);
> > loop
> >     {
> >     }
> >
> > }
> > /code
> > Bitte heft mir.
> > GruÃ? Werner


    Antwort schreiben


Antworten: