In diesem Kapitel wird gezeigt, wie man ein LCD-Display an den Arduino anschließt und dieses per Atmel Studio anspricht.

Dazu muss in Atmel Studio für das LCD-Display eine Bibliothek heruntergeladen und implementiert werden. Eine Anleitung dazu ist bereits im Kapitel "Atmel Studio 7 -> Bibliotheken in ein Projekt einbinden" verfasst. Alternativ kann auch die zip-Datei am Artikelende heruntergeladen werden, diese beinhaltet die benötigte LCD-Bibliothek bereits.

Das in diesem Beispiel verwendete Display ist das 1602A LCD Display, das folgende Pin Belegung besitzt:

Pin Belegung LCD Display

Abb.: Vorderseite LCD Display; Quelle: BBS2 Wolfsburg


VSS - Masse

VDD - Spannungsversorgung der Logik (5V)

V0 - Spannungsversorgung für das LCD-Modul (Kontrasteinstellungen per Potentiometer)

RS - Register Select Signal

RW - Lese/Schreibemodus (High/Low)

E - Data Enable

D4, D5, D6, D7 - Datenbus (4 Bit Modus)

A - Anode der LED Hintergrundbeleuchtung

K - Kathode der LED Hintergrundbeleuchtung


Will man den 8 Bit Modus verwenden, muss zudem die Pins D0, D1, D2, D3 am Mikrocontroller angeschlossen werden. Der Unterschied, beim 8 Bit Modus kann ein ganzes Byte pro Zugriff übertragen werden. Beim 4 Bit Modus benötigt man zwei Zugriffe. Im Ersten Zugriff werden die oberen vier (auch Nibble) genannt und im Zweiten Zugriff die unteren vier übertragen. Vorteil, beim 4 Bit Modus ergibt sich eine Ersparnis von 4 digitalen Pins, die anderweitig verwendet werden können. In diesem Beispiel wird der 4 Bit Modus angewandt.

Die Pins müssen wie folgt angeschlossen werden:


LCD Pinbelegung
 LCD 
 Bezeichnung 
 Atmega 328P / Steckplatine 
 1  VSS  GND
 2  VDD  5V
 3  V0  Potentiometer (10k)
 4  RS  PD4
 5  RW  GND
 6  E  PD5
 7  D0
 -
 8  D1
 -
 9  D2  -
 10  D3  -
 11  D4  PD0
 12  D5  PD1
 13  D6  PD2
 14  D7  PD3
 15
 A  Widerstand (+)
 16  K  GND (-)


Da nun die Pinbelegung des LCD-Displays bekannt ist, kann der Aufbau der Hardware erfolgen:

Abb.: Aufbau LCD Display; Quelle: BBS2 Wolfsburg



(Potentiometer mit 10 kΩ, Widerstand mit 220 Ω, Pin 1 liegt auf der linken Seite des Displays)


Quelle der LCD-Bibliothek: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung#Datei_lcd-routines.h   

Zum Download:  lcd-routines.zip


Wichtige Funktionen:

void lcd_init()                     - Initialisiert das Display (muss am Anfang des Displays aufgerufen werden)

void lcd_clear()                  - Sendet den Befehl zum Löschen des Displays

void lcd_data()                  - Sendet ein Byte an das LCD-Display

void lcd_string()                - Sendet einen String an das LCD-Display

void lcd_home()              - Setzt den Cursor an Spalte 1, Zeile 1

void lcd_setcursor(x,y)     - Setzt den Cursor an Spalte x, Zeile y


Quellcode:

#include <avr/io.h>
#include "lcd-routines.h"

int main(void)
{
	//Initialisierung des LCD-Displays
	lcd_init();
	
	//Text in einzelnen Zeichen ausgeben
	lcd_data('T');
	lcd_data('e');
	lcd_data('s');
	lcd_data('t');
	
	//Cursor in die zweite Zeile verschieben
	lcd_setcursor(0, 2);
	
	//Text als String ausgeben
	lcd_string("Hello World!");
	
	while(1)
	{
	}
}


Bevor der Quellcode hochgeladen wird, muss in der lcd-routines.h bei F_CPU noch die Taktfrequenz des Arduino richtig eingetragen werden (Zeile 12). Beim Arduino Uno ist dies 16 000 000 Herz.


Taktfrequenz festlegen

Abb.: Header Datei LCD Routines; Quelle: BBS2 Wolfsburg



Durch drehen am Potentiometer lässt sich der Kontrast des LCD-Displays so verstellen, dass auf ihm der geschrieben Text zu lesen ist:


Zuletzt geändert: Donnerstag, 3. Februar 2022, 09:48