logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega16 klawiatura matrycowa

spili1978 20 Gru 2009 22:01 3776 8
REKLAMA
  • #1 7415945
    spili1978
    Poziom 11  
    Witam wszystkich,
    Wykonałem klawiaturę matrycową, ale układ nie działa jak sobie wymyśliłem, chce aby wykonać program 1 muszę nacisnąć klawisz 1 i tak dla wszystkich programów. Ale jak wybiorę program 1 to przechodzi do programu 11. Poniżej podaje fragment moich wypocin port C zrobiłem sobie jako port pomocniczy, bo na razie nie potrafi inaczej. Proszę o pomoc w rozwikłaniu zagadki
    -------------------------------------
    Config Kbd = Portd , Delay = 100
    Dim Dm As Byte

    Cls
    Lcd "testy"
    Lowerline
    Lcd "2 linia"
    'dm rozpiska 1=0 2=1 3=2 4=4 5=5 6=6 7=8 8=9 9=10 0=13 #=12 enter=14
    Do
    Dm = Getkbd()
    '--------------------------------------
    If Dm = 0 Then 'menu 1
    Cls
    Lcd " P1"
    Portc = 1
    Wait 1
    End If
    '------------------------------------------
    If Dm = 0 And Portc = 1 Then ' menu 11
    Cls
    Lcd " P11"
    Portc = 11
    Wait 1
    End If
    '---------------------------------------
    If Portc = 1 And Dm = 14 Then 'start menu 1
    Portc = 101
    End If
    '----------------------------------------
    If Portc = 101 Then 'wykonywanie P1
    'zadanie do wykonania
    End If
    '--------------------------------------------
    If Portc = 11 And Dm = 14 Then 'start menu 11
    Portc = 111
    End If
    '--------------------------------------------
    If Portc = 111 Then 'wykonywanie P11
    'zadanie do wykonania
    End If
    '----------------------------------------------
    Loop
    End
  • REKLAMA
  • #2 7416784
    Kuniarz
    Moderator Projektowanie
    Pokaż jak to połączyłeś, bo coś mi tu nie gra ;-)
    Klawiaturą matrycową steruje się tak, że jak masz np. 3x3 to ustawiasz kolejno stan np. niski na poszczególnych rzędach i sprawdzasz w której kolumnie ten stan niski zaistniał - czyli, przycisk zwarty.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #4 7417698
    Kuniarz
    Moderator Projektowanie
    No to program moim zdaniem powinien wyglądać tak:

    pętla
    ustawiasz pd4 na niski
    jesli pd0 niski to skocz klawisz 0
    jesli pd1 niski to skocz klawisz 1
    jesli pd2 niski to skocz klawisz 2

    ustawiasz pd5 na niski
    jesli pd0 niski to skocz klawisz 4
    jesli pd1 niski to skocz klawisz 5
    jesli pd2 niski to skocz klawisz 6

    i tak dalej i tak dalej

    petla

    Oczywiscie musisz podciągnąć PD0-PD2 do zasilania przez rezystor.
    Pomogłem? Kup mi kawę.
  • #5 7418355
    spili1978
    Poziom 11  
    Nie do końca rozumiem, to ma się odbyć też przy pomocy funkcji „getkbd”??? bo jak na PD4-7 ma być stan niski to musi być wyskoki

    Czy może coś takiego:
    config portd = &b00000000
    portd = &b00000000

    if pind.0 = 0 and pind.4=1 path
    wykonywanie 0
    end if
  • REKLAMA
  • #6 7421054
    Kuniarz
    Moderator Projektowanie
    config pind.4 = output
    to samo dla 5, 6,7

    config pind.0 = input
    to samo 1 i 2

    nigdy nie pamiętam czy set to 1 czy 0 :), chyba zero... , no ale chodzi o zasade
    reset portd.4 , 5 i 6 - pozostałe na wysoki
    set portd.3 - pierwsza na niski

    teraz odczytujesz który klawisz z danej linii jest wciśnięty

    if pind.0 = 0 then skok do procedury obsługi 1 klawisza
    if pind.1 = 0 then skok do procedury obsługi 2 klawisza

    itd
    pozniej zmieniasz kolejną linie na niski , podnosząc przy okazji tamte pozostałe na wysoki

    i tak dalej.

    Książka Marcina Wiązani, strona 232 ;-)
    Pomogłem? Kup mi kawę.
  • #7 7427877
    spili1978
    Poziom 11  
    Dziękuję bardzo za zainteresowanie tematem, po świętach będę ćwiczył dalej. A książka tego autora, jaki ma tytuł???
    Zdrowych Wesołych Świąt
  • REKLAMA
  • #8 7427976
    Kuniarz
    Moderator Projektowanie
    "Programowanie mikrokontrolerów AVR w języku Bascom" - czy jakoś tak...


    P.S. chyba zwrócę się do Marcina Wiązani o jakiś bonus za polecanie tej skąd inąd bardzo dobrej publikacji ;-)
    Pomogłem? Kup mi kawę.
  • #9 7444016
    spili1978
    Poziom 11  
    Cześć,
    Dziękuje za pomoc w sprawie klawiatury, działa :)
    Pozdrawiam
REKLAMA