UartDisplay
Motivation
Das Portieren der Display-Lib auf verschiedene Mikrocontroller macht keinen Spass. Deshalb haben wir uns dazu entschlossen, die von Dominic geschriebene Lib für einen ATMega 8 zu verwenden. Der ATMega8 sollte dann per UART die darzustellenden Texte empfangen, da eine UART-Lib ohnehin für jedes Mikrocontrollerprojekt nötig ist und aktuelle Mikrocontroller ohnehin genug UARTs zur Verfügung stellen.
Allgemeines
Das Modul wird über unseren UART-TTL-Stecker mit anderen UART Geräten verbunden, und ist somit einfach mit allen entprechend ausgestatteten Geräten kombinierbar. Die Bedienung ist staight forward, da einfach der Text der über den UART empfangen wird direkt auf dem Display dargestellt. Dabei erscheint eine neue Zeile in der letzten Zeile des Displays und schiebt alle anderen Zeilen um eins nach oben, wie von einem klassischen Terminal gewohnt. Das Exakte positionieren von Text auf dem Display ist absichtlich nicht möglich, da so die Ansteuerung möglichst einfach gehalten wird.
Außerdem verfügt das Modul über 8 Tasten, welche seitlich des Displays angeordnet sind. Beim Drücken einer der Tasten wird eie ASCII Kodierte Ziffer gesendet.
Für Akustisches Feedback gibt es einen Piezo-Signalgeber, welcher beim Empfang des Steuerzeichens <BEL> einen kurzen Ton erzeugt.
Schaltplan und Layout
Software
Interface, Ansteuerung
Der UART des ATMegas ist statdardmäßig auf 115200 BAUD eingestellt, dies kann aber im Sourcecode leicht geändert werden.
Prinzipiell wird auf dem Display genau der Text angezeigt, der per UART gesendet wird. Ein Newline-Zeichen \r schließt eine Zeile ab und verschiebt den gesamten Inhalt des Displays um eine Zeile nach oben. Die neue Zeile erscheint dann ganz unten. Ein Carriage return \n beendet ebenfalls eine Zeile, führt aber nicht zur Darstellung des Puffer-Inhalts auf dem Display. Dies geschieht nur unmittelbar nachdem ein \r gesendet wurde.
Falls mehr Zeichen gesendet werden als auf das Display passen, werden die überschüssigen Zeichen ignoriert. Als letztes Zeichen einer zu langen Zeile wird ein Müllzeichen angezeigt, um zu signalisieren, dass Zeichen verworfen wurden. Fall scrollen aktiviert ist, beträgt die maximale Zeilenlänge 60 Zeichen, Das Müllzeichen wird nicht angezeigt. Der Text läuft dann wie ein Laufband im Kreis herum. Es ist Sinnvoll am Ende eine langen Zeile 1-3 Leerzeichen anzufügen um den Beginn der Zeile hervorzuheben.
Der Zeichensatz des Displays entspricht nicht exakt dem ASCII Zeichensatz. Deshalb wird intern über eine Lookup-Table eine Anpassung der empfangenen Zeichen vorgenommen, so dass alle Zeichen auf der Tastatur korrekt auf dem Display dargestellt werden. Um einige Sonderzeichen, wie z.B. Pfeile, ohne großen Aufwand als tippbaren String übermitteln zu können versteht das Modul eine Reihe von Sondersequenzen die geparst und durch entsprechende Zeichen ersetzt werden. Alle Sondersequenzen werden durch ein Form-Feed \f eingeleitet. Darauf folgen genau 2 weitere Zeichen, deren bedeutung im folgenden dargestellt ist:
<- : Pfeil nach links <| : Return-Zeichen <b : Dicker Pfeil nach links << : Doppelpfeil nach links >b : Dicker Pfeil nach rechts >> : Doppelpfeil nach rechts ^| : Pfeil nach oben ^\\ : Pfeil nach links-oben ^^ : Doppelfpeil nach oben ^b : Dicker Pfeil nach oben v| : Pfeil nach unten v/ : Pfeil nach links-unten vv : Doppelpfeil nach unten vb : Dicker Pfeil nach unten /^ : Pfeil nach rechts-oben \\v : Pfeil nach rechts-unten -> : Pfeil nach rechts v| : Pfeil nach unten ^| : Pfeil nach oben |n : Progressbar (n=1..5)
Außerdem gibt es Steuerbefehle zur Konfiguration des Displays:
\ei : Display initialisieren \eS : horizontales Scrollen einschalten \es : horizontales Scrollen ausschalten \eL : Hintergrundbeleuchtung einschalten \el : Hintergrundbeleuchtung ausschalten \ax : Einen Ton ausgeben; x = ['1','2','3']
Beim Betätigen eines Tasters sendet das Display ein dem Taster zugehöriges Zeichen. Dabei wird beim Drücken die die Minuskel gesendet und beim Lostlassen die Majuskel. Die Zuordnung der Taster ist folgendermaßen:
S1 -> 'a','A' S2 -> 'b','B' S3 -> 'c','C' S4 -> 'd','D' S5 -> 'e','E' S6 -> 'f','F'
Teileliste
Unvollständig: enthält nur Teile, die nicht üblicherweise griffbereit sind.
Name |
Bestellnummer Reichelt |
Bestellnummer Farnell |
Menge |
X2 |
7,3728-HC49U-S |
1842266 |
1 |
S1-S6 |
TASTER 3301 |
2402409 |
6 |
R1 |
PT 6-L 2,5K |
|
1 |
SG2 |
|
1765028 |
1 |
T1-T2 |
IRLML 6302 |
9103406 |
2 |
Display |
EA DIP203J-4 |
|
1 |
Downloads
UartDisplay-Software-1.2.zip Software v1.0 inclusive Dokumentation
UartDisplay-Software-1.0.zip Software v1.0 inclusive Dokumentation
UartDisplay-Board-1.4.zip CAD-Daten der Platine im Eagle-Format
UartDisplay-Board-1.0.zip CAD-Daten der Platine im Eagle-Format
History (Software)
- 2011-02-16 v1.0
- 2012-02-23 V1.2
- Buttons implementiert
- Buzzer implementiert
- Escapesequenz zum Schalten der Hintergundbeleuchtung hinzugefügt
History (Hardware)
- v1.3
- 2 Taster waren an einen ADC-Ports angeschlossen die keine IO-Funktionalität besitzen. Diese wurden umgelegt. Dadurch sind die Schaltausgäge für die Displaybeleuchtung mit den ISP-Pins zusammengefallen. Daher blinkt das Display nun beim programmieren.
- v1.4
- der Quarz und die dazugehörigen Kondensatoren wurden minimal verschoben, da diese sich überlappten.