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