lcd dan ddddd
TRANSCRIPT
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 1/17
LCD DAN KEYPAD
13APR
>>>KEYPAD<<<
Pada dasarnya keypad yang ada dipasaran baik yang berukuran keypad 3×3, 3×4 atau 4×4, hanya
tersusun dari beberapa push button yang dikonfigurasikan antara kolom dengan baris. Sehingga sering
disebut juga keypad matriks nxm (n=kolom m=baris). Kolom dan baris ini nantinya yang digunakan untuk
pendeteksian penekanan tombol. Berikut adalah konfigurasi dasar untuk keypad 4×4.
B1, B2, B3 dan B4 merupakan baris ke 1 sampai baris ke 4, sedangkan C1, C2, C3 dan C4 merupakan
kolom ke 1 sampai kolom ke 4 keypad. Terlihat jelas betapa sederhananya rangkaian dasar keypad untuk
ukuran keypad 4×4 yang terdiri dari 16 buah push button yang dikonfigurasikan seperti matriks. Saya
sendiri membuat keypad menggunakan rangkaian diatas, dikarenakan mahalnya harga keypad. Dipasaran
saja keypad 4×4 bisa seharga Rp. 50.000, sedangkan untuk membuatnya tidak sampai Rp. 10.000.
Baiklah kembali lagi kemateri keypad. Sekarang saya punya pertanyaan? Kenapa kita tidak menggunakan
push button saja yang disusun seperti biasa, kenapa harus menggunakan keypad matrik. Jawabannya
mudah saja, kalo menggunakan susunan seperti biasa maka akan menghabiskan 16 pin mikrokontroler
untuk 16 buah tombol. Sedangkan jika dikonfigurasikan seperti diatas hanya menghabiskan 8 pin saja. Jadi
lebih ringkas dan irit dalam penggunaan pin mikrokontroler.
Sekarang cara untuk mengakses keypad, tapi terlebih dahulu perhatikan gambar berikut.
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 2/17
Sebelumnya kita harus menentukan terlebih dahulu mana yang akan dijadikan input atau output
mikrokontroler. Sebagian banyak orang membuat kolom keypad sebagai output mikrokontroler sedangkan
baris keypad sebagai input mikrokontroler. Sebenarnya bisa saja kita balik penggunaannya, tetapi agar
standar kita ikut saja yang sudah banyak digunakan orang. Cara kerja keypad adalah scanning yaitu
mendeteksi terus menerus apakah ada penekanan tombol.
Berikut adalah algoritma cara mengakses keypad:
Tentukan terlebih dahulu kolom sebagai output dari mikrokontroler sedangkan baris sebagai input
kemikrokontroler. Mengacu pada gambar diatas
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 3/17
Langkah pertama (Scanning kolom 1 PB0)
keluarkan output ke kolom 1(PB0)
kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)
kemudian deteksi penekanan baris4 (PB7)
Langkah kedua (Scanning kolom 2 PB1)
keluarkan output ke kolom 2 (PB1)
kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)
kemudian deteksi penekanan baris4 (PB7)
Langkah ketiga (Scanning kolom 3 PB2)
keluarkan output ke kolom 3 (PB2)kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)
kemudian deteksi penekanan baris4 (PB7)
Langkah kempat (Scanning kolom 4 PB3)
keluarkan output ke kolom 4 (PB3)
kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)kemudian deteksi penekanan baris4 (PB7)
Untuk realisasi programnya dapat dilihat pada listing program di akhir postingan ini.
>>>LCD 2×16<<<
Disini saya tidak akan menjelaskan tentang hardware dari LCD, tetapi akan fokus kepada instruksi-intruksi
yang akan digunakan dalam mengakses LCD. Jika teman-teman ingin paham lebih dalam lagi mengenai
hardware dan pengalamatan memory LCD, teman-teman dapat mendownload datasheet LCD 2×16 disini.
Dibawah ini ada beberapa instruksi yang digunakan untuk mengakses LCD pada compiler CodeVision
AVR:lcd_clear()
digunakan untuk menghapus LCD dan meletakkan kembali kursor ke kolom 0 baris 0.
lcd_gotoxy(unsigned char x,unsigner char y)
Untuk meletakkan kursor ke kolom x baris y. Kolom dan baris pada LCD dimulai dari 0, sehingga kolom
antara 0-15 dan baris 0-1 untuk LCD 2×16.
contoh:
lcd_gotoxy(10,1) maka akan meletakkan kursor di kolom 10 dan baris 1
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 4/17
lcd_putsf(char flash *str)
menampilkan karakter karakter yang ada dimemori flash pada alamat yang ditunjuk oleh pointer str ke LCD
dengan posisi kursor saat ini.
contoh:
lcd_putsf(“Electro_cOntrOl”) maka akan menampilkan tulisan Electro-cOntrOl
lcd_puts(char *str)
menampilkan karakter yang ada si memori RAM pada alamat yang ditunjuk oleh pointer str ke LCD dengan
posisi kursor saat ini.
lcd_putchar(char c)
digunakan untuk menampilkan karakter sesuai isi variabel c Ke LCD dengan posisi kursor saat ini.
Untuk lebih jelasnya dapat teman-teman lihat pada listing program. Berikut adalah schematic keypad dan
LCD yang dihubungkan ke mikrokontroler.
#include <mega8535.h>
#include <stdlib.h>
#include <delay.h>
#include <lcd.h>
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 5/17
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
void tekan_keypad_tampil_lcd() //penekanan keypad kemudian ditampilkan di LCD
{
PORTB = 0b11111110;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“1″); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“4″); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“7″); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“F”); delay_ms(300);}
PORTB = 0b11111101;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“2″); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“5″); delay_ms(300);}if (PINB.6 == 0) {lcd_putsf(“8″); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“0″); delay_ms(300);}
PORTB = 0b11111011;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“3″); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“6″); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“9″); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“E”); delay_ms(300);}
PORTB = 0b11110111;
delay_ms(30);if (PINB.4 == 0) {lcd_putsf(“A”); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“B”); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“C”); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“D”); delay_ms(300);}
}
void tampil_string()
{
lcd_gotoxy(0,0); //menempatkan kursor lcd pada baris 0 kolom 0
lcd_putsf(“tampilan lcd2x16″); //menampilkan tulisan tampilan lcd2x16
lcd_gotoxy(0,1); //menempatkan kursor lcd pada baris 1 kolom 0lcd_putsf(“Elektro-cOntrOl”); //menampilkan tulisan ElektrO-cOntrOl
}
void tampil_variabel()
{
//sebuah variabel yg akan ditampilkan kedalam LCD harus diubah dahulu kedalam tipe data array
//jika variabel bertipe data float maka diubah kedalan array dengan instruksi ftoa
//jika variabel bertipe data int maka diubah kedalan array dengan instruksi itoa
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 6/17
char temp[6];
int a=500;
float b=123.45;
itoa(a,temp);
lcd_gotoxy(0,0);
lcd_puts(temp);
ftoa(b,2,temp); //angka 2, banyaknya digit dibelakang koma yg ditampilkan
lcd_gotoxy(0,1);
lcd_puts(temp);
}
void main(void)
{
PORTB = 0xff;
DDRB = 0x0f;//PA0-3 sebagai output, PA4-7 sebagai input
while(1) //program utama
{//tinggal dilakukan pemanggilan fungsi saja, contoh:
tampil_string(); //pemanggilan fungsi tampil_string()
};
}
KeypadKeypad adalah rangkaian tombol yang berfungsi untuk memberi sinyal pada suatu
rangkaiandengan menghubungkan jalur-jalur tertentu. Keypad terdiri dari beberapa macam berdasarkan jumlah tombol dan fungsinya. Pada sistem pengontrolan ini, digunakan keypad
matriks 4 x 4 (16saklar).Gambar 2.10. Skematik Keypad 4 x 4Keypad Matriks : Konsep
Dasar Pada tutorial ini akan saya paparkan konsep dasar mengakses dan menggunakan Keypad
Matriks4x4 sebagai media inputan tetapi sebelumnya, anda sebaiknya membaca terlebih dahulututorialhardware mengenai Keypad Matriks agar mudah dipahami programnya karena
memprogrammikrokontroler berdasarkan dengan hardwarenya.Program berikut menggunakan
mikrokontroler ATmega8535 dengan bahasa pemrogramanCodeVisionAVR (baca MemulaiCoViAVR) akan tetapi jika telah memahami konsepnya, mikroapapun dengan bahasa
pemrograman yang lain pun tidak akan mengalami kesulitan.Keypad Matriks dan konfigurasi
keypad sebagai berikut :* Kolom 1 pada PORTA.0* Kolom 2 pada PORTA.1
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 7/17
Kurniadi.R083310040
* Kolom 3 pada PORTA.2* Kolom 4 pada PORTA.3* Baris 1 pada PORTA.4* Baris 2 padaPORTA.5* Baris 3 pada PORTA.6* Baris 4 pada PORTA.7Prinsip dasar pada program :* Jika
tombol 2 di tekan (S2) maka Kolom 2 Baris 1 terhubung atau PORTA.1 terhubungdengan
PORTA.4, Jika tombol B di tekan (SB) maka Kolom 4 Baris 2 terhubung atau PORTA.3terhubungdengan PORTA.5, dst.* Pin-pin KOLOM pada port tersebut dijadikan output dan pin-pin BARIS
pada port tersebutdijadikan input, bisa juga sebaliknya terserah anda sebagai programmer,
yang jelas salah satuoutput dan yang lain input.* Setiap saklar atau penekanan tombol, harusdidefinisikan nilai dari tombol tersebut baik berupa nilai Desimal, Heksadesimal, maupun
karakter ASCII.* Saat saklar (tombol keypad) ditekan dan BARIS dengan KOLOM terhubung
maka terserahanda mendetaksi perubahan logika yang terjadi pada pin-pin INPUT. Apakah dariLOW keHIGH (0 - 1) atau HIGH ke LOW (1 - 0). PadaPada Coding program untuk Keypad
Matriks yang saya buat menggunakan nilai ASCII dan saattombol ditekan mendeteksi
perubahan logika dari HIGH ke LOW (1 - 0) atau rendah aktif.Alasan :* Nilai ASCII adalah nilai
karakter seperti '1', '2', 'A', 'D', dst, yang pada listing program akanmudah dilihat nilainya danmudah pahami, berbeda dengan desimal maupun heksadesimal. '1' =0x31 (heksa), '1' =
49 (desimal), 'A' = 0x41 (heksa), 'A' = 65 (desimal), dst.
Kurniadi.R083310040
* Pada penekanan tombol, mengapa mendeteksi HIGH ke LOW daripada LOW ke HIGH ?karena
untuk mikrokotroler maupun rangkaian digital secara umum "menurunkan" tegangan berapapun ke
0 volt lebih mudah dan pasti dibandingkan "menaikkan" tegangan dari 0 volt kenilai tertentu.Efek Bounching (Pantulan)Listing pada gambar belum termasuk menangani tentang bounching dan lain-
lain. Bounching pada keypad yaitu efek perubahan sinyal berkali-kali (pantulan) saat penekanan
keypad yangmenyebabkan keypad seolah-olah tombol keypad ditekan berkali-kali.Ada berbagai
macam cara untuk mencegah menghilangkan efek bouncing ini baik dari segihardware dansoftware.* Jika hardware maka dengan menambahkan filter frekuensi tinggi atau dengan IC555
untuk menambah lebar pulsa.* Jika Software dengan menambah delay atau tundaan saat tombol
ditekan atau denganmendeteksi karakter tombol apakah sama dengan sebelumnya
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 8/17
Mengenal dot matrix 7x5
Dot matrix adalah titik titik yang membentuk sebuah matrix dimana titik titik tersebut adalah
led, Jadi untuk membentuk sebuah dot matrix 7x5 dibutuhkan 35 buah led. Inilah bentuk
fisik dari dot matrix disebut sebelumnya.
Dot matrix biasanya digunakan untu membuat running teks atau untuk membuat counter
atau pencacah pada bangjo atau traffic light. Biasanya dot matrix yang digunakan untuk
membuat alat2 tersebut digunakan lebih dari satu dot matrix. berikut merupakan scematic
dari susunan led-nya
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 9/17
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 10/17
Untuk menyalakan dot matrix ini dengan cara menyalakan satu per satu pada setiap
kolomnya atau lebih keren disebut dengan metode scanning. Supaya karakter yang
ditampilkan pada dot matrix dapat terlihat utuh maka proses scanning ini harus berlangsung
dengan sangat cepat.
Aplikasi
Dalam aplikasi ini hanya menggunakan satu buah dot matrix saja (maklum baru belajar).
Rangkaiannya seperti dibawah ini.
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 11/17
Kemudian program buat ATMega8 sebagai ini dibawah berikut.
$regfile = "m8def.dat"
$crystal = 8000000
Config Portc = Output
Config Portd = Output
dress Alias Portc
Data_ Alias Portd
Dim Lima As Byte
Dim Tujuh As Byte
Dim N_lima As Byte
Dim N_tujuh As Byte
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 12/17
Dim G As Byte
Dim Digit As Byte
N_lima = 0
N_tujuh = 0
Do
C = 33
For E = 0 To 33
For B = 0 To 4
For A = 0 To 4
Lima = Lookup(a , Alamat)
Adress = Lima
D = A + C
Tujuh = Lookup(d , Wahyu)
Data_ = Tujuh
Waitms 1
Next
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 13/17
Waitms 1
Next
Decr C
Next
Loop
Alamat:
Data &B111101
Data &B111011
Data &B110111
Data &B101111
Data &B011111
Wahyu:
'u
Data &B00000000
Data &B00000000
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 14/17
Data &B00000000
Data &B00000000
Data &B01111110
Data &B00000001
Data &B00000001
Data &B00000001
Data &B01111110
Data &B00000000
'y
Data &B01110000
Data &B00001000
Data &B00001111
Data &B00001000
Data &B01110000
Data &B00000000
'h
Data &B01111111
Data &B00001000
Data &B00001000
Data &B00001000
Data &B01111111
Data &B00000000
'a
Data &B00111111
Data &B01001000
Data &B01001000
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 15/17
Data &B01001000
Data &B00111111
Data &B00000000
'w
Data &B01111110
Data &B00000001
Data &B01111111
Data &B00000001
Data &B01111110
Data &B00000000
Data &B00000000
Data &B00000000
Data &B00000000
Program tersebut akan membuat dot matrix menampilkan "nama saya" sekali kali nebeng,
secara geser ke kiri. Dalam program tersebut proses scanning terjadi pada potongan
program
For A = 0 To 4
Lima = Lookup(a , Alamat)
Adress = Lima
D = A + C
Tujuh = Lookup(d , Wahyu)
Data_ = Tujuh
Waitms 1
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 16/17
Next
Pada potogan program tersebut terdapat rumus D = A + C, rumus ini digunakan untukmenggeser karakter yang ditampilkan oleh dot matrix sebanyak satu kali kearah kiri. pada
potongan program tersebut proses scanning hanya untuk 5 kolom saja, jika proses ini
hanya diulangi sekali saja maka karakter yang ditampilkan tidak akan terlihat karena terlalu
cepat, oleh karena itu proses ini juga diulang ulang sebanyak 5 kali supaya tampilan dapat
dilihat dengan jelas, sehingga program menjadi
For B = 0 To 4
For A = 0 To 4
Lima = Lookup(a , Alamat)
Adress = Lima
D = A + C
Tujuh = Lookup(d , Wahyu)
Data_ = Tujuh
Waitms 1
Next
Waitms 1
Next
5/17/2018 Lcd Dan Ddddd - slidepdf.com
http://slidepdf.com/reader/full/lcd-dan-ddddd 17/17
kemudian ditambah lagi dengan satu looping for....next yang digunakan untuk menggeser
karakter yaitu.
C = 33
For E = 0 To 33
.
.
.
.
.
Decr C
Next
nilai awal variabel c digunakan untuk menentukan jumlah perulangannya. trust me it work
,semoga bermanfaat.