Hi, deine Lösung ist so ähnlich wie TWI (Two Wire Interface) oder?Theoretisch könnte ich das Display an die Pins 13 bis 8 anschließen und das Keypad an 7 bis 1 anschließen. Das Problem: 1 geht nicht, wegen RX...
Hi, deine Lösung ist so ähnlich wie TWI (Two Wire Interface) oder?Theoretisch könnte ich das Display an die Pins 13 bis 8 anschließen und das Keypad an 7 bis 1 anschließen. Das Problem: 1 geht nicht, wegen RX...
Verpackung eines PC´s:
Bei Risiken und Funktionsproblemen Netzstecker durchbeißen und aus den PC aus dem Fenster werfen!
Ja, die Displayansteurung ist eine Art von TWI mit eigenem Protokol.
Es ist auch möglich beides, das Display und Keypad paralell an gleiche Pins anschliessen. Dabei muss man die I/O' entsprechend umschalten und das Keypad bei gedrückten Tasten darf kein Kurzschluss bei Ausgabe verursachen.![]()
Geändert von PICture (28.07.2011 um 20:05 Uhr)
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Hallo,
ist das Keypad ein 3x4 Tastenfeld als Matrix geschaltet?
Dann könntest du von den 4 Datenleitungen des Displays mit den 4 Zeilenanschlüssen verbinden.
In diese Verbindungsleitungen müssten aber auch noch Dioden, um keine unerwünschten Verbindungen
beim Drücken von mehreren Tasten zu erhalten. Die 3 verbleibenden Spalten kannst du an freie Eingänge
des Arduino anschließen. Macht dann also insgesamt 4Datenleitungen + RS + EN + 3Spaltenleitungen = 9 Pins für Display und Keypad gesamt.
Solange EN auf Low ist, kannst du an den 4 Datenleitungen machen was du willst, denn das Display
ignoriert zu diesem Zeitpunkt die angelegten Spannungen. Währenddessen kannst du das Keypad auswerten.
Grüße,
Bernhard
Das Keypad kann man noch Pinsparender anschließen. Leider kann man dann nur noch 1 Taste gleichzeitig drücken.
Mit 3x4 Matrix: 7 Leitungen für 12 Taster
Siehe Bild: 5 Leitungen für 31 Taster
(Mit 4 Leitungen hätte man 15 Taster -> 3 Leitungen weniger und 3 Taster mehr als Matrix)
Leider ist dafür etwas mehr Löten angesagt :-D
Gruß
schumi
PS: Im Anhang noch Postskript-Datei für besser Auflösung und KiCAD Schaltplan
ich habe bei vielen Videos bei YouTube gesehen das die ein KeyPad an Pin 7 bis Pin 1 am Arduino anschließen... Das funktioniert bei mir nicht: alle Zeilen funktionieren, bis auf Zeile 4: da ist der Pin an Arduino Pin 1 angeschlossen. Ich nehme an, dass das was mit RX zutun hat, oder?
Verpackung eines PC´s:
Bei Risiken und Funktionsproblemen Netzstecker durchbeißen und aus den PC aus dem Fenster werfen!
Hallo
wasa bedeutet enbale pin auf Low oder Hihg setzten (bedeutet es aktivieren oder dekativiere)
Enable ist freigabe, ein enable pin (Anschluss) ist somit ein Freigabeanschluss. Low, high sind Bezeichnungen von Pegeln, bei TTL sind das +5V (high) und 0V (low).
MfG Hannes
Zur Ergänzung des Postings von 021aet04 oben... wasa bedeutet enbale pin auf Low oder Hihg setzten (bedeutet es aktivieren oder dekativiere)
Wenn der Enable-AUSGANG des Mikrocontrollers auf high geht (VOH ist mind. 2,4 V), dann geht üblicherweise der Enable-EINGANG des LCDs (VIH) auf mindestens 2,0 und das LCD (bzw. der Controller des LCD) erkennt ein high-Signal. Jetzt weiß der LCD-Controller, dass er Daten von seinem Eingangspuffer in sein RAM schieben sollte. Dazu muss aber das Signal eine bestimmte Zeit stehen. Anschließend muss es wieder auf low gehen.
Wenn dies nicht geschieht, also DAUER-(1) oder DAUER-(0) dann wird kein gültiger "Übernimm-Daten-auf-Display"-Befehl gegeben und das Display bleibt leer . . . siehe hier.
Und Logikpegel waren hier erklärt schon bevor Du gefragt hast.
Nachtrag:
Bei mir läuft üblicherweise der Enable-Befehl so ab (Sprache C) :und wird beispielsweise hier aufgerufen:Code:// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // erzeugt den Enable-Puls void lcd_enable(void) { LCD_PORT |= (1<<LCD_EN1); _delay_us(20); // kurze Pause // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers verlängern // http://www.mikrocontroller.net/topic/80900 LCD_PORT &= ~(1<<LCD_EN1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Hoffentlich bin ich nicht zu aufdringlich - hier noch ne kleine High-Low-Tabelle:Code:// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //Eigentliche LCD-Zugriffs-Funktion; 4-Bit-Modus void lcd_send(unsigned char data) { // oberes Nibble setzen LCD_PORT = (LCD_PORT & 0xF0) | ((data >> 4) & 0x0F); _delay_us(15); lcd_enable(); // unteres Nibble setzen LCD_PORT = (LCD_PORT & 0xF0) | (data & 0x0F); _delay_us(15); lcd_enable(); _delay_us(60); LCD_PORT &= 0xF0; }// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Code:Pegel Eingang Ausgang Technologie Low (VIL) High (VIH) Low (VOL) High (VOH) TTL 5V = 0,8 = 2,0 = 0,4 = 2,4 LVTTL 3,3V = 0,8 = 2,0 = 0,4 = 2,4 Es bedeutet z.B: VIL = V-in-low, VIH = V-in-high
Geändert von oberallgeier (16.08.2017 um 15:31 Uhr)
Ciao sagt der JoeamBerg
Lesezeichen