Forum: Mikrocontroller und Digitale Elektronik A tiny project RS232 -> LCD PCB zu verschenken.


von Dominik V. (Firma: TBV) (d190979v)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Kurz-Intro:
Im Rahmen meines aktuellen Projektes brauchte ich ein LCD Display. 
Allerdings wurden trotz Wechsel auf den ATMega1284 die Beinchen etwas 
knapp, da dieser jedoch mit einem zweiten UART aufwartet habe ich ein 
kleines Zwischenprojekt eingeschoben, da...
nach Studium der gängigen Distributoren-Kataloge schnell klar war, ein 
serielles Display ist fast überall verfügbar. Der Blick auf den Preis 
ernüchterte, für das Geld? Wofür programmiert man denn gerade einen µC? 
Selber machen, da hat man auch noch mehr Spielraum...
Vier Testbestellungen in China platziert, da kostet das HD44780 
kompatible 16x2er gerade mal einen Euro, wenn drei verloren gehen, bin 
ich immer noch billiger weggekommen...(aber es kamen alle an :-))
Da, wie ich meine, das Ergebnis ganz nett ist, will ich es mal nicht 
vorenthalten und zum Allgemeingut machen:

Zum Thema:
Also wurde es was es ist, ein eigener Display-Treiber für die serielle 
Schnittstelle auf Basis des ATTiny2313A, da es sich um ein Eval-Board 
mit Jumpern und LED´s für RX und TX handelte, habe ich den Footprint des 
20x4er Displays gewählt und alles in DIL/DIP ausgeführt. Auch der 
Anschluss des Displays ist nicht Deckungsgleich zur LCD-Platine, sondern 
erlaubt mittels Wannenstecker den schnellen Wechsel der Displays. Um in 
der Entwicklungsphase mit dem PC zu kommunizieren wurde zusätzlich ein 
Pegelwandler eingeplant, dessen 1. Treiber hängt via Jumper an den 
RXD/TXD-Leitungen. Der 2. Treiber kann via Jumper an die am höchsten 
priorisierten Interruptpins (INT0/INT1) angeschlossen werden, um 
Flußkontrolle mit RTS/CTS zu realisieren, benötige ich zwar nicht, aber 
da die PINS gerade günstig lagen ist es mit auf der Platine, ebenso der 
6-pol ISP-Header. Trennt man den Wandler ab, kann man über die 
Jumper-PINS auch gleich von µC zu µC kommunizieren. Die endgültige, 
abgespeckte Version wird dann ein Backpack werden oder gleich mit auf 
die Hauptplatine wandern.
Zusätzlich zu der Ausgabe der empfangenen Daten sind ein paar 
Spielereien implementiert, so lässt sich der Kontrast via PWM regeln und 
das Backlight via Mosfet an- und ausschalten. Ebenso ist ein 
Piezo-Schallwandler auf der Platine, der an den PWM-Ausgang von Timer0 
gekoppelt werden kann, das ermöglicht im Gegensatz zu einem reinen 
An/Aus-Summer sogar verschiedene Tonhöhen (OK, ich vergas diesen bei 
meiner letzten Bestellung, daher auf den Bildern eine altes, halbes 
N***a-Headset ;-))
Angesprochen werden diese Bauteile im Moment mit den freien Zeichen im 
Display-Zeichensatz (so wie vor Jahrzehnten schon die Steuerbefehle 
übermittelt wurden), sofern der entsprechende Jumper gesetzt wird (PD4 
gegen Masse). Sofern man Binärdateien "snifft"  hat man sonst ein 
Rockkonzert auf dem Schreibtisch (Licht&Ton). Da die Firmware im Moment 
noch Q&D ist, behalte ich diese zunächst für mich, im Moment nutzt Sie 
den Speicher des ATTiny um den Test zeilenweise zu scrollen, das passt 
mit kleinem Empfangspuffer so gerade noch bei 20x4.
Die frei konfigurierbaren PINS des ATTiny2313 sind PD0 bis PD5, der Rest 
ist fest verdrahtet, es sei denn, man nutzt den Display-Port gleich ganz 
anderweitig und schließt noch was an den ISP-Header an.
Auf den Bildern im Anhang ist meine aktuelle Testconfig, sowie eine 
nicht fertig bearbeitete Platine (belichtet, geätzt, aber nicht 
zugeschnitten, gebohrt oder bestückt). Diese Platine ist "zu 
verschenken". Wer Zeit und Lust hat, sowie verspricht sie zeitnah zu 
bestücken und hier einen netten Beitrag dazu schreibt, kann diese haben. 
Ich würde mich freuen wenn derjenige ein 20x4er Display sein eigen 
nennt, da man sich dann über die Firmware austauschen könnte, alternativ 
würde ich auch eine kreative Verwendung begrüßen, etwa etwas in der Art:
Die User-Defined-Characters per RS232 mit den Darstellungen der Noten c 
d e f g a h füllen und dazu der Platine Töne beibringen. (Wäre was für 
meine kleine Tochter).

Wer also Lust hat, bitte hier melden, an den User mit den besten 
Argumenten schicke ich die Platine kostenfrei raus, Einsendeschluss ist 
gleitend, jedoch spätestens kommenden Sonntag Abend.

Gruß Dominik

P.S.: Was noch benötigt wird:
ATTiny2313
MAX232
Baudratenquarz (ich nutze 9,216 MHz)
LM7805 (Kühlkörper unnötig)
2x6er PIN-Header
2x2x1er PIN-Header
Widerständer/Kondensatoren

(Die Bestückung kann auch vielfach mit Drahtbrücken vereinfacht werden)
3 LED´s (optional)

von Dominik V. (Firma: TBV) (d190979v)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
die Firmware ist jetzt soweit bereinigt, stelle ich mal hier zur 
Verfügung.
Der LCD-Treiber unterstützt Lesen und Schreiben, das aktuelle 
Testprogramm mit RX/TX-Funktion ist auch dabei. Passt so gerade zu 100% 
in den 2313, werde wohl auf den 4313 ausweichen damit noch ein paar 
Fukntionen Platz haben.
Der LCD-Treiber ist recht universell gehalten und kann sicher dem ein 
oder anderen gute Dienste leisten.

Gruß Dominik

von Dennis K. (scarfaceno1)


Lesenswert?

Nur damit ich es verstehe...

Atmega1284 -> serielle Schnittstelle -> LCD
?

Warum nicht i2C? Dafür gibts doch schon etliche Libs...

von Cyblord -. (cyblord)


Lesenswert?

Mir ist der große Aufwand nicht ganz klar. Ein normales LCD kann man per 
I2C-Portexpander (PCF...) zu einem seriellen machen. Natürlich dann I2C 
und benötigt 2 Pins. Aber der Aufwand besteht praktisch nur im verbinden 
des PCF mit dem LCD und dem Controller.

gruß cyblord

von Dominik V. (Firma: TBV) (d190979v)


Lesenswert?

Hallo,

Dennis Kaufmann schrieb:
> Nur damit ich es verstehe...
>
> Atmega1284 -> serielle Schnittstelle -> LCD
> ?
>
> Warum nicht i2C? Dafür gibts doch schon etliche Libs...

im Moment PC->RS232->ATTiny2313->LCD, ich wollte eine eigene Lib, die 
die normalen ASCII-Co-Steuerzeichen erkennt. So funktioniert das LCD wie 
ein "Anno-Dazumal"-Terminal mit Beeper und Co. Funktionen für Backlight, 
Baudrate, Progressbar und das Einspielen des User-Characters sind schon 
vorhanden, weitere folgen sobald der 4313 ankommt, den musste ich 
anderweitig beziehen weil bei meinem Standard-Distributor nicht auf 
Lager und trotz recht sparsamer C-Programmierung ist der 2313 schon 
randvoll.

cyblord ---- schrieb:
> Mir ist der große Aufwand nicht ganz klar. Ein normales LCD kann man per
> I2C-Portexpander (PCF...) zu einem seriellen machen. Natürlich dann I2C
> und benötigt 2 Pins. Aber der Aufwand besteht praktisch nur im verbinden
> des PCF mit dem LCD und dem Controller.
>
> gruß cyblord

Grundsätzlich ist das ganze ein Evalboard, soll aber der Entwicklung 
einer Ein-Ausgabe-Schnittstelle für die vom ATMega gesteuerte Maschine 
werden, dieser hat auch keine Zeit sich mit der LCD-Ansteuerung zu 
beschäftigen, da harte Echtzeitbedingungen gegeben sind. I2C und SPI 
wären möglich gewesen, aber dann hätte ich die Möglichkeit verloren das 
Gerät auch an den Steuer-PC anzuschließen, auch sind die RS232-Pegel 
etwas schöner um das Display etwas vom Steuer-µC zu entfernen, 
wahrscheinlich wird das ganze eher eine Fernbedienung. Den regulären SPI 
habe ich an die externe Speicherbank vergeben, diese ist auch im 
permanenten Zugriff, der Bus ist also belegt. Den 2. USART im SPI oder 
I2C-Modus zu betreiben wäre noch gegangen, aber mittels zweitem µC ist 
zumindest die Ausgabe der Benutzernachrichten ein Shoot-and-Forget was 
zum Großteil die Hardware des Atmega im Hintergrund erledigt während 
dieser mit seiner Takt-Richtungs-Berechnung und Ausgabe beschäftigt ist. 
Das ganze ist ja quasi ein zwei-Prozessor System. Die einzigen beiden 
Interrupts auf dem ATMega sind COMPA und COMPB, und diese warten sogar 
noch auf bestimmte Zählerstände damit Sie zeitgenau die Ausgaben machen 
können und nicht vom ablegen auf dem Stapel versetzt wirken, der Rest 
läuft über freie Timeslots.

Danke übrigens für den Tip mit dem PCF, ich habe mir den 8574 mal 
angesehen, der steht beim nächsten Mal auf der Einkaufsliste, scheint 
sehr brauchbar, wobei bei diesem Projekt der Tiny die Tastatureingaben
wohl über Schieberegister einlesen wird.

Gruß Dominik

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.