Herzlich Willkommen auf der Homepage von Sven Jordan! | Sonntag, 06. Oktober 2024, 02:26 |
Ansteuerung eines LC-DisplaysIch habe ein C-Programm-Modul erstellt, das die Ansteuerung eines LC-Displays mit dem ATmega32 ermöglicht.Das Modul dient zur Ansteuerung eines Displays vom Typ "DEM20488" der Display Elektronik GmbH oder eines Displays vom Typ "EA DIP204-4NLED" der Electronic Assembly GmbH. Die Displays haben beide 4 Zeilen mit jeweils 20 Zeichen. Anschluss des Displays an den ControllerDa dem Programm-Modul bei der Initialisierung der verwendete Controller-Port mitgeteilt wird, kann das Display an einen beliebigen I/O-Port angeschlossen werden (PORT A ... PORT D). Die Reihenfolge der Pins darf aber nicht vertauscht werden!Der Anschluss an den Controller erfolgt nach folgenden Schemata: DEM20488Dabei sind je nach Display-Farbe folgende Widerstandswerte zu verwenden:
EA DIP204-4NLEDDatenblatt DownloadDownload: display.h (C-Header-Datei) Wichtiger HinweisEs sind Wartefunktionen enthalten (siehe unten), die eine for-Schleife nutzen. Je nach Optimierungseinstellung des Compilers ist es möglich, dass dieser die Schleifen für unnötig erachtet und einfach weglässt. In diesem Fall kann die Initialisierung des Displays aber nicht funktionieren!Versions-VerlaufVersion 1.0: Initiale VersionVersion 1.1: Wartefunktionen geändert Version 2.0: Funktion zum Anzeigen von großen Zahlen über alle 4 Display-Zeilen ergänzt, Funktion zum Anzeigen eines Bargraphs ergänzt Version 3.0: Unterstuetzung von EA DIP204-4NLED FunktionenDas C-Programm-Modul beinhaltet folgende Funktionen:Wartefunktion mit 10 MillisekundenDatentyp der Funktion: void wait_10_millisek(void)Diese Funktion sorgt mittels for-Schleife für eine Wartezeit von 10 Millisekunden, unter der Voraussetzung, dass die CPU-Frequenz 16 MHz beträgt. Diese Funktion wird vom Programm-Modul intern verwendet, kann aber auch für andere Zwecke verwendet werden. Wartefunktion mit 500 MikrosekundenDatentyp der Funktion: void wait_500_mikrosek(void)Diese Funktion sorgt mittels for-Schleife für eine Wartezeit von 500 Mikrosekunden, unter der Voraussetzung, dass die CPU-Frequenz 16 MHz beträgt. Diese Funktion wird vom Programm-Modul intern verwendet, kann aber auch für andere Zwecke verwendet werden. Einschalten und Initialisieren des DisplaysDatentyp der Funktion: void display_init(unsigned char eingangsport, unsigned char displaytyp)Durch Aufruf der Funktion wird das Display eingeschaltet und initialisiert. Als erstes Argument erwartet die Funktion 'A', 'B', 'C' oder 'D'. Damit wird der Port mitgeteilt, an dem das Display angeschlossen ist. Als zweites Argument erwartet die Funktion entweder den Wert 0 oder den Wert 1. 0 entspricht dem Display Typ DEM20488, 1 dem Display Typ EA DIP204-4NLED. Die Funktion display_init muss aufgerufen werden, bevor eine andere Funktion dieses Moduls verwendet werden kann (Ausnahme: Wartefunktionen)! Display ausschaltenDatentyp der Funktion: void display_off(void)Diese Funktion schaltet das Display sowie die Hintergrundbeleuchtung des Displays aus. Hintergrundbeleuchtung einschaltenDatentyp der Funktion: void backlight_on(void)Diese Funktion schaltet die Hintergrundbeleuchtung des Displays ein. Hintergrundbeleuchtung ausschaltenDatentyp der Funktion: void backlight_off(void)Diese Funktion schaltet die Hintergrundbeleuchtung des Display aus. Anzeige löschenDatentyp der Funktion: void clear_display(void)Diese Funktion entfernt sämtliche Zeichen vom Display und setzt den Cursor auf das erste Zeichen in der ersten Zeile. Positionieren des CursorsDatentyp der Funktion: void cursor_to_position(unsigned char zeile, unsigned char spalte)Diese Funktion erwartet als erstes Argument die Zeilennummer des Display (1 ... 4) und als zweites Argument die Spaltennummer des Displays (1 ... 20). Der Cursor wird nur an die angegebene Position gesetzt, es wird kein Zeichen ausgegeben. Das nächste auszugebende Zeichen wird dann an dieser Stelle angezeigt. Ausgeben eines einzelnen ZeichensDatentyp der Funktion: void print_char(char character)Diese Funktion zeigt an der aktuellen Cursor-Position ein einzelnes Zeichen an. Als Argument kann entweder ein Standardzeichen in einfachen Anführungszeichen übergeben werden (z.B. 'A'). Alternativ kann der Zahlenwert eines Zeichens, das in der Zeichentabelle im Datenblatt zu finden ist, übergeben werden (z.B. 0b11011111 für das Grad-Zeichen). Ausgeben einer ZeichenketteDatentyp der Funktion: void print_string(char* string)Diese Funktion zeigt ab der aktuellen Cursor-Position eine Zeichenkette an. Als Argument wird eine Zeichenkette in doppelten Anführungszeichen erwartet (z.B. "Hallo Welt"). Ausgeben einer Festkommazahl mit einstellbarer FormatierungDatentyp der Funktion: void print_number(signed short value, unsigned char sign, unsigned char vorkommastellen, unsigned char nachkommastellen)Diese Funktion zeigt eine Integer-Zahl vom Typ signed short an. Diese Zahl wird als erstes Argument übergeben. Das zweite Argument legt fest, wie das Vorzeichen dargestellt werden soll: Bei 0 wird kein Vorzeichen angezeigt, 1 zeigt nur ein negatives Vorzeichen an, bei einer positiven Zahl wird ein Leerzeichen angezeigt, bei 2 wird sowohl ein positives als auch ein negatives Vorzeichen angezeigt. Das dritte Argument der Funktion legt die Anzahl der anzuzeigenden Stellen vor dem Komma fest und das vierte Argument die Anzahl der Nachkommastellen. Funktionen zum Anzeigen von großen Zahlen über alle 4 Display-ZeilenDatentyp der Funktion zum Definieren der Sonderzeichen: void define_big_numbers(void)Diese Funktion definiert die Zeichen 0 bis 7 der Display-Zeichentabelle. Diese sind Voraussetzung für die Funktion zum Anzeigen von großen Zahlen, die im Folgenden beschrieben wird. Datentyp der Funktion zum Anzeigen der Zahlen: void print_big_number(unsigned char number, unsigned char spalte) Das erste Argument erwartet die Ziffer, die angezeigt werden soll (0...9). Außerdem kann auch ein Doppelpunkt (z.B. für eine Uhrzeit-Anzeige) gesetzt werden. Dazu wird dem ersten Argument eine 10 übergeben. Das zweite Argument benötigt die Spalte, in der das Zeichen angezeigt werden soll (1...20). Hierbei ist zu beachten, dass Ziffern drei Spalten Platz benötigen, ein Doppelpunkt eine Spalte. Es ist leider nicht möglich, gleichzeitig große Zahlen und einen Bargraph darzustellen. Funktionen zum Anzeigen von Balkendiagrammen (Bargraph)Datentyp der Funktion zum Definieren der Sonderzeichen: void define_bargraph(void)Diese Funktion definiert die Zeichen 0 bis 7 der Display-Zeichentabelle. Diese sind Voraussetzung für die Funktion zum Anzeigen von Balkendiagrammen, die im Folgenden beschrieben wird. Datentyp der Funktion zum Anzeigen eines Bargraphs: void print_bargraph(signed short value, unsigned char length, signed short min_value, signed short max_value) Das erste Argument, value, ist der Wert, der grafisch angezeigt werden soll. Das zweite Argument, length, definiert, wie viele Spalten des Displays für den Bargraph verwendet werden sollen (3...20). Es wird nur eine Zeile benötigt, sodass mehrere Balkendiagramme gleichzeitig angezeigt werden können. Die Argumente min_value und max_value bestimmen, wie der anzuzeigende Wert gespreizt werden soll (z.B. von 0 bis 100 %). Liegt value unter min_value ist der Bargraph komplett leer, liegt value über max_value ist der Bargraph komplett ausgefüllt. Es ist leider nicht möglich, gleichzeitig große Zahlen und einen Bargraph darzustellen. |
© Sven Jordan Letzte Änderung: 01.10.2019, 08:16 1 Aufruf heute | Druckansicht beenden |