1. keypad 4x3
2. atmega32
3. LCD 16*2
berikut rangkaiannya (proteus)
Untuk programnya digunakan bahasa pemrograman CVAVR, source codenya dapat di download disini
Penjelasan:
Pada dasarnya membaca input dari keypad adalah dengan melakukan proses "scan" pada setiap kolom. Maksud proses "scan" disini adalah memberikan logika 1 pada semua pin dan hanya pada kolom A saja yang diberikan logika 0
DDRD = 0b00000111;
PORTD = 0b11111110;
delay_us(1);
if (PIND==0b11110110) {
lcd_gotoxy (0,0);
lcd_putsf ("1");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b11101110)
{
lcd_gotoxy (0,0);
lcd_putsf ("4");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b11011110){
lcd_gotoxy (0,0);
lcd_putsf ("7");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b10111110){
lcd_gotoxy (0,0);
lcd_putsf ("*");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
};
kemudian untuk proses scan yang kedua sama seperti proses scan yang pertama hanya saja dilakukan pada kolom B
DDRD = 0b00000111;
PORTD = 0b11111101;
delay_us(1);
if (PIND==0b11110101) {
lcd_gotoxy (0,0);
lcd_putsf ("2");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b11101101){
lcd_gotoxy (0,0);
lcd_putsf ("5");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b11011101){
lcd_gotoxy (0,0);
lcd_putsf ("8");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b10111101){
lcd_gotoxy (0,0);
lcd_putsf ("0");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
};
dengan kondisi seperti diatas maka dapat diketahui apakah tombol c1, c2, c3 atau c4 yang ditekan. berikut merupakan potongan programnya:
DDRD = 0b00000111;
PORTD = 0b11111011;
delay_us(1);
if (PIND==0b11110011) {
lcd_gotoxy (0,0);
lcd_putsf ("3");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b11101011){
lcd_gotoxy (0,0);
lcd_putsf ("6");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b11011011){
lcd_gotoxy (0,0);
lcd_putsf ("9");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
}
else if (PIND==0b10111011){
lcd_gotoxy (0,0);
lcd_putsf ("#");
delay_ms(100);
lcd_gotoxy (0,0);
lcd_putsf(" ");
};
ketiga proses scan tersebut harus dilakukan secara cepat dengan proses looping, semakin cepat proses loopingnya maka semakin cepat pula respon dari keypad.
download:
simulator (proteus) klik disini
program(CVAVR) klik disini
wasalam
thnks ya wat tutorialnya bermanfaat banget
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusthanks banget gan, bermanfaat bgt..
BalasHapus