Praktikum Mikrocomputertechnik

Ähnliche Dokumente
Praktikum Mikrocomputertechnik

Praktikum Mikrocomputertechnik

LCD-Ansteuerung mit MikroForth

4.1 Peripherie ansprechen in C/LCD

Projektlabor. LCD Ansteuerung

HD44780-LC-Display am Atmel-AVR Mikrocontroller

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach

LCD board EB

Ansteuerung eines LCD-Screens

Serielles LCD-Display PL0045

Tag 4 7 Segment-Anzeige, File Include, LC-Display

Ansteuerung eines LCD-Moduls mit dem kitcon-167 (Infineon C167CR-Starterkit) by Walter Waldner, Version 1.2 September 1999

TM1638-Anzeige-Taster-Modul

Mikroprozessortechnik Grundlagen 1

1. Allgemein Technische Daten... 2

Displaysteuerung: ATmega32u4. HTL St.Pölten. EL Autor: Kuran. Displaysteuerung Fachspezifische Softwaretechnik 2

Datentechnik. Prinzipieller Aufbau eines Schnittstellenbausteins

Kapitel 18. Externe Komponenten

80C535-Mikrocontroller-Board im Streichholzschachtelformat

Interrupts im Handbuch des ATmega128 gründlich lesen.

DOTMATRIX LCD's. LCD-SERIE 1x16..4x40

Mikrocomputertechnik

Übungsklausur Mikroprozessortechnik und Eingebettete Systeme I

Laborübung 3. Latches, Flipflops, Counter

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Der Magnetfeldsensor HMC5883L

Delta-Spezifikation SPC3LV (Mit Referenz auf SPC3)

Übergabe einer neuen Zeitverzögerung; X in Millisekunden

Analog-Digital-Converter

Name : Klasse : Punkte : Note :

Praktikum Mikrocomputertechnik

Fuses mit BASCOM und USBASP setzen

qfix ASCII-Protokoll

LCD-Anzeige 10a Kurzbeschreibung

Versuch D3: Busse, Speicher und Ampelsteuerung mit Speicher

SPI-Schnittstelle des 70TX-E2 Sendemoduls

Beschreibung LED-Matrix-Anzeige

Adressierung von Speichern und Eingabe- Ausgabegeräten

1.1 Features der Software Folgende Änderungen bzw. Neuerungen sind gegenüber der alten KPS-Lite 2009 Software enthalten:

Ausarbeitung eines Praktikumsversuches zum Design eines 1-Wire-Master-Controllers Falk Niederlein

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -

Mit dieser kleinen Adapter-Platine können HD44780 kompatible LCD-Displays am I2C-Bus betrieben werden.

Mikrocomputertechnik. Thema: Serielle Schnittstelle / UART

10 Versuch Nr Anmerkungen zum Versuch Nr. 8

µversion 2 Einführung

Ansteuerung eines alphanumerischen. Display (mit PIC-Mikrocontroller)

Mikrocomputertechnik

U5-2 Register beim AVR-µC

DMXface ACTIVE SEND mit RS232

Überarbeitetes LCD Board (LCDB)

Sensor MU-3. Technische Parameter

serielles 8-Digit LED Display PL0061

Kurzanleitung: 1. Anschüsse. MWCLightRGB by VoBo & HaDi-RC HW-Version 1.80 SW-Version >1.28

Technisches Handbuch. Bediengerätesoftware für FuG 8 / 9

Der I²C-Bus. Vorstellung des Inter-Integrated Circuit -Bus. Aufbau und Funktionsweise. Beispiel PortExpander am Arduino

Arduino LC-Display-Ansteuerung Seite 2

Arduino Kurs Timer und Interrupts. Stephan Laage-Witt FES Lörrach

M3120 Incremental-Encoder 4-fach

Timer. Funktionsprinzip

Mini- Mikroprozessor-Experimentier-System. Version 1.0b vom :21. mit einem 8051-Mikrocontroller

1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige

Zusatzanleitung. MPR-1 I²C-Protokoll. Version 1.01

C-DIAS-Serielles-Interface CSI 021

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Servo-Modul Version

Incremental-Encoder. Technische Beschreibung. Eiserstraße 5 Telefon 05246/ Verl Telefax 05246/

150 ma (bei eingeschalteter Hintergrundbeleuchtung)

Parallele Datenübertragung mit Hilfe von WinSim85. über einen reellen PC Port

BLUE LINE BLAU NEGATIV MIT WEISSER LED

SMP Übung 8 - Lösungsvorschlag

Berner Fachhochschule. Technik und Informatik EKT Labor für technische Informatik. Manual CARME IO1-LA. November 2007 Jürgen Schüpbach

Bedienhinweise Firmware 1.1

Frei programmierbare 4-8 Digit / Bargraph LED-Anzeige für µcontrolleranwendungen

Zeitrelais PL0045 mit optionaler PC-Anbindung

Aufbau eines Assembler-Programms

Datennahme-Software für den Versuch 'Szintillatoren'

HARDWARE-PRAKTIKUM. Versuch L-1. Schaltnetze. Fachbereich Informatik. Universität Kaiserslautern

Technische Dokumentation

Service & Support. Konfiguration einer S7-300 als DP- Slave an einer S7-400H als DP-Master unter Verwendung eines Y-Links PROFIBUS DP.

Kurzanleitung: 1. Anschüsse. MWCLightRGB by VoBo & HaDi-RC

11. Die PC-Schnittstelle

Kurzanleitung LTT 186 bzw. LTT182 Stand-Alone-Betrieb. 1. Anschluss des LTT Rekorders an den Computer

Praktikum Grundlagen von Hardwaresystemen Sommersemester Versuch 6: Computergrafik und Sprites

LCDT240160TS Touch Screen

Programmieren von MiniRISC-Prozessor in Assemblersprache

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

Wenn Du Deinen Rechner zum ersten Mal einschaltest, verlangt er von Dir einige Angaben. Wähle als Sprache Deutsch.

BLUE LINE BLAU NEGATIV MIT WEISSER LED

Applikationen zur Mikrocontroller-Familie

Manual SPI Module zum CARME-Kit

BOOTLOADER für AVR-Entwicklungsmodule

Anleitung Währungsrechner

BLUE LINE BLAU NEGATIV MIT WEISSER LED

Softwaredatenblatt #SAMBC (für Windows PCs)

USB-Display...eine einfache Verbindung zum PC

Microcomputertechnik

Software Update (ATX3/AURES)

Anwendungen der Mikrocontrollertechnik

US-428 Treiber v3.0 (Mac und PC)

Transkript:

Praktikum Mikrocomputertechnik Versuch 3: Labor: Termin der Durchführung: Ansteuerung eines alpha-numerischen LC-Display über Ports des XC164 IE-Labor oder DT-Labor Teilnehmer: Gruppe: Semester: Student 1: Student 2: Testat: Datum: Bemerkungen: Unterschrift: - 1 -

Versuchsinhalte Vorbereitung: Eignen Sie sich das notwendige Grundwissen zur Erstellung der geforderten Programme an. Aufgaben zur Vorbereitung finden Sie bei den Beschreibungen der Versuche. Entwickeln Sie für die zu erstellende Software Programmablaufpläne. Diese sollen nicht den befehlsgenauen Ablauf des Programms wiedergeben, sondern eher informell sein. Es reicht, wenn der Ablauf der Software übersichtlich und verständlich wiedergegeben wird (z.b. Tabellenzeiger hochzählen anstelle von R0+2 ). Es ist auch notwendig für das Display eine Initialisierungsroutine auszuarbeiten. Sehen Sie sich das Timing des Displays genau an und überlegen Sie, welche Signale Sie neben den Daten noch erzeugen müssen. Versuch: Ansteuern des LC-Displays Der Versuch vermittelt Wissen über die Konfiguration von externen Komponenten und die Ansteuerung von Peripherie über I/O-Ports des µc. Schreiben Sie alle wesentlichen Funktionen als Unterprogrammbibliothek (siehe 2.2)! Ausarbeitung: Nach Beendigung des Versuches haben Sie alle Arbeiten erledigt. Sie müssen die Versuche einem Betreuer vorführen und können die Ausarbeitung direkt nach dem Praktikumstermin abgeben. Die Ausarbeitung besteht aus folgenden (für ein erfolgreiches Testat notwendigen) Komponenten: Ausgefülltes Deckblatt Ausgefülltes Fragenblatt (Ende der Anleitung) Am PC erstellte Flussdiagramme, Material aus der Vorbereitung (Berechnungen, etc.). Ausdruck der Assemblerdateien zur Durchsicht sowie die Logicport Screenshots - 2 -

1) Allgemeine Informationen 1.1) Anschluß des LC-Displays an den µc Das Display ist über Ports an den µc angebunden. Zur Ansteuerung des Displays wird Port 0 verwendet. Die nachfolgende Tabelle zeigt Ihnen die verwendeten Signale: Funktion Signalname Port LC-Display, D0 P0.0 P0L.0 LC-Display, D1 P0.1 P0L.1 LC-Display, D2 P0.2 P0L.2 LC-Display, D3 P0.3 P0L.3 LC-Display, D4 P0.4 P0L.4 LC-Display, D5 P0.5 P0L.5 LC-Display, D6 P0.6 P0L.6 LC-Display, D7 P0.7 P0L.7 LC-Display, RS (Register Select) P20.4 P20.4 LC-Display, EN (Enable) P20.0 P20.0 LC-Display, WR (Write) P20.1 P20.1-3 -

1.2) LOGICPORT, 34 Kanäle Während des Versuches sollen Sie sich auch die Signale, die Sie für das Display generieren, genauer ansehen. Hierzu befindet sich auf den Versuchsaufbauten ein USB Logic Analyzer mit 34 Kanälen Breite. Neben den Display-Signalen können auch noch weitere damit betrachtet werden. Die nachfolgende Tabelle zeigt Ihnen die Pins am Stecker des LOGICPORT und die dazugehörigen Signale: Wire ID Signalname Beschreibung D0 P1.0 PORT P1L (7-Segment, LED) D1 P1.1 D2 P1.2 D3 P1.3 D4 P1.4 D5 P1.5 D6 P1.6 D7 P1.7 -- GND fest als GND vorgegeben -- GND fest als GND vorgegeben D8 P1.8 PORT P1H (7-Segment, LED) D9 P1.9 D10 P1.10 D11 P1.11 D12 P1.12 D13 P1.13 D14 P1.14 D15 P1.15 -- GND fest als GND vorgegeben CLK1 CLK_FOUT fest als CLK vorgegeben Wire ID Signalname Beschreibung D16 P0.0 Datenbus (nur am LCD) D17 P0.1 D18 P0.2 D19 P0.3 D20 P0.4 D21 P0.5 D22 P0.6 D23 P0.7 -- GND fest als GND vorgegeben -- GND fest als GND vorgegeben D24 DISP_RS LC-Display, register select D25 DISP_RW LC-Display, read write D26 DISP_EN LC-Display, enable D27 KB_DATA keyboard data D28 KB_CLK keyboard clock D29 ENC0 Encoder drehen (P5.13) D30 ENC1 Encoder drehen (P5.14) D31 ENC2 Encoder drücken (P5.15) -- GND fest als GND vorgegeben CLK2 1wire Temperatursensor Auf der Homepage des Labors finden Sie ein Konfigurationsfile, das bereits eine richtige Signalnamenzuweisung für die Logicport Software beinhaltet: LCD.LPF. - 4 -

1.2.1) Installation der LOGICPORT Software Auf dem Desktop finden Sie hierzu das folgende Icon: Das sich nun öffnende Fenster sieht in etwa wie folgt aus: Nun öffnen Sie die Konfigurationsdatei (LCD.LPF), die Sie von der Web-Page des Labors heruntergeladen haben. Die Signalnamen sollten dem obigen Bild entsprechen. - 5 -

1.2.2) Arbeiten mit dem LOGICPORT Für Ihre ersten Messungen sollten die Einstellungen so weitestgehend schon in Ordnung sein. Für weiterführende Messungen können Sie nun ein paar Einstellungen machen. Zunächst müssten Sie Ihre Sampling-Frequenz so wählen, dass die schnellsten auftretenden Signale sauber erkannt werden (Stichwort: Nyquist-Shannon-Abtasttheorem). Da der Prozessor-Clock in dieser Messung nicht interessiert, können Sie diesen auch ignorieren. Wichtig sind die drei Steuersignale des Displays sowie die acht Datenleitungen. Wenn die Frequenzen nicht passen, sehen Sie dennoch ein sauberes Bild, das aber in keinster Weise die wirklichen Signale darstellen muss. Sehen Sie sich z.b. den Clock des Prozessors an. Welche Frequenzen messen Sie bei zu kleinen Abtastzeiten? Die Trigger-Source A stellen Sie auf Wire-ID D26, da an diesem Kanal das Enable des Displays angeschlossen ist. Dieses Signal eignet sich am besten zur Triggerung von Übertragungen an das Display. Die Triggerung wählen Sie über die Spalte Edge A aus. Beim Signal LCD_EN muss das Symbol für die fallende Flanke ( ) erscheinen. Alle anderen Signale müssen in dieser Spalte leer sein. Nun können Sie den Trigger noch so weit konfigurieren ( ), dass bei auftretenden Flanken auf diesem Signal die Aufzeichnung ausgelöst wird: Nun können Sie den LogicPort über das Symbol scharf schalten. So bald die erste fallende Flanke auf LCD_EN auftritt, wird die Aufzeichnung gestartet und Sie können kurz darauf das Ergebnis betrachten. Versuchen Sie verschiedene Einstellungen des Logicanalyzer aus (verschiedene Trigger, verschiedene Sampling-Frequenzen, etc.) und suchen Sie die beste Darstellung heraus. Über das File Menü ( Print to Clipboard ) können Sie vom aktuellen Kurvenverlauf einen Screenshot anfertigen, und diesen dann mit Hilfe eines Zeichenprogramms oder auch Word ausdrucken. Benutzen Sie Cursor, um interessante Stellen zu markieren. - 6 -

2) Ansteuerung eines alphanumerischen LC-Displays In diesem Versuch wird die Ansteuerung des Displays über reguläre I/O-Ports des Mikrocontrollers realisiert. 2.1) Grundlagen zum alphanumerischen LC-Display In diesem Abschnitt werden grundlegende Kenntnisse über das alphanumerische LC- Display vermittelt, die zur Durchführung des Praktikumsversuchs benötigen werden. 2.1.1) Allgemeines Eine häufig vorkommende Anwendung, in der Mikrocontroller eingesetzt werden, ist die Ansteuerung eines (alphanumerischen) LC-Displays (LCD = Liquid Crystal Display). In diesem Versuch soll gezeigt werden, wie LCD-Module - mit dem weit verbreiteten HD44780-LCD-Controller - vom XC164 aus angesprochen werden können. Ein Datenblatt des LCD-Controllers finden Sie auf der Labor-Homepage. Der LCD-Controller besitzt je ein Register für Daten (ASCII-Zeichen) sowie Befehle (Kommandos), die über die RS-Leitung des LC-Displays ausgewählt werden. RS = '0' Kommandoregister RS = '1' Datenregister Die Anbindung des LCD-Moduls an den Mikrocontroller XC164 ist auf zwei verschiedene Arten möglich: Anbindung des LCD-Moduls über die parallelen Ports des XC164 Hierbei wird das LCD-Modul über einen parallelen Port (hier Port 0) an den Mikrocontroller XC164 angebunden. Die Steuersignale RS (Register Select), R/W (Read/Write) und E (Enable) für das LC-Display müssen dabei vom Mikrocontrollerprogramm erzeugt werden. Anbindung des LCD-Moduls über den XC164-Datenbus Diese Betriebsart wird auch als Memory-Mapped-I/O bezeichnet. Das LC-Display wird quasi wie ein Speicherbaustein mit dem Mikrocontroller verbunden und die Befehls- und Datenregister des LCD über Variablen angesprochen werden. Die Steuersignale (RS, R/W und E) werden hierbei automatisch vom Mikrocontroller XC164 erzeugt. Diese Art der Ansteuerung soll in diesem Praktikumsversuch allerdings nicht durchgeführt werden. - 7 -

2.1.2) Verwendetes LC-Display Dieser Versuch wird mit dem LC-Display mit Hitachi HD44780 verwendet, das 2 Zeilen mit jeweils 20 Zeichen aufweist. Abb..1. LC-Display (2 Zeilen mit jeweils 20 Zeichen) In Abb..2 sind die Anschlüsse und die Anzeigeeinheit des LC-Displays dargestellt. Bei den abgebildeten Adressen handelt es sich um ein 2x24-Zeichen-Display. Die Adressen sind beim 2x20-Zeichen-Display jedoch identisch. Die letzten Stellen werden allerdings nicht angezeigt. Abb..2. Anschlüsse und Anzeigeeinheit des LC-Displays - 8 -

Jeder Punktmatrix ist eine eindeutige DD-RAM-Adresse (Display Data-RAM) zugeordnet, so dass der Cursor auf jede beliebige Stelle in der Anzeige gesetzt werden kann. Jede Stelle in der Anzeigeeinheit des LCD-Moduls ist als 5 * 8 dot-punktmatrix aufgebaut. Die oberen 35 Punkte (5x7) stehen zur Darstellung eines Zeichens zur Verfügung. Die untersten 5 Punkte sind für die Darstellung des Cursors vorgesehen (Abb..2 unten). In der Tabelle.1 sind die Anschlussbelegungen des LC-Displays aufgelistet. Pin Bezeichnung Funktion 1 VSS GND 2 VDD Versorgungsspannung: +5V 3 VLC Spannungseingang für Kontrastwahl 4 RS Register Select High-Pegel: Datenregister Low-Pegel : Befehlsregister 5 R/W Read/Write-Signal High-Pegel: Lese (Read) vom LC-Display Low-Pegel : Schreibe (Write) ins LC-Display 6 E Enable-Signal Speicherung der Datenbus-Leitungen mit fallender Flanke von E 7 DB0 Datenbus-Leitung 0 (LSB = Least Significant Bit) 8 DB1 Datenbus-Leitung 1 9 DB2 Datenbus-Leitung 2 10 DB3 Datenbus-Leitung 3 11 DB4 Datenbus-Leitung 4 12 DB5 Datenbus-Leitung 5 13 DB6 Datenbus-Leitung 6 14 DB7 Datenbus-Leitung 7 (MSB = Most Significant Bit) 15 VA Anode für Hintergrundbeleuchtung (nc = not connected) 16 VC Kathode für Hintergrundbeleuchtung (nc = not connected) 2.1.3) LCD-Controller HD44780 Tabelle.1. Anschlussbelegun des L2432-LC-Displays Ein Großteil der heutzutage verwendeten alphanumerischen LC-Displays basiert auf dem LCD-Controller HD44780 [19] der Firma Renesas (ehem. Hitachi) [20] oder zu diesem Controller kompatiblen Bausteinen. Die in diesem Versuch angegebenen Daten sind nur ein kleiner Auszug aus dem Datenblatt. Für weitere Funktionen und Kommandos (z.b. selbstdefinierte Zeichen, Laufschriften, etc.) kann das Herstellerdatenblatt (Kopie findet sich auf der Labor-Homepage) herangezogen werden. Die Hauptaufgabe dieses LCD- Controllers ist es, die vom µc-xc164 ankommenden Daten- und Steuersignale zu interpretieren und in entsprechende Steuerfunktionen auf dem LC-Display umzusetzen. - 9 -

Um dies durchführen zu können, besitzt der HD44780-Controller getrennte Daten- und Befehlsregister, die mit dem RS-Signal umgeschaltet werden können. In das Datenregister werden die ASCII-Werte der darzustellenden Zeichen geschrieben. Der Inhalt des Datenregisters wird anschließend an die aktuelle DD- RAM-Adresse (Cursorposition) weitergeleitet und gleichzeitig am LC-Display angezeigt. Das Befehlsregister nimmt Kommandos (z.b. Display löschen) zur Steuerung des LC-Displays auf. Einige dieser Kommandos, werden im Abschnitt 2.1.4 näher erläutert. Mit dem LCD-Controller HD44780 hat man außerdem die Möglichkeit, zwischen 4- Bit- und 8-Bit-Betrieb des LCD-Moduls zu wechseln. Im 4-Bit-Betrieb werden nur die Datenbusleitungen DB4 bis DB7 verwendet, so dass für ein Datenbyte zwei Nibbles (4-Bit-Wörter) nacheinander übertragen werden müssen. Beim 8-Bit-Betrieb werden dagegen alle 8 Datenbusleitungen DB0 bis DB7 zur Übertragung herangezogen, so dass das Datenbyte in einem Durchgang gesendet werden kann. Im jetzigen Versuch wird allerdings ausschließlich der 8-Bit Modus am Datenbus benutzt. - 10 -

2.1.4) Wichtige Kommandos zum Betrieb des LC-Displays Zur Initialisierung und dem Betrieb des LC-Displays müssen verschiedene Befehle (Kommandos) [14] an das Display gesendet werden. Die unten abgebildete Tabelle.2 zeigt nur die wichtigsten für den Betrieb des LCD-Moduls notwendigen Kommandos. Weitere Befehle für das LC-Display und ihre genauen Ausführungszeiten können im Datenblatt nachgeschlagen werden. Kommando RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 4-Bit-Betrieb 0 0 0 0 1 0 - - - - 8-Bit-Betrieb 0 0 0 0 1 1 - - - - Funktion: 4-Bit, 2 Zeilen, 5 * 7-0 0 0 0 1 0 1 0 0 0 Punktmatrix Funktion: 8-Bit, 2 Zeilen, 5 * 7-0 0 0 0 1 1 1 0 0 0 Punktmatrix Display ein, Cursor ein 0 0 0 0 0 0 1 1 1 0 Display löschen 0 0 0 0 0 0 0 0 0 1 Cursor home (links oben) 0 0 0 0 0 0 0 0 1 0 Cursor auf DD- RAM-Adresse X...X pos. 0 0 X X X X X X X X Tabelle.2. Wichtige Kommandos für LC-Display - bedeutet don t care X...X : DD-RAM-Adresse (siehe Abb..2) Nach dem Einschalten befindet sich das Display in einem undefinierten Zustand. Da der Controller auf dem LCD im 4- und im 8-Bit Modus betrieben werden kann, ist die Initialisierung des Displays so zu wählen, dass das Display auf jeden Fall im gewünschten Modus arbeitet. Ein Problem könnte auftreten, wenn der 4-Bit Modus aktiviert ist und das Display aber über 8-Bit angesprochen werden soll. Darum ist es notwendig, eine Sequenz zu schicken, die in beiden Betriebsarten eindeutig verstanden wird. Dazu eignet sich das Umschalten in den 8-Bit Betrieb. Das zweite Nibble ist hier Don t Care und so wird dieses Datum einfach 3x an das Display geschrieben. Dann befindet sich das Display auf jeden Fall im 8-Bit Modus und es erwartet auch keine Daten mehr. Von diesem Zustand kann dann im 8-Bit Betrieb weiter initialisiert werden oder, falls gewünscht, in den 4-Bit Betrieb gewechselt werden. - 11 -

2.1.5) Timing-Charakteristik des LC-Displays In der nachfolgenden Abb..3 ist das prinzipielle Zeitverhalten (Timing) der Steuer- und Datensignale des LC-Displays dargestellt. Die genauen Zeitbedingungen können ebenfalls dem Datenblatt entnommen werden. Verwenden Sie der Einfachheit halber für alle Kommandos die längste notwendige Wartezeit (1,53ms), um in den Unterprogrammen nicht unterscheiden zu müssen. Für das Senden der Daten reicht allerdings die kurze Wartezeit von min. 37µs (bzw. 45µs 50µs für das Unterprogramm wait_short ). Abb..3. Prinzipielles Zeitverhalten der Steuer- und Datensignale des LC-Displays In dieser Abbildung wurde nur das prinzipielle Zeitverhalten der Signale bei Schreibvorgängen 1 (R/W = 0) zum LCD-Modul dargestellt. Bei einer fallenden Flanke des Enable-Signals (E) werden die an den Datenbusleitungen (DB7-DB0) anliegenden Werte vom LCD-Controller HD44780 übernommen. Zwischen den einzelnen Schreibvorgängen werden die Daten vom LCD-Controller ignoriert. Nach der Initialisierung wird der darzustellende Text Zeichen für Zeichen ins Datenregister geschrieben und angezeigt. Die Timing-Diagramme für das Auslesen von Daten des LCD-Moduls werden in dieser Arbeit nicht behandelt, da diese Funktion im Praktikumsversuch nicht genutzt wird. Die Diagramme können jedoch dem Datenblatt des Controllers entnommen werden. 1 Vom LC-Display kann auch gelesen werden (z.b. Abfrage des Busy-Flags). - 12 -

2.2) Versuchsdurchführung Aufgabe: Ansteuerung des LC-Displays über P0 des XC164. Es soll ein Text, der sich im Datenbereich des Assemblerprogramms befindet, auf das Display ausgegeben werden. Der Text kann selbst definiert werden, es müssen aber beide Zeilen verwendet werden. Für mehrfach verwendete Daten und definierte Adressen sind Equate- Anweisungen zu verwenden. Bitte legen Sie auch die Initialisierungswerte in einem Speicherbereich ab. Nach der Fertigstellung des Programmes (oder aber auch bereits zur Fehlersuche) sehen Sie sich bitte das Protokoll auf den Leitungen zum Display mit Hilfe des auf dem Board befindlichen LOGICPORT an. Drucken Sie in einem passenden Zoom-Bereich die Signalverläufe aus und markieren und benennen Sie die Initialisierungs-Befehle sowie das erste Zeichen, das an das Display übergeben wird. Machen Sie von dem ersten Kommando aus Ihrer Initialisierungsroutine eine Detailaufnahme, von den weiteren reicht es, wenn die Werte und die entsprechende Enable-Flanke sichtbar sind. Verifizieren Sie die Wartezeiten der Unterprogramme WAIT_SHORT und WAIT_LONG mit Hilfe des LOGICPORT und Dokumentieren Sie die Messungen in Ihrer Ausarbeitung! Die Software ist als Unterprogramm-Bibliothek anzufertigen, da diese Module auch in späteren Versuchen benötigt werden. Es müssen folgende Unterprogramme verfügbar sein: LCD_INIT - Dieses Unterprogramm beinhaltet die Initialisierungsroutine für das LC-Display LCD_SET - Hier soll die Cursorposition auf Stelle gesetzt werden, die in einem 8Bit Register übergeben werden soll LCD_CLEAR - Display Löschen und Cursor auf die erste Position setzen LCD_CHAR - Es soll ein einzelnes Zeichen, das dem UP in einem 8Bit Register übergeben wird, auf das LCD ausgegeben werden LCD_TEXT - Ziel dieses UP ist es, einen Text, der im Speicher des µc steht, auf das Display auszugeben. Die Startadresse wird in einem 16Bit Register übergeben. Das Ende des Textes wird über ein zu definierendes Zeichen im Datenstrom (z.b. 0x00 oder 0xFF) erkannt.... - 13 -

LCD_COM - Mit diesem Unterprogramm wird ein Kommando / Steuerbefehl an das LCD geschickt. Der HEX-Wert des Kommandos wird über ein 8Bit Register an das UP übergeben. WAIT_SHORT - Dieses Unterprogramm soll eine Wartezeit zwischen 45µs und 50µs erzeugen. WAIT_LONG - Dieses Unterprogramm soll eine Wartezeit zwischen 1550µs und 1700µs erzeugen. Lernziele: - Vertiefung der im Abschnitt 2.1 dargelegten Grundlagen - Vertiefung der Kenntnisse aus der Mikrocomputervorlesung Anmerkungen: Das Display soll im Versuch im 8-Bit Modus betrieben werden. Sie können sich gerne auch den 4-Bit Betrieb genauer ansehen und bei verbleibender Praktikumszeit implementieren. Um die Wartezeiten zwischen der Ausgabe einzelner Zeichen (Buchstaben, Ziffern) zu verkürzen, kann auch das busy-flag aus dem Kommando-Register.7 genutzt werden. Es kennzeichnet die Dauer während der der LCD-Controller damit beschäftigt ist das übergebene Zeichen auszugeben. Das busy-flag signalisiert damit ob das nächste Zeichen übergeben werden kann. Bitte verwenden Sie das busy-flag nicht bei Kommandos, da dieses hier nicht einheitlich vom Display unterstützt wird. Allgemeiner Hinweis: Da der µc mit 20MHz läuft, kann die Zeit zwischen dem Ausgeben der Daten auf die Datenleitungen des Displays und das zugehörige Steuersignal (Enable von 'H' auf 'L') bereits nach 50ns erfolgen. Dies erfüllt nicht die Anforderungen der Sample-and-Hold Zeit des Displays (ca. 200ns). Aus diesem Grund ist es die einfachste Lösung, nach dem Ausgeben der Daten ca. 3x den Befehl NOP (No Operation) einzufügen, bevor das Enable Signal entsprechend gelöscht wird. Für alle Unterprogramme bzw. Interrupt-Service-Routinen ist ein entsprechender Programm-Kopf einzufügen. Sie können sich an folgendem Beispiel orientieren: ;----------------------------------------------------------------------------------- ; Funktionsname: z.b. Warteschleife Version: wenn sinnvoll ; Autor(en) wer es halt selber geschrieben hat Datum: ;----------------------------------------------------------------------------------- ; Funktion: Beschreibt, was das Programm macht ; (so 2-3 Zeilen kurze möglichst präzise Beschreibung) ;----------------------------------------------------------------------------------- ; ; Übergabeparameter: R0 innere Schleife (z.b. Wertbereich: R0 = 0x0fff dh. xy ms) ; R1 äußere Schleife (ist Multiplikationsfaktor für R0) ; ; Ergebnisparameter: - keine - ;----------------------------------------------------------------------------------- ; zerstörte Register: Rxy ;----------------------------------------------------------------------------------- - 14 -

Vorbereitung: Dieser Versuch legt in erster Linie Wert auf die Vorbereitung und die Durchführung. Dafür ist keine nachträgliche Ausarbeitung notwendig. Erarbeiten der notwendigen Grundlagen zur Ansteuerung des Displays Schätzen Sie die Zeiten ab, wie schnell Sie Daten an das Display senden können Erarbeiten der Initialisierungsroutine für das LCD Display, um es im 8-Bit Betrieb, mit 5x7-Matrix und blinkenden Strich-Cursor zu betreiben. Überlegen Sie, wie wiederkehrende Aufgaben sinnvoll in Unterprogramme aufgeteilt werden können bzw. wie sie diese in ihrer Bibliothek selbst wiederverwenden können. Erstellen eines Programmablaufplanes Die Vorbereitung ist Voraussetzung für die Teilnahme am Versuch! Versuchsdurchführung: Kodieren Sie das Programm Softwaredokumentation Wichtige, funktionale Stellen müssen beschrieben werden, und zwar allgemeinverständlich Verwenden Sie sinnvolle Namen für Sprungmarken, Datenbereiche, Konstanten, Variablen usw. Drucken Sie das Assembler-File (main.a66) aus und heften Sie es zu den Unterlagen Verwenden Sie für diesen Versuch das Keil Projekt Rumpf.Uv2 von der Homepage des Labors. - 15 -

1)Anlagen 3.1) Vollständiger Befehlssatz des HD44780 LCD Controllers Tabelle.3. Kommandos des LCD-Controllers - 16 -

Literaturverzeichnis 1. Infineon technologies; XC164-16 User s Manual, Volume 1 (of 2): System Units 2. Infineon technologies; XC164-16 User s Manual, Volume 2 (of 2): Peripheral Units 3. Infineon technologies; XC164-16 Data Sheet 4. Infineon technologies, C166S User Manual (Befehlssatz) 5. http://www.infineon.com 6. https://hps.hs-regensburg.de/~fam39454/ie_lab/pmc.php 7. http://www.keil.com 8. G. Schmitt; Mikrocomputertechnik mit dem Controller C167, Oldenbourg Wisenschaftsverlag GmbH, München 2000 9. Renesas (Hitachi) HD44780U Datenblatt - 17 -

4) Begleitende Fragen (Vorbereitung, mit abzugeben!) 1. Welche Kommandos müssen Sie bei der Initialisierung an das Display, das sich in einem unbekannten Zustand befindet, senden, damit es sich sicher in dem von der Anleitung gewünschten Betriebsart befindet? (2-zeilig, 5x7 Matrix, blinkender Strich- Cursor, 8-Bit Betrieb, Cursor an 1. Stelle 1. Zeile) 2. Wie schnell dürfen Kommandos und Daten an das Display geschrieben werden? Es werden zwei verschiedene Wartezeiten benötigt. Wenn der µc mit 20 MHz läuft und man vereinfacht davon ausgehen kann, dass pro Taktzyklus ein Befehl abgearbeitet wird, wie groß müssen die Hex-Werte für die Warteschleifen sein? Wartezeit für Kommandos (hier Worst Case verwenden): Wartezeiten für Daten: µs µs Berechnung der Wartezeiten für das Assembler-Programm: 3. Zeichnen Sie ein Blockschaltbild das erklärt, wie das Display an den µc angeschlossen ist. - 18 -