Keypad 3×4 ATMega Atmel Studio
January 9, 2017 Leave a comment
file .c
#include <stdlib.h> #include <avr/io.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <stdlib.h> #include "keypad_lib.h" char read_keypad() { DDR_keypad = 0b00001111; /* 1 2 3 4 5 6 7 8 9 * 0 # */ PORT_keypad = 0b11111110; //scan baris 1 if(PIN_keypad == 0b11101110) { return ('1'); } else if(PIN_keypad == 0b11011110) { return ('2'); } else if(PIN_keypad == 0b10111110) { return ('3'); } //scan baris 2 PORT_keypad = 0b11111101; if(PIN_keypad == 0b11101101) { return ('4'); } else if(PIN_keypad == 0b11011101) { return ('5'); } else if(PIN_keypad == 0b10111101) { return ('6'); } //scan baris 3 PORT_keypad = 0b11111011; if(PIN_keypad == 0b11101011) { return ('7'); } else if(PIN_keypad == 0b11011011) { return ('8'); } else if(PIN_keypad == 0b10111011) { return ('9'); } //scan baris 4 PORT_keypad = 0b11110111; if(PIN_keypad == 0b11100111) { return ('*'); } else if(PIN_keypad == 0b11010111) { return ('0'); } else if(PIN_keypad == 0b10110111) { return ('#'); } return ('$'); }
file .h
#ifndef KEYPAD_LIB_H_ #define KEYPAD_LIB_H_ #include <inttypes.h> #include <avr/pgmspace.h> #define PORT_keypad PORTB #define PIN_keypad PINB #define DDR_keypad DDRB extern char read_keypad(); #endif /* KEYPAD_LIB_H_ */