LCD Anzeige Modul (HD44780 kompatible)
Kurzbeschreibung: | |||
Da für viele Mikrocontrollerprojekte eine Ausgabe via LCD-Anzeige sehr sinvoll ist, dient dieses LCD-Modul dazu einfach, und ohne großem Codeaufwand ein LCD-Modul an die verschiedenen AVR-Prozessoren anzubinden. |
|||
Hardware |
|||
Schaltplan: | |||
Stückliste: |
- LCD-Modul (z.B. 2x16 Display von http://www.myavr.de/shop/article.php?artDataID=96 für 8,90 EUR) |
||
Aufbau: | Die 16 polige Stifleiste von der Leiterbahnunterseite auf die LCD-Display Leiterplatte einlöten. Ansonsten ist nur darauf zu achten, dass der Wannenstecker nicht unter dem Display-Bereich plaziert wird. Der gesamte Aufbau erfolgt auf einer Lochrasterplatine. Kleiner Tipp am Rande, das Display mit der Stiftleiste nicht direkt in die Lochraster-Leiterplatte einlöten, sondern erst eine 16 polige Buchsenleiste auf die Lochrasterleiterplatte einlöten, in die dann das LCD-Modul gesteckt wird. Somit kann das LCD-Modul problemlos gegen andere LCD-Module getauscht werden. Bitte darauf Achten, dass die eingesetzten LCD-Module Pinkompatible mit der unten aufgeführten Pin-Belegung vom LCD-Modul ist. Eventuell muss man nur ein Adapterkabel dazwischen hängen. Getestet wurde die Schaltung von mir mit dem 2x16 Display von myavr und einem 2x24 Display. |
||
Inbetriebnahme: |
1) Grundsätzlicher Funktionstest: |
||
LCD-Display: | Die meisten kompatible HD44780 LCD-Module verwenden eine einreihige 16 polige Stiftleiste. Sollte bei Ihnen ein 2reihige Stifleiste vorhanden sein, so müssen Sie ein Adapterkabel von 2x8 auf 1x16 erstellen damit Sie Ihr Display verwenden können. Hierbei müssen Sie auf die Belegung Ihrer Pins achten, Da zum Teil die Signale der Pins nicht identisch sind. (z.B. muss Pin 1 von Ihrem LCD nicht immer auch der Pin 1 von meinem Display sein) Pin-Belegung vom Display (1x16 Anschlussleiste) und Wannstecker zur Zielhardware |
LCD- Anschluss |
LCD Display Modul Pins |
Bechreibung | |
9 | 1 - Vss | Masseanschluss für das LCD-Modul | |
10 | 2 - Vcc | +5V Spannungsversorgung | |
- | 3 - Vo | Eingang zur Kontrasteinstellung des LCD-Displays | |
1 | 4 - RS | Register Select: 0 => Zugriff auf Instructionregister (schreiben) Zugriff auf Busy-Flag und Adress counter (lesen) 1 => Zugriff auf Data Register (lesen und schreiben) |
|
2 | 5 - R/W |
Eingang Read / Write Signal |
|
3 | 6 - E | Eingang Data Read / Write Enable Signal positiver Impuls (mindestens 250ns) über nimmt die Daten |
|
- | 7 - DB0 | Ein/Ausgang Datenbit 0 - wird im 4-Bit Modus nicht benötigt und liegt fest auf GND | |
- | 8 - DB1 | Ein/Ausgang Datenbit 1 - wird im 4-Bit Modus nicht benötigt und liegt fest auf GND | |
- | 9 - DB2 | Ein/Ausgang Datenbit 2 - wird im 4-Bit Modus nicht benötigt und liegt fest auf GND | |
- | 10- DB3 | Ein/Ausgang Datenbit 3 - wird im 4-Bit Modus nicht benötigt und liegt fest auf GND | |
5 | 11 - DB4 | Ein/Ausgang Datenbit 4 | |
6 | 12 - DB5 | Ein/Ausgang Datenbit 5 | |
7 | 13 - DB6 | Ein/Ausgang Datenbit 6 | |
8 | 14 - DB7 | Ein/Ausgang Datenbit 7 / kann auch als Busy-Flag Verwendung finden | |
- | 15 - LED-A | Hintergrundbeleuchtung Anode - LCD-Display mit internen LED Vorwiderstand | |
- | 16 - LED-K | Hintergrundbeleuchtung Kathode | |
4 | Transistor Licht | Steuersignal für den Transistor, der dann + 5V auf den LED-Anode Eingang für die Hintergrundbeleuchtung durchschaltet. Mittels PWM-Signal an diesem Eingang kann die Hintergrundbeleuchtung gedimmt werden. |
Bilder: | |||
Software |
|||
LCD-Modul: |
Für den C-Compiler von Codevision AVR habe ich ein LCD-Modul erstellt. Folgende Funktionen werden vom Modul zur Verfügung gestellt: Legendlich in der Headerdatei von lcd.h werden entsprechend der Hardwaregegebenheiten die entsprechenden Pins zugeordnet. Grundsätzlich kann man das LCD in 2 Port-Modi betreiben: 1) FULL-Mode: alle LCD-Pins liegen an einem Port ==> dies ist zu empfehlen, da dies Flash-Speicher spart 2) HALF-Mode: die Datenbits und Kontrollbits liegen an unterschiedlichen Ports (z.B. alle Datenbits am PORTD und alle Kontrollbits am PORTB. Dadurch ist man beim Hardwaredesign flexibler, dies kostet aber ca. 112 Bytes mehr vom Flashspeicher. Für den HALF-Mode muss dann folgendes gesetzt werden: #define LCD_PORT_MODE_FULL 0 // LCD Pins liegen alle komplett an einem Port #define LCD_PORT_MODE_HALF 1 // Datenbits und Kontrollbits liegen auf unterschiedlichen Ports Für den FULL-Mode wird dann folgendes gesetzt: #define LCD_PORT_MODE_FULL 1 // LCD Pins liegen alle komplett an einem Port #define LCD_PORT_MODE_HALF 0 // Datenbits und Kontrollbits liegen auf unterschiedlichen Ports als nächstes folgt dann die Zuordnung der PORTS, welche für die LCD-Steuerung verwendet werden. Und zum Schluß erfolgnt dann noch die Zurordnung der einzelnen LCD Steuerbits. Die Bits können zwar frei zugeordnet werden, aber trotzdem würde ich folgende Zuordnungen wegen der besseren Übersicht empfehlen: Datenbits DB4 - DB7 auf die PORT-Bits PD4-PD7 zulegen und die Steuerbits LCD_RS, LCD_RW und LCD_EN auf die PORT-Bits PD0-D2 zulegen Ebenso sollten die obigen Gruppen auch im Half-Mode erhalten bleiben. Vergessen Sie nicht die include-Anweisung an den eingesetzten Prozessortyp anzupassen. #include Das wars :-) Jetzt kann das Modul im bestehen C-Projekt eingebunden werden. Und hier noch ein Beispiel, wie die Funktionen verwendet werden: |
||
Download | LCD-Modul: Version 1.04 14.10.2008 lcd_v104.rar (frei für private Nutzung) Compiler CodeVision AVR |
||
HD44780 Programmierung |
kommt noch, wenn ich etwas mehr Zeit habe | ||
Links | in Kürze sind hier brauchbar Links zufinden | ||