ja sam napisałem programik do obsługi takiej klawiatury i wyświetlania liczb na wyświetlaczu LCD 2x16. tylko problem jest w tym że ten mój program zajmuje za dużo i tak małej pamięci procka.
program napisałem w bascomie
jestem początkującym i nie znam jeszcze asm
a LCD podłączony:
EN - PB1
D4 - PB4
D5 - PB5
D6 - PB6
D7 - PB6
RS - PB2
jeśli komuś to potrzebne...
i potrzebowałbym coś zajmującego mniej miejsca, jeżeli coś takiego istnieje
a oto programik:
Dim Mux1 As Bit , Mux5 As Bit , Mux6 As Bit , Mux7 As Bit , Mux8 As Bit
Dim Mux2 As Bit , Mux9 As Bit , Mux10 As Bit , Mux11 As Bit , Mux12 As Bit
Dim Mux3 As Bit , Mux4 As Bit , Kod As Byte , Kodd As Word
Dim Przycisk2 As Bit , Przycisk1 As Bit , Przycisk3 As Bit
Cls : Cursor Off
Lcd "klawiatura"
Wait 3
Cls
Cursor Blink
Portd = &B11111
Kodd = 0000000000000000
Mux1 = 1
Mux2 = 1
Mux3 = 1
Mux4 = 1
Mux5 = 1
Mux6 = 1
Mux7 = 1
Mux8 = 1
Mux9 = 1
Mux10 = 1
Mux11 = 1
Mux12 = 1
Przycisk1 = 0
Przycisk2 = 0
Kod = 0
Do
Ddrd.5 = 1
Ddrd.6 = 0
Ddrb.0 = 0
Przycisk1 = 1 : Przycisk2 = 0 : Przycisk3 = 0
If Pind.0 = 1 Then Mux1 = 1
If Pind.2 = 1 Then Mux4 = 1
If Pind.3 = 1 Then Mux7 = 1
If Pind.4 = 1 Then Mux10 = 1
Gosub Przyciski1
Ddrd.5 = 0
Ddrd.6 = 1
Ddrb.0 = 0
Przycisk1 = 0 : Przycisk2 = 1 : Przycisk3 = 0
If Pind.0 = 1 Then Mux2 = 1
If Pind.2 = 1 Then Mux5 = 1
If Pind.3 = 1 Then Mux8 = 1
If Pind.4 = 1 Then Mux11 = 1
Gosub Przyciski1
Ddrd.5 = 0
Ddrd.6 = 0
Ddrb.0 = 1
Przycisk1 = 0 : Przycisk2 = 0 : Przycisk3 = 1
If Pind.0 = 1 Then Mux3 = 1
If Pind.2 = 1 Then Mux6 = 1
If Pind.3 = 1 Then Mux9 = 1
If Pind.4 = 1 Then Mux12 = 1
Gosub Przyciski1
If Kod = 6 Then : Cursor Noblink : End If
If Kod > 7 Then
Cls : Lcd "tylko 6 liczb"
Wait 2 : Cls
Kod = 0 : Cursor Blink : End If '
Loop
End
Czekaj:
Waitms 20
Return
Przyciski1:
If Pind.0 = 0 Then
Gosub Czekaj
If Przycisk1 = 1 Then
If Mux1 = 1 Then : Lcd "*" : Incr Kod : Mux1 = 0 : End If : End If
If Przycisk2 = 1 Then
If Mux2 = 1 Then : Lcd "0" : Incr Kod : Mux2 = 0 : End If : End If
If Przycisk3 = 1 Then
If Mux3 = 1 Then : Lcd "#" : Incr Kod : Mux3 = 0 : End If : End If
End If
If Pind.2 = 0 Then
Gosub Czekaj
If Przycisk1 = 1 Then
If Mux4 = 1 Then : Lcd "7" : Incr Kod : Mux4 = 0 : End If : End If
If Przycisk2 = 1 Then
If Mux5 = 1 Then : Lcd "8" : Incr Kod : Mux5 = 0 : End If : End If
If Przycisk3 = 1 Then
If Mux6 = 1 Then : Lcd "9" : Incr Kod : Mux6 = 0 : End If : End If
End If
If Pind.3 = 0 Then
Gosub Czekaj
If Przycisk1 = 1 Then
If Mux7 = 1 Then : Lcd "4" : Incr Kod : Mux7 = 0 : End If : End If
If Przycisk2 = 1 Then
If Mux8 = 1 Then : Lcd "5" : Incr Kod : Mux8 = 0 : End If : End If
If Przycisk3 = 1 Then
If Mux9 = 1 Then : Lcd "6" : Incr Kod : Mux9 = 0 : End If : End If
End If
If Pind.4 = 0 Then
Gosub Czekaj
If Przycisk1 = 1 Then
If Mux10 = 1 Then : Lcd "1" : Incr Kod : Mux10 = 0 : End If : End If
If Przycisk2 = 1 Then
If Mux11 = 1 Then : Lcd "2" : Incr Kod : Mux11 = 0 : End If : End If
If Przycisk3 = 1 Then
If Mux12 = 1 Then : Lcd "3" : Incr Kod : Mux12 = 0 : End If : End If
End If
Return
pozdrawiam
z góry wielkie dzięki