mikrokontroler io tombol dan led

12
micro club dte Sistem minimum Mikrokontroler Atmega8535/16/32 Mikrokontroler adalah suatu keping IC dimana terdapat mikroprosesor dan memori program (ROM) serta memori serbaguna (RAM), bahkan ada beberapa jenis mikrokontroler yang memiliki fasilitas ADC, PLL, EEPROM dalam satu kemasan. Penggunaan mikrokontroler dalam bidang kontrol sangat luas dan populer. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut "pengendali kecil" dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini. Secara teknis hanya ada 2 jenis mikrokontroler yaitu RISC dan CISC dan masing-masing mempunyai keturunan/keluarga sendiri- sendiri. RISC kependekan dari Reduced Instruction Set Computer : instruksi terbatas tapi memiliki fasilitas yang lebih banyak. CISC kependekan

Upload: jodit-sulistyo

Post on 22-Nov-2014

9.663 views

Category:

Documents


4 download

DESCRIPTION

micro atmega8535 (copyright kardono)

TRANSCRIPT

Page 1: Mikrokontroler io tombol dan led

micro club dte

Sistem minimum Mikrokontroler Atmega8535/16/32

Mikrokontroler adalah suatu keping IC dimana terdapat mikroprosesor dan memori program

(ROM) serta memori serbaguna (RAM), bahkan ada beberapa jenis mikrokontroler yang memiliki

fasilitas ADC, PLL, EEPROM dalam satu kemasan. Penggunaan mikrokontroler dalam bidang kontrol

sangat luas dan populer. Mikrokontroler merupakan komputer didalam  chip yang digunakan untuk

mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa

disebut "pengendali kecil" dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan

komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya

terpusat serta dikendalikan oleh mikrokontroler ini.

  Secara teknis hanya ada 2 jenis mikrokontroler yaitu RISC dan CISC dan masing-masing

mempunyai keturunan/keluarga  sendiri-sendiri. RISC kependekan dari Reduced Instruction Set

Computer : instruksi terbatas tapi memiliki fasilitas yang lebih banyak. CISC kependekan dari Complex

Instruction Set Computer : instruksi bisa dikatakan lebih lengkap tapi dengan fasilitas secukupnya.

Ada beberapa vendor yang membuat mikrokontroler diantaranya Intel, Microchip, Winbond,

Atmel, Philips, Xemics dan lain - lain. Dari beberapa vendor tersebut, yang paling populer digunakan

adalah mikrokontroler buatan Atmel.

Mikrokontroler AVR (Alf and Vegard’s Risc prosesor) memiliki arsitektur RISC 8 bit, di mana

semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam

1 (satu) siklus clock, berbeda dengan instruksi MCS 51 yang membutuhkan 12 siklus clock. Tentu saja itu

terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang berbeda. AVR berteknologi

Page 2: Mikrokontroler io tombol dan led

micro club dte

RISC (Reduced Instruction Set Computing), sedangkan seri MCS 51 berteknologi CISC (Complex

Instruction Set Computing).

Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga

AT90Sxx, keluarga ATMega dan AT86RFxx. Pada dasarnya yang membedakan masing–masing kelas

adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa

dikatakan hampir sama. Oleh karena itu, dipergunakan salah satu AVR produk Atmel, yaitu

ATMega8535/16/32.

Konfigurasi Pin ATMega8535

Gambar: Pin-pin atmega8535

Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega8535 sebagai

berikut:

1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.

2. GND merupakan pin ground.

3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC.

4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu

Timer/Counter,komparator analog,dan SPI.

5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI,komparator

analog dan Timer Oscillator.

6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu komparator

analog,interupsi eksternal,dan komunikasi serial.

7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.

8. XTAL1 dan XTAL2 merupakan pin masukan clock ekstenal.

9. AVCC merupakan pin masukan tegangan untuk ADC.

10. AREF merupakan pin masukan tegangan referensi ADC.

Untuk memprogram mikrokontroler dapat menggunakan bahasa assembler atau bahasa tingkat tinggi

yaitu bahasa C.

Page 3: Mikrokontroler io tombol dan led

micro club dte

Port Sebagai Input / Output Digital

Atmega 8535 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.

Keempat port tersebut merupakan jalur bi-directional dengan pilihan internal pull-up.

Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’ mewakili

nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address

DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx.

Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1, maka

Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn

diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk

mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port

adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output

maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output

maka pin port akan berlogika 0.

Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high

(DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0,

PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat

diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah

strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register

SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input

dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Maka harus menggunakan

kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi

transisi.

Tabel Konfigurasi Pin Port

Tabel diatas menunjukkan konfigurasi pin pada port-port mikrokontroler. Bit 2 – PUD = Pull-up Disable,

bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan PORTxn

dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).

Page 4: Mikrokontroler io tombol dan led

micro club dte

Codevision AVR

Pemrograman mikrokontroler AVR lebih mudah dilakukan dengan bahasa pemrograman C, salah

satu software pemrograman AVR mikrokontroler adalah Codevision AVR C Compiler. Dengan C AVR

program yang telah di tulis selanjutnya di-compile agar diperoleh bentuk hexadesimal dengan bentuk file

*.hex. bentuk hexa inilah yang akan dapat di download ke mikrokontroller.

Memulai project dengan C AVR

File > New > Pilih Project > OK

Use codeWizardAVR? >NO<

Kemudian simpan project. Dan muncul jendela berikut

Langkah selanjutnya yaitu, membuat file tempat penulisan source code yang ber ektensi .c. yaitu, pilih

File > New > Pilih Source > OK.

Pada colom C compiler, di bagian chip pilih mikrokontroller yang digunakan (Atmega8535) berikut juga crystal nya(12 Mhz). OK

Page 5: Mikrokontroler io tombol dan led

micro club dte

Kemudian, ketikkan dulu satu atau beberapa baris listing program, kemudian simpan [ File > Save ], dengan ekstensi .c.

Langkah selanjutnya adalah meng-include file source code listing program tadi kedalam project yang kita

buat, caranya adalah.. Pilih Project > Configure

Kemudian pilih > “Add” > masukkkan/ open file ber-ekstensi .c yang tadi di save.

Menggunakan Simulator Proteus

Proteus ISIS, dapat digunakan untuk mensimulasikan program yang telah dibikin.

Tampilan awal proteus 7.6

Rangkai seperti gambar berikut. Ambil komponen, untuk mikro pilih AT90S8535 (sama dengan

atmega8535), led pilih yang aktive (warna terserah), resistor MINRES470R, dan tombol dengan button

(pilih yang aktif).

Memanggil komponen

Start/stop simulation

Page 6: Mikrokontroler io tombol dan led

micro club dte

Menyalakan Lampu di PORT C

Pada gambar Sistem minimum Mikrokontroler Atmega8535/16/32 diatas, PORTC dihubungkan denga

8buah led, dimana 8led tersebut terhubung common anoda (anoda bersama), sehingga saat diberikan logika

0 pada port C maka akan mendapatkan led menyala. Hal ini dikarenakan adanya beda potensial pada kaki anoda

dan katoda. Saat kita memberikan logika 1, maka Led akan padam.

Contoh Programnya:

1. Program Menghidupkan LED di PORTC

//Prog1: Menghidupkan LED di PortC

#include<mega8535.h>

void main(void)

{

DDRC=0xff; // inisialisasi PORTC sebagi keluaran

PORTC=0xF0; // keluarkan data F0 di PORT C (cat:F0=11110000)

}

Untuk sumber tegangan, pilih dc

Untuk mengubah value tengan dc, klik kanan edit properties

Properties AT90S8535

Ubah clock frequency sesuai pada compiler CAVR, dan pada Program file masukkan /cari file .hex hasil compile program yang dibuat

Page 7: Mikrokontroler io tombol dan led

micro club dte

2. Program Menghidupkan LED

//Prog2: Menghidupkan LED1,3,5,7

#include<mega8535.h>

void main(void)

{

DDRC=0xff; // inisialisasi PORTC sebagi keluaran

PORTC=0xAA; // keluarkan data AA(hex) ke PORTC cat: AA=10101010

}

3. Program LED Berkedip (memakai delay)

//Prog3: LED berkedip pada Port C

#include<mega8535.h>

#include<delay.h>

void main(void)

{

DDRC=0xff; // inisialisasi PORTC sebagi keluaran

while(1) // perulangan yang tidak pernah terpenuhi

{

PORTC=0x00;

delay_ms(1000);

PORTC=0xff;

delay_ms(1000);

}

}

4. Program LED Berjalan

//prog4: LED berjalan

#include<mega8535.h>

#include<delay.h>

void main(void)

{

char urutan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

char i;

DDRC=0xff;

PORTC=0Xff;

while(1)

{

for(i=0;i<8;i++)

{

Page 8: Mikrokontroler io tombol dan led

micro club dte

PORTC=urutan[i];

delay_ms(500);

}

}

}

Penjelasan :

#include<mega8535.h> : Inisialisasi Mikrokontroller yang dipakai, memanggil library

( mempersiapkan perintah2 yang dapat digunakan saat menggunakan mikrokontroler

Atmega8535).

#include<delay.h> : memanggil library delay, dimana terdapat fungsi2 delay/tunda yang

dapat kita gunakan, seperti delay_ms(“konstanta”) =tunda untuk milisecond,

delay_us(“konstanta”) =tunda untuk microsecond.

DDRn : Menyiapkan PORTn sebagai Keluaran (0xff) atau masukan (0x00)

PORTn : Keluarkan data di PORTn

n : mewakili A,B,C,dan D (PORT)

Karena common Annoda maka pada saat logika “0”, lampu LED akan menyala. Untuk

penggunaan biner, maka penulisannya adalah 0b10101010. Untuk penggunaan Hexa, maka penulisannya

adalah 0xaa.

PENEKANAN TOMBOL

Port-port mikrokontroler dilengkapi pull up internal, sehingga kondisi default-nya adalah high.

Untuk menjadikan Port ini sebagai input, kita tinggal memberikan logika high atau membiarkannya

dalam kondisi default. Jika kita menginginkan sebuah masukan terbaca kita sebaiknya menggunakan

masukan berupa sinyal Low. Prinsip kerja Hardware ,saat kita menekan tombol SW maka signal reendah

akan dikrim ke PORTA pada mikrokontroler, Dengan demikian port ini akan mempunyai logika sesuai

dengan penekanan tombol . Kemudian akan memicu PORTC unruk mengeluarkan data.( Tergantung

Programnya bagaimana)

Contoh Programnya:

1. Penekanan Tombol di PORTA

#include<mega8535.h>

void main(void)

{

DDRA=0x00; // PORTA diinisialisasikan sebagai masukan

DDRC=PORTA=PORTC=0xff;

while(1)

{ PORTC=PINA;

Page 9: Mikrokontroler io tombol dan led

micro club dte

};

}

2. Penekanan Tombol di PORTA 2

#include<mega8535.h>

void main(void)

{

DDRA=0x00; // PORTA diinisialisasikan sebagai masukan

DDRC=PORTA=PORTC=0xff;

while(1)

{

if (PINA.0==0) {PORTC=0x5f;}

else if

(PINA.1==0) {PORTC=0xAf;}

else if

(PINA.2==0) {PORTC=0x9f;}

else if

(PINA.3==0) {PORTC=0x6f;}

else

{PORTC=0x0f};

}

}

Penjelasan:

DDRA=0x00; // PORTA diinisialisasikan sebagai masukan

DDRC=PORTB=PORTC=0xff; : PORTC sebagai keluaran. Data di PORTC dan

PORTB adalah tinggi semua ( 0xff ). Biner: (11111111).

PINB.0 : Kita bisa mengakses langsung ke PIN PORTB nomor 0 ( catatan: PIN

dan PORT berbeda. PIN untuk satu saja kalau PORT untuk keseluruhan PIN. Satu PORT

ada 8 PIN )

While (1) : Dipakai karena agar program mengulang kembali instruksi yang berada di

bawahnya. Ciri perulangan while adalah dia akan terus melakukan perulangan karena

tidaka akan terpenuhi.

Inti penekanan Tombol adalah Membuat sebuah PORT menjadi masukan. Dan aksinya tentunya akan dilakukan di

PORT yang diset sebagai keluaran.

>>>>>>>>>>>>>>>

Tugas, buatlah program led berjalan dengan penekanan tombol, jika PINA.0 ditekan akan berjalan kekanan, jika PINA.1 ditekan akan berjalan kekiri, jika PINA.2 ditekan akan berkedip-kedip, jika tidak di tekan kondisi led mati.

Tugas dirumah, cari artikel dan pelajari mengenai tipe data dan instruksi dalam CAVR