Mikroprosesor 1
KONFIGURASI AVR 8535
Mikroprosesor 2
BASIC I/O• Ingat kembali
Mikroprosesor 3
Sistem PORT AVR
• AVR ATmega8535 memiliki 4 buah Port 8 bit, PORTA,PORTB,PORTC,PORTD
• Untuk mengatur suatu PORT sebagaibasic digital I/O pengguna harusmengatur&mengakses Register yg terkaitdengan PORT tersebut yang terletak padadaerah 64 byte I/O register
• Sebagai suatu General Purpose I/O suatuPORT memiliki 3 buah Register
Mikroprosesor 4
Sistem PORT AVR
• Data Register PORTxn, digunakan untukmenuliskan data ouput pada PORT
• Data Direction Register DDRxn, digunakan untuk mengatur pin PORT sebagai Input atau Output
• Input Pin Address PINxn,digunakan untukmembaca data input dari suatu PORT
• Karena ada 4 PORT maka ada 12 Register yg digunakan untuk mengaturGPIO pada AVR
Mikroprosesor 5
Sistem PORT AVR
Mikroprosesor 6
CodeVision AVR
• Setting I/O dengan codewizardmemungkinkan kita untuk memilih mode I/O yg kita inginkan
• Dapat juga diatur nilai awal masing-masing pin I/O
Mikroprosesor 7
CodeVision AVR
• Contoh Setting I/O dengan codewizard
Mikroprosesor 8
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 sebagaioutput (DDRC=0xFF) dengan nilai awalan padatiap bit 0 (low), PORTC=0x00.
Mikroprosesor 9
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 logika0(low/Gnd)
• Pengaruh ketiadaan pull up/pull down: tanpa adanya pull up atau pull down makasuatu titik/pin akan “float” mengambang(tidak bisa dipastikan apakah 1 atau 0)
Mikroprosesor 10
Pull Up & Pull Down?• Pull Up
• Pull Down
Mikroprosesor 11
Pull Up internal AVR
• Mengurangi komponen yg dibutuhkan
Mikroprosesor 12
Catatan
• Terdapat fasilitas komunikasi serial padaPORTD, yaitu PD.0 dan PD.1, jikadifungsikan sebagai Tx dan Rx makajangan digunakan sebagai GPIO(GeneralPurpose I/O)
• ADC 8 channel terdapat pada PORTA, perhatikan ketika menyusun aplikasi ygmenggunakan ADC
Mikroprosesor 13
Catatan
• DT AVR LC Micro System
Mikroprosesor 14
Catatan
• Pada Modul DT AVR LC Micro System terdapat jumper untuk setting PD.0 danPD.1
• Pada Modul DT AVR LC Micro System terdapat jumper untuk setting referensiADC
Mikroprosesor 15
Catatan
• Untuk setiap PORT baik pada M68HC11 atau AVR 8535, pastikan bahwa sebelummasuk pada aplikasi yg ada susun, kondisiinisial 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 inisialadalah sesuatu yg pasti(anda ketahui)
Mikroprosesor 16
Switch, LED, Keypad&Display
Nuryono S.W.,S.T.,M.Eng.
Mikroprosesor 17
Switch Interface• Switch adalah input yg paling sederhana
dan paling sering bagi mikrokontroler• Terdapat berbagai macam switch yg harus
dipilih agar sesuai dengan aplikasi ygakan dibuat
• Pole : jumlah koneksi yg bisa diubahdengan satu tindakan pada switch
• Throw :jumlah kontak pada tiap pole• SPST : Single Pole Single Throw
Mikroprosesor 18
Switch Interface• Contoh switch yg sering digunakan
Mikroprosesor 19
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 20
Switch Interface
Mikroprosesor 21
Switch Interface
• Switch untuk kegunaan khusus (deteksigerak/posisi)
Mikroprosesor 22
Switch Interface
• Simple Interface– Switch interface dengan
pull up resitor– Jika switch tidak ditekan
maka akan diperolehlogika “1”
– Jika switch ditekan makaakan diperoleh logika “0”
– Untuk membalik logikapenekanan, tukarkanposisi switch dan resistor
Mikroprosesor 23
Switch Interface
• Simple Interface
Mikroprosesor 24
Switch Interface
• Simple Interface rotary switch
Mikroprosesor 25
Switch Debounce
• Bounce : ketika switch ditekan(berpindahposisi), dari on-off atau off-on, terjadi“bounce”(pantulan), yaitu adanya posisi yg“memantul” antara on dan off, sehinggaseolah-olah terjadi penekanan switch berulang-ulang(transisi on-off atau off-on berulang)
• Debounce: upaya untuk menanggulangiperistiwa bounce,agar hanya terjadi satutransisi saja
Mikroprosesor 26
Switch Debounce
• Switch Bounce
Mikroprosesor 27
Switch Debounce• Debounce
– Secara hardware, dengan memaksa sinyal logikamenjadi 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 dengansoftware adalah dengan mengecek kondisi suatuswitch, beri delay(orde ms), kemudian cek kembalikondisi switch, jika kondisinya sama berarti switch sdh dlm kondisi stabil, dan pembacaannya sudahvalid.
Mikroprosesor 28
Switch Interface
• Switch dengan Debounce Capacitor
Mikroprosesor 29
Switch Interface
• Switch dengan rangkaian debounceschmitt-triger
Mikroprosesor 30
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 kondisiswitch secara periodis, namun switch digunakan sebagi sumber interupt eksternal. Selama tidak ada perubahan kondisi switch yg mengakibatkan interupsi, program mengerjakan hal yg lain
Mikroprosesor 31
Switch Interface• Multiple Switch dengan ADC
Mikroprosesor 32
LED
• LED adalah ouput yg paling sederhana, namun dapat sangat membantu, khususnya pada tahap development aplikasi, karena dapat digunakan sebagaiindikator status
Mikroprosesor 33
LED
• Dual color LED
Mikroprosesor 34
LED
• Dual Color Led
Mikroprosesor 35
Keypad• Keypad
– Pada dasarnyaadalah sejumlahswitch yg disusunsecara matriks
– Terdiri dari baris dankolom
– Penekanan suatutombolmenyebabkankoneksi antarabaris&kolom padatombol tsb
Mikroprosesor 36
Keypad• Deteksi keypad
– Scanning Baris : deteksi tombol yg ditekan dilakukan mulai daribaris pertama, dicek apakah pada baris tsb ada tombol ygditekan, jika ya, kolom yg mana pada baris tersebut yg ditekan, jika tidak ada yg ditekan lanjut ke baris berikutnya, danseterusnya
– Scanning Kolom:deteksi tombol yg ditekan dilakukan mulai darikolom pertama, dicek apakah pada kolom tsb ada tombol ygditekan, jika ya, baris yg mana pada kolom tersebut yg ditekan, jika tidak ada yg ditekan lanjut ke kolom berikutnya, danseterusnya
– Scanning baris~baris sebagai output(row mask), kolom sebagaiinput
– Scanning kolom~kolom sebagai output(column mask), barissebagai input
– Tidak tampak perbedaan apapun bagi pengguna keypad, karenascanning dilakukan dengan sangat cepat
Mikroprosesor 37
Keypad Matrix 4x4• Susun koneksi seperti pd
gambar• Aturlah agar PD.0-PD.3
sebagai input denganinternal pull up aktif
• Aturlah agar PD.4-PD.7 sebagai output
• Masking scanning kolomdiberikan melalui PD.4-PD.7
• Baris yg aktif dibacamelalui PD.0 – PD.3
Mikroprosesor 38
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 kondisiPD.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 39
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 kondisiPD.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 40
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 kondisiPD.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 41
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 kondisiPD.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 42
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 43
Keypad - LED• Atur pada codewizard
Mikroprosesor 44
Keypad - LED
• Akan diperoleh
Mikroprosesor 45
Keypad - LED
• Definisikan Global variable untukmenyimpan data penekanan
• Program selengkapnya ada di key2led.pdf
Mikroprosesor 46
Seven Segment• Seven Segment
Mikroprosesor 47
Seven Segment• Seven segment
Mikroprosesor 48
Seven Segment• Digit Multiplexing
Mikroprosesor 49
Seven Segment• Digit Multiplexing
Mikroprosesor 50
Liquid Crystal Display(LCD)
Mikroprosesor 51
Liquid Crystal Display(LCD)
• Pin LCD
Mikroprosesor 52
Liquid Crystal Display(LCD)
• Fungsi Register Kontrol LCD
• Display Data RAM (DDRAM), menyimpandata display dalam bentuk kode karakter 8 bit
Mikroprosesor 53
Liquid Crystal Display(LCD)
• Character Generator ROM (CGROM), menyimpan data pola karakter, bersesuaiandengan tabelASCII
Mikroprosesor 54
Liquid Crystal Display(LCD)
• Interface 8 bit, semua pin LCD digunakan(RS, R/W, E, D0-D7),sehingga butuh lebihdari satu port mikrokontroler untukmengatur LCD,karena ada sekurangnya11 pin yg harus dikendalikan
• Interface 4 bit, hanya diperlukan satu port mikrokontroler, karena pin LCD ygdigunakan hanya 7 pin (RS, R/W, E, D4-D7)
Mikroprosesor 55
Liquid Crystal Display(LCD)
• Tahapan penulisan pada LCD– Atur agar RS menjadi “high” jika kita akan
menuliskan data(karakter), “low” jika kita akanmenuliskan 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 56
CodeVision AVR
• Dengan CodeVision AVR kita tidak perlumemikirkan tahapan seperti tersebut diatas untuk menggunakan LCD, karenatelah terdapat Library untuk LCD
• Kita bahkan tidak perlu tahu kode karakterpada tabel CGROM untuk menulis suatukarakter
• Terdapat fasilitas Codewizard yg dapatmembantu kita dalam penggunaan LCD
Mikroprosesor 57
CodeVision AVR
• Contoh LCD terhubung kePORT.A
• Generate ,save, exit
Mikroprosesor 58
CodeVision AVR
• Secara otomatis akan muncul
Mikroprosesor 59
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 60
CodeVision AVR
• Perintah yg sering digunakan– unsigned char lcd_init(unsigned char lcd_columns)
Contoh :
lcd_init(16);
Inisialisasi LCD 16x2, penghapusan tampilan LCD, kursordiposisikan di kolom 0 baris 0
– void lcd_clear(void)
Contoh :
lcd_clear();
Penghapusan tampilan LCD, kursor diposisikan di kolom 0 baris 0
Mikroprosesor 61
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 62
Type Conversion• Pada CodeVision terdapat operasi yg
disebut konversi pola• Bukan bagian dari fungsi LCD namun
sangat membantu dalam mengaturtampilan pada LCD
• Digunakan bersama dengan sprintfatau printf
• Merupakan bagian dari fungsi standard input output yaitu stdio.h
• %[width][l]type_char
Mikroprosesor 63
Type Conversion
• %d mengubah ke bentuk bilangan bulatpositif
• %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 64
Type Conversion• Contoh
– sprintf(kata1,"%3d",Data);
Menyimpan hasil konversi variabel Data kebentuk bil. Bulat positif 3 digit ke dalamvariabel/array kata1
– sprintf(kata2,"%.3f",Data2);
Menyimpan hasil konversi variabel Data2 kebentuk bil. Floating dengan ketelitian 3 angkadi belakang koma ke dalam variabel/array kata2
Mikroprosesor 65
Catatan
• Perhatikan bahwa hal yg berkaitan dengantype data sangat penting khususnyadalam operasi matematika
• Kesalahan dalam pemilihan type data dapat menyebabkan hasil operasi yg tidakvalid
Mikroprosesor 66
Catatan
• Contohunsigned char a=30;
unsigned char b=128;
unsigned int c;
c=a*b; //menyebabkan hasil yg salah
c=(unsigned int) a*b; //hasil yg benar
Mikroprosesor 67
Catatan
• Contohunsigned char a=30;
unsigned char b=128;
unsigned char c;
float d;
c=b/a; //hasilnya adalah c=4
d=b/a //hasilnya adalah d=4
d=(float)b/a; //hasilnya adalah d=4,2667
Mikroprosesor 68
Array
• Merupakan salah satu bentuk structure, yaitu suatu variabel yg terdiri dari sejumlahvariabel denga tipe data yg sama
• Bisa kita gunakan untuk membantupengaturan tampilan LCD seperti halnyatype conversion
• Contoh:– unsigned char kata1[16];
– unsigned char kata2[16];
Mikroprosesor 69
Array
• Array seolah-olah kita gunakan sebagaipemesanan tempat pada LCD
• Panjang array harus sesuai dengan lebartulisan/data yg ingin kita tampilkan
• Dengan cara ini kita dapat mengatutampilan agar satu baris dapat digunakanuntuk menampilkan lebih dari satu data
• 16 karakter/ruang pada LCD kita bagimenjadi sejumlah array yg masing-masingdigunakan oleh data yg berbeda
Mikroprosesor 70
Array
• Penggunaan secara bersamaan dengandidahului sprintf , dan diikuti denganlcd_gotoxy(baris x,kolomy) dilanjutkan dengan lcd_puts(array)
• Untuk lebih jelasnya ada di contohprogram LCD1.pdf
Mikroprosesor 71
Contoh Program
• Koneksi pada contoh adalah
Mikroprosesor 72
Contoh Program
• Program akan menghasilkan tampilan sbb:
Mikroprosesor 73
Contoh Program
• Keypad & LCD
Mikroprosesor 74
Contoh Program
• Program selengkapnya ada di K2LCD.pdf• Program tersebut akan menampilkan
penekanan keypad pada LCD• Digunakan tampilan hexadesimal pada
penekanan keypad agar dengan mudahkita dapat menampilkan huruf A,B,C,D,E dan F sebagai pengganti tombolCOR,MEN,up,down,CAN dan ENT
Mikroprosesor 75
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 MikrokontrolerATmega 8535, Penerbit Andi
• ATMEL, 2003, AVR Technical documentation Series, Atmel