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