Eine typische Anwendung für ein Touchpanel ist das Touchscreen. Bei einem Touchscreen wird das Touchpanel über einem Grafik-Display befestigt. Dadurch ergibt sich eine sehr kompakte Bedien- und Anzeigeeinheit. Das Grafik-Display zeigt Tasten in Form von Rechtecken an, und ein Druck auf das darüberliegende, durchsichtige Touchpanel löst die gewünschte Reaktion aus.
Das zweite Demonstrationsbeispiel zeigt dies an einem einfachen Besipiel mit zwei Tasten (Abbildung 11).
Die Abbildung 12 zeigt die Koordinaten der beiden virtuellen Tasten am Touchpanel.
Die Abbildung 13 zeigt die Schaltung für das zweite Demonstrationsbeispiel.
Der Wesentliche Unterschied zum ersten Demonstrationsbeispiel ist das Grafik-Display (LCD1) mit einer Auflösung von 128 x 64 Pixel. Dadurch ist auch ein "größerer" Mikrocontroller (IC1) mit zusätzlichen Portpins notwendig. Für dieses Demonstrationsbeispiel wird daher der PIC16F877 verwendet, der mit einem externen 20-MHz-Takt versorgt wird (X1, C5, C6 und R14). Der PIC16F877 lässt sich sehr gut in der Schaltung programmieren. Diese Methode wird ICSP genannt. ICSP steht für In-Circuit-Serial-Programming.
Der Reset wird hier mit einem RC-Glied bestehend aus R13 und C3 erzeugt. Zusätzlich kann ein Reset jederzeit mit dem Taster S1 ausgelöst werden. Da der Reseteingang des Mikrocontrollers (MCLR, Pin 1) auch gleichzeitig die Programmierspannung (ca. 13V) bei der ICSP-Programmierung ist, darf während einer Programmierung kein Reset ausgelöst werden. Durch die Diode D1 ist ein Reset durch das RC-Glied (R13 und C3) während einer Programmierung via ICSP nicht möglich.
Für die Beschaltung des Touchpanel (TP1), für den Koppelkondensator (hier: C4) und für die Stromversorgung gilt das gleiche wie beim ersten Demonstrationsbeispiel.
Das Layout für dieses Demonstrationsbeispiel befindet sich im Download-Bereich auf dieser Seite, der Bestückungsplan ist in Abbildung 15 zu sehen. Der Nachbau sollte keine Probleme bereiten. Bei der Bestückung beginnt man üblicherweise mit den niedrigen Bauteilen.
|
Achtung:
Die "Drahtbrücken" in Form von SMD-Widerständen (0 Ohm) auf der Lötseite nicht vergessen! |
Die Software zum Demonstrationsbeispiel befindet sich im Download-Bereich auf dieser Seite.
|
Achtung:
Für dieses zweite Demonstrationsbeispiel ist die kostenpflichtige Vollversion des C-Compilers mikroC notwendig! |
Auch bei diesem Demonstrationsbeispiel besteht die Software aus mehreren Programmteilen, die denen vom ersten Demonstrationsbeispiel sehr ähnlich sind:
Interrupt-Service-Routine (kurz: ISR):
Für die ISR (in der Datei TouchScreen_Demo.c, Zeilen 93 bis 103) gilt im
Wesentlichen das gleiche wie beim ersten Demonstrationsbeispiel. Auch hier hat die ISR die Aufgabe eine
100-ms-Zeitbasis zu erzeugen.
Im Gegensatz zum ersten Demonstrationsbeispiel wird hier als Taktquelle für den Mikrocontroller ein externer 20 MHz-Quarz verwendet, dadurch ergeben sich Änderungen in den Zeiten. Mit einem Vorteiler (VT) von 1:128 ergibt sich, dass die ISR hier ca. alle 6.5ms aufgerufen wird.
Wird diese ISR 15 mal aufgerufen so vergeht eine Zeit von 15 x 6.5ms = ca 97ms). Die Konstante KONSTZEITBASIS100MS beinhaltet daher den Wert 15.
Hauptprogramm:
Das Hauptprogramm (main, Datei: TouchScreen_Demo.c,
Zeilen 403 bis 438) ist hier etwas länger. Zuerst muss der Mikrocontroller initialisiert werden (mit dem
Unterprogramm Init, Zeile 406). Neu ist die Initialisierung des Grafik-Displays
mit den Unterprogrammen Glcd_Init, Glcd_Fill und
Glcd_Set_Font (Zeilen 409 bis 412). Anmerkung: Diese Unterprogramme werden vom
mikroC-Compiler automatisch zur Verfügung gestellt, und müssen daher nicht ausprogrammiert werden. Als nächstes
müssen noch zwei Tasten mit passenden Texten am Grafik-Display dargestellt werden. Die Zeilen 415 bis 424
übernehmen diese Aufgaben.
Nun befindet sich das Hauptprogramm in einer Endlosschleife. Diese Schleife besitzt nur die Aufgabe ständig das Botschaftsflag FlagZeitbasis100ms zu prüfen. Ist dieses Botschaftsflag gesetzt, so muss vom Hauptprogramm eine bestimmte Aufgabe ausgeführt werden. Diese Aufgaben sind in Form von Unterprogrammen vorhanden. Hier hat es die Aufgabe das Unterprogramm zur Abfrage des Touchpanels aufzurufen (Zeile 432). Wichtig ist, dass das Botschaftsflag wieder gelöscht werden muss (Zeile 435).
Unterprogramm Init:
Das Unterprogramm Init (Datei: TouchScreen_Demo.c,
Zeilen 133 bis 278) dient auch hier zur Initialisierung des Mikrocontrollers. Es gilt im Wesentlichen das
Gleiche wie beim ersten Demonstrationsbeispiel. Nur mit dem Unterschied, dass eben hier ein anderer
Mikrocontroller verwendet wird.
Unterprogramm TouchPanelTastenRoutine:
Das Unterprogramm TouchPanelTastenRoutine (Datei:
TouchScreen_Demo.c, Zeilen 333 bis 390) ist auch hier das wesentliche
Unterprogramm für dieses Demonstrationsbeispiel. Auch hier gilt im Wesentlichen das gleiche wie beim ersten
Demonstrationsbeispiel. Der einzige Unterschied ist, dass hier nicht die Zustände der Leuchtdioden verändert
werden, sondern die Texte am Grafik-Display, und dass hier nur zwei Tasten zu bearbeiten sind.
|
Wichtig:
Auch dieses Unterprogramm muss im Hauptprogramm regelmäßig (zyklisch) aufgerufen werden (Siehe Hauptprogramm, Datei: TouchScreen_Demo.c, Zeile 432). |
Unterprogramme TP_GetX und TP_GetY:
Diese beiden Unterprogramme wurden bereits im Abschnitt Software
sehr ausführlich behandelt, so dass sie hier nicht mehr näher erläutert werden müssen.
|
Wichtig:
In der Datei TOUCHPANEL.H müssen die Portpins und die analogen Kanäle gemäß der Demonstrationsschaltung nach Abbildung 8 definiert werden, Zeilen 19, 20, 24 und 25. |
Unterprogramm ADC8:
Das Unterprogramm ADC8 (Datei: myPIC_ADC.C,
Zeilen 47 bis 59) dient zur Analog-Digital-Wandlung mit dem PIC-internen-Hardwaremodul und entspricht der
Vorgabe im Datenblatt zum PIC16F88 [5].
Sonstiges:
Am Beginn des Quellcodes (in der Datei TouchPanel_Screen.c) befinden sich die
folgenden Definitionen und Einstellungen:
Hier, zum Abschluss, die notwendigen Einstellungen für den PIC16F877 für dieses Demonstrationsbeispiel: