Im folgenden findet ihr eine kurze Dokumentation darüber, wie man ein AT90-Chip mit einem LCD-Display kombinieren und programmieren kann.
Ziel ist es, mit dem AT90 einen eigenen Text auf dem LCD-Display anzuzeigen.
Die Komponenten
Um die Komponenten (Gleichmann GE-C1602B-TMI-JT/R und Atmel AT90USBKey) zweckmäßig miteinander verbinden zu können, ist eine Steckplatine hilfreich. So erspart man sich das Löten.
Der Aufbau
Leider sind die Ports am AT90 von den Dimensionen her von Atmel etwas unglücklich gewählt. Ich habe keine passenden Stiftleisten gefunden, die man als Aufsatz benutzen könnte.
Stattdessen habe ich einfach ein Kupferkabel benutzt, welches dem Durchmesser der Ports entspricht. Anschließend habe ich die Kabel mit einer Heißklebepistole miteinander verschmolzen. So ist eine halbwegs feste und kostengünstige Verbindung gegeben, die sich für Testzwecke sehr gut eignet.
Das LCD-Display habe ich direkt auf die Steckplatine gesetzt, da sich das Rastermaß der Steckplatine mit den Abständen der LCD-Ports deckt. Kleiner Tipp: Die Drahtstücke je ein bischen verbiegen und danach einzeln einsetzen. So drücken sich die Drähte gut an die Portkontakte des LCDs.
Die Programmierung
Wenn ihr den Quellcode einfach kopieren wollt, dann müsst ihr folgende Portverbindungen einhalten (je linke Spalte mit rechter Spalte verbinden):
AT90 | LCD |
---|---|
PC0 | Vss |
PC1 | Vdd |
PC2 | V0 |
PC3 | RS |
PC4 | R/W |
PC5 | E |
PC6 | A |
PC7 | K |
PD1 | DB4 |
PD2 | DB5 |
PD3 | DB6 |
PD4 | DB7 |
Top-Ansicht von AT90-USBKey2
Beispiel: PC0 = Port C Pin 0
Die Bezeichnungen für die LCD-Ports finden sich im Handbuch.
Übersicht der Funktionen (C-Quellcode kann unten heruntergeladen werden)
Um etwas auf den LCD zu schreiben, braucht man lediglich folgende Funktion, die sehr einfach zu benutzen ist:
int main() { watchdog_off(); //LCD-Init init_board_for_lcd(); lcd_init(); lcd_show_strpos(0x00, "Joystickeingabe:"); //0x00 bezeichnet hierbei die Stelle, an der der Text //im LCD-Display eingefügt werden soll. //0x00 = 1. Zeile 1. Stelle //0x05 = 1. Zeile 6. Stelle //0x0A = 1. Zeile 11. Stelle //0x45 = 2. Zeile 6. Stelle //0x4A = 2. Zeile 11. Stelle }
Wenn jemand andere Ports verwenden möchte, muss dementsprechend die config.h anpassen.
Fall jemand den Quellcode anpassen/erweitern möchte, hier eine kurze Funktionsübersicht:
Funktion | Wirkung |
---|---|
lcd_show_strpos(uint8_t pos, char *data) | Schreibt einen String an die Position pos |
lcd_show_string(char *data) | Schreibt einen String hinter die zuletzt beschriebene Position |
lcd_show_char(uint8_t data) | Schreibt einen Buchstaben hinter die zuletzt beschriebene Position |
lcd_cmd_setcurser(uint8_t data) | Ändert die Curserposition (wo soll das nächste Zeichen geschrieben werden) |
lcd_cmd_cleardisplay() | Löscht den Displaytext |
lcd_cmd(uint8_t data) | Sendet ein 8bit-Command an den LCD-Chip |
lcd_sende_bits(uint8_t data) | Sendet 4bit an LCD |
lcd_flanke() | Es werden die bits gelesen, die durch lcd_sende_bits() angelegt wurden |
lcd_init() | Initialisierung des LCDs (Parameter in der config.h) |
init_board_for_lcd() | Initialisierung des AT90 (Parameter in der config.h) |
» Download: AVR-Projekt: AT90USBKey 2 mit Gleichmann LCD-Display
Programm-Code auf das AT90 Board aufspielen
– Stelle sicher, dass das AT90-Board resettet ist. Sicherheitshalber nochmal einen Reset durchführen:
Zuerst HWB-Knopf (auf der Platine) drücken und gedrückt halten, dann RST drücken, während man noch HWB gedrückt hält. Anschließend RST loslassen und danach HWB loslassen.
– Dann muss das Projekt in AVR compiliert werden (z.B. über F7). Anschließend öffnet man FLIP (hier V3.4.5) und wählt:
– „Select a Communication Medium (zweites Icon von links)“ -> „USB“ (Kann unter Win7 Probleme machen, bei mir hat es auf WinXP aber funktioniert)
– „Load HEX File (drittes Icon von Rechts)“ -> die zuvor kompilierte HEX-Datei suchen (hier: $projektordner/default/test.hex
– Unter „Operations Flow“ müssen alle Häkchen angewählt werden
– Drücke Run und dann Start Application (+Reset)
Jetzt müsste der gewünschte Text auf dem LCD-Display zu sehen sein.
Kommentare»
bisher keine kommentare