Anda di halaman 1dari 33

S

NAMA

NIM

LABORATORIUM MIKROPROSESOR DAN ANTARMUKA


FAKULTAS TEKNIK
UNIVERSITAS TELKOM
BANDUNG

STRUKTUR ORGANISASI
LABORATORIUM MIKROPROSESOR DAN ANTARMUKA

Dekan Fakultas Elektro dan Komunikasi

: A. Ali Muayyadi, Ir.,MSc., PhD

Ketua Laboratoria Pengolahan Sinyal Informasi

: Koredianto Usman ST., MSc.

Pembina Lab Mikroprosesor dan Antarmuka

: Burhanudin Dirgantoro ST., MSc.

Koordinator Asisten

: Mohammad Fakry Abdul Ghani

Administrasi

: Istiqomah
Nur Shabrina

Bendahara

: Mentari Eka Putri

Divisi Praktikum

: Mohammad Iqbal
Fadhila Cahya W.
M. Fahmi Arsyad
Putri Amanda W.

Divisi Hardware and Software

: Ari Septayuda
Denish Novenda
M. Fikriansyah
Wandi Wijaya

Divisi Riset

: Fadli Pradityo
Fitriani Hamzah
Giwan Gunawan
Rendra Laksmana
Trianto Fadly Hidayatullah
Zahra Babeth

Tim Pendamping

:Royan Bakhtiar R
Ratna A. Nugrahaeni
Vika Fatwa Onistyami
Dwi Ramadhani
Wahyu Wibowo
M. Fikri Abdillah

TATA TERTIB

PRAKTIKUM MIKROKONTROLER
1. Kelengkapan Praktikum
a. Praktikan wajib membawa modul dan kartu praktikum yang telah ditempel foto dan dicap
saat pengumpulan TP pertama pada saat pelaksanaan praktikum.
b. Praktikan wajib menggunakan seragam resmi mahasiswa IT Telkom selama praktikum
berlangsung.
2. Pelaksanaan Praktikum
a. Pelaksanaan praktikum meliputi Tugas Pendahuluan, Tes Awal, Praktikum, Jurnal dan Tes
Akhir.
b. Kedatangan
Praktikan datang 10 menit sebelum praktikum dimulai.
Praktikum dimulai pada waktu yang telah ditentukan.
Praktikan yang terlambat kurang dari 20 menit diijinkan mengikuti praktikum.
Praktikan yang terlambat lebih dari 20 menit tidak diijinkan mengikuti praktikum.
c. Pelaksanaan Praktikum
Apabila tidak membawa kelengkapan praktikum (point 1) maka praktikan
dipersilahkan melengkapinya sampai waktu pengerjaan Tes Awal selesai.
Selama praktikum berlangsung praktikan dilarang melakukan hal-hal yang
mengganggu

pelaksanaan

praktikum

seperti

makan,

minum,

membuat

kegaduhan,dll.
Praktikan wajib mengikuti semua modul praktikum.
3. Tugas Pendahuluan
a. Tugas pendahuluan bersifat tidak wajib.
b. Bagi yang mengerjakan Tugas Pendahuluan wajib mengerjakan semua soal sesuai
ketentuan yang ada.
c. Tugas Pendahuluan ditulis tangan dalam kertas A4 dan dikumpulkan dalam satu amplop
coklat sesuai dengan waktu yang telah ditentukan
4. Jurnal Praktikum
a. Jurnal diberikan sebelum praktikum berlangsung.
b. Jurnal harus dikerjakan semua dan dikumpulkan pada waktu yang telah ditentukan.
c. Praktikan dianggap gugur pada modul yang bersangkutan apabila tidak mengerjakan
jurnal praktikum.

5. Tes Akhir

Tes Akhir diberikan oleh asisten setelah praktikum selesai, bisa berupa tes lisan ataupun
tertulis.
6. Tugas Tambahan
a. Asisten bisa memberikan tugas tambahan jika dipandang perlu.
b. Tugas tambahan bisa diberikan secara perorangan atau kelompok.
c. Waktu pengumpulan tugas tambahan ditentukan asisten masing masing.
7. Penilaian
Tugas Pendahuluan

: 20%

Tes Awal

: 10%

Praktikum

: 35%

Jurnal

: 20%

Tes Akhir

: 15%

8. Pertukaran Jadwal
a. Pertukaran jadwal maksimal satu hari sebelum praktikum yang bersangkutan berlangsung.
b. Pertukaran jadwal bisa dilakukan antar sesama praktikan dengan mengisi form tukar
jadwal yang disetujui oleh asisten.
9. Praktikum Susulan
Praktikum susulan dilakukan jika dipandang perlu.
10. Presentasi
Aturan materi presentasi diberitahukan selanjutnya.
11. Kelulusan
a. Praktikan dinyatakan lulus jika nilai akhir setiap modul 50% dan nilai akhir praktikum
mempunyai rata rata 60%.
b. Jika praktikan gugur dalam satu modul atau lebih maka wajib mengulang seluruh modul
pada praktikum semester berikutnya.
Bandung,

Februari 2014
Mengetahui

Koordinator Asisten

M Fakry Abdul Ghani.

Pembina Lab Mikroprosesor dan Antarmuka

Burhanudin Dirgantoro ST., MSc.

MODUL I
PENGENALAN SISTEM MINIMUM MIKROKONTROLER
DAN AVR ATMEGA8535

A. TUJUAN PRAKTIKUM
1. Mempelajari sistem minimum mikrokontroler.
2. Mengetahui dan memahami fungsi pin-pin pada mikrokontroler AVR
ATMega8535.
3. Mengerti fungsi-fungsi khusus pin pada mikrokontroler AVR ATMega8535.
B. PERALATAN
1. Sismin mikrokontroler.
2. PC (Simulator).
C. DASAR TEORI
1.
Pengenalan AVR
Arsitektur mikrokontroler jenis AVR (Alf and Vegard RISC atau Advanced Virtual
RISC) pertama kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa
Norwegian Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan.
Mikrokontroler AVR kemudian dikembangkan lebih lanjut oleh Atmel. Seri pertama
AVR yang dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan konfigurasi pin
yang sama dengan Mikrokontroler 8051, termasuk address dan data bus yang
termultipleksi.
Pada awal era industri komputer, bahasa pemrograman masih menggunakan kode
mesin dan bahasa assembly. Untuk mempermudah dalam pemrograman para desainer
komputer kemudian mengembangkan bahasa pemrograman tingkat tinggi yang mudah
dipahami manusia. Namun akibatnya, instruksi yang ada menjadi semakin komplek dan
membutuhkan lebih banyak memori. Dan tentu saja siklus eksekusi instruksinya
menjadi semakin lama. Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi
berukuran 16 bit dan sebagian besar dieksekusi dalam 1 siklus clock. Berbeda dengan
mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit sampai 32 bit dan
dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin membutuhkan 12
periode clock. Perbedaan tersebut terjadi karena AVR berteknologi RISC (Reduced
Instruction Set Computer), dimana set instruksinya dikurangi dari segi ukurannya dan
kompleksitas mode pengalamatannya. Sedangkan seri MCS-51 berteknologi CISC
(Complex Instruction Set Computing).
2.

Arsitektur AVR
Fitur yang tersedia pada ATMega 8535 adalah :
a. Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD.
b. ADC 10 bit sebanyak 8 input.

c.
d.
e.
f.
g.
h.
i.
j.
k.
l.
m.
3.

3 buah Timer/Counter dengan kemampuan pembandingan.


CPU 8 bit yang terdiri dari 32 register.
Frekuensi clock maksimum 16 MHz
Watchdog Timer dengan osilator internal.
SRAM sebesar 512 byte.
Memori Flash sebesar 8 KB dengan kemampuan read while write.
Interrupt internal dan eksternal.
Port komunikasi SPI.
EEPROM sebesar 512 byte yang dapat diprogram saat operasi.
Analog Comparator.
Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps.
Blok Diagram AVR ATMega 8535

Gambar 1.1 Blok Diagram ATMega8535

4.

Spesifikasi AVR ATMega


8535
4.1 Konfigurasi Pin-pin ATMega8535

Gambar 1.2 Konfigurasi Pin ATMega 8535


Mikrokontroler ATMega8535 mempunyai 40 kaki. 32 diantaranya merupakan
port I/O yaitu PortA, PortB, PortC, dan PortD yang masing-masing Port tersebut
terdiri dari 8 pin I/O.
Dekripsi masing-masing pin:
PortA (PA0PA7) sebagai port I/O dan memiliki kemampuan lain yaitu
sebagai input untuk ADC (Analog to Digital Converter). Jika ADC tidak
digunakan maka PortA merupakan 8-bit I/O dua arah. Pada PortA terdapat
internal Pull-up resistor. Ketika pin di PortA disetting low (0) maka arus akan
mengalir jika resistor pull-up inernal diaktifkan.
PortB (PB0PB7) merupakan 8-bit port I/O dua arah. Pada PortB terdapat
internal Pull-up resistor. Ketika pin di PortB disetting low (0) maka arus akan
megalir jika resistor pull-up internal diaktifkan.
PortC (PC7PC0) merupakan 8-bit port I/O dua arah. Pada PortC terdapat
internal Pull-up resistor. Ketika pin di PortC disetting low (0) maka arus akan
megalir jika resistor pull-up internal diaktifkan.
PortD (PD0PD7) merupakan 8-bit port I/O dua arah. Pada PortC terdapat
internal Pull-up resistor. Ketika pin di PortC disetting low (0) maka arus akan
megalir jika resistor pull-up internal diaktifkan.
GND merupakan pin Ground.
VCC merupakan pin input catu daya.
AREF merupakan pin input tegangan referensi ADC.
AVCC merupakan pin input tegangan ADC.
XTAL1 & XTAL2 merupakan pin clock eksternal
RESET merupakan pin untuk mereset mikrokontroler. Jika diberi input low
(0)maka program yang telah dibuat akan kembali dari awal.

4.2 Spesifikasi Port


Port A
PORT A
Fungsi Tambahan
PA0
ADC0 (input ADC channel 0)
PA1
ADC1 (input ADC channel 1)
PA2
ADC2 (input ADC channel 2)
PA3
ADC3 (input ADC channel 3)
PA4
ADC4 (input ADC channel 4)
PA5
ADC5 (input ADC channel 5)
PA6
ADC6 (input ADC channel 6)
PA7
ADC7 (input ADC channel 7)
Fungsi Khusus Port A :
Pada seri AVR ATMega 8535 ini telah dilengkapi dengan 8 saluran
ADC internal dengan fidelitas 10 bit. Dalam mode operasinya, ADC dapat
dikonfigurasi baik secara single ended maupun differential input. Selain itu,
ADC ATMega 8535 memiliki kofigurasi pewaktuan, tegangan referensi, mode
operasi, dan kemampuan filter derau yang sangat fleksibel sehingga dapat
dengan mudah disesuaikan dengan kebutuhan dengan ADC itu sendiri.
Port B
PORT B
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7

Fungsi Tambahan
T0 (Timer/Counter0 External Counter Input),
XCK (USART External Clock Input/Output)
T1 (Timer/Counter1 External Counter Input)
AIN0 (Analog Comparator Positive Input),
INT2 (External Interupt 2 Input)
AIN1 (Analog Comparator Negative Input),
OC0 (Timer/Counter0 Output - Compare Match
Output)
SS (SPI Slave Select Input)
MOSI (SPI Bus MasterOutput/Slave Input)
MISO (SPI Bus Master Input/Slave Output)
SCK (SPI Bus Serial Clock)

Fungsi Khusus Port B :


1. T0/T1 sebagai input Timer/Counter External.
2. AIN0 dan AIN1 sebagai input komparator (AIN0=input positif, sedangkan
AIN1=input negatif)
3. SS (SPI) sebagai port untuk komunikasi antar mikrokontroler.
4. MOSI, MISO, SCK berfungsi sebagai input downloader ISP.

Port C
PORT C
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7

Fungsi Tambahan
SCL (Two-wire Serial Bus Clock Line)
SDA (Two-wire Serial Bus Data I/O Line)
TCK (JTAG Test Clock)
TMS (JTAG Test Mode Select)
TDO (JTAG Test Data Out)
TDI (JTAG Test Data In)
TOSC1 (Timer Oscilator Pin 1)
TOSC2 (Timer Oscilator Pin 2)

Fungsi Khusus Port C :


1. SCL dan SDA, sebagai pengatur Interface Serial 2 jalur.
2. TCK, sebagai operasi sinkronisasi dari JTAG ke TCK. Jika pin ini digunakan
seperti fungsi peripheral tersebut maka pin ini tidak dapat berfungsi sebagai
I/O.
3. TMS, sebagai pengontrol navigasi mesin TAP. Jika pin ini digunakan seperti
fungsi peripheral tersebut maka pin ini tidak dapat berfungsi sebagai I/O.
4. TD0, sebagai output Data Serial dari data register. Jika pin ini digunakan
seperti fungsi peripheral tersebut maka pin ini tidak dapat berfungsi sebagai
I/O.
5. TD1, sebagai Input data serial ke register atau data register. Jika pin ini
digunakan seperti fungsi peripheral tersebut maka pin ini tidak dapat
berfungsi sebagai I/O.
6. TOSC1 dan TOSC2, sebagai penguat amplifier oscillator ketika
disambungkan dengan Kristal dan bit ASR serta bit ASSR diset 1 untuk
mengaktifkan asynchronous clocking dari Timer/Counter2. Jika pin ini
digunakan dalam kondisi tersebut maka pin ini tidak dapat berfungsi sebagai
I/O.
Port D
PORT D
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7

Fungsi Tambahan
RXD (Pin Input USART/Pin terima komunikasi Serial)
TXD (Pin Output USART/Pin kirim Komunikasi Serial)
INT0 (Input Interupt Eksternal 0)
INT1 (Input Interupt Eksternal 1)
OC1B (Timer/Counter1 Output Compare B Match Output)
OC1B (Timer/Counter1 Output Compare A Match Output)
ICP1 (Timer/Counter1 Input Capture Pin)
OC2 (Timer/Counter2 Output Compare Match Output)

Fungsi Khusus Port D :


1. RXD dan TXD, pin untuk komunikasi serial.
2. INT0 dan INT1, sebagai input Interupsi Eksternal 0 dan Interupsi Eksternal 1
3. OC1A dan OC1B, sebagai Output untuk PWM mode fungsi timer dan OC1A
juga berfungsi sebagai Output Eksternal dari pembanding timer/counter A.
Sedangkan OC1B juga berfungsi sebagai Output Eksternal dari pembanding
timer/counter B.
4. ICP1, sebagai penampung input timer/counter1.
5. OC2, sebagai Output untuk PWM mode fungsi timer dan Output Eksternal
dari pembanding timer/counter2.
5. Peta Memori
ATMega8535 memiliki dua jenis memori yaitu Program Memory dan Data
Memory ditambah satu fitur tambahan yaitu EEPROM Memory untuk penyimpan
data.
Program Memory
ATMega8535 memiliki On-Chip In-System Reprogrammable Flash Memory
untuk menyimpan program. Untuk alasan keamanan, program memory dibagi
menjadi dua bagian yaitu Boot Flash Section dan Application Flash Section. Boot
Flash Section digunakan untuk menyimpan program Boot Loader, yaitu program
yang harus dijalankan pada saat AVR reset atau pertamakali diaktifkan. Application
Flash Section digunakan untuk menyimpan program aplikasi yang dibuat user.
AVR tidak dapat menjalankan program aplikasi ini sebelum menjalankan program
Boot Loader. Besarnya memori Boot Flash Section dapat diprogram dari 128 word
sampai 1024 word tergantung setting pada konfigurasi bit di register BOOTSZ.
Jika Boot Loader diproteksi, maka program pada Application Flash Section juga
sudah aman.

Gambar 1.3 Peta Memory Program

Data Memory
Gambar berikut menunjukkan peta memori SRAM pada ATMega8535.
Terdapat 608 lokasi address data memori. 96 lokasi address digunakan untuk
Register File dan I/O Memory sementara 512 lokasi address lainnya digunakan
untuk internal data SRAM. Register File terdiri dari 32 general purpose working
register, I/O register terdiri dari 64 register.

Gambar 1.4 Peta Data Memory

EEPROM Data Memory


ATMega8535 memiliki EEPROM 8-bit sebesar 512 byte untuk menyimpan
data. Lokasinya terpisah dengan system address register, data register dan control
register yang dibuat khusus untuk EEPROM. Alamat EEPROM dumulai dari $000
sampai $1FF.
6. Sistem Minimum Mikrokontroler
6.1 Pengertian Sismin Mikrokontroler
Sismin (Sistim Minimum) Mikrokontroler merupakan suatu rangkaian yang
dirancang dengan menggunakan komponen-komponen seminimum mungkin untuk
mendukung kerja mikrokontroler sesuai yang kita inginkan. Berbeda dengan sismin
mikroprosesor, sismin mikrokontroler ini memiliki pendukung input output yang
programmable dan RAM yang On-chip. Sismin ini bisa dibuat sangat fleksibel
tergantung aplikasi yang dibuat.

6.2 Blok-blok Sismin AVR


Blok-blok yang terdapat pada system minimum Mikrokontroler yang dipakai
pada praktikum kali ini adalah sebagai berikut :
a. Mikrokontroler
Merupakan salah satu bentuk aplikasi teknologi semikonduktor dengan
kandungan transistor lebih banyak namun dengan harga yang jauh lebih murah
bila dibandingkan dengan mikroprosesor. Sistem mikrokontroler hanya dapat
menangani satu program aplikasi mengingat memorinya yang sangat terbatas.
Bisa dikatakan, Mikrokontroler adalah versi mini atau mikro dari sebuah
komputer karena mikrokontroler sudah mengandung beberapa periferal yang
langsung bisa dimanfaatkan, misalnya port paralel, port serial, komparator,
konversi analog ke digital (ADC) dan sebagainya hanya menggunakan sistem
minimum yang tidak rumit atau kompleks.
b. Catu Daya
Blok ini berfungsi untuk memberikan catuan ke sismin sebesar 5 volt. Blok
catu Daya terdiri dari Regulator 7805, Kapasitor, Resistor, dan Indikator LED.
c. Input/Output
Blok ini berfungsi sebagai input dan output. Blok ini terdiri dari blok input
(push button dan keypad) dan blok Output (LED dan LCD).
d. Oscilator
Blok ini berfungsi untuk membangkitkan sinyal clock. Blok oscillator terdiri
dari kapasitor keramik dan kapasitor Kristal.
e. Serial
Blok ini digunakan untuk mengirimkan data secara serial. Blok Serial terdiri
dari IC MAX232 dan port serial (male/DB 9). MAX232 merupakan komponen
untuk mengubah tegangan level TTL menjadi lebih tinggi ke level RS232
sebelum data tersebut ditransmisikan secara serial. Tujuan dari MAX232
adalah agar data yang dikirimkan tersebut tidak habis di tengah jalan.

MODUL II
TIMER/COUNTER
DAN PWM
A.
1.
2.
3.

TUJUAN PRAKTIKUM
Memahami fungsi dan kerja timer pada ATMega8535.
Memahami fungsi dan kerja counter pada ATMega8535.
Memahami fungsi dan kerja prescaler serta perhitungan timer menggunakan
prescaler.

B. PERALATAN
1. Sismin mikrokontroler.
2. PC (Simulator).
C. DASAR TEORI
1. Timer dan Counter
ATMega8535
mempunyai
timer/counter
yang
berfungsi
sebagai
pencacah/pewaktuan. Karena ATMega8535 mampu memakai crystal berfrekuensi
sampai dengan 16 MHz maka mikrokontroler ini dapat mencapai 16MIPS (Million
Instruction per Second).
Pada AVR ATMega8535 terdapat 3 buah timer, yaitu timer/counter 0 (8 bit),
timer/counter 1 (16 bit), dan timer/counter 2 ( 8 bit). Ketiganya dapat berfungsi sebagai
timer maupun counter. Pada fungsi 'timer', isi register ditambah satu setiap siklus mesin
(secara hardware). Jadi, seperti menghitung siklus mesin. Pada fungsi 'counter',
penambahan isi register diatur oleh user secara software. Apabila periode waktu tertentu
telah dilampaui, timer/counter segera menginterupsi mikrokontroler untuk
memberitahukan bahwa perhitungan peritode waktu telah selesai dilaksanakan.
Pada mikrokontroler ATMega 8535 perlu diperhatikan pemilihan sumber clock.
Hal ini berhubungan dengan frekuensi yang kita inginkan. Jika kita ingin menggunakan
frekuensi 12MHz dengan sumber clock eksternal maka perlu dilakukan kalibrasi fuse
bit mikrokontroler dengan downloader, jika tidak maka mikrokontroler akan
menggunakan frekuensi dengan sumber clock internal sekitar 4 MHz.
2.

Prescaler
Timer pada dasarnya hanya menghitung pulsa clock. Frekuensi pulsa clock yang
dihitung tersebut bisa sama dengan frekuensi crystal yang dipasang atau dapat
diperlambat menggunakan prescaler dengan faktor 8, 64, 256 atau 1024. Berikut
penjelasannya:
Sebuah AVR menggunakan crystal dengan frekuensi 8 MHz dan timer yang
digunakan adalah timer 16 bit, maka maksimum waktu timer yang bisa dihasilkan
adalah:
TMAX = 1/fCLK x (FFFFh+1) = 0.125uS x 65536 = 0.008192 S

Untuk menghasilkan waktu timer yang lebih lama dapat digunakan prescaler,
misalnya 1024, maka maksimum waktu timer yang bisa dihasilkan adalah :
TMAX = 1/fCLK x (FFFFh+1) x N = 0.125uS x 65536 x 1024 = 8.388608 S
3.

Timer/Counter 0
Merupakan 8 bit timer/counter, pengaturan Timer/Counter 0 diatur oleh TCCR0
(Timer/Counter control register 0) seperti berikut ini:

Gambar 2.1 Register TCCR0


Bit 3 ~ 7 digunakan untuk setting PWM.
Bit 2, 1, 0 (CS02, CS01, CS00): Clock select. Ketiga bit tersebut memilih
sumber clock yang akan digunakan oleh timer/counter.
Tabel 2.1 Konfigurasi Bit Clock Select

4.

Timer/Counter 1
Merupakan 16-bit timer/counter sehingga terdapat perbedaan cara pengaksesannya
dengan 8-bit timer/counter. 16-bit (1 word) timer/counter harus diakses dengan 8 bit
high dan 8 bit low.
Pengaturan Timer/Counter1 juga diatur oleh register TCCR1B.

Gambar 2.2 Register TCCR1B

Bit 2,1,0 (CS1 2:0): Clock Select. Ketiga bit tersebut (CS2/CS1/CS0)
mengatur sumber clock yang digunakan untuk Timer/Counter1.
Tabel 2.2 Konfigurasi Bit Clock Select untuk Memilih Sumber Clock

5.

Timer/Counter 2
Timer/Counter2 adalah 8-bit Timer/Counter, pengaturan pada Timer/Counter2
diatur oleh TCCR2 (Timer/Counter Control Register 2).

Gambar 2.3 Register TCCR2


Bit 2,1,0 (CS22; CS21, CS20): Clock Select. Ketiga bit ini memilih sumber
clock yang akan digunakan oleh Timer/Counter.
Tabel 2.3 Konfigurasi Bit Clock Select untuk Memilih Sumber Clock

6.

Register TIMSK dan TIFR


Selain register-register di atas, terdapat pula register TIMSK (Timer/Counter
Interrupt Mask Register) dan register TIFR (Timer/Counter Interrupt Flag Register).

Gambar 2.4 Register TIMSK


OCIEx: Output Compare Match Interrupt Enable. Jika bit tersebut diberi
logika 1 dan bit I SREG juga berlogika 1, maka bisa dilakukan enable
interupsi Output Compare Match Timer/Counter x.
TOIEx: Overflow Interrupt Enable. Jika diberi logika 1 dan bit I SREG juga
berlogika 1, maka bisa dilakukan enable interupsi Overflow Timer/Counter
x.
TCIE1: Timer/Counter 1, Input Capture Interrupt Enable

Gambar 2.5 Register TIFR


OCFx: Output Compare Flag. Bernilai 1 (set) jika terjadi compare match
antara Timer/Counter x dan data di OCRx (Output Compare Register x).
OCFx di-clear secara hardware ketika pengeksekusian corresponding
interrupt handling vector. Atau, jika diberi nilai 1 secara lagsung ke bit flag.
Saat bit I SREG, OCIEx, dan OCFx set (berlogika 1), maka Timer/Counter x
Compare Match Interrupt dieksekusi.
TOVx: Timer/Counter x Overflow Flag. Bit ini akan set (bernilai 1) saat
terjadi overflow di Timer/Counter x. TOVx akan clear (bernilai 0) secara
hardware saat pengeksekusian corresponding interrupt handling vector.
Atau, diberikan logika 1 ke bit flag. Saat bit i SREG, TOIEx (Timer/Counter
x Overflow Interrupt Enable), dan TOVx set, akan terjadi pengeksekusian
Timer/Counter x Overflow Interrupt. Pada mode PWM, bit ini set ketika
Timer/Counter x mengubah arah perhitungan hingga menuju nilai 0x00.
7.

Setting Timer
Sebelum kita melakukan setting timer maka kita tentukan dahulu nilai delay yang
kita inginkan lalu bisa kita dapatkan nilai TCNTnya

TCNT

: Nilai timer (Hex)

fCLK
: Frekuensi clock (crystal) yang digunakan (Hz) T timer
: Waktu timer yang diinginkan (detik)
N
: Prescaler (1, 8, 64, 256, 1024)
1+FFFFh : Nilai max timer adalah FFFFh dan overflow saat FFFFh ke 0000h

8.

Pulse Width Modulation (PWM)


Pulse Width Modulation (PWM) adalah cara yang digunakan untuk menyediakan
tegangan yang nilainya diantara nilai off (zero) dan nilai on (max) dengan memanipulasi
lebar pulsa digital. Pulsa PWM adalah sederetan pulsa digital yang lebar pulsanya dapat
diatur. PWM digunakan untuk mengatur kecepatan motor DC, mengatur gelap terang nyala
LED, dan aplikasi lainnya.
PWM menggunakan gelombang kotak dengan duty cycle tertentu yang menghasilkan
berbagai nilai rata-rata dari suatu bentuk gelombang. Duty cycle menyatakan presentase
keadaan logika high (pulse) dalam satu periode sinyal. Satu siklus diawali oleh transisi low to
high dari sinyal dan berakhir pada transisi berikutnya. Selama satu siklus, jika waktu sinyal
pada keadaan high sama dengan low maka dikatakan sinyal mempunyai duty cycle 50%.
Fitur PWM merupakan salah satu keunggulan Timer/Counter pada ATMega8535. Pengaturan
duty cycle dan nilai rata-rata tegangan DC dilakukan dengan mengatur nilai register OCRn
pada Timer/counter
Average
DC
25%

Average
DC 50%

Nyala red redup


255
ocr=128
0

Nyala sedang

Gambar 6.5 Pola Kerja PWM

Nyala led terang


255

8.1

Konfigurasi PWM
Register yang digunakan untuk mengkonfigurasi penggunaan PWM berada pada
register untuk Timer/counter . Timer/counter0 dan Timer/counter2 memiliki PWM 8
bit, Timer/counter1 memiliki PWM 9 bit,PWM 8 bit dan PWM 10 bit. Output PWM
terletak pada pin OC0(timer0), pin OC1A dan OC1B (timer 1) , serta pin OC2 (timer2).
Untuk memahami penggunaan PWM,berikut ini contoh pemakaian Timer/Counter0
sebagai PWM.
Register untuk Konfigurasi PWM :
a. Timer/Counter Register (TCNT0)

Gambar 6.6 Register TCNT0


Register ini bertugas menghitung pulsa yang masuk ke dalam rimer/counter. Untuk
menggunakan PWM, TCNT0 perlu ditentukan nilai awalnya yaitu 0.
b. Output Compare Register (OCR0)

Gambar 6.7 Register OCR0


Register 8 bit ini secara kontinu dibandingkan dengan isi TCNT0. Register ini dapat
ditentukan isinya. Ketika isi TCNT0=OCR0 maka akan terjadi compare match yang
dapat membangkitkan pulsa PWM pada pin OC0
c. Timer/Counter Control Register (TCCR0)
Pemilihan Timer untuk mode PWM dikonfigurasi melalui bit WGM01 dan WGM00
pada register TCCR0.

Gambar 6.8 Register TCCR0


Tabel 6.5 Konfigurasi Bit WGM01 dan WGM00

8.2 Mode Operasi PWM


a. Mode Fast PWM
Tabel 6.6 Konfigurasi Bit COM01 dan COM00 Compare Output Mode Fast PWM

Dalam mode ini, TCNT0 mencacah dari BOTTOM(0x00) terus mencacah naik
(counting up) hingga mencapai MAX (0xff), kemudian mulai dari BOTTOM lagi
dan begitu seterusnya (single slope).

Gambar 6.9 Pulsa Fast PWM


b. Mode Phase Correct PWM
Tabel 6.7 Konfigurasi Bit COM01 dan COM00 Compare Output Mode Fast PWM

Ketika COM00 clear dan COM01 set, pin OC0 clear ketika terjadi compare match
(nilai TCNT0=OCR0) saat timer mencacah naik (counting up), dan pin OC0 set jika
terjadi compare match ketika timer mencacah turun (counting down), kondisi ini
menghasilkan keluaran berupa non-inverting PWM. Sebaliknya, ketika COM00 set
dan COM01 juga set, maka pin OC0 set ketika terjadi compare match saat timer naik
dan OC0 clear saat timer mencacah turun, kondisi ini menghasilkan inverting PWM.

Pada mode ini, TCNT0 mencacah dari BOTTOM (0x00) counting up hingga
mencapai MAX(0xff)
kemudian counting down hingga BOTTOM,
begitu seterusnya (dual slope).

Gambar 6.10 Pulsa Phase Correct PWM

9. Contoh Program
Menggunakan timer :
Inisialisasi PORT C sebagai output
Inisialisasi timer 1 menjadi seperti berikut:
Clock Source : System Clock
Clock Value
: 172.797 kHz
Mode
: Normal top=FFFFh
Out A
: Discon.
Out B
: Discon.
Interrupt on
: Checklist Timer 1 Overflow
Value
: d5d0h
//Timer 1 overflow interrupt service routine
Interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
//Reinitialize Timer 1 value
TCNT1H=0xD5;
TCNT1L=0xD0;
//Place your code here
if (PINC==0){
PORTC=0xFF;
}
else{
PORTC=0x00;
}
}

.....
TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0xD5;
TCNT1L=0xD0;
Menggunakan counter :
Inisialisasi PORT B sebagai input dan PORT C sebagai output
Inisialisasi timer 0 menjadi seperti berikut:
Clock Source : T0 Pin Faling Edge
Mode
: Normal top=FFh
Output
: Disconnected
Checklist Overflow Interrupt
.....
//Timer 0 overflow interrupt service routine
Interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
//Reinitialize Timer 0 value
TCNT0=0xFA;
//Place your code here
if (PINC==0) {PORTC=0xFF;}
else {PORTC=0x00;}
}
.....

MODUL III
SERIAL USART
A. TUJUAN PRAKTIKUM
1. Memahami komunikasi serial pada ATMega8535.
2. Mampu mengimplementasikan komunikasi serial pada komputer.
B.
1.
2.
3.
4.

PERALATAN
Sismin mikrokontroler.
PC (Simulator).
Kabel serial.
Software HyperTerminal atau AccessPort.

C. DASAR TEORI
Sistem USART ATMega8535 memiliki beberapa keuntungan dibandingkan
dengan sistem UART, yaitu:
a. Operasi full duplex.
b. Mode operasi asinkron dan sinkron.
c. Mendukung komunikasi multiprosesor.
1.

Inisialisasi USART
Berikut register yang perlu disetting untuk mengatur komunikasi serial USART:
a. UBRR (USART Baud Rate Register)
UBBR merupakan register 16 bit yang berfungsi melakukan penentuan
kecepatan transmisi data yang akan digunakan. Dibagi menjadi dua, yaitu UBBRH
dan UBBRL. Digunakan untuk menentukan baud rate USART.
Gambar 3.1 USART Baud Rate Register
Rumus :
UBRR = (fosc/16xbaudrate)-1; untuk mode kecepatan normal asinkron
b. UCSRA (USART Control and Status Register A)

RX
C

TXC

Tabel 3.1 Register UCSRA


UDRE
FE
DOR
PE

U2X

MPCM

1) RXC bernilai 1 jika ada data atau yang belum terbaca dan bernilai 0 jika tidak
ada data.

2) TXC bernilai 1 jika keseluruhan data sudah terkirim.


3) UDRE adalah interup yang akan aktif jika UDRIE pada UCSRB diset 1. UDRE
bernilai 1 jika buffer kosong.
4) FE bernilai 1 jika terjadi error pada proses penerimaan data.
5) DOR bernilai 1 jika terjadi over run data, artinya ketika register penerimaan
telah penuh dan terdapat data baru yang menunggu.
6) PE bernilai 1 jika terjadi error pada parity.
7) U2X berhubungan dengan mode asinkron.
8) MPCM berkaitan dengan proses multiprosesor.
c. UCSRB (USART Control and Status Register B)
UCSRB merupakan register 8 bit pengatur aktivasi penerima dan pengirim
USART. Digunakan untuk mengaktifkan penerimaan dan pengiriman data USART

Gambar 3.2 USART Control and Status Register B


RXEN
TXEN
RXCIE

: Jika di set 1 maka akan mengaktifkan penerimaan


: Jika di set 1 maka akan mengaktifkan pengiriman
: Jika di set 1 maka akan mengaktifkan interupsi penerimaan

d. UCSRC (USART Control and Status Register C)


UCSRC merupakan register 8 bit yang digunakan untuk mengatur mode
komunikasi USART.

Gambar 3.3 USART Control and Status Register C


URSEL
: Jika di set 1 maka register UCSRC bisa diakses, sebab alamat
register UCSRC dan UBRR sama
UCSZ2..UCSZ0 : Menentukan ukuran karakter yang dikirimkan.
Jika UCSZ2..UCSZ0 = 000 maka ukuran karakter 5 bit
Jika UCSZ2..UCSZ0 = 001 maka ukuran karakter 6 bit
Jika UCSZ2..UCSZ0 = 010 maka ukuran karakter 7 bit
Jika UCSZ2..UCSZ0 = 011 maka ukuran karakter 8 bit
Jika UCSZ2..UCSZ0 = 100-110 tidak digunakan
Jika UCSZ2..UCSZ0 = 111 maka ukuran karakter 9 bit

e. Inisialisasi USART
#define fosc 11059200
#define baud 19200
#define ubrr_val (fosc/(16*baud))-1
#define RXEN 4
#define TXEN 3
#define USBS 3
#define USCZ0 1
#define USEL 7
void usart_init(unsigned int baudr){
//set baud rate
UBRRH=((unsigned char) (baudr>>8)) &(0x7f);
UBRRL=(unsigned char) (baudr);
//-----------UCSRA=0x00;
//aktifkan tx
UCSRB=(1<<TXEN);
//set frame format: 8 bit, 2 stop bit
UCSRC=(1<<USBS)
|
(3>>UCSZ0)
|
(1<<USEL);
}

2.

Pengiriman Data
Pengiriman data dilakukan per byte menunggu UDR kosong (UDR=register tempat
menyimpan data USART, menjadi satu dengan register UBRR). Jika kosong, maka bit
UDRE (USART Data Register Empty) pada UCSRA akan set 1 sehingga siap
menerima
data baru yang akan dikirim.

3.

Penerimaan Data
Penerimaan data dilakukan dengan memeriksa bit RXC (USART Receive
Complete) pada register UCSRA. RXC akan set 1 jika ada data yang siap dibaca. Data
yang diterima akan disimpan pada register UDR.
4. Contoh Program
Kirim data serial:
Inisialisasi PORT C sebagai output dan hubungkan LCD ke PORT C serta RS232 ke
komputer
#include <stdio.h>
#include <delay.h>
.....
#define fosc 11059200
#define baud 19200
#define ubrr_val (fosc/(16*baud))-1
#define RXEN 4
#define TXEN 3
#define USBS 3
#define USCZ0 1
#define USEL 7
void usart_init(unsigned int baudr){
//set baud rate
UBRRH=((unsigned char) (baudr>>8)) & (0x7f);
UBRRL=(unsigned char) (baudr);
//-----------UCSRA=0x00;
//aktifkan tx
UCSRB=(1<<TXEN);
//set frame format: 8 bit, 2 stop bit
UCSRC=(1<<USBS) | (3>>UCSZ0) | (1<<USEL);
}

.....
//LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Transmit USART");
lcd_gotoxy(0,1);
lcd_putsf("Kirim data serial");
//Transmit to RS232 serial communication
printf("Transmit USART");
printf("Kirim Data Serial");

MODUL IV
INPUT/OUTPUT
A. TUJUAN PRAKTIKUM
1. Memahami konsep kerja mode 8 bit pada LCD karakter.
2. Memahami konsep kerja mode 4 bit pada LCD karakter.
B.
1.
2.
3.
4.

PERALATAN
Sismin mikrokontroler.
PC (Simulator).
Blok LCD.
Blok keypad.

C. DASAR TEORI
LCD (Liquid Crystal Display) merupakan komponen yang dapat menampilkan
suatu nilai hasil sensor, menampilkan teks, atau menampilkan menu pada aplikasi
mikrokontroler. LCD yang akan digunakan adalah jenis LCD M1632, yang merupakan
modul LCD dengan tampilan 16x2 baris dengan konsumsi daya rendah. Modul tersebut
dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan LCD.
1. Memori
Yang menjadi pengendali LCD adalah mikrokontroler HD44780 yang memiliki
CGROM (Character Generator Read Only Memory), CGRAM (Character Generator
Random Access Memory), dan DDRAM (Display Data Random Access Memory).
Berikut ini merupakan bagian-bagian dari LCD M1632:
a. DDRAM
DDRAM merupakan memori tempat karakter yang ditampilkan berada. Contoh,
untuk karekter L atau 4CH yang ditulis pada alamat 00, karakter tersebut akan
tampil pada baris pertama dan kolom pertama pada LCD. Apabila karakter tersebut
ditulis pada alamat 40, maka karakter tersebut akan tampil pada baris kedua kolom
pertama dari LCD.
b. CGRAM
CGRAM merupakan memori untuk membuat bentuk karakter yang dapat diubahubah sesuai keinginan. Karakter yang disimpan di CGRAM akan hilang apabila
tidak ada power supply, karena memori RAM bersifat tidak permanen.
c. CGROM
Merupakan memori yang menyimpan karakter-karakter yang sudah permanen ada
di dalam LCD, sehingga tidak dapat diubah-ubah lagi bentuknya oleh pengguna.
Namun karena ROM bersifat permanen, pola karakter tersebut tidak akan hilang
saat tidak ada catuan daya.

Gambar 4.1 Hubungan Antara CGROM dan DDRAM


LCD memiliki 16 kaki pin yang memiliki fungsi masing-masing. STAL DISPLAY

Gambar 4.2 Konfigurasi Pin LCD 16 Karakter x 2 Baris

Tabel 4.1 Konfigurasi Pin LCD

2.

Register
HD44780 memiliki dua buah register yang aksesnya diatur menggunakan kaki RS.
Pada saat RS berlogika 0, yang diakses adalah register perintah. Saat RS berlogika 1,
yang diakses adalah register data.
a. Register Perintah
Register yang berisi perintah-perintah dari mikrokontroler ke HD44780 pada saat
proses penulisan data atau tempat status dari HD44780 dapat dibaca pada saat
pembacaan data.
1) Penulisan Data ke Register Perintah
Penulisan data ke register perintah dilakukan dengan tujuan mengatur tampilan
LCD, inisialisasi, dan mengatur Address Counter maupun Address Data.
Kondisi RS dengan logika 0 berarti terjadi akses data ke register perintah. RW
berlogika 0 berarti proses penulisan data akan dilakukan.
Pada Mode 4 bit interface, data dikirimkan secara terpisah. Nible tinggi (bit7
sampai bit4) dikirimkan terlebih dahulu dengan diawali pulsa logika 1 pada E
Clock. Kemudian, nible rendah (bit3 sampai bit0) dikirimkan dengan diawali
pulsa logika 1 pada E Clock. Pada Mode 8 bit interface, proses penulisan dapat
langsung dilakukan sekaligus 8 bit (bit7 bit0) dan diawali pulsa logika 1 pada
E Clock.
2) Pembacaan Data dari Register Perintah
Pembacaan data pada register perintah biasanya dilakukan untuk melihat status
busy dari LCD atau membaca Address Counter. RS diberi logika 0 untuk akses
ke register perintah, dan R/W diberi logika 1 agar terjadi proses pembacaan data.
Pada Mode 4 bit interface, pembacaan 4 bit nibble tinggi diawali pulsa logika 1
pada E Clock dan kemudian 4 bit nibble rendah dengan diawali pulsa logika 1

pada E Clock. Untuk Mode 8 bit Interface, pembacaan 8dilakukan langsung 8


bit, dengan diawali sebuah pulsa logika 1 pada E Clock.
Tabel 4.2 Perintah-perintah M1632
D6 D5 D4 D3 D2 D1 D0
0
0
0
0
0
0
1

Perintah
Hapus Display

D7
0

Posisi Awal
Set Mode

0
0

0
0

0
0

0
0

0
0

0
1

1
I/D

x
S

Display
ON/OFF

Geser
Cursor/Display

S/
C

R/
L

Set Fungsi

DL

Set Alamat
CGRAM

AC
G

A
D
D

A
C
G
A
D
D

AC
G

A
C
G
A
D
D

AC
G

Set Alamat
DDRAM

A
C
G
A
D
D

Deskripsi
Hapus display dan
DDRAM
Set alamat DDRAM di 0
Atur arah pergeseran
cursor dan display
Atur display (D) ON/OFF,
cursor (C) ON/OFF,
blinking (B) ON/OFF
Geser cursor atau display
tanpa mengubah alamat
DDRAM
Atur panjang data (DL),
jumlah baris yang tampil
(N), dan font karakter (F)
Data dapat dibaca atau
ditulis setelah alamat diatur

AD
D

AD
D

Data dapat dibaca atau


ditulis setelah alamat diatur

I/D
S
S/C
R/L
DL
N
F
D
C
B
b.

:
:
:
:
:
:
:
:
:
:

A
D
D

1 = increment
1 = display bergeser
1 = display shift
1 = geser kiri
1 = 8 bit
1 = 2 baris
1 = 5x10
1 = display ON
1 = cursor ON
1 = blinking ON

0 = decrement
0 = display tidak bergeser
0 = geser cursor
0 = geser kanan
0 = 4 bit
0 = 1 baris
0 = 5x8
0 = display OFF
0 = cursor OFF
0 = blinking OFF

Register Data
Register Data ialah register untuk menuliskan atau membaca data dari atau ke
DDRAM. Penulisan data pada register akan menempatkan data tersebut ke
DDRAM sesuai dengan alamat yang telah diatur sebelumnya.

1) Penulisan Data ke Register Data


Penulisan data ke register data dilakukan mengirimkan data yang akan ditampilkan di
LCD. Kondisi RS dengan logika 1 berarti terjadi akses ke register data. RW berlogika
0 berarti proses penulisan data akan dilakukan.
Pada mode 4 bit interface, data dikirimkan secara terpisah. Nible tinggi (bit7 sampai
bit4) dikirimkan terlebih dahulu dengan diawali pulsa logika 1 pada E Clock.
Kemudian, nible rendah (bit3 sampai bit0) dikirimkan dengan diawali pulsa logika 1
pada E Clock. Pada mode 8 bit interface, proses penulisan dapat langsung dilakukan
sekaligus 8 bit (bit7 bit0) dan diawali pulsa logika 1 pada E Clock.
2) Pembacaan Data dari Register Data
Pembacaan data pada register data biasanya dilakukan untuk membaca kembali data
yang telah ditampilkan di LCD. RS diberi logika 1 untuk akses ke register data, dan
R/W diberi logika 1 agar terjadi proses pembacaan data.
Pada mode 4 bit interface, pembacaan 4 bit nibble tinggi diawali pulsa logika 1 pada E
Clock dan kemudian 4 bit nibble rendah dengan diawali pulsa logika 1 pada E Clock.
Untuk mode 8 bit interface, pembacaan dapat dilakukan langsung (8 bit), dengan
diawali sebuah pulsa logika 1 pada E Clock.
3. Contoh Program
Program menyalakan LED :
Inisialisasi PORT C sebagai output dan aktif low
#include <delay.h>
//library untuk delay
.....
while(1)
{
//Place your code here
PORTC=0x00;
//LED nyala
delay_ms(1000);
PORTC=0xFF;
//LED mati
delay_ms(1000);
};
}
.....
Perhatikan apa yang terjadi!

Program penampil LCD :


#include <stdio.h>
//library tambahan utk menyimpan string ke SRAM
.....
//Declare your global variables here
Char buf[33];
//deklarasi variabel buf untu menyimpan string yang
//akan ditampilkan ke LCD di SRAM
.....
//LCD module initialization
lcd_init(16);
// untuk LCD 16x2
lcd_gotoxy(0,0);
//menempatkan kursor pada kolom 0 baris 0
lcd_putsf(Menampilkan);
//menampilkan string
lcd_gotoxy(0,1);
//menempatkan kursor pada kolom 0 baris 1
sprintf(buf, Angka %x, 14); //menyimpan string ke SRAM
lcd_puts(buf);
//menampilkan ke LCD
while(1) {
.....
Perhatikan apa yang terjadi!

33