PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD über rs232 oder i2c bus?



Bluesmash
21.06.2005, 19:52
mittlerweilen sind die ports meines mega32 erschöpft... und um freie ports zu bekommen möchte ich als erstes das LCD vom prozessor wegbekommen... dann hätte ich schon mal 7 freie ports... hat mir jemand einen link oder ein tutorial wie man das am besten und einfachsten machen kann?

gruss bluesmash

Felixx87
21.06.2005, 20:07
nimm einen kleinen prozessor und setz den halt dazwischen der an dein display rangemacht wird und der prozessor (eine smd variante) setzt die I2C befehle dann für das display um

wie es mit der software regelung is keinen schimmer bin bisher nur mit hardware einigermaßen vertraut

MFG

Bluesmash
21.06.2005, 20:11
an diese variante habe ich auch schon gedacht... aber ist schon ein bisschen verschwendung für den prozi... vielleicht gibt es ja fertige bausteine für lcd's??

RCO
21.06.2005, 20:15
Naja mit dem CO-µC könntest du ja vielleicht noch andere Sachen anstellen. Schon fertige Schriften Speichern, um auf dem Main-µC platz zu sparen, oder so.

Kjion
21.06.2005, 20:34
... aber ist schon ein bisschen verschwendung für den prozi...
Naja, es ist sogar so, dass die ganzen I2C Portexpander ( PCF8574 o.ä. ) mehr kosten als ein kleiner AVR. Von daher kann es sich teilweise schon lohnen für solche Aufgaben ( I/O Pins setzten, ADC einlesen usw. ) sich schnell einen ATTiny oder so zu programmieren :-)
Der AVR könnte zwar sehr viel mehr machen, allerdings muss er das ja nicht ...

MfG Kjion

Frank
21.06.2005, 20:55
Schau dir mal das Projekt an:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=7418

Vielleicht ist das was für dich

Bluesmash
21.06.2005, 23:51
ich hab hier noch nen mega8 rumliegen... ich denke ich werde den mal verwenden und über die rs232 die daten austauschen... brauche ich dann am co controller auch nen max232?
und noch ein par fragen zur software... mit dem main controller sende ich die daten mit z.B. print "text" "hallo" oder eine variabel z.B. print "variabel" x
aber wie verwerte ich nun die daten im co controller?
würde das so funktionieren?

dim z as string*16
dim y as integer
input "text" z
LCD z
input "variabel" y
LCD y
und dann noch spezielle zeichen mit if then verzweigungen für befehle wie: cls, locate usw.

Frank
22.06.2005, 00:06
Es ist günstiger wenn einzelne Bytes gelesen und interpretiert werden, so hab ich´s gemacht. Ist es kein Befehl werden Bytes gleich ausgegeben.

Bluesmash
22.06.2005, 00:28
hmmm klingt kompliziert.... wie würde der code aussehen wenn ich z.b. "hallo" am lcd ausgeben will?

Frank
22.06.2005, 20:15
Ist nicht so kompliziert, es wird nur kompliziert wenn du rs232 und i2c berücksichtigen willst.

Das Grundgerüst für RS232 Abfrage könnte so aussehen:



'**** Interpretation der RS232 Befehle ****
Rs232mode:
Do
Befehl = Inkey()
Loop Until Befehl <> 0 'Warte auf Zeichen an RS232

lcd Befehl
goto rs232mode


Mit entsprechenden If oder Switch Anweisungen kannst du in der Schleife bestimmte Codesequenzen rausfiltern um sie als Befehl für irgend eine Sonderfunktion zu nutzen.
Das ist die einfachste Variante man kann die natürlich Abwandeln um innherhalb der Schleife nebenbei andere Dinge zu machen. Da fängt dann halt die Kreativität an

Bluesmash
22.06.2005, 20:34
vielen dank schon mal! sobald ich dann mal die restlichen teile habe werde ich es ausprobieren...

gruss bluesmash

Bluesmash
22.06.2005, 20:39
ah hab noch ne frage... brauch ich nun am co-controller auch nochmal nen max232? oder genüt es wenn der main-controller einen hat?

mfg

Frank
22.06.2005, 20:46
Wenn du beim Hauptboard den Max nutzt muss das CoControllerboard auch einen haben. Vorausgesetzt du nimmst die vorgesehene RS232 Schnittstelle
Alternativ kannst du aber einen beliebigen Port als rs232 konfigurieren (mit Open in Bascom). Diesen Port kannst du dann direkt an den RX vom CoController anschließen.

Dritte Möglichkeit wäre du nimmst den Max232 ganz aus der Fassung und verbindest dann TX/RX und RX/TX direkt. Dann kannst du aber PC nicht mehr anschließen.

Bluesmash
22.06.2005, 20:51
ah ok! vielen dank!

mfg

Bluesmash
22.06.2005, 22:35
habe es gerade ausprobiert mit pc als "main-controller" und mein mega32 als co-controller, funktioniert 1a! *freu* was ich noch gemacht habe ist bei der auswertung der angekommenen zeichen X=chr(befehl) und dann x ausgeben

schöne grüsse bluesmash

Vitis
23.06.2005, 20:03
schaut mal da rein:

http://www.schuricht.de/w3a/default.asp?Start=Module&INFOID=1572108

Frank
23.06.2005, 20:30
Das von Schuricht kenn ich, zu klein, wenige Zeichen und nicht ganz einfach anzusteuern

IngBo
24.06.2005, 07:37
oder vielleicht diese Variante

http://www.channaa.com/html/i2c_lcd_adapter.html
oder
http://www.channaa.com/html/rs232_lcd_adapter.html


IngBo

Bluesmash
28.06.2005, 19:45
@ingbo: danke für die links aber ich wollte mir selber etwas basteln... nur schon des "lerneffekts" wegen...

ich habe mir nun ne kleine platine mit mega8 und max232 gebaut auf die das display aufgesteckt wird... (siehe foto) ich weiss es sieht nicht gerade professionell aus... aber es funktioniert :)

kleiner bericht:

1. Problem
den max232 hatte ich so angeschlossen wie auf dem plan vom rn-control... danach funktionierte es einigermassen aber es zeigte mir immer wieder falsche zeichen an die ich vom terminal gesendet hatte... als ich dann nach dem fehler suchte, sah ich auf dem max232 datenblatt das man pin 15 und 16 mit gnd und 5V verbinden sollte... und danach funktionierte es einwandfrei in verbindung mit dem bascom terminal... ist das ein fehler auf dem rn-control plan oder braucht es das da nicht?

2. problem:
danach habe ich mein display-controller an mein haupt-controller angeschlossen und wollte die daten anzeigen lassen... aber irgendwie kamen nicht alle zeichen an... dann kam ich auf die idee die baudrate mal auf 4800 herunterzusetzen, und siehe da, es funktionierte! aber kann mir jemand sagen wieso es mit 9600 nicht funktioniert? packt das mein mega 8 nicht?

3. Problem:
nachdem alles einigermassen funktionierte, hatte ich am ende jeder zeile noch so komische zeichen... nachdem ich dann ein bisschen in meinem "schlauen" buch gestöbert hatte fand ich die lösung: einfach ein ";" am ende jeder print zeile und die zeichen waren weg... gibt es da keine "elegantere" metode die zeichen loszuwerden?

mfg bluesmash

Kjion
28.06.2005, 20:21
1. Problem
den max232 hatte ich so angeschlossen wie auf dem plan vom rn-control... danach funktionierte es einigermassen aber es zeigte mir immer wieder falsche zeichen an die ich vom terminal gesendet hatte... als ich dann nach dem fehler suchte, sah ich auf dem max232 datenblatt das man pin 15 und 16 mit gnd und 5V verbinden sollte... und danach funktionierte es einwandfrei in verbindung mit dem bascom terminal... ist das ein fehler auf dem rn-control plan oder braucht es das da nicht?
Ich vermute einfach mal das die beiden Pins einfach nur nicht direkt an dem Symbol dran sind. Bei Eagle kann man durchaus ein IC durch mehrere Symbole darstellen ( schau dir mal die benennungen an : IC4 oder so und such dann mal nach IC4P o.ä. ). Spannungsversorung ist also schon dran ;-)


2. problem:
danach habe ich mein display-controller an mein haupt-controller angeschlossen und wollte die daten anzeigen lassen... aber irgendwie kamen nicht alle zeichen an... dann kam ich auf die idee die baudrate mal auf 4800 herunterzusetzen, und siehe da, es funktionierte! aber kann mir jemand sagen wieso es mit 9600 nicht funktioniert? packt das mein mega 8 nicht?
Schreib mal dazu welche Taktfrequenz du benutzt. Ich empfehle außerdem das lesen des Datenblatts unter "UART" -> "Examples of Baudrate Settings" oder so ähnlich...

MfG Kjion

Bluesmash
28.06.2005, 20:30
ok indemfall war ich einfach zu doof um den plan zu verstehen :)

also am mega32 habe ich 16000000Hz
und am mega8 7372800Hz (den hab ich zum rn-board bekommen)

was für ein uart datenblatt meinst du?

mfg bluesmash

Kjion
28.06.2005, 23:16
was für ein uart datenblatt meinst du?

Naja, das zum ATMega8/ATMega32.

MfG Kjion

Bluesmash
29.06.2005, 23:09
weiss jemand was das für zeichen sind die nach dem print befehl (basic) noch zusätzlich gesendet werden? glaube enter und sonst nocht ein zeichen... dann könnte ich die mit dem display controller rausfiltern...

mfg bluesmash

IngBo
30.06.2005, 07:27
das sind wahrscheinlich die 0x0D und die 0x0A

Bluesmash
30.06.2005, 19:17
vielen dank! werde es ausprobieren sobald mein robby sein neues gehäuse hat und wieder bereit ist zu programmieren...

Vitis
04.07.2005, 15:43
wozu filtern, häng einfach ein ";" an das ende des print-befehls und CR LF wird nicht gesendet.

print "xy"; z.B.

Bluesmash
04.07.2005, 17:07
ja ich weiss... aber währe schön wenn ich das nicht immer müste... aber trozdem danke!

mfg bluesmash