Hallo,
ich habe während meines verlängerten Osterurlaubes mit ein paar LCDs aus
meiner Krabbelkiste gespielt. Viele Displays sind von Pollin und haben
keine Datenblätter.
Bei Pollin gibt es u.a. das Display HB10401 (Bestellnr. 121 148) für
derzeit 1,75€:
http://www.pollin.de/shop/dt/MTU4ODc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_HB10401_4x10.html
Da hier die Vermutung nahe lag, dass es HD44780 kompatibel ist, hatte
ich große Hoffnung, dass sich die Pinbelegung durch herumprobieren
herausfinden lässt. Das Ergbnis möchte ich euch nicht vorenthalten, da
ich dennoch mehrere Stunden herumprobieren musste:
Stiftleiste 2x12 Pins (davon nur 20 Pins verwendet):
1
a01: (NC)
2
a02: RS
3
a03: EN
4
a04: Button DOWN
5
a05: Button RIGHT
6
a06: Button FUNC RIGHT
7
a07: D1
8
a08: D3
9
a09: D5
10
a10: D7
11
a11: VCC/+5V
12
a12: (NC)
13
14
b01: (NC)
15
b02: RW
16
b03: Button UP
17
b04: Button LEFT
18
b05: Button FUNC LEFT
19
b06: D0
20
b07: D2
21
b08: D4
22
b09: D6
23
b10: V0/Contrast (0-5V)
24
b11: VSS/GND
25
b12: (NC)
Das LCD wird 2-zeilig initialisiert. Der DDRAM Addresbereich teilt sich,
wie bei HD44780 üblich, folgendermaßen auf:
1
Zeile 1: 0x00-0x09
2
Zeile 2: 0x40-0x49
3
Zeile 3: 0x0A-0x13
4
Zeile 4: 0x4A-0x53
Die Buttons sind auf einer Seite gegen Masse gelegt. Man kann also mit
Pull-Up diese Tasten direkt abfragen.
google schrieb:> Ok, Du warst schneller, ;-)
Einmal wollte ich schneller wie der Meister der Display-Analysen sein
;-)
OT: Mein Traum wäre es, den WU2911A zum Laufen bekommen. Davon habe ich
fast 10 Stück hier rumliegen. Auch wenn sich dieses LCD beim
Herumprobieren (zufälliges Ansteuern) wie ein HD44780 (Custorblinken,
2-/4-Zeilen Modus etc.) verhalten hatte, scheint die Belegung und
Ansteuerung ja anders zu sein.
OT2: Sowetwas wie dein Adapter für die grüne Pest in deinem Blog werde
ich mir auch mal fertigen lassen, von den VQE21 habe ich auch noch mind.
50 Stück im Beutel liegen, evtl. auch mit dem STM8S105S4T6C zur
Ansteuerung und als SPI Slave, der ja letztes Jahr ein richtiges
Schnäppchen war, wo ich ebenfalls zugeschlagen habe.
Mario L. schrieb:> ich habe während meines verlängerten Osterurlaubes mit ein paar LCDs aus> meiner Krabbelkiste gespielt.
Hast Du das Display noch im Versuchsaufbau? Kannst Du mal bitte testen,
ob das HB10401 auch mit 3.3V Versorgungsspannung zufrieden ist, notfalls
mit einer negativen Vo?
Und könntest Du bei der Gelegenheit mal den ungefähren Stromverbrauch
ermitteln? Ich würde es gern in einer LiPo-versorgten 3.3V Anwendung
einsetzen.
Den Versuchsaufbau habe ich nicht mehr, muss ich erst alles wieder
aufbauen, vielleicht in den nächsten Tagen, da diese Info mich auch
interessiert. Aus dem Kopf kann ich aber schon sagen, dass negative
Kontrastspannung nötig sein wird. Bei Vcc=5V war diese schon nahe bei
0V.
Ja, das Display und der Controller funktionieren auch mit negativer
Kontrastspannung bei 3,3V.
Bei VCC=5V:
Hier kann V0 offen bleiben, dann stellen sich bei mir etwa dort 0,5V
(gegen Masse) ein. Es ist also kein Poti zur Kontrasteinstellung nötig.
Strom messe ich bei offenem V0 etwa 1,2mA bei stehender Anzeige
und etwa 1,4mA bei dynamischen Inhalt.
Bei VCC=3,3V:
Hier muss V0 etwa -1,2V (gegen Masse) sein. Strom messe ich so
1,0-1,1mA.
Hallo,
vielen Dank für die Infos zum LCD.
Ich habe versucht, das LCD per Arduino (LiquidCrystal Bibliothek)
anzusteuern, leider ohne Erfolg (weder 4-bit noch 8-bit Mode). Zeile 1
und Zeile 3 zeigen jeweils 10 schwarze Balken an. Es sieht so aus, als
klappe die Initialisierung nicht.
Hast du das LCD im 4-bit oder 8-bit Modus angesteuert?
Anscheinend unterscheidet sich bei manchen HD44780-kompatiblen LCDs die
Initialisierungssequenz vom Original.
Könntest du bitte deinen Code bzw. die Initialisierungssequenz posten?
Danke.
Ich habe in AVR Assembler getestet, der wesentliche Teil der 4-Bit
Initialisierung davon siehe unten. Die Initialisierung erfolgt mit 3 x
Nibble $3 und einmal Nibble $2 mit einigem Delay dazwischen.
Man mag mir hier den Wischiwaschi-Code verzeihen, da ich ja nur einfach
das Ding mal testen wollte:
1
main:
2
; Init Control Pins
3
in pdat,PORTD
4
cbr pdat,PIND_RS|PIND_RW|PIND_EN|PIND_TEST
5
out PORTD,pdat
6
7
in a,DDRD
8
sbr a,PIND_RS|PIND_RW|PIND_EN|PIND_TEST
9
out DDRD,a
10
11
; Init Data Pins
12
clr pdat
13
out PORTB,pdat
14
ldi a,0xF0
15
out DDRB,a
16
17
rcall util_delay_1ms
18
19
ldi a,0x03 ; Reset LCD (Instruction Nibble is $3), Set 3 Times
20
rcall set_nibble
21
rcall util_delay_10ms
22
ldi a,0x03
23
rcall set_nibble
24
rcall util_delay_10ms
25
ldi a,0x03
26
rcall set_nibble
27
rcall util_delay_10ms
28
29
ldi a,0x02 ; try to enable 4bit mode (instruction nibble is $2)
30
rcall set_nibble
31
rcall util_delay_10ms
32
33
ldi a,0x28
34
rcall set_byte
35
rcall util_delay_1ms
36
ldi a,0x14
37
rcall set_byte
38
rcall util_delay_1ms
39
ldi a,0x06
40
rcall set_byte
41
rcall util_delay_1ms
42
; ... and so on ...
43
main_end:
44
rjmp main_end
45
46
set_byte:
47
push a
48
49
swap a
50
rcall set_nibble
51
swap a
52
rcall set_nibble
53
54
pop a
55
ret
56
57
set_nibble:
58
push a
59
push pdat
60
61
andi a,0x0F
62
swap a
63
out PORTB,a
64
rcall util_delay_10us
65
in pdat,PORTD
66
sbr pdat,PIND_EN|PIND_TEST
67
out PORTD,pdat
68
rcall util_delay_1ms
69
cbr pdat,PIND_EN|PIND_TEST
70
out PORTD,pdat
71
rcall util_delay_1ms
72
73
pop pdat
74
pop a
75
ret
Kann auch nicht ausschliessen, dass da ein Verwechsler in der
Pinbelegung ist, da bei meinem Testadapter für das LCD die Anschlüsse
gekreuzt waren.
Ich hab es jetzt auch mit dem Arduino im 4-bit Mode hingekriegt. Mein
Fehler war, dass ich die 4 Datenleitungen aus Versehen seitenverkehrt
angeschlossen hatte. Kaum macht man's richtig, schon geht's ... ;-)
Danke für die ganzen Infos zum LCD.
Hi,
erstmal vielen Dank für die Infos.
Ich will das Display für ein kleines Projekt verwenden frage mich gerade
was das für eine Stiftleiste ist.
Wenns dafür Buchsen gibt könnte ich mir das Löten sparen.
Allerdings messe ich etwa 1.1mm zwischen den Kontakten und Stiftleisten
mit 1.1mm Pitch finde ich absolut garkeine..
Vielleicht weiß von euch ja jemand was das für eine Stiftleiste ist.
Bild von Pollin http://cdn.pollin.de/article/xtrabig/XB121148.JPG
Hallo,
das Display hat einen etwas speziellen Zeichensatz.
Hab das ganze mal ausgelesen, siehe Anhang, falls es jemand benötigt.
Die Stiftleise ist übrigens eine mit Rastermaß 1,27.
Der Zeichensatz ist wohl ein customisierter Satz für den "Siemens Logo",
wo dieser wohl für verwendet wurde. Daher eigenet sich das Display wohl
sehr gut für technische Darstellungen (natürlich mit den begrenzten
Möglichkeiten der Textdarstellung).
Ja, die Vermutung hatte ich auch. Aber selbst mit diesem Wissen spuckte
Google bei mir nichts zum Zeichensatz aus. Dafür spricht vor allem die
Darstellung von Logikpegeln und Flanken.
HB10401 und RaspberryPi
Hat hier jemand das HB10401 an einen Raspi am laufen?
Ich habe die Adaufruit Library für das HD47780 Hitachidisplay Adafruit
CharLCD genutzt.
Die Zeile 1 und 2 Adressen wurden angepasst.
Zeile 1: 0x00-0x09
Zeile 2: 0x40-0x49
Zeile 3: 0x0A-0x13
Zeile 4: 0x4A-0x53
Leider schaffe ich es nur, dass der Cursor als line sichtbar wird und
dann als Klotz blinkt (erstmal gut).
Die Textausgabe klappt nicht (Das Testprogramm schreibt Text und lässt
diesen duchscrollen). Mit einem normalen HD47780 klappt das.
Hat jemand einen Tipp wie ich das hinbekomme?
Ich brauche die vier Zeilen für meine Wetterstation :-)
Gruß Ludwich
Hallo Leute,
darf ich den Thread mal wieder ausgraben?
Seid ihr inzwischen weiter gekommen mit dem Display?
Ich verwende das Teil mit Erfolg in einer Lüftersteuerung.
Basiert auf einem Arduino Nano V3 den ich über einen I2C-Converter an
das Display angeflanscht habe.
Eure Infos haben mir dabei sehr geholfen!
Der Trick bei der Ansteuerung war, in der "NewliquidCrystal" LIB von
Francisco Malpartida einen weiteren Datensatz im setCursor()-Teil
anzulegen, der die Startpositionen im Display-RAM auf die korrekten
Positionen übersetzt.
Andere Steuercommandos, natürlich auch die normale Textausgabe,
funktionieren einwandfrei.
Jetzt will ich den Cursor dazu verwenden um in einem Menü Werte zu
selektieren und diese dann per Tasten zu verändern.
Leider wird der Cursor (egal ob blinkender Block oder Underline) immer
nur kurz an der vorgesehenen Stelle angezeigt und hängt danach
unverrückbar in der linken unteren Ecke :(
Liegt das am Controller des Display oder hat meine Menüsteuerung hier
eine Macke?
Danke!
Gruß, Harald
Ich habe noch ein bisschen mit der verwendeten Menü-Lib rumgespielt und
festgestellt, dass das Problem von der LIB kommen muss.
Die Lib stellt neben der Darstellung der Menü-Struktur auch einen
Mechanismus zur Verfügung, der die konkurierende Abarbeitung von
quasiparallelen Tasks erlaubt.
Offenbar funkt mir eine der anderen Threads dazwischen, indem dort (wo
auch immer...) die Cursorposition immer hart gesetzt wird, ohne den
vorhergehenden Status zu retten und wiederherzustellen.
Gruß, Harald
Mario L. schrieb:> Bei Pollin gibt es u.a. das Display HB10401 (Bestellnr. 121 148) für> derzeit 1,75€:>> https://www.pollin.de/p/lcd-modul-hb10401-4x10-121148>> Stiftleiste 2x12 Pins (davon nur 20 Pins verwendet):
Vielen Dank für die Veröffentlichung der Anschlußbelegung!
Zum Ausgleich wird hier nun eine Erweiterungsplatine vorgestellt, mit
der ein einfacher Anschluß dieses Displays ermöglicht wird und
gleichzeitig die Tasten über den Multiplexer CD4051 ausgelesen werden
können.
Das Ziel war es eine kleine Adapter-Platine zu schaffen, die eine
kompatible Anschlußbelegung zu einem Standard 16X2 LCD-Display zur
Verfügung stellt.
(Damit das Display korrekt ausgerichtet ist, ragt die Platine seitlich
heraus. Eine weitere Variante die unter das Display geklappt wird ist in
Planung.)
Darüber hinaus ist eine optionale Ansteuerung über I2C mit nur 4
Anschlußdrähten mit einem PCF8574 möglich.
Eine Library für Arduino wurde angepaßt und Funktionen zum Auslesen der
Tasten über I2C wurden hinzugefügt.
Wenn jemand Interesse an solchen Platinen hat, gibt es noch eine
bestimmte Anzahl die übrig sind und erworben werden können:
* 5 Stück für 2,50 Euronen
* Versand für 1,- Eurone als Standardbrief
* Optional CD4051 passend in SOP16 für 0,24 Euronen pro Stück
(PCF8574 sind leider keine überzählig vorhanden.)
Einfach hier über Email Kontakt aufnehmen.
Nachtrag:
=========
Ein passende Buchse war für das Display nicht aufzufinden.
Daher wird der Kunstoff-Teil von dem Stecker der Display-Platine einfach
vorsichtig abgezogen und dann direkt die Pinne in die Bohrungen der
Platine eingeführt und verlötet.
In der Schaltung ist ein optionaler Pegelwandler für 5V <-> 3,3V für I2C
vorgesehen.
Es gibt inzwischen nun auch eine Variante mit gespiegeltem
Anschluss-Stecker, die unter die Display-Platine geklappt ist.
In dem Bild etwas unschön aber sehr stabil verklebt.
So ergibt sich ein schönes kompaktes I2C-Display bei Bedarf mit
Tastenbedienung.
Dafür existiert ein gedruckter Rahmen in den Ersatz-Gummi-Tasten für
eine Play-Station eingelegt werden können.