Wie steuert ein Mikrocontroller ein LCD an?

Ich bin kein Profi, also suche ich nach einer einfachen Antwort auf diese Frage.

Wenn Sie eine LED mit einem Mikrocontroller einschalten möchten, müssen Sie der LED einen Pin auf dem Mikrocontroller zuweisen. Immer wenn der Mikrocontroller die Pin-Spannung auf hoch setzt, schaltet sich die LED ein.

Ich gehe davon aus, dass Displays nach dem gleichen Prinzip funktionieren sollten, da sie für jedes Pixel eine Art LED haben. Das Problem ist, dass wir für einen kleinen 320x240-Bildschirm 76800 Mikrocontroller-Pins benötigen , wenn es auf die gleiche Weise gemacht wird, wie wir eine LED einschalten . Es scheint, dass die Verfahren irgendwie anders sein sollten. Wie also sagt ein einfacher IC auf einem LCD jedem Pixel, dass er sich einschalten soll?!

Um Verwirrung zu vermeiden, sollte ich darauf hinweisen, dass ich mit der Erwähnung des Mikrocontrollers oben den Chip auf dem LCD-Modul selbst meine.

Ein LCD-Pixel ist KEINE LED, es ist ein Flüssigkristall (Google it). Es gibt Displays (OLED), die auf einer LED-Struktur basieren. In beiden Fällen multiplext (google it) der Display-Controller die Signale, sodass weniger Pins erforderlich sind.
" ... für einen kleinen 320x240-Bildschirm benötigen wir 76800 Mikrocontroller-Pins. " Nein. Mit Multiplexing können wir jedes Pixel adressieren, indem wir seine Zeile und Spalte einschalten. Dies würde 320 + 240 = 560 Pins benötigen.
Ja, der IC als Teil des Panels mit einer Anzahl von X * 3 + Y-Pins, * 3 wegen RGB. Google nach "ili lcd controller" da findest du etliche Datenblätter zu diversen ILI lcd controllern und schau dir mal die pinbelegung an.

Antworten (4)

Auf einer bestimmten Ebene hat ein 320x240-Display normalerweise 320 Zeilentreiber und 240 Spaltentreiber. Diese Treiber werden fast immer von Chips bereitgestellt, die in die Displays integriert sind (oft auf Flex-PCBs an zwei Rändern des Displays), entweder mit einer seriellen Schnittstelle, die die Daten für jeweils ein Pixel liefert, oder einem intelligenten Controller mit RAM, um die Inhalte zu speichern der Anzeige.

Die tatsächliche Schnittstelle mit einem Mikrocontroller reicht von 2 Pins für i2c, 3-4 Pins für SPI, 6-13 Pins für eine High-Level-Parallelschnittstelle bis zu etwa 30 Pins für eine Pixel-für-Pixel-Parallelschnittstelle.

OLED-Displays sind im Grunde gleich, obwohl die Schnittstelle zwischen den Treiberchips und dem Display unterschiedlich ist (es wird jedoch die gleiche Anzahl von Treibern benötigt).

Die LCDs haben eine große Anzahl von Pixeln, wie Sie es richtig erraten haben. Aber jedes Pixel wird nicht direkt vom Mikrocontroller-Pin gesteuert, da es unpraktisch ist, was Sie richtig erraten haben.

Um das Design praktisch zu gestalten, wird die Aufgabe, LCD-Pixel mit einem Mikrocontroller anzusteuern, in zwei Schritte unterteilt.

Für den ersten Schritt gibt es einen speziellen Mikrocontroller, der jedes Pixel des LCD ansteuert und sich um die Aktualisierungsraten und Takte und die Pixelmatrix, die Adresszuordnung und all die erforderlichen komplexen Dinge kümmert, um das LCD richtig anzusteuern.

Während der zweite Schritt darin besteht, dass Spezial-Mikrocontroller in der Lage sind, Befehle und Informationen von unserem Allzweck-Mikrocontroller entgegenzunehmen. Unsere Aufgabe ist es also, den Befehl und die Informationen, die auf dem LCD angezeigt werden sollen, an die Spezial-MCU zu senden, indem das vordefinierte Protokoll der Spezial-MCU befolgt wird. Jetzt wurden die Kopfschmerzen beim Ansteuern jedes Pixels von der Allzweck-MCU reduziert.

Meistens befindet sich diese spezielle MCU bereits während der Herstellung im LCD.

Hoffe, das wird helfen.

Unabhängig davon, welcher spezielle Mikrocontroller die Pixelintensität im LCD-Bildschirm steuert, steuert er jeweils nur ein Pixel. Und es aktualisiert jedes Pixel so schnell horizontal (bis 320 Pixel), Zeile für Zeile (bis zu 240 Zeilen). Der gesamte Frame wird mit einer typischen Bildwiederholfrequenz von 60 Hz aktualisiert. Dies geschieht so schnell, dass uns die Persistenz unseres Sehvermögens (1/16 Sekunde oder 16 Hz) die Vorstellung vermittelt, dass jedes Pixel zu einem einzigen Zeitpunkt vom Mikrocontroller gesteuert wird.

In Bezug auf Pixeladressen - Um 320 Zeilen- und 240 Spaltenadressen zu decodieren, benötigen Sie nur 9 Pins bzw. 8 Pins.

Es gibt drei allgemeine Arten von LCDs: solche mit blankem Glas, solche mit eingebautem Treiber und solche mit eingebautem Controller. Ein LCD mit blankem Glas kann gut mit Mikroprozessor-Pins auf Logikebene angesteuert werden, wenn es nicht zu viele Segmente hat. Eine nicht gemultiplexte ("statische") Anzeige mit N Segmenten erfordert N+1 Pins. Eine 3:1 Multiplex-Anzeige mit 3N Segmenten erfordert N+3 Pins. Um einen guten Kontrast mit mehr als 3:1 Multiplex zu erzielen, ist etwas anderes als Pins mit Logikpegel erforderlich. Das Fahren eines statischen Displays erfordert das Umdrehen des Zustands aller Pins etwa 30-100 Mal/Sekunde, außer wenn das Display vollständig ausgeschaltet ist. Das Ansteuern eines Multiplex-Displays erfordert das Ändern des Zustands der Pins etwa 160+ Mal/Sekunde (niedrigere Frequenzen beginnen zu flackern).

Ein LCD-Treiber enthält Logik, um eine Anzeige mit einer kleinen Anzahl von Pins zu verbinden, erfordert jedoch im Allgemeinen, dass etwas den Zustand aller Segmente kontinuierlich speist. Ein 320 x 240 LCD-Panel, das ich vor einigen Jahren verwendet habe, hatte vier Datenpins, eine Punktuhr, eine Zeilenuhr und eine Rahmenuhr. Ungefähr 30.000 Mal/Sekunde ist es notwendig, 80 Gruppen von vier Pixeln zu füttern und dann den Zeilentakt zu treffen. Das Timing der Pixel innerhalb jeder Zeile spielt keine Rolle, vorausgesetzt, alle 80 Gruppen werden geladen, bevor der Zeilentakt trifft, aber die Zeilen müssen mit einer konsistenten Rate getroffen werden. Es ist notwendig, den Frame-Strobe mit einer konstanten Rate zu treffen, die ungefähr einmal alle 240 Zeilen sein sollte, aber etwas langsamer sein könnte (in meinem Projekt habe ich glaube ich 250 Zeilen verwendet, um meiner Firmware Zeit zu geben, DMA-Register neu zu laden das nächste Bild).

Ein LCD-Controller enthält genügend internen RAM, um alle Segmente oder Pixel auf dem Display zu halten und sie ohne Eingriff von außen kontinuierlich anzuzeigen. Controller sind einfacher zu handhaben als Treiber, aber wenn ein Mikrocontroller schnell genug ist, um mit einem LCD-Treiber zu arbeiten, kann er häufig schnellere Anzeigeaktualisierungen durchführen, als dies mit einem Controller möglich wäre. Ein typischer Grafikcontroller erwartet, dass eine CPU einen Befehl sendet, der etwas bedeutet wie "Mach dich bereit, Pixel bei Koordinate 143.219 zu akzeptieren, in der zunehmenden Y-Richtung bis 150 zu zählen und dann mit zunehmenden X-Koordinaten umzubrechen", und folgt diesem Befehl dann mit a geeigneter Haufen von Pixeldaten. Herkömmliche RGB-Grafikchips können über eine serielle Schnittstelle mit vier Drähten verbunden werden, erfordern jedoch das Senden von sechzehn Datenbits für jedes einzelne Pixel.