Anda di halaman 1dari 7

SIMULASI MIKROKONTROLLER

MEMBACA KEYPAD 4X4

MOHAMMAD ARIYANSYAH (2040201130)

PROGRAM STUDI TEKNOLOGI REKAYASA OTOMASI


DEPARTEMEN TEKNIK ELEKTRO OTOMASI
FAKULTAS VOKASI
INSTITUT TEKNOLOGI SEPULUH NOPEMBER
I. Tujuan
1. Untuk mencetak input/masukan pada LCD dengan menggunakan Keypad 4x4
2. Untuk memahami sistem kerja pada Keypad 4x4
3. Untuk menambah pemahaman mengenai ATmega8535
II. Alat dan Bahan
1. CodeVision AVR
2. Proteus
3. ATMEGA 8535
4. LCD/LM016L
5. Push button
6. Ground
7. Power supply
8. Keypad smallcal

III. Cara Kerja dan Pembahasan Instruksi

A. #include
Biasanya digunakan untuk menyertakan file header (.h) atau file library. File include
berguna memberitahukan compiler agar membaca file yang akan di include-kan lebih
dahulu agar mengenali definisi-definisi yang digunakan dalam program sehingga
tidak dianggap error.
Cara penulisan:
# include <………> untuk lokasi standar file yang telah disetting oleh tools biasanya
pada folder include atau folder direktori compiler.
# include ”……….. “ untuk lokasi file yang kita tentukan sendiri.

B. PIN
PIN ialah setiap kaki yang ada pada sebuah mikro,sebagai contoh PINA1(dapat ditulis
PA1) ialah kaki yang terdapat dalam PORTA dan kaki ke 1

C. PORT
PORT ialah bagian-bagian berupa huruf yang ada pada sebuah mikro sebagai contoh
PORTA, PORTB, PORTC, PORTD. Tapi jika kita menyebutkan kaki pada PORTA
(contoh : PORTA1 ) ini sama dengan PINA1.
D. DDR (Data Direction Register)
DDR(Data Direct Register) ialah bagian yang menentukan PIN tersebut sebagai
masukan(input) atau sebagai keluaran(output).
Input bernilai :0
Output bernilai : 1

E. Void Lcd_Putsf(char flash *str);


Instruksi untuk menampilkan string pada posisi kursor saat tersebut.
lcd_gotoxy(0,1); lcd_putsf(“Hello”);

F. Void Lcd_Puts(char *str);


Instruksi untuk menampilkan string yang sebelumnya disimpan di
SRAM. Sebelum memanggil instruksi ini, sebelumnya string sudah
ditempatkan di SRAM. Instruksi ini memerlukan library stdio.hex .
#include <mega8535>
#include <stdio.h>
...
//Declare your global variable here
char buf[33];//variable declaration to save the data string
//LCD module initialization lcd_init(16);
lcd_gotoxy(0,1);
sprint(buf,”Angka %d”, 14);//save string to SRAM lcd_puts(buf);            
dibutuhkan binernya 0 dan bagian dp serta g binernya 1.

G. Pembahasan Output LCD


lcd_init(16); berfungsi sebagai deklarasi bahwa lcd memiliki 16 kolom dan 2
baris(16x2). lcd_clear(); berfungsi untuk meghapus program sebelumnya. Pada
prinspinya sama dengan menggunakan 7 segmen tetapi PORTA.4 tidak
digunakan.
Selain itu baris dan kolom/lcd_gotoxy mempengaruhi letak tulisan di LCD. Di
bawah ini contoh LCD dan pinnya.
H. Pembahasan Output LCD dengan Keypad 4x4
DDRC = 0b00001111 berfungsi menentukan input/output, 4 buah angka 1
menandakan output sedangkan 4 buah angka 0 menandakan input. Pada keypad
nilai 1 sebagai kolom sedangkan 0 untuk input apabila tombol pada keypad
ditekan. Sebelum masuk ke logika if atau else if dideklarasikan terlebih dahulu
PORTCnya, Contoh (PORTC =0b11111110) memiliki arti bahwa PINC1 menuju
ground atau kolom 1 sudah bernilai 0 kemudian apabila salah satu dari baris pada
kolom 1 ditekan maka akan bernilai 0 atau menuju ground sehingga tombol yang
ditekan akan memunculkan karakter. Logika if dan else if bertujuan untuk
memberikan intruksi jika nilai pada if atau else ifnya benar jika tidak maka akan
menjalankan instruksi program selanjutnya. Lcd_putchar sama dengan lcd_putsf
yang bertujuan menampilkan karakter.

IV. Gambar Rangkaian

Gambar 1 Rangkaian Input LCD dengan Keypad 4x4


V. Kode Program AVR
A. Program Membaca Keypad 4x4 dengan Bahasa C
#include <alcd.h>
#include <delay.h>
#include <mega8535.h>
void keypad()
{
PORTC=0b11111110;
delay_us(5);
if(PINC.4==0){
lcd_gotoxy(7,0);
lcd_putchar('7');
}
if(PINC.5==0){
lcd_gotoxy(7,0);
lcd_putchar('4');
}
else if(PINC.6==0){
lcd_gotoxy(7,0);
lcd_putchar('1');
}
else if(PINC.7==0){
lcd_gotoxy(7,0);
lcd_putchar('*');
}
//----kolom 2
PORTC=0b10111101;
delay_us(5);
if(PINC.4==0){
lcd_gotoxy(7,0);
lcd_putchar('8');
}
else if(PINC.5==0) {
lcd_gotoxy(7,0);
lcd_putchar('5');
}
else if(PINC.6==0) {
lcd_gotoxy(7,0);
lcd_putchar('2');
}
else if(PINC.7==0) {
lcd_gotoxy(7,0);
lcd_putchar('0');
}
//-----kolom 3
PORTC=0b11011011;
delay_us(5);
if(PINC.4==0) {
lcd_gotoxy(7,0);
lcd_putchar('9');
}
else if(PINC.5==0) {
lcd_gotoxy(7,0);
lcd_putchar('6');
}

else if(PINC.6==0) {
lcd_gotoxy(7,0);
lcd_putchar('3');
}
else if(PINC.7==0) {
lcd_gotoxy(7,0);
lcd_putchar('#');
}
//kolom 4
PORTC=0b11110111;
delay_us(5);
if(PINC.4==0) {
lcd_gotoxy(7,0);
lcd_putchar('A');
}
else if(PINC.5==0) {
lcd_gotoxy(7,0);
lcd_putchar('B');
}
else if(PINC.6==0) {
lcd_gotoxy(7,0);
lcd_putchar('C');
}
else if(PINC.7==0) {
lcd_gotoxy(7,0);
lcd_putchar('D');
}
}
void main()
{
DDRC = 0B00001111;
PORTC = 0B11111111;
lcd_init(16);
lcd_putsf("Tombol=");
while(1)
{
keypad();
}
}
VI. Hasil Running Simulasi

Gambar 2 Hasil Input LCD dengan Keypad 4x4

Anda mungkin juga menyukai