Na forum widzę jest sezon na klawiatury to i ja przedstawię własne stare niezawodne sposoby .
Sposobów na podpięcie klawiatury jest wiele , byle był skuteczny i możliwy do zastosowania w naszym projekcie .
Kiedy mam kilka wolnych pinów w procku , a jest ich zbyt mało by podłączyć np. klawiaturę 4x4 , albo nie mam ochoty na zabawę z IC2 .
W takiej sytuacji mam stary sprawdzony sposób , który zawsze działa .
Mając wolne cztery piny w różnych portach mogę spokojnie podłączyć sobie klawiaturę z 15 przyciskami
Dodatkowy koszt , to ledwo kilka diodek i pięć gram pracy .
Na rysunku przedstawiam trzy różne opcje z różną ilością dostępnych lini portów 2 ,3 i 4 .
Jasne jak słońce , kiedy potrzebujemy pełny zakres klawiszy 1 do 9 plus opcjonalne , a mamy 2 lub 3 wolne linie , taki pomysł odpada . Poniżej kawałek rozwojowego kodu
Zmienna klawiatura przyjmuje dokładnie taką wartość jaka mają numery przycisków K0 = 0 ...K3 = 3 itd.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m8def.dat"
- $crystal = 8000000
- $hwstack = 64
- $swstack = 32
- $framesize = 128
- Config Lcd = 16 * 2
- Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
- Cursor Off
- Cls
- Config Pinb.0 = Input : Set Portb.0
- Config Pinb.1 = Input : Set Portb.1
- Config Pinb.2 = Input : Set Portb.2
- Config Pinb.3 = Input : Set Portb.3
- Dim Klawiatura As Byte
- ' Do Bitów zmiennej Klawiatura możemy przypisać dowolne piny różnych portów o ile takie są w naszym projekcie ;-)
- Do
- Klawiatura.0 = Pinb.0 'bit "0" zmiennej Klawiatura przyjmuje wartość wejścia PINB.0
- Klawiatura.1 = Pinb.1 'bit "1" ..........................
- Klawiatura.2 = Pinb.2 'bit "2" ..........................
- Klawiatura.3 = Pinb.3 'bit "3" ..........................
- Waitms 200
- Locate 1 , 1 : Lcd "DEC-" ; Klawiatura ' wyświetla wartość zmiennej klawiatura dziesiętnie
- Locate 2 , 1 : Lcd "BIN-" ; Bin(klawiatura) ' wyświetla wartość zmiennej klawiatura binarnie
- Loop
- End
Henryk