Verwendung einer Tastenmatrix
  | 
     Bild 0-1: Layout für die Tastenmatrix
  | 
     Bild 0-2: Verbindungsschema Tastenmatrix / Mikrocontroller.
     Bild 0-3: Versuchsaufbau
  | 
 03_taster_matrix.zip - Download des nachfolgendne Projekts
//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