Verwendung einer Tastenmatrix
|

Bild 0-1: Layout für die Tastenmatrix
|

Bild 0-2: Verbindungsschema Tastenmatrix / Mikrocontroller.

Bild 0-3: Versuchsaufbau
|

//Die gedrückte Taste wird über RS232 angezeigt. //Verbindung Tastenfeld - ATmega // 1 PC1 // 2 PC2 // 3 PC3 // 4 PC4 // 5 PC5 // 6 PC6 // 7 PC7 //Taste verbindet PCx mit PCy // 1 4 1 // 2 4 2 // 3 4 3 // 4 5 1 // 5 5 2 // 6 5 3 // 7 6 1 // 8 6 2 // 9 6 3 // * 7 1 // 0 7 2 // # 7 3 #include <avr/io.h> #define TAKTFREQUENZ 9216000 #include "RS232.h" RS232 rs232; int main(void) { rs232.start(true,true); //PC 1 2 3 als Ausgang //PC 4 5 6 7 als Eingang DDRC = 0b00001110; //Pullup für Eingänge PORTC |= 0b11110000; rs232.sendeText("Test einer Taster-Matrix\n\r"); while(true) { //PC1 auf Masse ziehen PORTC |= 0b00001110; PORTC &= 0b11111101; //prüfen, ob PC 4,5,6 oder 7 einen Low-Pegel aufweisen //prüfen, ob PC 4,5,6 oder 7 einen Low-Pegel aufweisen if( !(PINC & 0b00010000) ) rs232.sendeText("1\n\r"); if( !(PINC & 0b00100000) ) rs232.sendeText("4\n\r"); if( !(PINC & 0b01000000) ) rs232.sendeText("7\n\r"); if( !(PINC & 0b10000000) ) rs232.sendeText("*\n\r"); //PC2 auf Masse ziehen PORTC |= 0b00001110; PORTC &= 0b11111011; //prüfen, ob PC 4,5,6 oder 7 einen Low-Pegel aufweisen if( !(PINC & 0b00010000) ) rs232.sendeText("2\n\r"); if( !(PINC & 0b00100000) ) rs232.sendeText("5\n\r"); if( !(PINC & 0b01000000) ) rs232.sendeText("8\n\r"); if( !(PINC & 0b10000000) ) rs232.sendeText("0\n\r"); //PC3 auf Masse ziehen PORTC |= 0b00001110; PORTC &= 0b11110111; //prüfen, ob PC 4,5,6 oder 7 einen Low-Pegel aufweisen if( !(PINC & 0b00010000) ) rs232.sendeText("3\n\r"); if( !(PINC & 0b00100000) ) rs232.sendeText("6\n\r"); if( !(PINC & 0b01000000) ) rs232.sendeText("9\n\r"); if( !(PINC & 0b10000000) ) rs232.sendeText("#\n\r"); } return 0; }
Code 0-1: Testprogramm für Tastenmatrix