AVR IO ConfigDigital IO
KONFIGURASI AVR 8535
Mikroprosesor
1
BASIC I/O
• Ingat kembali
Mikroprosesor
2
Sistem PORT AVR
• AVR ATmega8535 memiliki 4 buah Port 8
bit, PORTA,PORTB,PORTC,PORTD
• Untuk mengatur suatu PORT sebagai
basic digital I/O pengguna harus
mengatur&mengakses Register yg terkait
dengan PORT tersebut yang terletak pada
daerah 64 byte I/O register
• Sebagai suatu General Purpose I/O suatu
PORT memiliki 3 buah Register
Mikroprosesor
3
Sistem PORT AVR
• Data Register PORTxn, digunakan untuk
menuliskan data ouput pada PORT
• Data Direction Register DDRxn,
digunakan untuk mengatur pin PORT
sebagai Input atau Output
• Input Pin Address PINxn,digunakan untuk
membaca data input dari suatu PORT
• Karena ada 4 PORT maka ada 12
Register yg digunakan untuk mengatur
GPIO pada AVR
Mikroprosesor
4
Sistem PORT AVR
Mikroprosesor
5
CodeVision AVR
• Setting I/O dengan codewizard
memungkinkan kita untuk memilih mode
I/O yg kita inginkan
• Dapat juga diatur nilai awal masingmasing pin I/O
Mikroprosesor
6
CodeVision AVR
• Contoh Setting I/O dengan codewizard
Mikroprosesor
7
CodeVision AVR
• Pengaturan yg kita lakukan akan menghasilkan
• Port B difungsikan sebagai input (DDRB = 0x00)
dengan 8 bit pull-up resistor diaktifkan
(PORTB=0xFF). Port C difungsikan sebagai
output (DDRC=0xFF) dengan nilai awalan pada
tiap bit 0 (low), PORTC=0x00.
Mikroprosesor
8
Pull Up & Pull Down?
• Pull Up resistor: resistor yg dipergunakan
untuk “menarik” ke logika 1(high/Vcc)
• Pull Down resistor: resistor yg
dipergunakan untuk “menarik” ke logika
0(low/Gnd)
• Pengaruh ketiadaan pull up/pull down:
tanpa adanya pull up atau pull down maka
suatu titik/pin akan “float” mengambang
(tidak bisa dipastikan apakah 1 atau 0)
Mikroprosesor
9
Pull Up & Pull Down?
• Pull Up
• Pull Down
Mikroprosesor
10
Pull Up internal AVR
• Mengurangi komponen yg dibutuhkan
Mikroprosesor
11
Catatan
• Terdapat fasilitas komunikasi serial pada
PORTD, yaitu PD.0 dan PD.1, jika
difungsikan sebagai Tx dan Rx maka
jangan digunakan sebagai GPIO(General
Purpose I/O)
• ADC 8 channel terdapat pada PORTA,
perhatikan ketika menyusun aplikasi yg
menggunakan ADC
Mikroprosesor
12
Catatan
• DT AVR LC Micro System
Mikroprosesor
13
Catatan
• Pada Modul DT AVR LC Micro System
terdapat jumper untuk setting PD.0 dan
PD.1
• Pada Modul DT AVR LC Micro System
terdapat jumper untuk setting referensi
ADC
Mikroprosesor
14
Catatan
• Untuk setiap PORT baik pada M68HC11
atau AVR 8535, pastikan bahwa sebelum
masuk pada aplikasi yg ada susun, kondisi
inisial masing PORT sudah sesuai.
• Terdapat PORT yg kondisi inisialnya
(sesudah reset) sudah pasti.
• Terdapat PORT yg kondisi inisialnya
(sesudah reset) belum pasti
• Atur sedemikian rupa agar kondisi inisial
adalah sesuatu yg pasti(anda ketahui)
Mikroprosesor
15
Switch, LED, Keypad&Display
Nuryono S.W.,S.T.,M.Eng.
Mikroprosesor
16
Switch Interface
• Switch adalah input yg paling sederhana
dan paling sering bagi mikrokontroler
• Terdapat berbagai macam switch yg harus
dipilih agar sesuai dengan aplikasi yg
akan dibuat
• Pole : jumlah koneksi yg bisa diubah
dengan satu tindakan pada switch
• Throw :jumlah kontak pada tiap pole
• SPST : Single Pole Single Throw
Mikroprosesor
17
Switch Interface
• Contoh switch yg sering digunakan
Mikroprosesor
18
Switch Interface
• Momentary contact
– Push Button switch
– Micro switch
• Semi permanent (non momentary)
– Toggle
– Rotary switch
– DIP switch (slide switch)/8 pole on off
– Push On Push Off
– Key Switch
Mikroprosesor
19
Switch Interface
Mikroprosesor
20
Switch Interface
• Switch untuk kegunaan khusus (deteksi
gerak/posisi)
Mikroprosesor
21
Switch Interface
• Simple Interface
– Switch interface dengan
pull up resitor
– Jika switch tidak ditekan
maka akan diperoleh
logika “1”
– Jika switch ditekan maka
akan diperoleh logika “0”
– Untuk membalik logika
penekanan, tukarkan
posisi switch dan resistor
Mikroprosesor
22
Switch Interface
• Simple Interface
Mikroprosesor
23
Switch Interface
• Simple Interface rotary switch
Mikroprosesor
24
Switch Debounce
• Bounce : ketika switch ditekan(berpindah
posisi), dari on-off atau off-on, terjadi
“bounce”(pantulan), yaitu adanya posisi yg
“memantul” antara on dan off, sehingga
seolah-olah terjadi penekanan switch
berulang-ulang(transisi on-off atau off-on
berulang)
• Debounce: upaya untuk menanggulangi
peristiwa bounce,agar hanya terjadi satu
transisi saja
Mikroprosesor
25
Switch Debounce
• Switch Bounce
Mikroprosesor
26
Switch Debounce
• Debounce
– Secara hardware, dengan memaksa sinyal logika
menjadi berbentuk “kotak”
• Capacitor dan resistor
• Capacitor dan resistor serta Schmidt triger
• Debouncing Latch (flip-flop)
– Secara software, dengan menyisipkan delay agar
periode pembacaan lebih lama dari periode bouncing
atau menunggu sampai tombol benar-benar stabil.
Secara umum prosedur switch debounce dengan
software adalah dengan mengecek kondisi suatu
switch, beri delay(orde ms), kemudian cek kembali
kondisi switch, jika kondisinya sama berarti switch
sdh dlm kondisi stabil, dan pembacaannya sudah
valid.
Mikroprosesor
27
Switch Interface
• Switch dengan Debounce Capacitor
Mikroprosesor
28
Switch Interface
• Switch dengan rangkaian debounce
schmitt-triger
Mikroprosesor
29
Switch Interface
• Mendeteksi penekanan switch
– Polling : Program mengecek secara periodis
kondisi switch apakah ditekan atau tidak.
Program selalu mengulang potongan program
yg digunakan untuk polling switch
– Interupt : Program tidak mengecek kondisi
switch secara periodis, namun switch
digunakan sebagi sumber interupt eksternal.
Selama tidak ada perubahan kondisi switch
yg mengakibatkan interupsi, program
mengerjakan hal yg lain
Mikroprosesor
30
Switch Interface
• Multiple Switch dengan ADC
Mikroprosesor
31
LED
• LED adalah ouput yg paling sederhana,
namun dapat sangat membantu,
khususnya pada tahap development
aplikasi, karena dapat digunakan sebagai
indikator status
Mikroprosesor
32
LED
• Dual color LED
Mikroprosesor
33
LED
• Dual Color Led
Mikroprosesor
34
Keypad
• Keypad
– Pada dasarnya
adalah sejumlah
switch yg disusun
secara matriks
– Terdiri dari baris dan
kolom
– Penekanan suatu
tombol
menyebabkan
koneksi antara
baris&kolom pada
tombol tsb
Mikroprosesor
35
Keypad
• Deteksi keypad
– Scanning Baris : deteksi tombol yg ditekan dilakukan mulai dari
baris pertama, dicek apakah pada baris tsb ada tombol yg
ditekan, jika ya, kolom yg mana pada baris tersebut yg ditekan,
jika tidak ada yg ditekan lanjut ke baris berikutnya, dan
seterusnya
– Scanning Kolom:deteksi tombol yg ditekan dilakukan mulai dari
kolom pertama, dicek apakah pada kolom tsb ada tombol yg
ditekan, jika ya, baris yg mana pada kolom tersebut yg ditekan,
jika tidak ada yg ditekan lanjut ke kolom berikutnya, dan
seterusnya
– Scanning baris~baris sebagai output(row mask), kolom sebagai
input
– Scanning kolom~kolom sebagai output(column mask), baris
sebagai input
– Tidak tampak perbedaan apapun bagi pengguna keypad, karena
scanning dilakukan dengan sangat cepat
Mikroprosesor
36
Keypad Matrix 4x4
• Susun koneksi seperti pd
gambar
• Aturlah agar PD.0-PD.3
sebagai input dengan
internal pull up aktif
• Aturlah agar PD.4-PD.7
sebagai output
• Masking scanning kolom
diberikan melalui PD.4PD.7
• Baris yg aktif dibaca
melalui PD.0 – PD.3
Mikroprosesor
37
Keypad Matrix 4x4
• Step 1
• Set kondisi Port D =
11101111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.4= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol 1
ditekan
• Jika PD.1 = 0 maka Tombol 4
ditekan
• Jika PD.2 = 0 maka Tombol 7
ditekan
• Jika PD.3 = 0 maka Tombol CAN
ditekan
Mikroprosesor
38
Keypad Matrix 4x4
• Step 2
• Set kondisi Port D =
11011111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.5= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol 2
ditekan
• Jika PD.1 = 0 maka Tombol 5
ditekan
• Jika PD.2 = 0 maka Tombol 8
ditekan
• Jika PD.3 = 0 maka Tombol 0
ditekan
Mikroprosesor
39
Keypad Matrix 4x4
• Step 3
• Set kondisi Port D =
10111111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.6= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol 3
ditekan
• Jika PD.1 = 0 maka Tombol 6
ditekan
• Jika PD.2 = 0 maka Tombol 9
ditekan
• Jika PD.3 = 0 maka Tombol
ENT ditekan
Mikroprosesor
40
Keypad Matrix 4x4
• Step 4
• Set kondisi Port D =
01111111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.7= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol
COR ditekan
• Jika PD.1 = 0 maka Tombol
MEN ditekan
• Jika PD.2 = 0 maka Tombol
Up ditekan
• Jika PD.3 = 0 maka Tombol
Down ditekan
Mikroprosesor
41
Keypad - LED
• Contoh aplikasi
– Keypad dihubungkan dengan PORT.D
– 8 buah Led dihubungkan dengan PORT.B
– Penekanan tombol keypad, akan ditampilkan
sebagai kode biner pada LED
Mikroprosesor
42
Keypad - LED
• Atur pada codewizard
Mikroprosesor
43
Keypad - LED
• Akan diperoleh
Mikroprosesor
44
Keypad - LED
• Definisikan Global variable untuk
menyimpan data penekanan
• Program selengkapnya ada di key2led.pdf
Mikroprosesor
45
Seven Segment
• Seven Segment
Mikroprosesor
46
Seven Segment
• Seven segment
Mikroprosesor
47
Seven Segment
• Digit Multiplexing
Mikroprosesor
48
Seven Segment
• Digit Multiplexing
Mikroprosesor
49
Liquid Crystal Display(LCD)
Mikroprosesor
50
Liquid Crystal Display(LCD)
• Pin LCD
Mikroprosesor
51
Liquid Crystal Display(LCD)
• Fungsi Register Kontrol LCD
• Display Data RAM (DDRAM), menyimpan
data display dalam bentuk kode karakter 8
bit
Mikroprosesor
52
Liquid Crystal Display(LCD)
• Character
Generator ROM
(CGROM),
menyimpan data
pola karakter,
bersesuaian
dengan tabel
ASCII
Mikroprosesor
53
Liquid Crystal Display(LCD)
• Interface 8 bit, semua pin LCD digunakan
(RS, R/W, E, D0-D7),sehingga butuh lebih
dari satu port mikrokontroler untuk
mengatur LCD,karena ada sekurangnya
11 pin yg harus dikendalikan
• Interface 4 bit, hanya diperlukan satu port
mikrokontroler, karena pin LCD yg
digunakan hanya 7 pin (RS, R/W, E, D4D7)
Mikroprosesor
54
Liquid Crystal Display(LCD)
• Tahapan penulisan pada LCD
– Atur agar RS menjadi “high” jika kita akan
menuliskan data(karakter), “low” jika kita akan
menuliskan instruksi
– Atur agar R/W’ “low”
– Kirimkan data melalui D0-D7
– Tunggu/tahan data (minimal 140nS)
– Atur agar E “high” (minimal 450 nS)
– Atur agar E “low
Mikroprosesor
55
CodeVision AVR
• Dengan CodeVision AVR kita tidak perlu
memikirkan tahapan seperti tersebut di
atas untuk menggunakan LCD, karena
telah terdapat Library untuk LCD
• Kita bahkan tidak perlu tahu kode karakter
pada tabel CGROM untuk menulis suatu
karakter
• Terdapat fasilitas Codewizard yg dapat
membantu kita dalam penggunaan LCD
Mikroprosesor
56
CodeVision AVR
• Contoh LCD terhubung ke
PORT.A
• Generate ,save, exit
Mikroprosesor
57
CodeVision AVR
• Secara otomatis akan muncul
Mikroprosesor
58
CodeVision AVR
• Perintah-perintah LCD pada CodeVision
– void _lcd_ready(void)
– void _lcd_write_data(unsigned char data)
– void lcd_write_byte(unsigned char addr,
unsigned char data);
– unsigned char lcd_read_byte(unsigned char
addr);
– unsigned char lcd_init(unsigned char
lcd_columns)
– void lcd_clear(void)
– void lcd_gotoxy(unsigned char x,unsigned char
y)
– void lcd_putchar(char c)
– void lcd_puts(char *str)
– void lcd_putsf(char flash *str)
Mikroprosesor
59
CodeVision AVR
• Perintah yg sering digunakan
– unsigned char lcd_init(unsigned char
lcd_columns)
Contoh :
lcd_init(16);
Inisialisasi LCD 16x2, penghapusan tampilan LCD, kursor
diposisikan di kolom 0 baris 0
– void lcd_clear(void)
Contoh :
lcd_clear();
Penghapusan tampilan LCD, kursor diposisikan di kolom 0 baris 0
Mikroprosesor
60
CodeVision AVR
• Perintah yg sering digunakan
– void lcd_gotoxy(unsigned char x, unsigned char
y)
Contoh :
lcd_gotoxy(1,1);
Memposisikan kursor pada kolom 1 baris 1
– void lcd_putchar(char c)
Contoh :
lcd_putchar(0x41);
Menampilkan karakter sesuai dengan code karakter yg dikirimkan,
yaitu A (sesuai tabel kode karakter)
Mikroprosesor
61
Type Conversion
• Pada CodeVision terdapat operasi yg
disebut konversi pola
• Bukan bagian dari fungsi LCD namun
sangat membantu dalam mengatur
tampilan pada LCD
• Digunakan bersama dengan sprintf
atau printf
• Merupakan bagian dari fungsi standard
input output yaitu stdio.h
• %[width][l]type_char
Mikroprosesor
62
Type Conversion
• %d mengubah ke bentuk bilangan bulat
positif
• %x mengubah ke bentuk hexadesimal
• %u mengubah ke bentuk bilangan desimal
tanpa tanda
• %f mengubah ke bentuk bilangan floating
point
• %i mengubah ke bentuk bilangan integer
• %c mengubah ke bentuk ASCII
Mikroprosesor
63
Type Conversion
• Contoh
– sprintf(kata1,"%3d",Data);
Menyimpan hasil konversi variabel Data ke
bentuk bil. Bulat positif 3 digit ke dalam
variabel/array kata1
– sprintf(kata2,"%.3f",Data2);
Menyimpan hasil konversi variabel Data2 ke
bentuk bil. Floating dengan ketelitian 3 angka
di belakang koma ke dalam variabel/array
kata2
Mikroprosesor
64
Catatan
• Perhatikan bahwa hal yg berkaitan dengan
type data sangat penting khususnya
dalam operasi matematika
• Kesalahan dalam pemilihan type data
dapat menyebabkan hasil operasi yg tidak
valid
Mikroprosesor
65
Catatan
• Contoh
unsigned char a=30;
unsigned char b=128;
unsigned int c;
c=a*b;
//menyebabkan hasil yg salah
c=(unsigned int) a*b;
Mikroprosesor
//hasil yg benar
66
Catatan
• Contoh
unsigned char a=30;
unsigned char b=128;
unsigned char c;
float d;
c=b/a;
d=b/a
d=(float)b/a;
//hasilnya adalah c=4
//hasilnya adalah d=4
//hasilnya adalah d=4,2667
Mikroprosesor
67
Array
• Merupakan salah satu bentuk structure,
yaitu suatu variabel yg terdiri dari sejumlah
variabel denga tipe data yg sama
• Bisa kita gunakan untuk membantu
pengaturan tampilan LCD seperti halnya
type conversion
• Contoh:
– unsigned char kata1[16];
– unsigned char kata2[16];
Mikroprosesor
68
Array
• Array seolah-olah kita gunakan sebagai
pemesanan tempat pada LCD
• Panjang array harus sesuai dengan lebar
tulisan/data yg ingin kita tampilkan
• Dengan cara ini kita dapat mengatu
tampilan agar satu baris dapat digunakan
untuk menampilkan lebih dari satu data
• 16 karakter/ruang pada LCD kita bagi
menjadi sejumlah array yg masing-masing
digunakan oleh data yg berbeda
Mikroprosesor
69
Array
• Penggunaan secara bersamaan dengan
didahului sprintf, dan diikuti dengan
lcd_gotoxy(baris x,kolom
y)dilanjutkan dengan lcd_puts(array)
• Untuk lebih jelasnya ada di contoh
program LCD1.pdf
Mikroprosesor
70
Contoh Program
• Koneksi pada contoh adalah
Mikroprosesor
71
Contoh Program
• Program akan menghasilkan tampilan sbb:
Mikroprosesor
72
Contoh Program
• Keypad & LCD
Mikroprosesor
73
Contoh Program
• Program selengkapnya ada di K2LCD.pdf
• Program tersebut akan menampilkan
penekanan keypad pada LCD
• Digunakan tampilan hexadesimal pada
penekanan keypad agar dengan mudah
kita dapat menampilkan huruf A,B,C,D,E
dan F sebagai pengganti tombol
COR,MEN,up,down,CAN dan ENT
Mikroprosesor
74
Referensi
•
•
•
•
•
Ken Stiffler, 1996, Design with Microprocessor
for Mechanical Engineers, McGraw Hill
Jan Axelson, The Microcontroller Idea Book
CodeVisionAVR User manual
M. Ary Heryanto, Ir. Wisnu Adi P,
Pemrograman Bahasa C untuk Mikrokontroler
ATmega 8535, Penerbit Andi
ATMEL, 2003, AVR Technical documentation
Series, Atmel
Mikroprosesor
75
Mikroprosesor
1
BASIC I/O
• Ingat kembali
Mikroprosesor
2
Sistem PORT AVR
• AVR ATmega8535 memiliki 4 buah Port 8
bit, PORTA,PORTB,PORTC,PORTD
• Untuk mengatur suatu PORT sebagai
basic digital I/O pengguna harus
mengatur&mengakses Register yg terkait
dengan PORT tersebut yang terletak pada
daerah 64 byte I/O register
• Sebagai suatu General Purpose I/O suatu
PORT memiliki 3 buah Register
Mikroprosesor
3
Sistem PORT AVR
• Data Register PORTxn, digunakan untuk
menuliskan data ouput pada PORT
• Data Direction Register DDRxn,
digunakan untuk mengatur pin PORT
sebagai Input atau Output
• Input Pin Address PINxn,digunakan untuk
membaca data input dari suatu PORT
• Karena ada 4 PORT maka ada 12
Register yg digunakan untuk mengatur
GPIO pada AVR
Mikroprosesor
4
Sistem PORT AVR
Mikroprosesor
5
CodeVision AVR
• Setting I/O dengan codewizard
memungkinkan kita untuk memilih mode
I/O yg kita inginkan
• Dapat juga diatur nilai awal masingmasing pin I/O
Mikroprosesor
6
CodeVision AVR
• Contoh Setting I/O dengan codewizard
Mikroprosesor
7
CodeVision AVR
• Pengaturan yg kita lakukan akan menghasilkan
• Port B difungsikan sebagai input (DDRB = 0x00)
dengan 8 bit pull-up resistor diaktifkan
(PORTB=0xFF). Port C difungsikan sebagai
output (DDRC=0xFF) dengan nilai awalan pada
tiap bit 0 (low), PORTC=0x00.
Mikroprosesor
8
Pull Up & Pull Down?
• Pull Up resistor: resistor yg dipergunakan
untuk “menarik” ke logika 1(high/Vcc)
• Pull Down resistor: resistor yg
dipergunakan untuk “menarik” ke logika
0(low/Gnd)
• Pengaruh ketiadaan pull up/pull down:
tanpa adanya pull up atau pull down maka
suatu titik/pin akan “float” mengambang
(tidak bisa dipastikan apakah 1 atau 0)
Mikroprosesor
9
Pull Up & Pull Down?
• Pull Up
• Pull Down
Mikroprosesor
10
Pull Up internal AVR
• Mengurangi komponen yg dibutuhkan
Mikroprosesor
11
Catatan
• Terdapat fasilitas komunikasi serial pada
PORTD, yaitu PD.0 dan PD.1, jika
difungsikan sebagai Tx dan Rx maka
jangan digunakan sebagai GPIO(General
Purpose I/O)
• ADC 8 channel terdapat pada PORTA,
perhatikan ketika menyusun aplikasi yg
menggunakan ADC
Mikroprosesor
12
Catatan
• DT AVR LC Micro System
Mikroprosesor
13
Catatan
• Pada Modul DT AVR LC Micro System
terdapat jumper untuk setting PD.0 dan
PD.1
• Pada Modul DT AVR LC Micro System
terdapat jumper untuk setting referensi
ADC
Mikroprosesor
14
Catatan
• Untuk setiap PORT baik pada M68HC11
atau AVR 8535, pastikan bahwa sebelum
masuk pada aplikasi yg ada susun, kondisi
inisial masing PORT sudah sesuai.
• Terdapat PORT yg kondisi inisialnya
(sesudah reset) sudah pasti.
• Terdapat PORT yg kondisi inisialnya
(sesudah reset) belum pasti
• Atur sedemikian rupa agar kondisi inisial
adalah sesuatu yg pasti(anda ketahui)
Mikroprosesor
15
Switch, LED, Keypad&Display
Nuryono S.W.,S.T.,M.Eng.
Mikroprosesor
16
Switch Interface
• Switch adalah input yg paling sederhana
dan paling sering bagi mikrokontroler
• Terdapat berbagai macam switch yg harus
dipilih agar sesuai dengan aplikasi yg
akan dibuat
• Pole : jumlah koneksi yg bisa diubah
dengan satu tindakan pada switch
• Throw :jumlah kontak pada tiap pole
• SPST : Single Pole Single Throw
Mikroprosesor
17
Switch Interface
• Contoh switch yg sering digunakan
Mikroprosesor
18
Switch Interface
• Momentary contact
– Push Button switch
– Micro switch
• Semi permanent (non momentary)
– Toggle
– Rotary switch
– DIP switch (slide switch)/8 pole on off
– Push On Push Off
– Key Switch
Mikroprosesor
19
Switch Interface
Mikroprosesor
20
Switch Interface
• Switch untuk kegunaan khusus (deteksi
gerak/posisi)
Mikroprosesor
21
Switch Interface
• Simple Interface
– Switch interface dengan
pull up resitor
– Jika switch tidak ditekan
maka akan diperoleh
logika “1”
– Jika switch ditekan maka
akan diperoleh logika “0”
– Untuk membalik logika
penekanan, tukarkan
posisi switch dan resistor
Mikroprosesor
22
Switch Interface
• Simple Interface
Mikroprosesor
23
Switch Interface
• Simple Interface rotary switch
Mikroprosesor
24
Switch Debounce
• Bounce : ketika switch ditekan(berpindah
posisi), dari on-off atau off-on, terjadi
“bounce”(pantulan), yaitu adanya posisi yg
“memantul” antara on dan off, sehingga
seolah-olah terjadi penekanan switch
berulang-ulang(transisi on-off atau off-on
berulang)
• Debounce: upaya untuk menanggulangi
peristiwa bounce,agar hanya terjadi satu
transisi saja
Mikroprosesor
25
Switch Debounce
• Switch Bounce
Mikroprosesor
26
Switch Debounce
• Debounce
– Secara hardware, dengan memaksa sinyal logika
menjadi berbentuk “kotak”
• Capacitor dan resistor
• Capacitor dan resistor serta Schmidt triger
• Debouncing Latch (flip-flop)
– Secara software, dengan menyisipkan delay agar
periode pembacaan lebih lama dari periode bouncing
atau menunggu sampai tombol benar-benar stabil.
Secara umum prosedur switch debounce dengan
software adalah dengan mengecek kondisi suatu
switch, beri delay(orde ms), kemudian cek kembali
kondisi switch, jika kondisinya sama berarti switch
sdh dlm kondisi stabil, dan pembacaannya sudah
valid.
Mikroprosesor
27
Switch Interface
• Switch dengan Debounce Capacitor
Mikroprosesor
28
Switch Interface
• Switch dengan rangkaian debounce
schmitt-triger
Mikroprosesor
29
Switch Interface
• Mendeteksi penekanan switch
– Polling : Program mengecek secara periodis
kondisi switch apakah ditekan atau tidak.
Program selalu mengulang potongan program
yg digunakan untuk polling switch
– Interupt : Program tidak mengecek kondisi
switch secara periodis, namun switch
digunakan sebagi sumber interupt eksternal.
Selama tidak ada perubahan kondisi switch
yg mengakibatkan interupsi, program
mengerjakan hal yg lain
Mikroprosesor
30
Switch Interface
• Multiple Switch dengan ADC
Mikroprosesor
31
LED
• LED adalah ouput yg paling sederhana,
namun dapat sangat membantu,
khususnya pada tahap development
aplikasi, karena dapat digunakan sebagai
indikator status
Mikroprosesor
32
LED
• Dual color LED
Mikroprosesor
33
LED
• Dual Color Led
Mikroprosesor
34
Keypad
• Keypad
– Pada dasarnya
adalah sejumlah
switch yg disusun
secara matriks
– Terdiri dari baris dan
kolom
– Penekanan suatu
tombol
menyebabkan
koneksi antara
baris&kolom pada
tombol tsb
Mikroprosesor
35
Keypad
• Deteksi keypad
– Scanning Baris : deteksi tombol yg ditekan dilakukan mulai dari
baris pertama, dicek apakah pada baris tsb ada tombol yg
ditekan, jika ya, kolom yg mana pada baris tersebut yg ditekan,
jika tidak ada yg ditekan lanjut ke baris berikutnya, dan
seterusnya
– Scanning Kolom:deteksi tombol yg ditekan dilakukan mulai dari
kolom pertama, dicek apakah pada kolom tsb ada tombol yg
ditekan, jika ya, baris yg mana pada kolom tersebut yg ditekan,
jika tidak ada yg ditekan lanjut ke kolom berikutnya, dan
seterusnya
– Scanning baris~baris sebagai output(row mask), kolom sebagai
input
– Scanning kolom~kolom sebagai output(column mask), baris
sebagai input
– Tidak tampak perbedaan apapun bagi pengguna keypad, karena
scanning dilakukan dengan sangat cepat
Mikroprosesor
36
Keypad Matrix 4x4
• Susun koneksi seperti pd
gambar
• Aturlah agar PD.0-PD.3
sebagai input dengan
internal pull up aktif
• Aturlah agar PD.4-PD.7
sebagai output
• Masking scanning kolom
diberikan melalui PD.4PD.7
• Baris yg aktif dibaca
melalui PD.0 – PD.3
Mikroprosesor
37
Keypad Matrix 4x4
• Step 1
• Set kondisi Port D =
11101111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.4= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol 1
ditekan
• Jika PD.1 = 0 maka Tombol 4
ditekan
• Jika PD.2 = 0 maka Tombol 7
ditekan
• Jika PD.3 = 0 maka Tombol CAN
ditekan
Mikroprosesor
38
Keypad Matrix 4x4
• Step 2
• Set kondisi Port D =
11011111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.5= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol 2
ditekan
• Jika PD.1 = 0 maka Tombol 5
ditekan
• Jika PD.2 = 0 maka Tombol 8
ditekan
• Jika PD.3 = 0 maka Tombol 0
ditekan
Mikroprosesor
39
Keypad Matrix 4x4
• Step 3
• Set kondisi Port D =
10111111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.6= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol 3
ditekan
• Jika PD.1 = 0 maka Tombol 6
ditekan
• Jika PD.2 = 0 maka Tombol 9
ditekan
• Jika PD.3 = 0 maka Tombol
ENT ditekan
Mikroprosesor
40
Keypad Matrix 4x4
• Step 4
• Set kondisi Port D =
01111111(ingat PD.0 – PD.3
sebagai input dengan internal
Pull up aktif, PD.4 – PD.7
sebagai ouput dengan kondisi
PD.7= 0)
• Baca kondisi Port D :
• Jika PD.0 = 0 maka Tombol
COR ditekan
• Jika PD.1 = 0 maka Tombol
MEN ditekan
• Jika PD.2 = 0 maka Tombol
Up ditekan
• Jika PD.3 = 0 maka Tombol
Down ditekan
Mikroprosesor
41
Keypad - LED
• Contoh aplikasi
– Keypad dihubungkan dengan PORT.D
– 8 buah Led dihubungkan dengan PORT.B
– Penekanan tombol keypad, akan ditampilkan
sebagai kode biner pada LED
Mikroprosesor
42
Keypad - LED
• Atur pada codewizard
Mikroprosesor
43
Keypad - LED
• Akan diperoleh
Mikroprosesor
44
Keypad - LED
• Definisikan Global variable untuk
menyimpan data penekanan
• Program selengkapnya ada di key2led.pdf
Mikroprosesor
45
Seven Segment
• Seven Segment
Mikroprosesor
46
Seven Segment
• Seven segment
Mikroprosesor
47
Seven Segment
• Digit Multiplexing
Mikroprosesor
48
Seven Segment
• Digit Multiplexing
Mikroprosesor
49
Liquid Crystal Display(LCD)
Mikroprosesor
50
Liquid Crystal Display(LCD)
• Pin LCD
Mikroprosesor
51
Liquid Crystal Display(LCD)
• Fungsi Register Kontrol LCD
• Display Data RAM (DDRAM), menyimpan
data display dalam bentuk kode karakter 8
bit
Mikroprosesor
52
Liquid Crystal Display(LCD)
• Character
Generator ROM
(CGROM),
menyimpan data
pola karakter,
bersesuaian
dengan tabel
ASCII
Mikroprosesor
53
Liquid Crystal Display(LCD)
• Interface 8 bit, semua pin LCD digunakan
(RS, R/W, E, D0-D7),sehingga butuh lebih
dari satu port mikrokontroler untuk
mengatur LCD,karena ada sekurangnya
11 pin yg harus dikendalikan
• Interface 4 bit, hanya diperlukan satu port
mikrokontroler, karena pin LCD yg
digunakan hanya 7 pin (RS, R/W, E, D4D7)
Mikroprosesor
54
Liquid Crystal Display(LCD)
• Tahapan penulisan pada LCD
– Atur agar RS menjadi “high” jika kita akan
menuliskan data(karakter), “low” jika kita akan
menuliskan instruksi
– Atur agar R/W’ “low”
– Kirimkan data melalui D0-D7
– Tunggu/tahan data (minimal 140nS)
– Atur agar E “high” (minimal 450 nS)
– Atur agar E “low
Mikroprosesor
55
CodeVision AVR
• Dengan CodeVision AVR kita tidak perlu
memikirkan tahapan seperti tersebut di
atas untuk menggunakan LCD, karena
telah terdapat Library untuk LCD
• Kita bahkan tidak perlu tahu kode karakter
pada tabel CGROM untuk menulis suatu
karakter
• Terdapat fasilitas Codewizard yg dapat
membantu kita dalam penggunaan LCD
Mikroprosesor
56
CodeVision AVR
• Contoh LCD terhubung ke
PORT.A
• Generate ,save, exit
Mikroprosesor
57
CodeVision AVR
• Secara otomatis akan muncul
Mikroprosesor
58
CodeVision AVR
• Perintah-perintah LCD pada CodeVision
– void _lcd_ready(void)
– void _lcd_write_data(unsigned char data)
– void lcd_write_byte(unsigned char addr,
unsigned char data);
– unsigned char lcd_read_byte(unsigned char
addr);
– unsigned char lcd_init(unsigned char
lcd_columns)
– void lcd_clear(void)
– void lcd_gotoxy(unsigned char x,unsigned char
y)
– void lcd_putchar(char c)
– void lcd_puts(char *str)
– void lcd_putsf(char flash *str)
Mikroprosesor
59
CodeVision AVR
• Perintah yg sering digunakan
– unsigned char lcd_init(unsigned char
lcd_columns)
Contoh :
lcd_init(16);
Inisialisasi LCD 16x2, penghapusan tampilan LCD, kursor
diposisikan di kolom 0 baris 0
– void lcd_clear(void)
Contoh :
lcd_clear();
Penghapusan tampilan LCD, kursor diposisikan di kolom 0 baris 0
Mikroprosesor
60
CodeVision AVR
• Perintah yg sering digunakan
– void lcd_gotoxy(unsigned char x, unsigned char
y)
Contoh :
lcd_gotoxy(1,1);
Memposisikan kursor pada kolom 1 baris 1
– void lcd_putchar(char c)
Contoh :
lcd_putchar(0x41);
Menampilkan karakter sesuai dengan code karakter yg dikirimkan,
yaitu A (sesuai tabel kode karakter)
Mikroprosesor
61
Type Conversion
• Pada CodeVision terdapat operasi yg
disebut konversi pola
• Bukan bagian dari fungsi LCD namun
sangat membantu dalam mengatur
tampilan pada LCD
• Digunakan bersama dengan sprintf
atau printf
• Merupakan bagian dari fungsi standard
input output yaitu stdio.h
• %[width][l]type_char
Mikroprosesor
62
Type Conversion
• %d mengubah ke bentuk bilangan bulat
positif
• %x mengubah ke bentuk hexadesimal
• %u mengubah ke bentuk bilangan desimal
tanpa tanda
• %f mengubah ke bentuk bilangan floating
point
• %i mengubah ke bentuk bilangan integer
• %c mengubah ke bentuk ASCII
Mikroprosesor
63
Type Conversion
• Contoh
– sprintf(kata1,"%3d",Data);
Menyimpan hasil konversi variabel Data ke
bentuk bil. Bulat positif 3 digit ke dalam
variabel/array kata1
– sprintf(kata2,"%.3f",Data2);
Menyimpan hasil konversi variabel Data2 ke
bentuk bil. Floating dengan ketelitian 3 angka
di belakang koma ke dalam variabel/array
kata2
Mikroprosesor
64
Catatan
• Perhatikan bahwa hal yg berkaitan dengan
type data sangat penting khususnya
dalam operasi matematika
• Kesalahan dalam pemilihan type data
dapat menyebabkan hasil operasi yg tidak
valid
Mikroprosesor
65
Catatan
• Contoh
unsigned char a=30;
unsigned char b=128;
unsigned int c;
c=a*b;
//menyebabkan hasil yg salah
c=(unsigned int) a*b;
Mikroprosesor
//hasil yg benar
66
Catatan
• Contoh
unsigned char a=30;
unsigned char b=128;
unsigned char c;
float d;
c=b/a;
d=b/a
d=(float)b/a;
//hasilnya adalah c=4
//hasilnya adalah d=4
//hasilnya adalah d=4,2667
Mikroprosesor
67
Array
• Merupakan salah satu bentuk structure,
yaitu suatu variabel yg terdiri dari sejumlah
variabel denga tipe data yg sama
• Bisa kita gunakan untuk membantu
pengaturan tampilan LCD seperti halnya
type conversion
• Contoh:
– unsigned char kata1[16];
– unsigned char kata2[16];
Mikroprosesor
68
Array
• Array seolah-olah kita gunakan sebagai
pemesanan tempat pada LCD
• Panjang array harus sesuai dengan lebar
tulisan/data yg ingin kita tampilkan
• Dengan cara ini kita dapat mengatu
tampilan agar satu baris dapat digunakan
untuk menampilkan lebih dari satu data
• 16 karakter/ruang pada LCD kita bagi
menjadi sejumlah array yg masing-masing
digunakan oleh data yg berbeda
Mikroprosesor
69
Array
• Penggunaan secara bersamaan dengan
didahului sprintf, dan diikuti dengan
lcd_gotoxy(baris x,kolom
y)dilanjutkan dengan lcd_puts(array)
• Untuk lebih jelasnya ada di contoh
program LCD1.pdf
Mikroprosesor
70
Contoh Program
• Koneksi pada contoh adalah
Mikroprosesor
71
Contoh Program
• Program akan menghasilkan tampilan sbb:
Mikroprosesor
72
Contoh Program
• Keypad & LCD
Mikroprosesor
73
Contoh Program
• Program selengkapnya ada di K2LCD.pdf
• Program tersebut akan menampilkan
penekanan keypad pada LCD
• Digunakan tampilan hexadesimal pada
penekanan keypad agar dengan mudah
kita dapat menampilkan huruf A,B,C,D,E
dan F sebagai pengganti tombol
COR,MEN,up,down,CAN dan ENT
Mikroprosesor
74
Referensi
•
•
•
•
•
Ken Stiffler, 1996, Design with Microprocessor
for Mechanical Engineers, McGraw Hill
Jan Axelson, The Microcontroller Idea Book
CodeVisionAVR User manual
M. Ary Heryanto, Ir. Wisnu Adi P,
Pemrograman Bahasa C untuk Mikrokontroler
ATmega 8535, Penerbit Andi
ATMEL, 2003, AVR Technical documentation
Series, Atmel
Mikroprosesor
75