AVR LCD - Hochschule Bochum

Werbung
Fachbereich Elektrotechnik und Informatik
Labor für Angewandte Informatik und Datenbanken
Praktikum
Automatisierung / Echtzeitregelung
(BAU/BER)
Prof.Dr.-Ing. Coersmeier
HD44780-LC-Display
am Atmel-AVR
Mikrocontroller
Name, Vorname
Matrikelnummer
Versuchstag
Testat
LC-Display am Atmel AVR-Mikrocontroller
Seite 2
1. Aufgabenstellung Teil 1
In diesem Versuchsteil soll ein mit einem Atmel AVR Mikrocontroller verbundenes 2x16-Zeichen LC-Display
angesteuert werden.
Um diese Funktion zu testen sollen Sie ein Programm schreiben, das auf dem Display den Gruppennamen und
das aktuelle Datum ausgibt.
Das Programm sollte so strukturiert sein, dass mehrfach benötigte Programmteile als Unterprogramme geschrieben sind. Diese Unterprogramme sollten von Ihrem Hauptprogramm aufgerufen werden.
1.1. Schaltplan
Zur Durchführung des Versuches ist folgende Schaltung aufgebaut:
1.2. Vorbereitung
•
•
•
•
•
•
Veranschaulichen Sie sich die Funktionen des HD44780-Displaycontrollers (ggf. mit Hilfe des Simulators)
Kontrollieren Sie ob das Display im 4-Bit-Modus oder im 8-Bit-Modus angesteuert werden kann. Welcher
Port wird für die Datenleitungen verwendet?
Mit welchen Operationen kann ein zu übertragendes Byte in zwei 4-Bit Teile (Nibble) zerlegt werden?
Welche Funktion hat der ENABLE-Anschluss des Displays?
Welche Portleitungen sind an RS, RW und ENABLE angeschlossen?
Bereiten Sie in groben Zügen das von Ihnen zu erstellende Programm vor. (mit Kommentaren !!!)
Diese Vorbereitungsaufgaben sind zum Praktikumstermin von jedem Versuchsteilnehmer
schriftlich vorzulegen!
Bei Unklarheiten oder Problemen melden Sie sich rechtzeitig vor dem Versuchstermin!
LC-Display am Atmel AVR-Mikrocontroller
1.3. Versuchsdurchführung
•
•
•
•
Besprechen Ihrer Vorbereitungsaufgaben
Eingeben des vorbereiteten Programms (mit Kommentaren !!!)
Übertragen auf das Testsystem
Testen
1.4. Aufbau der Versuchsanordnung
2. LCD-Module mit Hitachi-HD44780-Controller
Seite 3
LC-Display am Atmel AVR-Mikrocontroller
Seite 4
2.1. Anschlußbelegung
Nr.
1
2
3
4
5
6
7
Pin
VSS
VDD
VEE
RS
R/W
E
DB0
Funktion
Spannungsversorgung (0V)
Spannungsversorgung (5V)
LCD-Kontrasteinstellung
Register Select
Read / Write
Enable
I/O-Datenbit 0
Nr.
8
9
10
11
12
13
14
Pin
DB1
DB2
DB3
DB4
DB5
DB6
DB7
Funktion
I/O-Datenbit
I/O-Datenbit
I/O-Datenbit
I/O-Datenbit
I/O-Datenbit
I/O-Datenbit
I/O-Datenbit
1
2
3
4
5
6
7
2.2. Funktion der Anschlüsse
VSS
VDD
VEE
RS
Betriebsspannung
Betriebsspannung
LCD-Kontrast
Eingang
R/W
Eingang
E
DB4-7
Eingang
Ein-/Ausgang
DB0-3
Ein-/Ausgang
GND-Anschluß
5-Volt Spannungsversorgung
Spannung zur Kontrasteinstellung des LC-Displays
Register Select
0→
Zugriff auf Instruction Register (schreiben)
Zugriff auf Busy-Flag und Address Counter (lesen)
1→
Zugriff auf Data Register (lesen und schreiben)
Read / Write Signal
0→
Schreibzugriff
1→
Lesezugriff
Data Read / Write Enable Signal
Die oberen 4 Bit des Datenbus. (Bidirektionale Tri-State Signale)
DB7 kann auch als Busy-Flag Verwendung finden
Die unteren 4 Bit des Datenbus. (Bidirektional/Tri-State)
Diese Anschlüsse werden im 4-Bit-Modus nicht benötigt.
2.3. Auswahl von Registern und Schreib/Lesezugriff
RS
0
R/W
0
0
1
1
0
1
1
Operation
Schreiben in das Instruction-Register und Ausführen von internen Operationen
(Clear Display o.a.)
Lesen des Address Counter (DB0-DB6) und Busy-Flag (DB7)
Schreiben in das Data Register und Ausführen von internen Operationen
(DD RAM – DR oder CG RAM – DR)
Lesen des Data Register und Ausführen von internen Operationen
(DD RAM – DR oder CG RAM – DR)
2.4. Timing
Mit Ausnahme des Enable-Signals gibt es keine obere Grenze für Wartezeiten. Ein Flankenwechsel des Enable
Signals muß in max. 25ns erfolgen
Es gibt zwei mögliche Methoden um ein korrektes Timing sicherzustellen:
• Vor jeder neuen Operation warten bis das Busy-Flag wieder den Zustand 0 hat
• Verwendung von Warteschleifen (Diese Variante kann einen Port einsparen)
Da das Timing für diesen Versuch unkritisch ist verwenden wir hier die zweite Variante.
LC-Display am Atmel AVR-Mikrocontroller
Seite 5
DB0
DB3
DB1
DB6
DB5
DB4
DB2
Befehl
RS
R/W
DB7
2.5. Befehlsliste
Beschreibung
Clear Display
Return Home
Entry Mode Set
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0
0
0
0
0
1
1
*
S
0 0 0
1
0
1
I/
D
C
0 0 0
0 0 1
S/C R/L *
*
0 0 0
0 1 D
L
1
N
*
Display löschen und Cursor Home
Cursor Home
Cursor Bewegungsrichtung und Display Shift AN / AUS
ON / OFF für Display, Cursor und
Cursor-Blinken
Cursor bewegen und Display Shift
ohne Änderung des DD-Ram
Interfacelänge (4/8 Bit), Zeilenzahl
und Zeichensatz Auswahl
CG-Ram-Adresse setzen
Display ON/OFF
0 0 0
D
Cursor und Display Shift
Funktion setzen
CG-Ram Adr.
Setzen
DD-Ram Adr.
Setzen
Busy-Flag / Adr.
Lesen
Daten schreiben in
CG oder DD
Daten lesen aus
CG oder DD
0 0 0
F
*
ACG
B
Zeit
1.7ms
1.6ms
40µs
40µs
40µs
40µs
40µs
0 0 1
ADD
DD-Ram-Adresse setzen
40µs
0 1 BF
AC
Busy-Flag und Adr.Counter lesen
40µs
Daten in das CG oder DD-Ram
schreiben
Daten aus dem CG oder DD-Ram
lesen
40µs
1 0
Write Data
1 1
Read Data
I/D=1: Increment
S=1: Display Shift
S/C=1: Display Shift
R/L=1: Shift rechts
DL=1: 8-Bit Interface
N=1: 2 Zeilen
F=1: 5x10 Pixel
BF=1: Warten
I/D=0: Decrement
S/C=0 Cursor Move
R/L=0: Shift links
DL=0: 4-Bit Interface
N=0: 1 Zeile
F=0: 5x7 Pixel
BF=0: Frei
DD-Ram
CG-Ram
ADD
ACG
AC
Display-Data-Ram
Character Generator Ram
DD-Ram-Adresse
Entspricht Cursoradresse
CG-Ram-Adresse
Adress Counter für
CG und DD Ram
40µs
LC-Display am Atmel AVR-Mikrocontroller
Seite 6
2.6. Initialisierung für 4-Bit Interface
1.
Power On
2.
> 15ms warten
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
11.
0 0 0 0 1 0 1 0 0 0
3.
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
12.
0 0 0 0 1 1 * * * *
13.
> 40µs warten
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
4.
Funktion setzen: 4 Bit, 2 Zeilen, 5x7
> 4.1ms warten
5.
0 0 0 0 0 0 0 0 0 1
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
Return Home
14.
0 0 0 0 1 1 * * * *
15.
> 4.1ms warten
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
6.
> 1.64ms warten
7.
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0 0 0 0 0 0 1 1 C B
Display an, C=Cursor, B=Blinken
0 0 0 0 1 1 * * * *
8.
> 40µs warten
16.
> 40µs warten
17.
Initialisierung beendet
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
9.
0 0 0 0 1 0 * * * *
Umschalten auf 4 Bit Interface
10.
> 40µs warten
AB HIER: 4-Bit Interface
2.7. Adressierung des Display-RAM (DD-Ram)
Das hier verwendete LCD-Modul hat 2 Zeilen mit jeweils 16 Zeichen.
Zeile 1 wird adressiert von 00h to 0Fh (0 bis 15), Zeile 2 wird adressiert von 40h to 4Fh (64 bis 79).
Zeile 1
Zeile 2
00
40
01
41
02
42
03
43
04
44
05 06
45 46
07
47
08
48
09
49
0A 0B 0C 0D 0E 0F
4A 4B 4C 4D 4E 4F
Unabhängig vom Aufbau des Displays sind immer 80 Byte DD-Ram vorhanden. Der zusätzliche Speicher kann
durch Scrollen des Displays verwendet werden.
Beim Schreiben eines Zeichens wird der Cursor automatisch auf die nächste Zelle gesetzt. Das gezielte Setzen
der Schreibposition ist möglich über den Befehl DD-Ram-Adresse setzen.
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1.
0 0 1
Cursor setzen
2.
> 1.64ms warten
Adresse
LC-Display am Atmel AVR-Mikrocontroller
Seite 7
2.8. Zeichentabelle
Der Zeichensatz des LCD entspricht weitgehend dem Standard-ASCII-Zeichensatz. Zusätzlich zu der hier angegebenen Zeichentabelle ist auch die Definition von benutzerdefinierten Zeichen möglich.
Der Compiler kann einfache ASCII-Zeichen in Hochkommata direkt einer Variablen zuweisen.
LC-Display am Atmel AVR-Mikrocontroller
Seite 8
3. Das Atmel AVR Studio
Die in diesem Versuch eingesetzten Mikrocontrollerkarten enthalten einen ATmega16 AVR Mikrocontroller der Firma Atmel. Zu diesen Mikrocontroller-Typen stellt der Hersteller eine Entwicklungsumgebung zur Verfügung, die auf den Praktikumsrechnern installiert ist.
Der verwendete AVR-GCC-Compiler ist auf den Rechnern bereits im AVR Studio integriert.
Starten Sie das AVR Studio in dem Sie auf das AVR Studio 4 Symbol auf dem Desktop klicken.
Folgendes Fenster öffnet sich automatisch:
Es ist ein Standardprojekt voreingestellt und Sie können direkt Ihren Code eingeben.
Achtung! Ändern Sie keinesfalls die Projekteinstellungen!
Um Ihr Projekt zu kompilieren klicken Sie auf den Button „Projekt-kompilieren“. Im Build-Fenster werden dabei Compilermeldungen angezeigt, die Ihnen Rückschlüsse auf eventuelle Programmierfehler
erlauben.
Als Ergebnis erhalten Sie eine Intel-HEX Datei, die in den Mikrocontroller programmiert werden kann.
LC-Display am Atmel AVR-Mikrocontroller
Seite 9
3.1. Das Programmiertool
Der Mikrocontroller wird im Rahmen dieses Praktikums mit einem Flash-Tool über eine ISPSchnittstelle programmiert.
Um die vom Compiler erzeugte Hex Datei in den Controller zu flashen, müssen Sie zunächst die Software AVRFlash starten.
Kontrollieren Sie zunächst ob die Einstellungen im Flashtool mit den hier angezeigten übereinstimmen.
Anschließend können Sie mit dem Button Load im Bereich Code die von Ihnen erzeugte Hex-Datei in
das Programmiertool laden.
Mit dem Button Write können Sie anschließend die Datei zum Controller übertragen.
Nach erfolgreichem Programmiervorgang wird das Programm automatisch ausgeführt.
Herunterladen