Wie funktioniert das HD44780 LCD auf niedrigem Niveau?

Ich frage nicht speziell nach einem Treiber, sondern wie genau es funktioniert.

Ich sah die 2 Chips nach, die darin waren. HD44780A00 und HD66100F um genau zu sein. Ich nehme an, einer ist ein Anzeigetreiber? Und der andere ist ein Segmenttreiber?

Ich schätze, ich möchte lernen, wie zum Beispiel ein Pixel oder ein Zeichen auf den Bildschirm gebracht wird.

Ich weiß, wie man es mit Bibliotheken und so verwendet. Das ist einfach (folgen Sie einfach den Anweisungen). Aber ich will verstehen, was los ist.

Ich habe mir die Anleitung hier angesehen . Aber gilt das nur für HD44780A00 oder HD661001F? Ich denke, ich bin verwirrt darüber, was dieser Befehlssatz ist oder wofür er ist. Ich denke, was ich frage, ist: Was genau ist der Prozess zum Senden eines einzelnen Pixels und wie genau funktioniert das?

Es könnte zu kompliziert sein und wenn ja, ist das cool. Ich versuche nur herauszufinden, wie es auf der niedrigen Ebene funktioniert.

Antworten (3)

Der HD44780 ist ein Zeichen -LCD-Controller, was bedeutet, dass Sie ASCII-Codes für den Text, den Sie anzeigen möchten, auf das LCD schreiben. Wer Pixel einzeln ansteuern möchte, muss zu einem Grafik- LCD greifen.

Der HD44780 bietet jedoch die Möglichkeit, einige begrenzte textbasierte Grafiken anzuzeigen; Sie können 8 benutzerdefinierte Zeichen definieren , aber bei 5 x 7 Pixel pro Grafik können Sie so etwas wie ein Bild nicht anzeigen.

Der HD66100F ist ein 80-Segment-LCD-Treiber für zB eine 10-stellige 7-Segment-Anzeige.

LCD ist im Grunde eine Art Pixelanzeige. HD66100F ist wie gesagt ein 80-Segment-Treiber. HD44780 wandelt Ihre ASCII-Code-Informationen in sehr kurzer Zeit in "Was" & "Wo" um. Diese Informationen werden dann an HD66100F weitergeleitet, um zu entscheiden, "wie" das angezeigt wird.

Ein typischer Zeichen-LCD-Controller ist dafür ausgelegt, ein LCD mit einer Breite von bis zu 40 Zeichen und einer Höhe von zwei Zeilen (eine Matrix von 200 · 16 Punkten) zu steuern. Die direkte Verdrahtung eines solchen Controllers mit LCD-Glas würde jedoch erfordern, dass zusätzlich zu den Pins, die für Strom, Prozessorverbindung usw. benötigt werden, 216 Pins mit dem Glas verbunden sind. So viele Pins auf einem einzigen IC-Gehäuse zu haben, kann etwas schwierig sein . Folglich ist es üblich, den Matrixcontroller die 16 Reihendrähte und die ersten 40 Spaltendrähte betreiben zu lassen und – für Displays, die größer sind – Daten sequentiell an zusätzliche Segmentcontrollerchips zu liefern, von denen jeder einen weiteren hinzufügt 40 (oder vielleicht 80) Säulendrähte.

Es ist interessant festzustellen, dass 16 x 1 eine sehr verbreitete Displaygröße ist und 16 x 1-Displays oft als 8 x 2-Displays verdrahtet sind, aber die untere Reihe physisch auf der rechten Seite platziert ist (wodurch der Controller-Chip ohne zusätzlichen Treiber verwendet werden kann). ). Vierzeilige Displays mit bis zu 20 Zeichen Breite werden als zweizeilige Displays verdrahtet, wobei die rechte Seite unter der linken Seite gestapelt ist. Vierzeilige Displays mit 24-40 Zeichen pro Zeile werden in der Regel als zwei unabhängige zweizeilige Displays übereinander verdrahtet.

Ok, also, wenn es die Zeilen/Spalten macht ... wie gefällt es, welches Pixel in jeder Zeile/Spalte zu „wählen“?
Die Matrix ist oft anders angeordnet, sodass Sie viel weniger Pins benötigen, z. B. 100 x 16 x 2 (100 + 32 Pins) oder 50 x 16 x 4 (50 + 64 Pins, was das niedrigste ist, was Sie erreichen können).
@stevenvh: Jeder Display-Controller, den ich je gesehen habe und der den HD44780 nachgeahmt hat, hatte genau 16 Zeilendrähte, und ich würde schätzen, dass solche Displays über 99% des Marktes für Nur-Text-Displays ausmachen. Während man die Anzahl der für ein 20x4-Display benötigten Spaltentreiber durch 32:1- oder sogar 50:1- oder 64:1-Multiplexing reduzieren könnte, müsste man dafür etwas anderes als ein 44780-basiertes Display verwenden, da dieser Chip hat keine Möglichkeit für Multiplexing über 16:1 hinaus.
@Sauron: Die Intensität jedes Pixels ist eine Funktion des Durchschnitts des Quadrats der Spannung zwischen Zeile und Spalte, mit der Anforderung, dass die durchschnittliche Gleichspannung an jedem Pixel ungefähr Null sein muss (was bedeutet, dass positive und negative Spannungen durchschnittlich sein müssen aus). Für eine 4:1-Anzeige wird dies am besten dadurch erreicht, dass die Zeilen einzeln zu einer Schiene gefahren werden, während inaktive Zeilen 1/3 des Weges zur anderen Schiene gefahren werden. Die Säulen, die in dieser Reihe aktiv sein sollten, werden vollständig zur anderen Schiene gefahren, während inaktive zu 2/3 des Weges gefahren werden. Die Schienen wechseln die Polarität bei jedem Frame ...
...um jede durchschnittliche Gleichspannung zu vermeiden. Wenn die Dinge auf diese Weise angesteuert werden, erhalten aktive Segmente in der aktiven Reihe die volle Spannung und damit die volle Aktivierung, während inaktive Segmente in der aktiven Reihe 1/3 Spannung und somit 1/9 Aktivierung erhalten. Segmente in der inaktiven Reihe können +1/3 oder -1/3 Spannung über sich haben, je nachdem, ob sie in der aktiven Reihe erregt sind, aber in jedem Fall werden sie zu 1/9 aktiviert. Da sich jedes Segment 1/4 der Zeit in der aktiven Reihe und 3/4 der Zeit in einer inaktiven Reihe befindet, ...
Aber der HD44780 hat nur 80 Pins, nicht 216. Das Datenblatt sagt 16 gemeinsame x 40 Segmente. Also 16 x 200 geht auch nicht.
...aktive Segmente erhalten 1/4 der Zeit eine 9/9-Aktivierung und 1/9-Aktivierung die anderen 3/4, also insgesamt 12/36 (1/3). Inaktive Segmente erhalten kontinuierlich 1/9 Aktivierung. Das mittlere Quadrat der Aktivierungsspannung ist somit für die aktiven Segmente dreimal so groß wie für die inaktiven. Bei Displays mit mehr als vier Reihen nimmt die optimale Aktivierungsstufe für inaktive Reihen ab; Da die Spannung an inaktiven Spalten für aktive Zeilen die volle Spannung minus dem Doppelten der Spannung der inaktiven Zeilen ist, wird diese Spannung ansteigen.
@stevenvh: Wie ich in meiner Antwort sagte, ist der HD44780 so konzipiert, dass er Daten an externe Treiberchips weiterleitet, um bis zu 160 zusätzliche Spalten (Segmentdrähte) zu steuern. Es ist nicht dafür ausgelegt, zusätzliche Zeilen (gemeinsame Drähte) zu steuern.