Wie bereits in Beitrag "Pollin TIAN MA A2C00096100 LCD Modul" versprochen, anbei nun die Pinbelegung für das bei Pollin erhältliche Tian Ma A2C00050374 LC-Glas, jedoch ohne Gewähr für die Richtigkeit. Das Display hat 30 Anschlüsse, 4 Backplanes und 22 Segmentanschlüsse. 4 Segmentanschlüsse sind nicht belegt, obwohl verdrahtet. Das "CITROEN" ist ein eigenes Segment und kann ausgeschaltet bleiben. Eine Aussteuerungsanzeige ist mit etwas Softwareaufwand möglich. (Bereits mit Arduino angetestet) Ansteuerung z.B. hier: http://www.dieelektronikerseite.de/Lections/LCD-An... und hier: http://awawa.hariko.com/avr_lcd_drive_en.html Bezeichnungskonventionen wie üblich bei Siebensegmentanzeigen, COM meint die backplane, 1_1 meint den ersten Teilstrich zwischen Skala 0 und 1, 2_5 meint den fünften Teilstrich zwischen 4 und 5, usw. Beitrag "LCD ohne Kennzeichnung, 2x9 Pin, Pollin Sortiment" Beitrag "LCD ohne Kennzeichnung, 1x23 Pin, Pollin Sortiment" Beitrag "Pollin Display Sortiment 2x 25 Pin LC-Glas" Beitrag "LCD ohne Kennzeichnung, 1x22 Pin, Pollin-Sortiment"
Anbei ein Video von einer simulierten Aussteuerungsanzeige, auf die Schnelle zusammengehackt in Arduino. Die Zwischenstriche fehlen, weil die Arduino-"Bibliothek" (siehe Kommentar im Source) die read-modify-write Funktion des benutzten LCD-Controllers HT1621B nicht unterstützt, d. h., es wird pro Segmentanschluss immer nur das zuletzt aktive Segment angezeigt, die vorherigen werden nach dem Setzen jeweils wieder durch das nächste Setzen "leer" überschrieben. Daher rühren auch die ungleichen Abstände im oberen Bereich, weil dort die anderen Zeichen dazukommen und die senkrechten Striche nicht mehr gleichmäßig im Speicher des HT1621B verteilt sind. Wenn man read-modify-write benutzt, ergibt das jedoch einen schönen, sich kontinuierlich bewegenden Balken.
1 | /*
|
2 | Based on Arduino Library for 8-Chars HT1621 LCD-Displays
|
3 |
|
4 | 2013-11-03: V1.0 - Initial Version
|
5 |
|
6 | Copyright 2013 PLAY-ZONE GmbH | http://www.play-zone.ch | info@play-zone.ch
|
7 | */
|
8 | |
9 | #include <LCDHT1621_7Seg_4Com.h> |
10 | |
11 | |
12 | // erstes Halbbyte Speicheradresse des HT1621B
|
13 | // 2. Halbbyte Position innerhalb der Speicherstelle
|
14 | // -> nur für einen Schnelltest, für die Nutzung des
|
15 | // Gesamtbereiches ist diese Kodierung ungeeignet
|
16 | |
17 | static const char flow[] = { |
18 | |
19 | 0x18, 0x14, 0x12, 0x11, 0x21, 0x22, 0x24, 0x28, 0x38, 0x34, /* 0 bis 1 */ |
20 | 0x32, 0x31, 0x41, 0x42, 0x44, 0x48, 0x68, 0x64, 0x62, 0x61, /* 1 bis 2 */ |
21 | 0x71, 0x72, 0x74, 0x78, 0x88, 0x84, 0x82, 0x94, 0x98, 0xd4, /* 2 bis 3 */ |
22 | 0xd2, 0xd1, 0xe1, 0xe2, 0xe4, 0xe8, 0x00, 0x00, 0x00, 0x00, /* 3 bis 4 */ |
23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* leer */ |
24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* leer */ |
25 | |
26 | };
|
27 | |
28 | |
29 | |
30 | |
31 | // CS on Pin A2
|
32 | // WR on Pin A3
|
33 | // DATA on Pin A4
|
34 | // BACKLIGHT (+) on Pin A5
|
35 | LCDHT1621 lcd(A2,A3,A4,A5); |
36 | |
37 | void setup() { |
38 | // Init the LCD
|
39 | lcd.init(); |
40 | randomSeed(analogRead(0)); |
41 | }
|
42 | |
43 | void loop() { |
44 | |
45 | for (byte i = 0; i < random(15, 60); i++) { |
46 | |
47 | lcd.setOneSegment((flow[i]&0xf0)>>4,(flow[i]&0x0f)<<4); |
48 | delay(5); |
49 | }
|
50 | delay(30); |
51 | lcd.allOff(); |
52 | }
|
Die gewählte Kodierung ist ungeeignet, weil sie nur 15 Speicherstellen adressieren kann, der HT1621B aber 32, das Display immerhin auch 22 mit Symbolen belegte Segmentanschlüsse hat und demzufolge auch mindestens 22 Speicherstellen benutzen muss.
kleine Verschlimmbesserung der Kodierung, (auf Basis meines Anschlussplanes, siehe obiges PDF) um den ganzen Bereich zu nutzen:
1 | static const int16_t flow[] = { |
2 | |
3 | 0x0108, 0x0104, 0x0102, 0x0101, 0x0201, 0x0202, 0x0204, 0x0208, 0x0308, 0x0304, /* 0 bis 1 */ |
4 | 0x0302, 0x0301, 0x0401, 0x0402, 0x0404, 0x0408, 0x0608, 0x0604, 0x0602, 0x0601, /* 1 bis 2 */ |
5 | 0x0701, 0x0702, 0x0704, 0x0708, 0x0808, 0x0804, 0x0802, 0x0904, 0x0908, 0x0d04, /* 2 bis 3 */ |
6 | 0x0d02, 0x0d01, 0x0e01, 0x0e02, 0x0e04, 0x0e08, 0x1108, 0x1104, 0x1102, 0x1101, /* 3 bis 4 */ |
7 | 0x1201, 0x1202, 0x1204, 0x1308, 0x1304, 0x1302, 0x1301, 0x1401, 0x1402, 0x1404, /* 4 bis 5 */ |
8 | 0x1508, 0x1504, 0x1502, 0x1501, 0x1601, 0x1602, 0x1604, 0x1704, 0x1702, 0x1701 /* 5 bis 6 */ |
9 | |
10 | };
|
In der loop anpassen:
1 | lcd.setOneSegment((flow[i]&0xff00)>>8,(flow[i]&0x000f)<<4); |
Jetzt fehlt nur noch read-modify-write in der lib.
Read-Modify-Write ist implementiert, jetzt sieht es gut aus. :-) In der Kodierung war noch ein Zählfehler, (bis mehr als 10 zählen ist manchmal schwierig) so ist es richtig:
1 | static const int16_t flow[] = { |
2 | |
3 | 0x0108, 0x0104, 0x0102, 0x0101, 0x0201, 0x0202, 0x0204, 0x0208, 0x0308, 0x0304, /* 0 bis 1 */ |
4 | 0x0302, 0x0301, 0x0401, 0x0402, 0x0404, 0x0408, 0x0608, 0x0604, 0x0602, 0x0601, /* 1 bis 2 */ |
5 | 0x0701, 0x0702, 0x0704, 0x0708, 0x0808, 0x0804, 0x0802, 0x0904, 0x0908, 0x0d04, /* 2 bis 3 */ |
6 | 0x0d02, 0x0d01, 0x0e01, 0x0e02, 0x0e04, 0x0e08, 0x1008, 0x1004, 0x1002, 0x1001, /* 3 bis 4 */ |
7 | 0x1101, 0x1102, 0x1104, 0x1208, 0x1204, 0x1202, 0x1201, 0x1301, 0x1302, 0x1304, /* 4 bis 5 */ |
8 | 0x1408, 0x1404, 0x1402, 0x1401, 0x1501, 0x1502, 0x1504, 0x1604, 0x1602, 0x1601 /* 5 bis 6 */ |
9 | |
10 | };
|
google schrieb: > Pinbelegung.pdf Vielen Dank für die Mühe, die du dir damals schon mit dem Display gemacht hast. Da es mittlerweile nur noch 5ct kostet, habe ich mir auch mal 4 Stück hingelegt. Ich war erstaunt, das die LCD einzeln verpackt im Pappkarton kamen, bei 5ct ist das schon für den Karton ein Schnäppchen. Ebenso finde ich beachtenswert, wie die Jungs das R von Citroen in die Ziffer bekommen haben.
Hallo zusammen, ich würde gern dieses Display auch mal ausprobieren. Wo bekommt man die LCDHT1621_7Seg_4Com.h her? Viele Grüße Bruno
Bruno schrieb: > ich würde gern dieses Display auch mal ausprobieren. Dir ist klar, dass man dafür mehr braucht als einen Arduino und die Software? Das Display: https://www.pollin.de/p/lcd-modul-tian-ma-a2c00050374-121580 muss an einen HT1621B (ähnlich dieser Platine): https://stepp-ke.de/wp-content/uploads/2016/07/20151107_Bild2.jpg angeschlossen werden. Die gibt es nicht freiverkäuflich, die musst Du selber entwerfen und machen lassen. > Wo bekommt man die LCDHT1621_7Seg_4Com.h her? Die damals adaptierte Software finde ich nicht mehr. Selber anpassen ist angesagt. Ähnlicher Ersatz findet sich hier: http://arduinolearning.com/code/ht1621-6-digit-7-segment-display-example.php oder in anderer Form hier: https://www.14core.com/wiring-the-6-digit-7-segment-2-4-inch-ht1621-lcd-display-module-on-microcontroller/ https://www.arduino.cc/reference/en/libraries/ht1621/ https://github.com/kuwatay/Arduino/tree/master/SLCD_HT1621
> Dir ist klar, dass man dafür mehr braucht als einen Arduino und die > Software? Oh, das war mir beim Lesen nicht klar, danke für die Aufklärung! Ich dachte, der Controller wäre im Display. Viele Grüße Bruno
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.