Początkujacy , problem z klawiaturą.

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
misiek1989
-
Posty: 6
Rejestracja: 14 wrz 2010, 18:04
Lokalizacja: Katowice

Początkujacy , problem z klawiaturą.

Post autor: misiek1989 » 14 sty 2011, 17:32

Witam,
z góry sorki ,ale poszukałem po necie i nie znalazłem nic ciekawego , albo źle szukałem .

Kupiłem sobie klawiaturę jak w załączniku i chciałbym się dowiedzieć , które z tych wyprowadzeń to są wiersze a które kolumny i jak są one rozmieszczone.

Korzystałem ze strony http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=7
schemat podłączenia do atmegi:

Obrazek

i kod :

Kod: Zaznacz cały

/*
KURS AVR-GCC cz.4
Klawiatura telefonu

układ atmega16 (1MHz)

*/
#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>

/**** DEFINICJE WŁASNYCH FUNKCJI ****/

/* Konfiguracja sprzętu */
void init(void)
{
   /* Konfiguruj portu A jako wyjścia */
   /* Wyświetlacz */
   DDRA  = 0xFF;
   PORTA = 0xFF;

   /* Klawiaturka  PD0..PD7 */
   DDRD  = 0x0f;
   PORTD = 0x7f;
}

/* 
Funkcja zmienia bajt w kodzie binarnym na bajt 
zakodowany w BCD 
*/
unsigned char bin2bcd(unsigned char bin)
{
   if(bin>99) return bin;

   return  bin/10<<4 | bin%10;
}

/*
Funkcja sprawdza kolejno wszystkie przyciski klawiatury
i zwraca numer pierwszego wciśniętego przycisku, albo zero,
gdy żaden przycisk nie został wciśnięty.
 */
unsigned char read_keypad(void)
{
   unsigned char row,col,key;
   
   for(row=0x7e,key=1; row>=0x77; row=(row<<1|0x1)&0x7f)
   {
        PORTD = row; 
      for(col=0x10; col< 0x80; col<<=1, key++)
                   if(!(PIND & col)) return key;
   }
   return 0;
}

/**** POCZĄTEK PROGRAMU ****/

/* Definicja funkcji main */
int main(void)
{
   unsigned char key;

/* Konfiguracja portów we/wy */
   init();

/* Nieskończona pętla */
   for(;;)
      if(key = read_keypad())
             PORTA = bin2bcd(key);
}
Czy widać tu jakieś błędy i czy mógłby mi ktoś powiedzieć gdzie są te wyprowadzenia wierszy i kolumn , tzn. które są które w tej klawiaturce.
pzdr[/code]
Załączniki
kb304-pab.jpg
Klawiatura

Awatar użytkownika
mr_x
Użytkownik
Posty: 385
Rejestracja: 12 gru 2010, 19:05
Lokalizacja: /bin/bash
Kontakt:

Post autor: mr_x » 14 sty 2011, 17:54

Nie znam tego modelu, ale bardzo łatwo możesz dojść co jest czym za pomocą multimetru.

agrala
-
Posty: 34
Rejestracja: 17 sty 2011, 21:20
Lokalizacja: Kalisz

Post autor: agrala » 18 sty 2011, 10:56

Tak jak kolega napisał - miernik w rękę i będzie wiadomo. Masz tylko 3 kolumny i 4 wiersze więc to kilka sekund żeby sprawdzić.
Co do kodu to nie mam pojęcia bo nie znam C.

ODPOWIEDZ