PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD mit AVR am PC



Marco78
07.11.2004, 11:43
Ich möchte mit einem 4X16 HD44780 LCD die Datum und die Uhrzeit (auf 3 Zeilen vergrößert) anzeigen lassen. Zusätzlich soll dieses LCD aber am PC angeschlossen werden mit dort mit gäniger Software was darstellen wenn der PC an ist. Wenn er ausgeschaltet ist soll der AVR die Uhrzeit anzeigen.

Erstmal vorweg, ich bin absoluer Anfänger, was µC angeht. Ich kenn mich gut mit Elektronik aus und habe früher viel in BASIC programmiert. Ich denke das wird mir ein wenig helfen. BASCOM hab ich mir auch schon näher angeschaut und ich denke damit werde ich auch klar kommen. Jeder mußte ja mal bei Null anfangen.

Ich habe mir hier schon viele Beiträge durchgelesen und zuvor schon im Internet einiges angelesen. Ich wollte mir hier ein paar Tipps abholen bevor ich wie wild anfange zu rogrammieren und nachher alles nochmal umschreiben muß. Und ich brauch ein paar Meinungen um die Gedanken die ich mir bis jetzt gemacht habe am besten bestätgen zu lassen oder ggf mich auf den richtigen Weg führen zu lassen.

Fang ich mal mit der Hardware an.
Die Spannungsversorgung soll von den 5V Standby des ATX-Netzteils kommen. Die Zeit von einem DCF77-Modul. Das Display wie schon beschrieben HD44780 im 8 Bit-Modus am AVR. Die Daten vom PC von der parallelen Schnittstelle auch mit 8 Bit. Von dort aus soll auch die ISP erfolgen. Erkennung ob der PC an oder aus ist mit 5V vom Netzteil.

Hier die ersten Fragen:
- Das DCF77-Modul hat 2 Ausgänge, einer davon inventiert. Brauch ich beide Ausgänge am AVR. Ich habe Schaltungen gesehen wo beide verwendet werdn und welche wo nur der nicht inventierte benutzt wird. Ich denke letzters reicht, oder? Ich bin auch schn so weit, das ich weiss, das der Pull-Up-Widerstand dann am Eingang aktiviert werden muß.
- Die Software soll auf ein 4X16 LCD eingestellt werden, es soll aber auch möglich sein ein 4X20 anzuschliessen, ohne die Software zu ändern. Mein Gedanke war, das ich alles auf ein 4X16 auslege und bei einem 4X20 einfach die letzten 4 Zeichen pro Zeile frei bleiben. Geht das?
- Ich habe Ansteuerungen eines LCD bis jetzt nur im 4 Bit-Modus gesehen. 8 Bit werden aber für den Betrieb am PC benötigt. Was mache ich jetzt mit den ersten 4 Dateinleitungen an LCD wenn die Uhrzeit angezeigt wird? Üer externe Pull-Down-Widerstände auf Masse legen? Sind die Ausgänge am AVR automatisch auf Masse? Oder lassen sie sich als Pull-Down aktivieren?
- Geht das mit der ISP am parallelen Port so wie ch es mir gedacht habe? Ich wollte auf der Platine 2 Jumper vorsehen, um die Brücken beim programmieren zu setzten die ich in vielen Schaltungen für die ISP gesehen habe.
- Ein Eingang soll für die Erkennung sein, ob der PC an der aus ist. Wie scon gesagt, sollen die +5V des ATX-NT dazu dienen. Weil es nicht zu 100% sicher ist, das es auch wirklich immer nur 5V sind will ich diese über ein 1:1 Spannungsteiler auf ein Eingang legen. Der Eingang soll dann ein Interrupt auslösen der auf eine steigende Flanke reagiert und die Uhrzeit ausgabe stoppen und zum "PC-Programm" springen. Aber was passiert, wenn die 5V weg sind? Wie wird die Uhrzeit wieder angezeigt?

Zur Software:
- Wenn ich es richtig verstanden habe, kann ich mir der Demoversion von BASCOM max. 2kb Code Kompilieren. Wie weit komm ich mit 2kb? Werden die für meine Anwendung reichen? Ich weiss, ist abhänig vom Programmierstill. Aber wenn jetzt hier schon einer sagt, das es vom Programmierstill abhänig ist, bedeutet das ja, das ich mich schon im Grenzbereich der 2kb bewegen muß mit meinem Vorhaben.

Der Programmablauf soll wie folgt sein.
- Das Netzteil wird eingeschaltet, der AVR bekommt Spannung und das Programm läuft ab.
- Erstmal wird (hoffentlich) ein Zeitsignal empfangen und entschlüsselt.
- Die benötigten Daten des Signals werden in Variablen abgelegt.
- Irgendwie wird im AVR intern eine Uhr syncronisiert die mitläuft. Falls mal kein Signal oder ein gestörtes Signal kommt immer noch die Uhr weiter läuft.
- Datum und Uhrzeit werden auf dem LCD angezeigt. Das Datum in der ersten Zeile und die restlichen 3 Zeilen für die Zeit. Dazu werden Custom Chars defeniert.
Hier benötige ich noch ein Tipp, wie ich die große Uhr am besten auf Display bekomme ohne viele Programmzeilen zu benötigen ;)
- Der Rechner wird eingeschaltet, ein Eingang erkennt die 5V (bzw etwa 2,5 wegen Spannungsteiler) und das Uhrprogramm wird unterbrochen.
- Der PC teil läuft jetzt ab. Den stell ich mir eigentlich noch am einfachsten vor. Etwa so halt nur mit BASCOM-Befehlen:


DO
O1=I1 'RS
O2=I2 'E
O3=I3 'D1
O4=I4 'D2
...
WHILE

Wie gesagt, das ist nur Sinngemäß! Das es mit I und O nicht geht weiss ich!
Damit sollen dann halt die Daten vom PC direkt zum LCD geleitet werden. Geht das im Prinzip?
Eigentlich wollte ich auch den Watchdog aktivieren. Aber auf was reagiert der? Auf Endlosschleifen? Ist das denn schon eine Endlosschleife? Die ersten paar Sekunden werden keine Daten kommen. Auch während des Betriebs werden sich evtl mehrere Sekunden die Daten nicht ändern.
- Dann geht der PC irgendwann aus. Die 2,5V die den Interrupt ausgelöst haben fehlen. Wie kommt jetzt wieder die Uhrzeit?

Das war's auch schon ;)

Wenn ich mich nicht verzählt habe, brauche ich 22 I/O-Ports.
8 Dateinletungen, E und RS zum LCD sind 10, das gleiche kommt nochmal vom PC sind 20. Und dann jeweils ein für DCF77 und die 2,5V PC an/aus.

Und nun die Frage aller Fragen, was für ein AVR dafür nehmen?
Ich hab mal im Reichelt-Katalog geschaut, was es so gibt. Meine erste Überlegung war entweder ein ATClassic oder ein ATMega. Da der Mega etwas günstiger ist wollte ich den nehmen. Dann hab ich umgeblättert und C51 gesehen, die um einiges günstiger sind.
Welche Typen ich genau in engere Auswahl habe, hab ich jetzt nicht im Kopf, müsste ich nochmal nachschauen. Aber was unterscheidet die Classic von Mega und C51? C51 haben kein EPROM. Aber wenn ich es richtig sehe, brauch ich ja auch kein, oder?


Ich weiss, das sind viele Fragen. Aber zu meiner Verteidigung möchte ich nochmal sagen, das ich mir vieles auch vorher schon selbst beantworten konnte. Ich hab ja z.B. nicht gefragt, wie erstelle ich ein Programm und bekomme das dann auf den AVR. Ich denke das spricht für mich, das nicht ihr die ganze Arbeit machen sollt und ich mich ausruhen will, sondern das ich mir schon Gedanken gemacht habe.

Ich bedanke mich auch schonmal ganz herzlich bei allen, die sich die Mühe machen diesen langen Beitrag überhaupt zu lesen und dann auch noch die Mühe machen mir zu helfen.

PS: Den DCF77-Code wollte ich mir aus dem Internet suchen und einfach einfügen. Zum einen wäre es mir für ein ersten Versuch zu viel (um nicht zu sagen, da bin ich ehrlich gesagt zu Faul mich mit den Zusammensetzung des Signals auseinander zu setzen) und außerdem muß ja das Rad nicht jeden Tag neu erfunden werden.
Die Weiterleitung der Daten vom PC ans LCD hab ich ja schon im Prinzip, sofern das überhaupt möglich ist.
Die Darstellung der großen Zahlen macht mir noch sorgen. Ist eigentlich verstanden wie ich mir das vorstelle? Ich kann sonst ein Bild einstellen.

Marco78
07.11.2004, 11:54
noch ein PS: Sorry, aber durch andere Forum bin ich etwas geprägt, was ich jetzt sage soll man bitte nicht falsch verstehen!
Auf Antworten wie "Programmier erstmal ein 'Hello World' mit Tastern und ein paar LEDs bevor du sowas hier machst" oder so kann ich verzichten.
Das hilft mir bei der Lösung meines/meiner eigentlichen Probleme nicht.
Ich bezeichne mich selbst nicht als blöd und als Lernfähig. Auch wenn ich geschrieben habe, das ich noch nie was mit µC zu tun hatte, bedeutet das ja nicht, das ich nicht in der Lage bin es schnell zu lernen und nur ein paar Dendanstöße von erfahrenen Programmieren brauche.
Keiner der mir den "Hello World"-Tipp geben würde kann von sich behaupten, das er das Programmieren nicht erlernen musste.

andysafe
07.11.2004, 12:12
Hallo
schaue doch auch mal hier vorbei , vielleicht haben die in dem Forum auch ein paar Hilfen parat.

http://www.jalcdsforum.de/main.php?sid=e069c13ba05e4c16a9e05b0722442e81

und wenn ich mich nicht irre kann ein Display auch vom PC im 4bit Modus betrieben werden.
Ansonsten würde ich sage um das Display von beiden Geräten her anzuwenden, wäre das eher eine Geschichte die man über einen Datenbus angehen sollte .
Sonst wäre ja nur noch die Variante die daten vom PC über die Seriele Schnittstelle in den Avr zu bringen , der diese dann aufbereitet und ans Display schickt.
Und das erkennen wann der Pc eingeschaltet ist , kann man doch auch über ein relais oder Transistor lösen. Im Groben gedacht eine andere Stromleitung vom Netzteil nehmen die im Ausgeschalteten zustand keinen Strom führt sondern erst wenn PC(z. Bsp -5V) an ist, dann zieht das Relais an und gibt an einen Interruptpin ein High, der rest ist dann Programmierung.

gruß Andreas

Marco78
07.11.2004, 13:31
Das jaLCDsForum kenne ich, da hab ich selbst schon einige Sätze hinterlassen ;) Aber ie Probleme/Lösungen dort drehen sich ja nicht um µC.
4 Bit am PC geht auch. Aber das ganze soll eine universelle Lösung werden, so das im Prizip jeder diese Schaltung einsetzen kann, ohne vorher seine LCD-Software umzuprogrammieren. Von daher wollte ich die 8 Bit behalten. Schon alleine weil es weniger Programmieraufwand im AVR ist und es nicht unnötig zu Verzögerungen kommt bei der Ausgabe durch das umrechnen oder so.
Das gleiche bei der seriellen Ausgabe am PC. Diese wird noch nicht einmal viel allen Programme unterstützt.
Das erkennen ob der PC an ist hab ich ja auch in etwa so beschrieben wie du es vorgeschlagen hast. Mit den 5V vom Netzteil. Aber warum extra noch eine Relais oder Transistor nehmen?

Nachtrag zu welchen AVR soll ich nehmen: 90S8515, Mega8 und 89S51 oder 98S52 sind die, die ich mir mal ausgesucht habe bis jetzt.

08.11.2004, 00:57
... Du willst es Dir zum Anfang aber nicht unbedingt leicht machen! Allerdings solltest Du Dich umfassend vorher informieren, damit der Start sich nicht als Sackgasse erweisst!

Die Software soll auf ein 4X16 LCD eingestellt werden, es soll aber auch möglich sein ein 4X20 anzuschliessen, ohne die Software zu ändern. Mein Gedanke war, das ich alles auf ein 4X16 auslege und bei einem 4X20 einfach die letzten 4 Zeichen pro Zeile frei bleiben. Geht das?... die Startadresse der 2.Zeile liegt beim HD44780/Kompatible immer auf $40. Für die 3. und 4. Zeile wird meistens ein zweiter Display-Controller verwendet oder es werden alle 40 Stellen im DD Ram ausgenutzt und auf jede 2. Zeile aufgeteilt (kannst nur austesten!)

... und die restlichen 3 Zeilen für die Zeit. Dazu werden Custom Chars defeniert...... mehr wie 8 zusätzliche Zeichen wirst Du im CG Ram eines HD44780 nicht definieren können.

Eigentlich wollte ich auch den Watchdog aktivieren. Aber auf was reagiert der? Auf Endlosschleifen?... grob ausgedrückt: wird aktiv, wenn Dein Programm sich aufhängt. Dazu zählen keine Endlosschleifen!

... welchen AVR soll ich nehmen: 90S8515, Mega8 und 89S51 oder 98S52 sind die, die ich mir mal ausgesucht habe bis jetzt.... die Megas sind gegenüber den Classics meistens "besser ausgestattet". Du solltest Dir aber schon im Klaren darüber sein, daß die AVRs nichts mit Deinen anderen µC-Vorstellungen zu tun haben!

Aber das ganze soll eine universelle Lösung werden, so das im Prizip jeder diese Schaltung einsetzen kann, ohne vorher seine LCD-Software umzuprogrammieren. Von daher wollte ich die 8 Bit behalten. Schon alleine weil es weniger Programmieraufwand im AVR ist und es nicht unnötig zu Verzögerungen kommt bei der Ausgabe durch das umrechnen oder so.... der HD44780 und Kompatible unterstützen alle den 4bit-Modus, einzig die Displayanschlüsse und evtl. die Kontrastansteuerung unterscheiden sich ein wenig. Und diese Verzögerungen im 4bit-Modus bekommst Du i.d.R. nicht mit.

Marco78
13.11.2004, 15:11
... Du willst es Dir zum Anfang aber nicht unbedingt leicht machen! Allerdings solltest Du Dich umfassend vorher informieren, damit der Start sich nicht als Sackgasse erweisst!
Informieren will ich mich hier ja garde ;) Leicht ist relativ. Ich habe früher mit anderen Basic-Versionen anspruchsvollere Programme geschrieben. Und da musste ich mich auch erstmal einarbeiten. Ich denke nicht, das BASCOM grundlegend anders ist. Sieht zumindest bis jetzt nicht so aus.


die Startadresse der 2.Zeile liegt beim HD44780/Kompatible immer auf $40. Für die 3. und 4. Zeile wird meistens ein zweiter Display-Controller verwendet oder es werden alle 40 Stellen im DD Ram ausgenutzt und auf jede 2. Zeile aufgeteilt (kannst nur austesten!)

4X20-LCDs mit 2 Displaycontrollern hab ich noch nie gesehen. Nur bei 4X27, 4X40 oder so. Dann wird das Programm halt pauschal für 4X20-LCDs mit nur einem Controller ausgelegt ;) MEin Problem dabei ist ja nicht das ansprechen der Zeilen. Das werde ich (zumindest bis jetzt) mit Locate (X,Y) machen. Dann steht der Cursor da wo ich ihn haben will.
Meine Überlegung war nur, wenn ich das LCD in BASCOM als 4X16 deklariere, aber ein 4X20 anschliesse (was ja das gleiche Pinout hat) ob es dann einfach möglich ist die letzen 4 Zeichen des 4X20 zu ignorieren.
Wie du ja schon gesagt hast, begint die zweite Zeile bei $40 bei HD44780 kompatiblen Displays. Also müsste es ja gehen.
Wären die Zeichen fortlaufend nummeriert, würde es wahrscheinlich nicht gehen. Weil dann die Adresse vom ersten Zeichen in der zweiten Zeile abhänig davon ist, ob eine Zeile 8, 16, 20 oder sonstige Zeichen hat.
Da ich ja nicht direkt in den Speicher schreiben will, sondern mit Locate positionieren will denke ich ist es egal wieviel Zeichen pro Zeile das LCD hat. Zumindest solange, wie ich 4X16 eingestellt habe und dann nicht auf einmal Zeichen 17 ansprechen will.


... mehr wie 8 zusätzliche Zeichen wirst Du im CG Ram eines HD44780 nicht definieren können.
Die reichen mir ja auch.


Du solltest Dir aber schon im Klaren darüber sein, daß die AVRs nichts mit Deinen anderen µC-Vorstellungen zu tun haben!
Sorry, ich versteh jetzt nicht, wie du das meinst.


... der HD44780 und Kompatible unterstützen alle den 4bit-Modus, einzig die Displayanschlüsse und evtl. die Kontrastansteuerung unterscheiden sich ein wenig. Und diese Verzögerungen im 4bit-Modus bekommst Du i.d.R. nicht mit.
Aber nicht jeder LCD-Software für den PC spricht das LCD im 4Bit-Modus an. Also muß ich das LCD im 8Bit-Modus betreiben, sofern ich keine Routine schreiben will, die 8Bit in 4Bit umwandelt. Ich seh auch kein praktischen nutzen dafür. Weil die 4 Pins die ich dadurch einspare nicht reichen um ein nächst kleineren AVR zu verwenden.

andysafe
13.11.2004, 22:14
Das das mit der Zeichenanzahl so klappt, glaube ich fast nicht.
Denn ich habe ein 4X27, und bei Bascom kann man dann nur ein 4x40 einstellen.
Wenn ich jetzt locate 2,1 mache, beginnen die zeichen erst Später.
Ich muß bei meinem Programm z.B. angeben locate 2,-23 damit er in der zweiten Zeile wirklich am Anfang beginnt.
Und dasselbe gilt auch für die unteren 2 Zeilen.

MfG Andreas

Marco78
13.11.2004, 22:59
Das 4X27 (ich denke mal das Wintek von Pollin ;) ) Hat ja 2 Controller. Da wäre ich mir auch nicht sooo sicher gewesen, ob es geht. Und du hast ja mehr Zeichen eingestellt, als vorhanden sind. Ich stelle weniger ein als vorhanden sind.
Natürlich kann es mir passieren, das ich mit Locate 2,1 auf nem 4X20 auf einmal in Zeile 1 Spalte 17 lande.
Kommt auf ein Versuch drauf an.
Am Mega8 hätte ich noch ein Pin frei. Da könnte ja mit nem Jumper eingestellt werden, ob ein 16 oder 20 Zeichen LCD angeschlossen ist. Das wirkt sich ja nur auf eine Programmzeile aus, in der das LCD eingestellt wird. Und der Rest könnte dann weiterhin nur mit 16 Zeichen arbeiten und die letzten 4 frei lassen. Oder wenn man sich schon die Mühe macht zu unterscheiden ob es 16 oder 20 Zeichen hat, könnte man die Ausgabe zentrieren. Z.B. so: Wenn 16 Zeichen, dann VarX=0 sonst VarX=2. Locate 1,1+VarX. Oder?

Marco78
02.12.2004, 01:53
Danke schonmal bis hierhin. Falls noch jemand Antworten auf die vielen restlichen offenen Fragen kennt, immer her damit.

16.12.2004, 22:11
4-bit 8-bit ... muß ja nicht unbedingt softwaremäßig aufgelöst werden ... denke da an ne hardwarelösung. D0-D8 vom Compi einfach über dioden an LCD, pulldown-widerstände dahinter und D5-D8 auf dem gleichen Bus vom uC anbinden ... das ganze quasi parallel schalten. D0-D3 vom Compi können dann auch gleich zur Umschaltung des uC von passiv auf aktiv vornehmen ... wie z.b. der watchdog, nur eben mit timer .... wenn 2 sekunden (einfach mal so) kein signal an D0, dann kompi aus, folglich ATMega loslegen ... zusätzlich könnte man per transistorschaltung die datenleitungen vom rechner aus abkoppeln um störungen zu vermeiden .... weiterdenk ... der lpt hat doch auch +5V ... das könnt man für ne einfache umschaltung heranziehen ;o)

Marco78
16.12.2004, 23:33
Schön das der Beitrag wieder nach oben kommt :)
An Dioden hatte ich auch schon gedacht. Die max. 0,7V sollten immer noch für H reichen. Ich weiß zwar jetzt nicht mit was für einer Logik die LCD-COntroller arbeiten aber worst case würden 4,3V auch noch H sein.

Dieses Projekt hab ich zwar in der Form wie es anfangs geplant war schon wieder verwurfen aber der Grundsätzliche Gedanke wird trotzdem weiter geführt. Wenn PC an dann LPT -> LCD. Wen PC aus dann AVR -> LCD.
Ich werd's erstmal parallel zum PC probieren und schauen was passiert. Das Feedback war ja leider nicht so groß wie ich es mir gedacht habe.
Die Idee mit den Transistoren find ich sehr gut. Das werd ich dann wohl machen wenn es so direkt nicht geht.

17.12.2004, 12:17
weitergedacht:

für völlig unabhängige ansteuerungen bräuchtest du tristate ausgänge von pc und avr ... und quasi nen chip select für den jeweiligen datenbus.

http://www.public.asu.edu/~demassa/CTRI01.pdf

auf dem obigen link wird der prinzipielle aufbau von tristate dargestellt. du bräuchtest nun n paar fet-transistoren, die je nach chip select den einen oder anderen datenbus durchschalten ... also für 12 datenleitungen d0-d8 rw e etc. jeweils zwei ... je einen für jeden bus. die fet hängst du einmal direkt an nen +5 von der lpt, einmal über inverter. auf die +5V hängste einfach noch nen pulldownwiderstand, damit ein eindeutiges low erzeugt wird wenn compi aus.
als tristates könntest du z.b. den cmos 4016 benutzen

hab mal n bisschen gesponnen und in target gewerkelt. das ergebniss gibts als tif hier: http://www.sauf-den-wein.de/Versuch/AVR--PC--LCD.TIF

so in ungefähr sollts laufen

Marco78
28.12.2004, 11:41
Wenn ich 7 oder 8 4016/4066 auf ne Platine packe wird die schonmal ganz schön groß. Mal angesehen davon, dass das routen spaßig wird ;)
Deshalb hab ich die 'besinnlichen Tage' mal für weiterführende Gedanken genutzt. (Was keine Kritik sein soll oder bedeuten soll das ich deine Idee nicht gut finde!)

Gehen wir mal davon aus, irgendwo auf dem Motherboard ist für den LPT ein P-N-Übergang (und das wird so sein). Also wird, wenn der PC aus ist, Spannung die am LPT anliegt erzeugt vom µC nicht viel anrichten können.
Aber irgendwo da im Schaltkreis könnte ja einKondensator oder eine Spule sein. Vielleicht sogar beides?! Bedingt durch die gemeinsamme Masse und das getaktete ein-/ausschalten einer Spannung fühlen die sich vielleicht erregt und verursachen erstmal pauschalt Störungen in der Schaltung.

Zum LCD wird ja nur geschrieben und nicht gelesen (auch wenn die Möglichkeit besteht), also warum nicht einfach ein paar 1N4148 zwischen LPT und LCD einbauen? Der PC fühlt sich dann nicht mehr gestört wenn er aus ist.
Und den µC dann hinter den Dioden zum LCD hin werkeln lassen.

Aber wie findet es der AVR, wenn er auf seinen Ausgängen Spannung bekommt? Könnte ihm egal sein, ist es aber vielleicht nicht? Weiss das jemand?
Ansonsten da auch ein paar Dioden mit einplanen.

Beim Schreiben kommt mir so die Idee, das man ja auch Optokoppler nehmen könnte. Aber hätte das ein Vorteil? Ich denke ehr den Nachteil das die wieder mehr Platz brauchen.

Meinungen dazu?

Vitis
12.01.2005, 15:05
Mit den Optokopplern ist klaro ne gute Sache, schon wegender galvanischen Entkopplung der Schaltkreise. Auch mit den Dioden kanns klappen. probiers eiinfach

RonnySV
24.05.2007, 16:24
Hallo Leute,
ich würde mal ne ganz alte Sache wieder aufrollen wollen....
Mich würde jetzt einfach mal interessieren, ob das jemand mittlerweile ausprobiert hat.

Ich habe mir nämlich einen VDR (Linux - Video Disc Recorder) zusammengebastelt, der ein GLCD besitzt und da kamen mir so ähnliche Gedanken.

Einfach Parallel zur Datenleitung eine zweite vom AVR (Mega8) anschließen. Bei mir würden dann nur noch zwei dazu kommen (chip select).

Würde soetwas funktionieren?

peterfido
26.05.2007, 17:31
Ich hatte Anfangs auch solche Software wie jaLCD. Jetzt bin ich soweit, dass ich die Daten per USB zum Mega32 schicke (Ich nutze den FTDI 232R). Der M32 kümmert sich um die DCF77 Uhr, zeigt diese in großen Ziffern auf dem Display an. Wenn jetzt Daten vom PC über den FTDI am RXD ankommen, dann werden diese angezeigt und wenn eine Zeitlang keine Daten mehr eintreffen, wird wieder auf Uhrbetrieb umgeschaltet. Ich habe mir für die Daten ein eigenes Protokoll ausgedacht. Die 1. Stelle im steht für die Zeile. Dann kommt der Text. (z.B. "2Hallo Welt"). Wenn als Zeile eine 0 steht, werden die Daten auf einen Befehl untersucht (UHR, CLS, ...)Wenn als Zeile eine 9 kommt, dann können die Schaltzeiten (zur Zeit 7) programmiert werden, dieses geht aber auch über 3 Taster. Nebenbei schickt der M32 die aktuelle Uhrzeit nebst Datum und Wochentag zum PC. Spannungsversorgung der Uhr, M32 und des Displays erfolgt über ein externes Netzteil. Der FTDI wird per USB gespeist. Aber wie du siehst brauchte ich für mein Projekt schon den Mega32. Also die Lizensierte Bascom.

Ich würde dein "Problem" folgendermassen lösen: Einen zusätzlichen Mega8 oder Mega16 als Relaisstation verwenden. Wenn PC aus (Detektierbar z.B. über USB. Wenn 5Volt anliegen, dann ist der PC an, und es werden die Pins des Parallelportes zu dem Display durchgeschleift, ansonsten werden die 4 Pins des anderen Mikrocontrollers zum LCD durchgeschleift. evtl muss das LCD jedesmal geresettet werden, um in den anderen Modus zu schalten.