Homepage von Peter Rachow Startseite - Home
Forschung und Entwicklung: LCD-Anzeige | Mikrocontroller | Software | Sensoren | Gehäuse | Erfahrungsberichte
Geräte: SBTC3 | SBTC4 | Datenmodem zum PC | Simulator für Drucksensor
1.
Grundlagen zum Display
2.
Erste Experimente mit dem Display
3.
Testsoftware
4.
Die Anordnung der Informationen auf dem Display des SBTC
Das Display selbst wird über 1-Byte breite Codes gesteuert, die an seine Dateneingänge DB0 bis DB7 parallel gesendet werden. Die Anschlüsse des Display sind lt. Datenblatt wie folgt belegt:
Bild 1: Anschlussbelegung
des Displays 162 von Reichelt
Die PINs sind mit einer kleinen "1" bzw. "16" markiert, der Anschluss "1" ist an der Schraubenbohrung an der Ecke zu finden. Die Bedeutungen der Bezeichnungen in der Grafik oben sind:
Das weitere Vorgehen sieht nun so aus: Da das Display parallel mit 8 Bit eingegebene Daten mit 5V-Pegel verarbeiten kann, lässt es sich testweise am Parallelport des PC betreiben, weil dieser 8 Bit parallele Daten entsprechend ausgeben kann. Zu diesem Zwecke lötet man sich zuerst ein Kabel bzw. eine Schaltung nach unten aufzeichnetem Schaltplan, das/die die entsprechenden Anschlüsse der Druckerschnittstelle mit dem Display verbindet. Zusätzlich wird ein Spannungsregler 7805 benötigt, der mit 2 Stck. 100nF-Kondensatoren geblockt wird:
Bild 2: Anschluss
des Displays an den Parallelport des PC zu Testzwecken
Am besten setzt man alles auf eine Streifenleiterplatine und erhält so einen sauberen Aufbau:
Bild 3: Probeaufbau
auf Lochrasterplatine
Nachdem diese Testhardware gebaut wurde, benötigt man eine Software, um aus dem Parallelport des PC die Steuersignale für das Display abrufen zu können. Dabei gilt es, die Rechnerplattformen und Programmiersprachen zu unterscheiden, mit denen man arbeiten will. Windows 95/98-Nutzer benötigen keine weiteren Treiber, da sich hier die Schnittstellen des PC noch direkt über eine Programmiersprache ansprechen lassen. Windows NT, 2000, XP-Anwender benötigen einen speziellen Treiber, da diese Systeme keinen Direktzugriff auf die Schnittstelle mehr zulassen. Diesen gibt es ebenfalls im Netz .
Weiterhin benötigt man einen Compiler, der die entsprechenden Testprogramme erzeugen kann. Ich benutze der Einfachheit halber TurboC++ 1.01 für DOS, das es auf der "Antique"-Seite von Borland kostenlos gibt. Dieser Compiler enthält eine Funktion ( outportb(int port_adr, char bytevalue) ) die man verwenden kann, um dem Druckerport direkt ein Byte parallel zu übergeben.
Die beiden Ports PORTD (Datenleitungen) und PORTB (Steuerleitungen RS und E) sind bereits von den Bezeichnungen her emuliert für die spätere Verwendung auf dem ATMEL-Controller, der dort (unter dem GNU AVR C-Compiler) diese Variablennamen benutzt. Auch die Funktion outp des später zu beschreibenden GNU-AVR-C-Compilers für die ATMEL-Kontroller wird emuliert. Dies erleichtert die spätere Portierung der Testprogramme bzw. einzelner Funktionen auf den Mikrocontroller. Ansonsten könnte man das nämlich auch programmieren, ohne die Steuerbefehle um 7 Ecken zu lenken ;-).
Einige weitere Erläuterungen zu diesem Testprogramm:
Die erste und wichtigste Funktion, die jedes dieser Programme abarbeiten muss, ist die Initalisierung des Displays. Hier wird der Modus
void
lcd_init()
{
lcd_write(LCD_INST, 40, 30);
lcd_write(LCD_INST, 40, 30);
lcd_write(LCD_INST, 40, 30);
lcd_write(LCD_INST, 2, 5);
lcd_write(LCD_INST, 8, 5);
lcd_set_display(1, 0, 0);
lcd_cls();
lcd_set_entrymode(0, 0);
}
Um die Steuerung zu standardisieren enthält das Programm die Funktion
void lcd_write(unsigned char lcdmode, unsigned char value, unsigned int waitcycles)
der nacheinander folgende Parameter übergeben werden:
void lcd_putchar(unsigned int row, unsigned int col, unsigned char ch)
und
void lcd_putstring(unsigned int row, unsigned int col, unsigned char *s)
Mit diesen Funktionen ist es möglich, beliebige Zeichen an das Display zu senden, indem man eine absolute Adressierung der Displayzeile ( row ) und -spalte ( col ) vornimmt. Eine sehr komfortable Sache also.
4. Die Anordnung der Informationen auf dem Display
Natürlich ist es nicht ganz einfach, alle relevanten Informationen während des Tauchens auf einem 2 x 16-Zeichen LCD darzustellen. Insofern musste ich einen Kompromiss finden. Zielsetzung war nämlich, während des Tauchens kein jeweils kurzes Anzeigen von vielen einzelnen Informationen zu liefern sondern die Anzeige sollte so statisch wie möglich sein.
Hier die Anordnung
der Informationen während des Tauchens:
|
1 3 5 11 S=21' 6° |
In der ersten Zeile
findet man von links: Aktuelle Tiefe, Max. Tiefe, Tauchzeit.
In der zweiten
Zeile findet man von links: Dekostufen, beginnend bei der tiefsten
(hier
12m mit 1 min.), dann die gesamte Dekozeit, dann ganz rechts am Rand
die
Temperatur.
Ist noch keine
Dekompressionspflicht eingetreten, so steht an der Stelle der
Dekostufen
die verbleibende "Nullzeit":
|
|
Während der
Oberflächenpause zeigt das Gerät an
|
|
wobei der untere
Teil der Anzeige alle 10 sec. wechselt, falls die angezeigten Werte
> 0
sind:
|
|
|
|
|
|
|
|
Für die Bedienerführung und die Setzung der Benutzereinstellungen werden die entsprechenden Fragen angezeigt und müssen mit Tastendrücken beantwortet werden.
Weiter zu
Teil
II
(Hardware des Mikrocontrollers)
Die SBTC-Seiten
Konzeption | LCD-Anzeige | Mikrocontroller | Software | Sensoren | Gehäuse | Erfahrungsberichte