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 | ||
| ||
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: |