www.mikrocontroller.net

Forum: Codesammlung LCD über nur einen IO-Pin ansteuern


Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Oftmals möchte man ein LCD anschließen und hat aber nur wenige Pins
frei.
Ein LCD braucht aber mindestens 6 IOs.

Die Lösung, man nimmt nen kleinen ATtiny und kann dann bequem per UART
die Daten ans LCD senden.

Anbei mal der Schaltplan und ein vorläufiger Code mit fester Baudrate
(9600Baud). Ich werds später auf Autobaud erweitern.

Der Code wurde auf nem ATtiny25 entwickelt, sollte mit kleinen
Änderungen auch auf nem ATtiny13 laufen.

Für den UART-Empfang wird ein Pin des AVR doppelt verwendet. Daher der
220R Widerstand, damit nicht 2 Ausgänge gegeneinander treiben.

Man kann aber auch nen RS232 Anschluß verwenden, dann muß der 4,7k
Widerstand rein. Außerdem muß das Macro RX_INVERT definiert sein, damit
die Polarität stimmt.

Da alle 6 IOs verwendet werden, empfiehlt es sich, vorher meinen
Bootloader aufzuspielen, damit man auch in der Schaltung die Software
neu flashen kann.


Peter
Autor: zebrafalke (Gast)
Datum:

Man könnte auch einen pcf8575 als portexpander nutzen.
Autor: Uwe Bonnes (Firma: TU Darmstadt) (uwebonnes)
Datum:

Ist PCF8575 nicht TWI und braucht 2 Leitungen?
Autor: Paul Baumann (Gast)
Datum:

Prima Peter! Das kommt mir gerade recht, da ich eine Steuerung mit einem
Atmega8515 gebaut habe und für ein Display kein "Platz" mehr frei war.

Frage: Wärest Du so gut, die fertige .hex-Datei hierher zu posten? Ich
kenne mich mit C überhaupt ´nicht aus und weiß daher nicht, wie und
womit ich das Programm kompilieren kann.

MfG Paul
Autor: Stevko (Gast)
Datum:

Hallo Peter,

auch ich habe schon mehrmals einen separaten Käfer für ein LCD verwendet
um Pins zu sparen. Allerdings wird die Analyse Deines Codes bei meinen
C-Kenntissen schon ein paar Tage daueren. Schade dass Du nicht in
Assembler programmierst, da müsste ich nicht alles von C in asm
umsetzen.

Aber 2 Fragen habe ich noch:

1. Auf dem Schaltplan legst Du die Kontrastspannung auf Masse. Ich habe
auch schon das LCD EA DIP162 verbaut und es war bei mir immer ein
Trimmer für VEE nötig. Schade das kein Pin mehr übrig ist, sonst könnte
man die Hintergrundbeleuchtung mittels Transistor ausschalten.

2. Die Diode D2(wichtigste):
Für was ist sie da? Wenn an J2 eine Spannung anliegt dann leitet doch
diese Diode nach Masse ab. Also nach meinem Verständnis eine Art
Kurzschluß. Aber ich habe es schon in mehreren Schaltplänen gesehen nur
leider verstehe ich den Sinn nicht. Ein paare kurze Erklärungen oder
Stichpunkte wo ich suchen soll, würden mir schon helfen.

Gruß
  Stevko
Autor: ABC (Gast)
Datum:

@Stevko

>>2. Die Diode D2(wichtigste):<<

Meines Erachtens, sollte sie umgedreht eingebaut werden, damit sie die
logische 1 einer RS232 Verbindung (zwischen -3V und -15V) nach quasi GND
zieht.

siehe auch: http://de.wikipedia.org/wiki/EIA-232
Autor: Peter Dannegger (peda)
Datum:

ABC wrote:
> @Stevko
>
>>>2. Die Diode D2(wichtigste):<<
>
> Meines Erachtens, sollte sie umgedreht eingebaut werden, damit sie die
> logische 1 einer RS232 Verbindung (zwischen -3V und -15V) nach quasi GND
> zieht.


Stimmt, es sind sogar beide Dioden falsch rum.

D1 verhindert Spannungen über VCC, funktioniert aber nur in Verbindung
mit dem internen Pullup. D2 verhindert Spannungen unter GND.

Steuerst Du aber mit nem MC an, der an den gleichen 5V liegt, sind die
Dioden überflüssig.


Peter
Autor: Stevko (Gast)
Datum:

@Peter:

Vielleicht stelle ich mich heute besonders blöd an aber wenn Du D1
drehst
und mit TTL auf J2 gehst, sperrt die Diode doch immer. So wie D1 jetzt
eingebaut ist kann PB3 nicht nach "drausen" senden und die ankommende
TTL wird um ca. 0,6V abgeschwächt. Das fand ich bis jetzt in Ordnung.
Wenn Du D2 drehst, dann würde ich es verstehen aber auch D1?

RS323 ist doch:
 1 = -3V .. -25V
 0 = +3V .. +25V

Dann wäre doch eine "0" gleich 4.4V und im Soft-UART drehst Du es wieder
um.

Gruß
 Stevko
Autor: Paul Baumann (Gast)
Datum:

Hier:
http://elmicro.com/de/seriallcd.html

habe ich industriell hergestellte serielle Display's gefunden. Die sind
ganz anständig teuer. Da ist die Lösung von Peter einfacher.

MfG Paul
Autor: ABC (Gast)
Datum:

Die EA DOGM's sind dagegen mit ca. 10Euronen fuer ein 2x16 Display recht
preisguenstig. Sie laufen mit 4Bit, 8Bit oder SPI Interface und
ausserdem direkt an 3.3V. Nur ein Backlight muss man sich noch dazu
besorgen.
Autor: Andreas K. (a-k)
Datum:

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

So, ich habs endlich mal fertig gestellt.

Die Baudrate wird von 1000 .. 60000 Baud erkannt.

Obwohl das Programm nur 1k groß ist, muß man den ATtiny25 verwenden.
Das Problem ist ja, daß die Timer nur 8bittig sind, aber möglichst ein
Zählwert >100 für 1% Fehler eingestellt werden sollte.
Das ist bei beliebigen Baudraten nicht mit dem ATtiny13 machbar. Erst
der ATtiny25 kann den Prescaler in 2-er Potenzen einstellen.

Auch hat der ATtiny25 dann Platz für den Bootloader, den man besser
verwenden sollte, wenn man alle 6 IOs benötigt.

Man könnte auch den ATtiny24 nehmen, der hat ja nen 16Bit Timer. Da muß
man dann nicht am Prescaler spielen.


Das Kommandointerface ist ganz einfach, nach 'c' kann man ein Kommando
senden, nach 'd' Daten.

Außerdem kann man nach 'C' bzw. 'D' alles als 2 Hex-Digits senden.
Das ist insbesondere für PC-Modder interessant, die ein LCD einfach über
die UART ansprechen wollen.


Peter
Autor: Tobi (Gast)
Datum:

Hallo Peter,

nun habe ich schon das genze Forum durchsucht,
finde aber leider nur dieses hier.

Mit diesem Code kann man nur über das 1wire empfangen, aber nicht
senden,
wie bei deinem Bootloader.

Könntest Du mir da mal etwas auf die Sprünge helfen?

Gruß Tobi
Autor: Christian. (Gast)
Datum:

Hi Peter,
tolles Projekt! Ist denn der Schaltplan jetzt so, wie er sein soll. Ich
habe das hin und her mit den Dioden nicht ganz verstanden. Wenn der
Schaltplan nicht korrekt ist, wurde ich mich über eine Aktualisierung
freuen.
Grüße
Christian
Autor: Peter Dannegger (peda)
Datum:

Christian. wrote:
> tolles Projekt! Ist denn der Schaltplan jetzt so, wie er sein soll. Ich
> habe das hin und her mit den Dioden nicht ganz verstanden. Wenn der
> Schaltplan nicht korrekt ist, wurde ich mich über eine Aktualisierung
> freuen.

Ja, editieren von Projekten geht hier nicht.

Das aktuelle Projekt findest du hier:

http://www.avrfreaks.net/index.php?module=Freaks%2...


Peter
Autor: Klaus (Gast)
Datum:

@Peter
Kann man mit der AutoBaud-Funktion in anderen Kontexten auch ohne
externen Oszillator bei guter Qualität über RS232 senden, nachdem der
UART eingestellt ist?
Autor: Uwe S. (de0508)
Datum:
Angehängte Dateien:

Hallo,

ich habe den Quellcode mal auf avr-gcc mit einem Makefile angepasst.

Sind diese Fuse-Bits ok:
# 8MHz, mit Bootloader von Peter und RESET ist noch enabled.
-U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m

# 8MHz, mit Bootloader von Peter und RESET ist disabled.
-U lfuse:w:0xe2:m -U hfuse:w:0x5d:m -U efuse:w:0xfe:m 

Orginal Code stammt von hier:

http://www.avrfreaks.net/index.php?module=Freaks%2...
Autor: Uwe S. (de0508)
Datum:
Angehängte Dateien:

Hallo Forum,

nach einigen Anpassungen läuft nun die 1-Wire LCD Anzeige mit dem 1-Wire
Bootloader "fastboot-2.9" von Peter_Danneggers.
Danke Peter.

Hier noch alle nötige Quelldateien, Ergänzungen und Beschreibung zum
Bootloader "fastboot-2.9".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net