Hallo zusammen, Stehe vor einem Problem. Bin mit einem Kollege an einer Technikerarbeit dran, wo wir ein PIC programmieren müssen. Das hab wir nur leider noch nicht gemacht. Haben nur etwas Kenntnisse in C++ und das reicht grad mal für "Hallo World" :-). Wir wollen ein 3x4 Tastenfeld mit einem1 16x2 LCD verbinden. Habe schon jede menge geGoogelt um ähnliche Programme zufinden, doch in "C" hab ich leider noch nicht wirklich das passendes gefunden. Von der Seite best-microcontroller-projects.com hab ich ein Programm gefunden das eigentlich Perfekt zu unserer Hardware passt(Aufbau siehe Anhang).Doch leider bekomme ich es nicht wirklich an unsere Hardware angepasst, da kein LCD.c/h dabei ist. Die scheinen wohl direkt vom Compiler zukommen mit dem das Original Programm geschrieben wurde.Habe den Compiler auch mal geladen und die Dateien dort gesucht, aber leider nichts gefunden. Wir Programmieren nämlich mit MPLAB. Jetzt meine frage. Hat mir jemand vielleicht die fehlenden Dateien? Gibt es da keine Allgemeingültigen Dateien für 16x2 Displays? Oder wenn jemand ein komplettes Programm für LCD&Keypad hat das er mir zur Verfügung stellen würde wäre ich auch Glücklich.
Die LCD.c/h kommen nicht vom Compiler. Du findest diese "LCD-Treiber" wenn du nach dem entsprechenden Controllerchip auf dem Display suchst. Also z.B. KS0066 oder HD47780. Das ist ebenfalls von mehreren Leuten schon umgesetzt worden, ist keine Standard Lib oder so Zur Tastatur, siehe google: http://www.google.de/search?hl=de&q=pic+tastaturmatrix Übrigens ist es ünglücklich für das Display und die Tasten die gleichen Portpins zu verwenden. Dann machst du durch Tastendrücke etc. die ganze Kommunikation zum Display kaputt. Der PIC hat doch genug Pins... Es muss ja so sein, dass der PIC die Tasten abfragt und auswertet und dann entsprechende Sachen auf dem Display ausgibt. Die Tasten direkt mit dem Display zu verbinden macht ja keinen Sinn, da das Display ja Steuerkommandos braucht um überhaupt ein Zeichen auszugeben. Da reicht es nicht wenn ein Taster den einen Pin mal eben auf High zieht.
Danke für die Antwort. Auf die Idee nach der Display Bezeichnung zu Googeln bin ich noch nicht gekommen. Doch das geht an einem Port. Hab ein fertiges Assembler Programm auf der Hardware mal getestet und das lief. Das C Beispiel Programm ist auch extra für einen Port ausgelegt. Der PIC muss dann immer abgefragt werden ob gerade was eingegeben wird oder nicht. Nur Assembler hab ich halt noch weniger Ahnung als mit C und da das Programm auch noch etwas größer wird als nur das Display und Tastenfeld, versuch ich es in C zuschreiben.
Martin F. schrieb: > Doch das geht an einem Port. Ist aber eher ne Notlösung. Wenn Du nämlich 2 Tasten zusammen drückst, sind 2 Datenpins über 54 Ohm kurzgeschlossen und das LCD kann Mumpitz ausgeben. Besser sind daher getrennte 6 Pins fürs LCD und 7 Pins für die Tasten. Dann spart man auch die Widerstände ein. Oder man nimmt Widerstände und nen ADC-Eingang: Beitrag "Tastenmatrix auslesen über nur 2 Leitungen" LCD und Tastenroutinen sind generell nicht in den Standardlibs der Compiler enthalten. Es gibt da zuviele Typen, Konfigurationen und Extrawünsche, als daß man alles in eine Lib packen könnte. Peter
Man kann die Kommunikation zwar trennen im Pic, aber wie willst du dem Anwender sagen das er die Tasten nur bedienen darf wenn gerad kein Update auf dem Display gefahren wird? Ich würde das noch nicht mal als "Notlösung" bezeichnen, es ist ganz einfach mumpitz. Meiner Meinung nach sollten die Tasten mit dioden entkoppelt werden, wenn das denn überhaupt machbar ist. Dazu muss man sich dann mal Gedanken machen wann wo welche Signalzustände herrschen können um es passend auszulegen... Gruß, Thorsten S.
Thorsten S. schrieb: > Man kann die Kommunikation zwar trennen im Pic, aber wie willst du dem > Anwender sagen das er die Tasten nur bedienen darf wenn gerad kein > Update auf dem Display gefahren wird? > > Ich würde das noch nicht mal als "Notlösung" bezeichnen, es ist ganz > einfach mumpitz. > > Meiner Meinung nach sollten die Tasten mit dioden entkoppelt werden, > wenn das denn überhaupt machbar ist. Dazu muss man sich dann mal > Gedanken machen wann wo welche Signalzustände herrschen können um es > passend auszulegen... Da muss ich klar widersprechen. Also ich betreibe das ganze ohne Probleme schon Jahrelang. Die Idee dazu (genauso wie der Schaltplan) kommen übrigens vons sprut.de http://www.sprut.de/electronic/pic/programm/tastlcd/tastlcd.html Funktioniert bestens !
schau mal bei sprut nach, da gibt es das ganz genau beschrieben http://sprut.de/electronic/lcd/index.htm http://sprut.de/electronic/pic/programm/tastatur.htm http://sprut.de/electronic/pic/programm/tastatur2.htm http://sprut.de/electronic/pic/programm/tastlcd/tastlcd.html die ASM sind alle gut dokuemntiert, das kannst Du easy in C übertragen
tt2t schrieb: > schau mal bei sprut nach, da gibt es das ganz genau beschrieben Dann sollte man aber die Schaltungen auch richtig übernehmen. Ob 27R oder 270R, das ist ein gewaltiger Unterschied. Warum aber einmal 270R und dann 2,7k, ist mir jetzt nicht klar. Ich würde alle Widerstände 1k groß machen. Aber wie gesagt, wenn genügend Pins da sind, würd ichs ohne Widerstände machen, braucht nur 5 Pins mehr. Peter
Ja genau von spurt.de hab ich das .asm Programm das ich ohne viel Aufwand zum laufen bekommen habe. Aber wie gesagt bin nicht wirklich gut im programmieren und deshalb werde ich es denke ich nicht schaffe das ganze in C umzuschreiben. Muss jetzt irgendwie versuchen in meinem jetztigen C Programm das LCD zum laufen zubekommen. Da sind nämlich einige Undefinierte befehle drin die soweit ich weiß eigentlich im LCD.C/H stehen sollten. (Lcd_cmd,Lcd_clear...) ist aber leider nichts dabei. Die 27R im Bild sind ein fehler. Ich hab irgendwie die Null gelöscht beim anpassen der Pinbelegung. An der Hardware passt soweit alles. Lief bestens mit dem Programm von sprut.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.