-
Hi!
Habe mir jetzt auch diese Display zuglegt und würde mir dafür gern ne Platine ätzen. Allerdings hat mein Touch diesen Graphit-Folienleiter, an den man nichts ranlöten kann... Deshalb würde mich mal interessieren, was für eine Buchse man da für Platinen nehmen kann. Das sah bei Hellsing auf der Platine schon gut aus, aber wo finde ich sowas, z.B. bei Reichelt?
-
Moin
Also ich hab das ganze ohne irgendwelche Spezialteile gelöst.
Ich hab so eine Pin/Stiftleiste genommen und das Plastikzeug was da unten dran ist, dünner gefeilt.
Auf der Platine gibts dann unten 4 Leiterbahnen auf die die Stifleiste aufelötet wird.
Dann kann man den Folienleiter einfach zwischen Stiftleiste und Leiterbahn einklemmen.
Bild hier
Bild hier
Das funktioniert ziemlich gut und hält auch einigermaßen fest zusammen.
Sebastian
-
Total genial!
Das ist ein SUPER Tipp!!
Vielen Dank!!
-
Das ist wirklich ne tolle und vor allem kreative Lösung :wink:
Aber auf ner geätzten Platine, die "hübsch" (so gut das für eine Platine möglich ist) aussehen soll, ist es eher doch keine Lösung...
-
Das Anschließen des Touchpads hab' ich anders gelöst.
Beim Ausschlachten eines alten Telefons (Tastatur als Matrix mit Folienleiter)
fand sich ein perfektes Gegenstück. Geht prima. (google-suche >telefon grün<)
Außerdem noch zwei Widerstände à 560 k-Ohm zwischen den
Analogeingängen, die eingelesen werden und +5 Volt. Sonst "malt" das
Display von selbst. :-k
-
ich hab n problem mit meinem display, ich hab mir paar routinen für pixelschreiben und vektorgrafik zusammengeschustert, mein problem, was wenn 2 "drawline" zum beispiel ihre pixel im selben spaltenbyte haben .. meine idee, byte aus dem display lesen und mit dem neuen pixelbyte verodern .. idee klase, aber irgendwie bekomm cih nur mist wenn ich versuche ein byte aus dem display zu lesen ... zur schaltung, ich hab die datenleitungen über 1k auf GND gelegt, weil ich um kurzschlüsse zu vermeiden den datenport grundsätzlich auf high z lasse
-
@krtv_stsc:
Also es kommt drauf an, wenn man etwas sauberer arbeiten würde, (nicht wie ich irgenwann mitten in der Nacht) könnte ich damit Leben.
Design follows function.
Zumal ich ja noch keine (einfach irgendwo bestellbare) Alternative gefunden hab.
@BMS:
Ja klar das es von selbst matl, die ADCs in deinem AVR sind relativ empfindlich und hochohmig und in dem Moment wo das Display nicht berührt wird, hängt der quasi in der Luft.
Da bekommst du von überall her schöne Einstreuungen.
Deshalb überprüfe ich bevor ich Koordinaten auslese immer erst ob sich die X und die Y Folie überhaupt berühren.
Code:
uint8_t touch_is_pressed() {
TOUCH_DDR |= (1 << TOUCH_X1);
TOUCH_DDR |= (1 << TOUCH_Y1);
TOUCH_DDR &= ~(1 << TOUCH_X2);
TOUCH_PORT &= ~(1 << TOUCH_Y1);
TOUCH_PORT |= (1 << TOUCH_X1);
if(readADC(TOUCH_X2) < TOUCH_PRESSED_LEVEL) {
return 1;
}
else {
return 0;
}
}
Ohne Berührung liegen da am ADC so ziemlich die vollen 5V an.
Wird das Display berührt zieht die Y-Folie das mehr oder weniger auf Masse.
Jetzt muss man nur noch rumprobieren bis man einen Passenden Grenzwert hat und gut is.
@Ceos:
Lies mal im Datasheet für den lc7891 nach.
Da steht das wenn man Daten aus dem Memory lesen will, muss man erst ein dummy readout machen.
D.h. erst beim zweiten mal lesen hast du sinnvolle Daten. Der erste Readout is Müll.
Code:
uint8_t lcd_read_byte() {
uint8_t i,data;
for(i = 0; i < 2; i++) {
_delay_us(1);
lcd_rw_low();
lcd_rs_high();
LCD_DATA = 0x0D;
_delay_us(1);
lcd_en_high();
LCD_DATA_DDR = 0x00;
lcd_rs_low();
lcd_rw_high();
_delay_us(1);
data = (uint8_t) LCD_DATA_PIN;
lcd_en_low();
LCD_DATA_DDR = 0xFF;
}
return data;
}
Sebastian
-
ich weis zwar nicht ob wir beide vom selben controller reden (kann ich erst morgen anchprüfen) aber das datenblatt ist VERDAMMT MAGER, danke für den tip (steht wirklich nix in der form drinne, nur die hand voll befehle und wie die bytes dargestellt werden) meld mich morgen nachmittag nochmal
... sowas lästiges aber auch, könnte ich mir nich irgendwie mit nem zwischenspeicher aushelfen ? mein gedanke geht in richtung ram zwischen controller und display
in den ram schreib ich (wesentlich schneller als mit den schlechten timings des LCD) die daten rein und über nen mux und nen takt vom controller schieb ich dann die daten parallel zum prozessor in das LCD
hat vielleicht jemand ein paar eingebungen ?
-
Moin
Also sooo mager ist das ja auch nicht, für mich hats mit ein bischen rumprobieren gereicht.
Ich red über das Datasheet : http://www.datasheetcatalog.org/data...f_e/LC7981.pdf
Das mit dem dummy Readout steht Seite 13 in der Mitte unter 11) Reading display data.
Gruß
Sebastian
-
danke für den tip, hat 95% der lesefehler beseitigt ... aber in meinem datenblatt stands trotzdem nicht (LCD12864C)... fehler sind immernoch paar kleine da und performant iss was anderes, ich werd wohl in den sauren apfel beissen und das display im RAM vorrausberechnen und dann regelmäßig komplett auf das display shcreiben
ausserdem werd ich mir per uart bzw. SPI ein protokoll basteln so von wegen #dl,1,1,20,20 für drawline usw. damit ich das display mit nem M8 austattten und über einen M32 oder direkt vom PC aus ansteuern kann und übern eeprom vielleicht ne nen einprogrammierbares menü bauen .. ich will eigentlich nur alle knöpfe und regler für lüfter, an/aus, reset am PC ersetzen, vll. noch nen kapazitiven sensor rein, dmit das display angeht sobald man mit der hand in die nähe kommt
Update:
hab meins jetzt auch zum laufen bekommen, nachdem ich meinen touch-controller gegrillt hab (vergessen die widerstände zwischen display und controller zu tun) hab ichs jetzt auch mit µC-ADC gemacht
also ich mess nur einmal den wert und bekomm kaum sprünge, wie sieht dein schaltplan aus ?
würde mich mal interessieren, hab mit dem oszi ein paar faszinierende enteckungen gemacht was kapazitives verhalten der touchfolie angeht und wie bescheiden die werte sind und wie einfach man sich abhelfen kann
alles was aus linien aufgebaut ist kann ich jetzt mit ein paar drawlineanweisungen statt pixelkoordinaten darstelen .... aber die performanz iss bescheiden weil ich direkt aus dem display-ram lese ...