Anzeige für Sprungrichter

Alle allgemeinen Themen zu Elektronik und Elektro

Alle allgemeinen Themen zu Elektronik und Elektro

Moderator: Moderatorengruppe

hm

Neuer Beitragvon zacki am Sonntag 17. Februar 2008, 14:15

Typisch Sonntag, also mal ausführlich: Angeschlossen ist das Ding natürlich an Port A . PA3 habe ich weggelassen weil ja nur 3x4. Getestet habe ich das nur mit den einfachen Code:

Code: Alles auswählen
Config Portb = Output

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcdbus = 4
Config Lcdmode = Port

Initlcd

Cls
Config Kbd = Porta

Dim Key As Byte

Dim Txt As String * 1
Do
   Key = Getkbd()

   Select Case Key
   Case 0 : Txt = "0"
   Case 1 : Txt = "*"
   Case 2 : Txt = "#"
   Case 4 : Txt = "7"
   Case 5 : Txt = "8"
   Case 6 : Txt = "9"
   Case 8 : Txt = "4"
   Case 9 : Txt = "5"
   Case 10 : Txt = "6"
   Case 12 : Txt = "1"
   Case 13 : Txt = "2"
   Case 14 : Txt = "3"
   Case Else : Txt = ""
   End Select

   If Txt <> "" Then
      Lcd Txt
      Print Txt
   End If

Loop

End
zacki
Threadstarter
31658
Junior Mitglied
 
Beiträge: 23
Registriert: Freitag 4. Januar 2008, 08:31

Neuer Beitragvon gerold am Sonntag 17. Februar 2008, 14:52

Hallo zacki!

Falls das Bild im Datenblatt eine Ansicht von oben ist, dann wäre das hier der Anschlussplan dafür. Dann würde bei einem Druck auf die Taste 1 der Keycode 0 und bei einem Druck auf die Taste "*" der Keycode 12 ausgelesen werden. Zumindest wenn man dem zweiten Bild trauen kann.

mfg
Gerold
:-)
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
31661
Bronze Mitglied
 
Beiträge: 127
Registriert: Montag 30. Juli 2007, 11:19
Wohnort: Oberhofen im Inntal (Tirol)
Postleitzahl: 6410
Land: Austria / Österreich

Neuer Beitragvon gerold am Sonntag 17. Februar 2008, 15:17

OK, dann wieder zurück nach Byte.
Code: Alles auswählen
...
Dim Key As Byte
Dim Ascii As Byte

Do
   Key = Getkbd()

   Select Case Key
   Case 0 : Ascii = "0"
   Case 1 : Ascii = "*"
   Case 2 : Ascii = "#"
   Case 4 : Ascii = "7"
   Case 5 : Ascii = "8"
   Case 6 : Ascii = "9"
   Case 8 : Ascii = "4"
   Case 9 : Ascii = "5"
   Case 10 : Ascii = "6"
   Case 12 : Ascii = "1"
   Case 13 : Ascii = "2"
   Case 14 : Ascii = "3"
   Case Else : Ascii = 0
   End Select

   Lcd "Key: " ; Key
   Print "Key: " ; Key       'Wenn nichts gedrückt dann 16

   If Key <> 16 Then
      Lcd "Ascii: " ; ascii
      Lcd "Ascii-Zeichen: " ; Chr(ascii)
      Print "Ascii: " ; Ascii
      Print "Ascii-Zeichen: " ; Chr(Ascii)
   Else
      Lcd "Ascii: nicht gedrueckt"
      Print "Ascii: nicht gedrueckt"
   End If

   Wait 1
Loop

End

Wird erkannt, dass keine Taste gedrückt wurde (Keycode 16)?

Werden die restlichen Keycode korrekt erkannt? Gibt es nur Probleme beim Übersetzen von Keycode nach ASCII-Zeichen?

mfg
Gerold
:-)

Edit: Code leicht angepasst
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
31665
Bronze Mitglied
 
Beiträge: 127
Registriert: Montag 30. Juli 2007, 11:19
Wohnort: Oberhofen im Inntal (Tirol)
Postleitzahl: 6410
Land: Austria / Österreich

Neuer Beitragvon gerold am Sonntag 17. Februar 2008, 16:00

Hallo zacki!

Wenn alles korrekt angeschlossen ist, dann könnte man mal versuchen, SELECT CASE durch LOOKUP zu ersetzen. Ein Beispiel würde dann so aussehen:

Code: Alles auswählen
...
Dim Key As Byte
Dim Ascii As Byte

Do
   Key = Getkbd()

   Lcd "Key: " ; Key
   Print "Key: " ; Key       'Wenn nichts gedrückt dann 16

   If Key <> 16 Then
      Ascii = Lookup(key , Keycodes)
      Lcd "Ascii: " ; Ascii
      Lcd "Ascii-Zeichen: " ; Chr(ascii)
      Print "Ascii: " ; Ascii
      Print "Ascii-Zeichen: " ; Chr(ascii)
   Else
      Lcd "Ascii: nicht gedrueckt"
      Print "Ascii: nicht gedrueckt"
   End If

   Wait 1
Loop

End


Keycodes:
Data "123 456 789 *0# "

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
31668
Bronze Mitglied
 
Beiträge: 127
Registriert: Montag 30. Juli 2007, 11:19
Wohnort: Oberhofen im Inntal (Tirol)
Postleitzahl: 6410
Land: Austria / Österreich

Neuer Beitragvon gerold am Sonntag 17. Februar 2008, 18:40

Hallo zacki!

Und? Kannst du mit diesen Informationen etwas anfangen? Läuft es oder hast du noch Schwierigkeiten?

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
31671
Bronze Mitglied
 
Beiträge: 127
Registriert: Montag 30. Juli 2007, 11:19
Wohnort: Oberhofen im Inntal (Tirol)
Postleitzahl: 6410
Land: Austria / Österreich

chaos

Neuer Beitragvon zacki am Sonntag 17. Februar 2008, 18:51

nun zeigt er nur noch undefinierbares Chaos an. Z.Bsp.: nich 51 drue - usw.
zacki
Threadstarter
31672
Junior Mitglied
 
Beiträge: 23
Registriert: Freitag 4. Januar 2008, 08:31

Re: chaos

Neuer Beitragvon gerold am Montag 18. Februar 2008, 06:34

zacki hat geschrieben:nun zeigt er nur noch undefinierbares Chaos an. Z.Bsp.: nich 51 drue - usw.

Hallo zacki!

OK! Dann beginnen wir wieder hier: http://www.transistornet.de/viewtopic.php?p=31626#31626

Was bekommst du bei welchem Tastendruck zurück geliefert? Und - was bekommst du zurück, wenn du keine Taste drückst?

Und ich meine jetzt nicht an das LCD sondern in das, über RS-232-Nullmodemkabel angeschlossene, Terminal.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
31692
Bronze Mitglied
 
Beiträge: 127
Registriert: Montag 30. Juli 2007, 11:19
Wohnort: Oberhofen im Inntal (Tirol)
Postleitzahl: 6410
Land: Austria / Österreich

Neuer Beitragvon gerold am Dienstag 19. Februar 2008, 16:41

Hallo zacki!

Nicht aufgeben! Es ist garantiert nur eine Kleinigkeit, die schief läuft.

Fange einfach noch mal bei dem Punkt an, an dem du die KeyCodes ausliest. Vielleicht kannst du auch schon die Displayanschlüsse so drehen, dass bei einem Druck auf die 1 eine 0 als Keycode raus kommt. Das ist aber nicht zwingend erforderlich. Es genügt, wenn sich die KeyCodes unterscheiden. Aber du solltest in jedem Fall die Zahl 16 als KeyCode zurück bekommen, wenn keine Taste gedrückt wurde.

Falls du die Zahl 16 nicht raus kriegst, dann schließ das Tastenfeld komplett ab. Dann MUSST du unbedingt 16 raus kriegen. Das geht gar nicht anders. Falls **nicht**, dann stimmt etwas mit der Anzeige der der Zahl nicht.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
31712
Bronze Mitglied
 
Beiträge: 127
Registriert: Montag 30. Juli 2007, 11:19
Wohnort: Oberhofen im Inntal (Tirol)
Postleitzahl: 6410
Land: Austria / Österreich

Neuer Beitragvon gerold am Mittwoch 2. April 2008, 20:42

Hallo!

Nachtrag:

Ich habe mir jetzt so ein Tastenfeld von Conrad bestellt und durchgemessen. Der in diesem Beitrag http://www.transistornet.de/viewtopic.php?p=31661#31661 gezeigte Anschlussplan ist nicht wie vermutet von oben, sondern von unten gesehen. Deshalb muss man die Pins für die Spalten vertauschen.

Näheres habe ich in diesem Beitrag zusammengefasst:
http://www.loetstelle.net/forum/viewtop ... =7721#7721

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
32482
Bronze Mitglied
 
Beiträge: 127
Registriert: Montag 30. Juli 2007, 11:19
Wohnort: Oberhofen im Inntal (Tirol)
Postleitzahl: 6410
Land: Austria / Österreich

Vorherige

Zurück zu Elektronik Allgemein

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 13 Gäste