Forum: Mikrocontroller und Digitale Elektronik Pollin Tian Ma A2C00050374


von google (Gast)


Angehängte Dateien:

Lesenswert?

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"

von google (Gast)


Angehängte Dateien:

Lesenswert?

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.

von google (Gast)


Lesenswert?

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.

von google (Gast)


Angehängte Dateien:

Lesenswert?

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
};

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Bruno (Gast)


Lesenswert?

Hallo zusammen,

ich würde gern dieses Display auch mal ausprobieren.
Wo bekommt man die LCDHT1621_7Seg_4Com.h her?

Viele Grüße
Bruno

von google (Gast)


Lesenswert?

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

von Bruno (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.