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:
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);
}
pzdr[/code]