Forum: Mikrocontroller und Digitale Elektronik 3x4 Keypad und LCD


von Martin F (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Timmo H. (masterfx)


Lesenswert?

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.

von Martin F. (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von Thorsten S. (Gast)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

Für R4-R7 auch 2k7 verwenden.
Dann sollte es gehen.

von Lehrmann M. (ubimbo)


Lesenswert?

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 !

von tt2t (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Martin F. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.