mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pollin Display HB10401


Autor: Mario L. (mlatzig)
Datum:
Angehängte Dateien:

Bewertung
8 lesenswert
nicht lesenswert
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):
a01: (NC)
a02: RS 
a03: EN
a04: Button DOWN
a05: Button RIGHT
a06: Button FUNC RIGHT
a07: D1
a08: D3
a09: D5
a10: D7
a11: VCC/+5V
a12: (NC)

b01: (NC)
b02: RW
b03: Button UP
b04: Button LEFT
b05: Button FUNC LEFT
b06: D0
b07: D2
b08: D4
b09: D6
b10: V0/Contrast (0-5V)
b11: VSS/GND 
b12: (NC)

Das LCD wird 2-zeilig initialisiert. Der DDRAM Addresbereich teilt sich, 
wie bei HD44780 üblich, folgendermaßen auf:
Zeile 1: 0x00-0x09
Zeile 2: 0x40-0x49
Zeile 3: 0x0A-0x13
Zeile 4: 0x4A-0x53

Die Buttons sind auf einer Seite gegen Masse gelegt. Man kann also mit 
Pull-Up diese Tasten direkt abfragen.

Autor: google (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, Du warst schneller, ;-) ein paar weitere Infos siehe unter:

http://www.stepp-ke.de/category/basteleien/

Autor: Mario L. (mlatzig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Timm T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mario L. (mlatzig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mario L. (mlatzig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: M. G. (looking)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mario L. (mlatzig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
main:
    ; Init Control Pins
    in pdat,PORTD
    cbr pdat,PIND_RS|PIND_RW|PIND_EN|PIND_TEST
    out PORTD,pdat
    
    in a,DDRD
    sbr a,PIND_RS|PIND_RW|PIND_EN|PIND_TEST
    out DDRD,a

    ; Init Data Pins
    clr pdat
    out PORTB,pdat
    ldi a,0xF0
    out DDRB,a

    rcall util_delay_1ms

    ldi a,0x03              ; Reset LCD (Instruction Nibble is $3), Set 3 Times
    rcall set_nibble
    rcall util_delay_10ms
    ldi a,0x03
    rcall set_nibble
    rcall util_delay_10ms
    ldi a,0x03
    rcall set_nibble
    rcall util_delay_10ms

    ldi a,0x02              ; try to enable 4bit mode (instruction nibble is $2)  
    rcall set_nibble
    rcall util_delay_10ms

    ldi a,0x28
    rcall set_byte
    rcall util_delay_1ms
    ldi a,0x14
    rcall set_byte
    rcall util_delay_1ms
    ldi a,0x06
    rcall set_byte
    rcall util_delay_1ms
    ; ... and so on ...
main_end:
    rjmp main_end
    
set_byte:
    push a

    swap a
    rcall set_nibble
    swap a
    rcall set_nibble

    pop a
    ret

set_nibble:
    push a
    push pdat
    
    andi a,0x0F
    swap a
    out PORTB,a
    rcall util_delay_10us
    in pdat,PORTD
    sbr pdat,PIND_EN|PIND_TEST
    out PORTD,pdat
    rcall util_delay_1ms
    cbr pdat,PIND_EN|PIND_TEST
    out PORTD,pdat
    rcall util_delay_1ms

    pop pdat
    pop a
    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.

Autor: M. G. (looking)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo M.G.,
Magst du dein C Code hier posten?
Ich und andere würden sich freuen. :)

Viele Grüße, Tom

Autor: Christoph S. (gizmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

: Bearbeitet durch User
Autor: Michael K. (aemkai)
Datum:
Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
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.

Autor: Mario L. (mlatzig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Michael K. (aemkai)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Ludwich F. (ludwich)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Harald S. (deharry)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Harald S. (deharry)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.