
www.mikroavr.com, Membaca Keypad 4×4 dan keypad 3×4 dengan Mikrokontroller ATMEGA digunakan dengan cara sistem scanning. Pin Kedua keypad ini akan di gunakan sebagai output sekaligus sebagai input. penggunaan keypad ini banyak kita jumpai di berbagai peralatan elektronik, seperti peralatan SPBU, PERTAMINI, Tombol Password pada perangkat seperti pintu, dan perlengakpan lainnya nah bagaimanakan cara membaca keypad ini dengan ATMEGA dan CODEVISION AVR sebagai compiler C nya. Nah sebelum memulai coding membaca keypad 4×4 atau 3×4.
Ada poin penting yang harus di perhatikan. Pertama adalah setting nilai register DDR dan PORT. Register ini berguna untuk menentukan apakah PORT pada ATMEGA BERGUNA sebagai input atau output.
Karena keypad DI hubungkan dengan port a maka setting adalah PORTA=0XFF; DDRA=0xF0;
Disini kita menggunakan VARIANT AVR ATMEGA16, program ini bisa juga di gunakan dengan ATMEGA8535 dan ATMEGA32, karena ketiga jenis mikrokontroller ini memiliki konfigurasi pin yang hampir sama, untuk PORT I/O nya sama persis. ini programnya:
#include <mega16.h> // Alphanumeric LCD functions #include <alcd.h> #include <delay.h> #include <stdio.h> #include <stdlib.h> // Declare your global variables here // Declare your global variables here void simpan_dlm_1variabel(); void scanning_keypad(); void tampil_lcd(); float nilai = 0; unsigned char temp[12]; unsigned char array[10]; int i=0; void main(void) { // Declare your local variables here PORTA = 0XFF; DDRA=0XF0; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 20 lcd_init(16); lcd_gotoxy(0,0); lcd_putsf("MIKROAVR.COM"); delay_ms(1000); lcd_clear(); while (1) { // Place your code here scanning_keypad(); tampil_lcd(); } } void scanning_keypad() { int waktu = 100; PORTA = 0b01111111; delay_ms(20); if(PINA.3 == 0){delay_ms(waktu);} //D if(PINA.2 == 0){delay_ms(waktu);} //C if(PINA.1 == 0){delay_ms(waktu);} //B if(PINA.0 == 0){lcd_clear();i=0;nilai=0;delay_ms(waktu);} //A PORTA = 0b10111111; delay_ms(20); if(PINA.3 == 0){ delay_ms(waktu); i=0; nilai=0; lcd_clear(); } //# if(PINA.2 == 0){i++; array[i]=9; simpan_dlm_1variabel();delay_ms(waktu);} if(PINA.1 == 0){i++; array[i]=6; simpan_dlm_1variabel();delay_ms(waktu);} if(PINA.0 == 0){i++; array[i]=3; simpan_dlm_1variabel();delay_ms(waktu);} PORTA = 0b11011111; delay_ms(20); if(PINA.3 == 0){i++; array[i]=0; simpan_dlm_1variabel();delay_ms(waktu);} if(PINA.2 == 0){i++; array[i]=8; simpan_dlm_1variabel();delay_ms(waktu);} if(PINA.1 == 0){i++; array[i]=5; simpan_dlm_1variabel();delay_ms(waktu);} if(PINA.0 == 0){i++; array[i]=2; simpan_dlm_1variabel();delay_ms(waktu);} PORTA = 0b11101111; delay_ms(20); if(PINA.3 == 0){ delay_ms(waktu);lcd_clear(); } //* if(PINA.2 == 0){i++; array[i]=7; simpan_dlm_1variabel();delay_ms(waktu);} if(PINA.1 == 0){i++; array[i]=4; simpan_dlm_1variabel();delay_ms(waktu);} if(PINA.0 == 0){i++; array[i]=1; simpan_dlm_1variabel();delay_ms(waktu);} } void simpan_dlm_1variabel() { if ( i == 1 ){nilai = array[i];} if ( i >= 2 && i <= 8 ) { nilai = (nilai*10)+array[i]; } } void tampil_lcd() { lcd_gotoxy(0,0); lcd_putsf("test keypad"); if(nilai>0) { ftoa(nilai,0,temp); lcd_gotoxy(0,1); lcd_puts(temp); } }
Oke gan, program diatas bisa digunakan untuk keypad 4×4 dan 3×4. tinggal colok pin keypad ke PORTA mikrokontroller.
silahkan unduh program lengkap nya disini
PUNYA MASALAH dalam pembuatan project MIKROKONTROLLER ATAU ARDUINO, silahkan whatsapp: 085207770631, atas nama: jimmi kardo sitepu, Dengan senang HATI saling berbagi
Baca Artikel kami tentang modul pertamini di bawah ini, cukup klik link nya