Top Banner
1 MODUL AJAR MIKROKONTROLER DAN INTERFACING Modul ajar ini dibiayai dari dana DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011 Politeknik Negeri Malang Oleh : Ir. Azam Muzakhim Imammuddin, MT NIP. 196705041994031004 POLITEKNIK NEGERI MALANG 2012
80
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

1

MODUL AJAR

MIKROKONTROLER DAN INTERFACING

Modul ajar ini dibiayai dari dana DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011

Politeknik Negeri Malang

Oleh : Ir. Azam Muzakhim Imammuddin, MT

NIP. 196705041994031004

POLITEKNIK NEGERI MALANG

2012

Page 2: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

2

HALAMAN PENGESAHAN MODUL AJAR

1. Judul Modul Ajar : Mikrokontroler dan Interfacing Digunakan Pada Mata Kuliah

Semester : :

Mikrokontroler dan Interfacing (2) dua

2. Penulis Utama 1. Nama Lengkap 2. NIP 3. Pangkat/golongan 4. Jabatan 5. Program Studi 6. Jurusan

: : : : : : :

Ir. Azam Muzakhim Imammuddin, MT 196705041994031004 IV/a Staf Pengajar Teknik Telekomunikasi Teknik Elektro

3. Jumlah AnggotaTim Penulis a. Nama Anggota 1 b. Nama Anggota 2

: : :

- orang ………………………………..... ……………………………….....

4. Bidang Ilmu : Mikroprosesor 5. Sumber Dana : Modul ajar ini dibiayai dengan dana

DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011 Politeknik Negeri Malang

Malang, 10 Juli 2012 Menyetujui, Ketua Jurusan Teknik Elektro Penulis Utama, Supriatna Adhisuwignjo. S.T., M.T. Ir. Azam Muzakhim I., M.T. NIP. 19710108 199903 1 001 NIP. 19670405 199403 1 004 Mengetahui,

Direktur Politeknik Negeri Malang

Ir. Tundung Subali Patma, M.T. NIP. 19590424 1988031 002

Page 3: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

3

SURAT PERNYATAAN Yang bertanda tangan di bawah ini:

Nama Lengkap : Ir. Azam Muzakhim Imammuddin, MTnuri, ST. NIP : 196705041994031004 Bidang Ilmu : Mikroprosesor Pangkat/Golongan : IV/aI Jabatan Fungsional : Lektor Kepala Jurusan/Program Studi : Teknik Elektro/Teknik Telekomunikasi Perguruan Tinggi : Politeknik Negeri Malang

Dengan ini menyatakan bahwa:

1. Naskah modul ajar bidang ilmu “Mikroprosesor” dengan judul:

”MIKROKONTROLER DAN INTERFACING”

Belum pernah diterbitkan dan bebas dari plagiarisme.

2. Bersedia menuntaskan naskah modul ajar sesuai waktu yang ditentukan. Demikian surat pernyataan ini dibuat dengan sebenarnya.

Malang, 10 Juli 2012

Disahkan oleh, Yang membuat, Ketua Jurusan Teknik Elektro Supriatna Adhisuwignjo. S.T., M.T. Ir. Azam Muzakhim I., M.T. NIP. 19710108 199903 1 001 NIP. 19670405 199403 1 004

Mengetahui:

Direktur

Ir. Tundung Subali Patma, M.T. NIP 19590424 198803 1 002

Page 4: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

4

KATA PENGANTAR

Segala puji dan syukur bagi Allah SWT, atas segala berkat rahmat dan

nikmat –Nya dengan terselesaikannya modul ajar bidang ilmu “Mikroprosesor”

dengan judul “MIKROKONTROLER DAN INTERFACING” di Jurusan

Teknik Elektro program Studi Telekomunikasi.

Dan pada kesempatan ini tak lupa kami sampaikan terima kasih kepada:

Direktur Politeknik Negeri Malang

Ketua Jurusan Teknik Elektro

Ketua Program Studi Teknik Telekomunikasi

Dan rekan-rekan pengajar jurusan Teknik Elektro terutama Program Studi

Telekomunikasi Politeknik Negeri Malang

Dan semoga hal ini dapat bermanfaat bagi kita semua

Malang, 10 Juli 2012

Penulis

Page 5: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

5

DAFTAR ISI

halaman

KATA PENGANTAR i

DAFTAR ISI ii

DAFTAR TABEL iii

DAFTAR GAMBAR iv

BAB I DASAR MIKROKONTROLER 1

1.1. PENDAHULUAN 1

1.2. MIKROKONTROLER ATMEGA 16 2

1.3. BAHASA C 8

1.3.1. STRUKTUR BAHASA C 8

1.3.2. INDENTIFIERS 9

1.3.3. KONSTANTA 9

1.3.4. TIPE DATA 10

1.3.5. OPERATOR 10

1.3.6. KONTROL ALIRAN PROGRAM 12

BAB II INPUT-OUTPUT 17

2.1. TEORI DASAR INPUT-OUTPUT 17

2.2. CARA KERJA SAKLAR DAN FOTOTRANSISTOR 23

2.3. TAMPILAN SEVEN SEGMEN 29

BAB III ANALOG TO DIGITAL CONVERTER (ADC) 34

3.1. ADC DALAM ATMEGA 16 34

3.2. LANGKAH-LANGKAH PENGGUNAAN ADC 39

3.3. LM35 40

BAB IV UNIVERSAL SYNCHRONOUS AND ASYNCHRONOUS

SERIAL RECEIVER TRANSMITTER (USART) 50

4.1. USART DALAM AT MEGA 16 52

4.2. APLIKASI USART 61

DAFTAR PUSTAKA 70

Page 6: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

6

DAFTAR TABEL

Halaman

Tabel 1.1. Fungsi Alternatif Pin-Pin Port B 5

Tabel 1.2. Fungsi Alternatif Pin-Pin Port C 6

Tabel 1.3. Fungsi Alternatif Pin-Pin Port D 6

Tabel 1.4. Tipe Data dalam Bahasa C 10

Tabel 1.5. Daftar Operator Kondisi 11

Tabel 1.6. Daftar Operator Aritmatika 11

Tabel 1.7. Daftar Operator Logika 11

Tabel 1.8. Daftar Operator Bitwise 11

Tabel 1.9. Daftar Operator Assignment 12

Tabel 2.1. Ketentuan Posisi Sensor-Sensor Robot Line Follower 26

Tabel 2.2. Hubungan antara Sensor dan Port A 26

Tabel 2.3. Hubungan antara Pengedalian Motor dan Port C 27

Tabel 2.4. Hubungan antara Port A dan Port C 27

Tabel 2.5. Nilai Port C untuk menampilkan angka 0 sampai 9 31

Tabel 3.1. Pilihan Tegangan Referensi ADC 36

Tabel 3.2. Kanal Input ADC untuk jenis Single Ended Input 37

Tabel 3.3. Frekuensi clock ADC 38

Tabel 4.1.Pengaturan bit-bit UPM 56

Tabel 4.2. Kombinasi UCSZ2 sampai UCSZ0 untuk Pengaturan

Ukuran Karakter 57

Tabel 4.3. Pengaturan Bit UCPOL 57

Tabel 4.4. Perhitungan Baud Rate dan nilai Register UBRR 58

Page 7: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

7

DAFTAR GAMBAR

Halaman

Gambar 1.1. Blok Diagram ATMega 16 1

Gambar 1.2. Konfigurasi Pin ATMega 16 4

Gambar1.3. Peta Memori Program ATMega 16 7

Gambar 1.4. Peta Memori Data 7

Gambar 1.5. Flowcart Perintah if 12

Gambar 1.6. Flowcart Perintah if – else 13

Gambar 1.7. Flowcart Perintah while 14

Gambar 1.8. Flowcart Perintah do – while 14

Gambar 1.9. Flowcart Perintah for 15

Gambar 2.1. Register-Register PORTA 18

Gambar 2.2. Port A sebagai Input dan Port C Sebagai Output 19

Gambar 2.3. Flowcart Soal 1 20

Gambar 2.4. Flowcart Soal 2 21

Gambar 2.5. Flowcart Latihan 1 22 Gambar 2.6. Rangkaian Saklar Saat Terbuka dan Tertutup 23

Gambar 2.7. Rangkaian Fototransistor dan LED 23

Gambar 2.8. Rangkaian Mikrokontroler Penghitung Mobil 24

Gambar 2.9. Blok Diagram Robot Line Follower 25

Gambar 2.10. Flowcart Robot Line Follower 28

Gambar 2.11. Tampilan Seven Segmen 30

Gambar 2.12. Blok Diagram Hubungan antara Port C dengan

Seven Segmen 30

Gambar 2.12. Flowcart Contoh Soal 2 32

Gambar 3.1. Blok Diagram ADC ATMega 16 34

Gambar 3.2. Bit-bit dalam Register ADMUX 36

Gambar 3.3. Format Hasil Konversi Bila DLAR sama dengan 0 36

Gambar 3.4. Format Hasil Konversi Bila DLAR sama dengan 1 37

Gambar 3.5. Bit-bit dalam register ADCSRA 37

Gambar 3.6. Rangkaian Sensor Suhu dalam Celcius 41

Gambar 3.7. Salah Satu Bentuk Fisik LM35 41

Page 8: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

8

Halaman

Gambar 3.8. Pengendalian Suhu Tangki dengan ATMega 16 42

Gambar 3.9. Flowcart Pengendali Suhu Tangki 43

Gambar 3.10. Tampilan Indikator Tekanan dengan ATMega 16 45

Gambar 3.11. Flowcart Indicator Tekanan dengan ATMega 16 47

Gambar 4.1. Blok Diagram USART pada ATMega 16 51

Gambar 4.2. Register UDR 52

Gambar 4.3. Bit-Bit Register UCSRA 52

Gambar 4.4. Bit-bit Register UCSRB 54

Gambar 4.5. Bit-bit Register UCSRC 55

Gambar 4.6. Bit-bit Register UBRRH dan UBRRL 57

Gambar 4.7. Telemetri Suhu antara dua MCU ATMega16 62

Gambar 4.8. Flowcart MCU Master 62

Gambar 4.9. Flowcart MCU Slave 62

Gambar 4.10. Skema Konverter TTL ke RS-232 64

Gambar 4.11. Blok Diagram Telekontrol PC ke MCU ATMega16 65

Gambar 4.12. Flowcart untuk MCU ATMega16 Slave 67

Page 9: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

9

BAB I DASAR MIKROKONTROLER

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menjelaskan tentang Mikrokontroler ATMega16 dan fasilitas-fasilitas yang

dimiliknya;

Menjelaskan stuktur dasar bahasa pemrograman C untuk pemrograman

ATMega16

1.1. PENDAHULUAN

Mikrokontroler adalah merupakan suatu chip tunggal yang berisi

mikroprosesor dan memori program yang biasanya bersifat Read Only Memory

(ROM), memori serbaguna atau biasa disebut Random Access Memory (RAM),

Unit Input-Output, Unit Timer/Counter dan beberapa fasilitas yang lain seperti

Analog to Digital Converter (ADC), Electrical Eresable Programmable ROM

(EEPROM) dan lain-lain. Mikrokontroler dapat juga dianggap mikrokomputer,

hal ini karena hanya dengan satu chip/Integrated Circuit(IC) sudah memiliki unit-

unit yang setara dengan semua komputer.

Salah satu perusahaan yang mengembangkan mikrokontroler adalah Atmel

dengan jenis mikrokontroler AVR (Alf and Vegard’s Risc prosesor) yang

dibangun dengan arsitektur Reduced Intruction Set Computing (RISC) 8 bit yang

mengemas semua instruksi dalam kode 16-bit dengan sebagian besar instruksi

dikerjakan/dieksekusi dalam 1 (satu) siklus clock. Dan bila dibandingkan dengan

MCS’51 untuk mengerjakan satu instruksi membutuhkan 12 siklus clock. Hal ini

terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang

berbeda. AVR berteknologi RISC (Reduced Instruction Set Computing),

sedangkan seri MCS 51 berteknologi CISC (Complex Instruction Set Computing).

Atmel mengelompokkan AVR menjadi 4 keluarga yaitu keluarga ATtiny,

keluarga AT90Sxx, keluarga ATMega dan AT86RFxx. Yang membedakan antara

kelompok adalah kapasitas memori, kemampuan peripheral, dan fungsinya.

Sedangkan dari segi arsitektur dan instruksi yang digunakan hampir sama. Dan

Page 10: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

10

yang memiliki fasilitas yang lengkap adalah keluarga ATMega. Salah satu yang

termasuk dalam keluarga ATMega adalah ATMega 16.

1.2. MIKROKONTROLER ATMEGA 16

ATMega 16 adalah sebuah mikrokontroler CMOS 8 bit yang berdaya

rendah yang berbasiskan arsitektur pengembangan RISC dengan satu instruksi

dikerjakan dalam satu clock dengan mencapai kecepatan throughputs mendekati 1

MIPS per MHz yang dapat membuat perancangan system yang lebih

mengoptimalkan konsumsi daya dibandingkan dengan kecepatan proses.

ATMega 16 merupakan prosessor AVR yang menggabungkan instruksi set

yang banyak dengan 32 register umum. Yang ke semua 32 register secara

langsung dihubungkan dengan Aritmatika Logika Unit (ALU), yang

memungkinkan dua buah register yang independen untuk diakses dalam satu

instruksi dieksekusi dalam satu siklus clock. Yang dihasilkan dari arsitektur AVR

adalah kode yang lebih efisien dengan capaian throughputs hingga sepuluh kali

lebih cepat dari konvensional CISC mikrokontroler.

ATmega16 ini menyediakan beberapa fitur sebagai berikut: 16 Kbyte In-

System Programmable Flash, Memori program dengan kemampuan Baca-Tulis-

Sementara, 512 byte EEPROM, 1 Kbyte SRAM, 32 jalur I/O, 32 register kerja,

antarmuka JTAG untuk Boundaryscan, dukungan dan pemrograman On-chip

Debugging, tiga Timer / Counter fleksibel dengan mode perbandingan, Interupsi

Internal dan Eksternal, sebuah programmable serial USART, Dua-kawat Serial

Interface berorientasi byte, serial USART (Universal Synchronous and

Asynchronous serial Receiver and Transmitter) yang dapat diprogram,8 kanal 10-

bit ADC, 4 saluran PWM (Pulse Width Modulation), Master Slave (SPI) Serial

Interface dan Watchdog Timer yang dapat diprogram dengan osilator internal,

port serial SPI, dan enam pilihan mode daya rendah.

Mikrokontroler ini diproduksi dengan menggunakan teknologi nonvolatile

memori Atmel yang canggih. Dilengkapi dengan OnChip ISP (In System

Programming) Flash memori program yang memungkinkan untuk sistem

diprogram ulang melalui interface SPI serial oleh seorang programmer atau

dengan program Boot On-chip yang berjalan pada inti AVR. Atau melalui

Page 11: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

11

program boot yang dapat menggunakan interface untuk men-download aplikasi

program di Flash memori Aplikasi. Software di bagian flash Boot akan terus

berjalan sedangkan bagian flash Aplikasi diperbarui, sehingga menyediakan

proses Baca - Tulis saat mikrokontroler beroperasi.

Oleh karena menggabungkan sebuah CPU RISC 8-bit dengan In-System

Self Programmable Flash pada sebuah chip monolitik, sehingga Atmel

ATmega16 adalah mikrokontroler kuat yang sangat fleksibel, hemat biaya dan

solusi untuk banyak aplikasi control.

Gambar 1.1 menunjukkan Blok Diagram dari ATMega 16. Sedangkan

untuk konfigurasi Pin ATMega 16 ditunjukkan dalam Gambar 1.2.

Gambar 1.1. Blok Diagram ATMega 16 (ATMega,20120;3)

Page 12: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

12

Gambar 1.2. Konfigurasi Pin ATMega 16(ATMega16,2010;2)

Dengan Penjelasan Pin Gambar 1.2. sebagai berikut:

- VCC Sumber Catu Daya Digital

- GND Ground

- Port A (PA7 -

PA0)

Port A berfungsi sebagai input-input analog untuk A/D

Converter.

Port A juga berfungsi sebagai 8-bit bidirectional port I / O,

jika A/D Converter tidak digunakan. pin port juga

menyediakan internal pull-up resistor yang dipilih untuk

setiap bitnya.

- Port B (PB7 –

PB0)

Port B adalah 8-bit bidirectional I /O port dengan internal

pull-up resistor (dipilih untuk setiap bit).

Page 13: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

13

Masing-masing Pin Port B juga berfungsi seperti yang

ditunjukkan dalam Tabel 1.1

- Port C (PC7 -

PC0)

Port C adalah 8-bit bidirectional I / O port dengan internal

pull-up resistor (dipilih untuk setiap bit).

Masing-masing Pin Port C juga berfungsi seperti yang

ditunjukkan dalam Tabel 1.2

- Port D (PD7 -

PD0)

Port D adalah 8-bit bidirectional I / O port dengan internal

pull-up resistor (dipilih untuk setiap bit).

Masing-masing Pin Port D juga berfungsi seperti yang

ditunjukkan dalam Tabel 1.3

- RESET Input Reset. Reset akan terjadi saat logika 0 diberikan

selama lebih dari lebar pulsa minimum. Aktif Rendah

- XTAL1 Input Rangkaian Osilator Clock Internal

- XTAL2 Input Rangkaian Osilator Clock Internal

- AVCC AVCC adalah tegangan suplai pin untuk Port A dan A / D

Konverter. Pin Ini harus secara eksternal terhubung ke

VCC, meskipun ADC tidak digunakan. Jika ADC

digunakan, harus dihubungkan ke VCC melalui filter low-

pass.

- AREF Pin Analog Referensi untuk A/D Konverter

Tabel 1.1. Fungsi Alternatif Pin-Pin Port B (ATMega,2010;58)

Pin Fungsi Alternatif PB7 SCK (SPI Bus Serial Clock) PB6 MISO (SPI Bus Master Input/Slave Output) PB5 MOSI (SPI Bus Master Output/Slave Input) PB4 SS (SPI Slave Select Input) PB3 AIN1 (Analog Comparator Negative Input)

OC0 (Timer/Counter0 Output Compare Match Output) PB2 AIN0 (Analog Comparator Positive Input)

INT2 (Input Eksternal Interupsi 2) PB1 T1 (Timer/Counter1 External Counter Input) PB0 T0 (Timer/Counter0 External Counter Input)

XCK (USART External Clock Input/Output)

Page 14: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

14

Tabel 1.2. Fungsi Alternatif Pin-Pin Port C (ATMega16, 2010:61)

Pin Fungsi Alternatif PC7 TOSC2 (Timer Oscillator Pin 2) PC6 TOSC1 (Timer Oscillator Pin 1) PC5 TDI (JTAG Test Data In) PC4 TDO (JTAG Test Data Out) PC3 TMS (JTAG Test Mode Select) PC2 TCK (JTAG Test Clock) PC1 SDA (Two-wire Serial Bus Data Input/Output Line) PC0 SCL (Two-wire Serial Bus Clock Line)

Tabel 1.3. Fungsi Alternatif Pin-Pin Port D (ATMega16, 2010;63)

Pin Fungsi Alternatif

PD7 OC2 (Timer/Counter2 Output Compare Match Output)

PD6 ICP1 (Timer/Counter1 Input Capture Pin)

PD5 OC1A (Timer/Counter1 Output Compare A Match

Output)

PD4 OC1B (Timer/Counter1 Output Compare B Match

Output)

PD3 INT1 (External Interrupt 1 Input)

PD2 INT0 (External Interrupt 0 Input)

PD1 TXD (USART Output Pin)

PD0 RXD (USART Input Pin)

ATMega 16 memiliki dua memori utama yaitu Memori Program dan

Memori Data dengan tambahan juga memiliki memori EEPROM untuk tempat

penyimpanan data.

ATMega 16 memiliki 16 Kbyte Flash memori untuk penyimpanan

program yang dibagi menjadi dua bagian yaitu bagian Boot program dan bagian

aplikasi program. Flash memori program memiliki daya tahan sedikitnya 10.000

proses tulis atau hapus. Dan untuk menjangkau Flash memori program ATMega

16 memiliki Register Program Counter (PC) selebar 13 bit. Yang menjangkau 8K

lokasi memori program. Sedangkan pada bagiah Boot program dilengkapi dengan

Page 15: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

15

Boot lock bits yang digunakan untuk melindungi software yang telah ada di dalam

ATMega 16. Gambar 1.3 menunjukkan peta memori program dalam ATMega 16.

Gambar1.3. Peta Memori Program ATMega 16(ATMega16,2010;16)

ATMega 16 Memiliki Memori Data yang terdiri dari 1120 lokasi alamat

dari Register File, I/O Memori dan data SRAM internal. 96 lokasi alamat pertama

digunakan oleh Regiter File dan I/O Memori dan 1024 lokasi alamat digunakan

untuk data SRAM Internal. Dan 96 lokasi alamat Register File dan I/O Memori

terdiri dari 32 register umum untuk kerja dan 64 Register yang digunakan untuk

I/O. Dan gambar 1.4. menunjukkan Peta Memori Data. Dan sebagai tambahan

terdapat 512data memori EEPROM di dalam ATMega 16 byte. Yang diorganisasi

secara terpisah, yang setiap byte dapat dibaca dan ditulis. EEPROM memiliki

ketahanan sedikitnya 100.000 siklus tulis atau menghapus.

Gambar 1.4. Peta Memori Data(ATMega16,2010;17)

Page 16: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

16

1.3. BAHASA C

Pada saat ini sudah dikembangkan bahwa untuk membuat pemrograman

mikrokontroler menggunakan bahasa level tinggi bukan menggunakan bahasa

assembly maupun bahasa mesin. Salah satu bahasa level tinggi yang banyak

digunakan adalah bahasa C. Ada beberapa software pemrograman mikrokontroler

yang menggunakan bahasa C sebagai bahasa pemrogramannya seperti Codevision

AVR dan WinAVR.

1.3.1. STRUKTUR BAHASA C

Untuk dapat memahami bagaimana suatu program ditulis, maka struktur

dari program harus dimengerti terlebih dahulu, atau sebagai pedoman penulis

program (programmer) bagaimana seharusnya program tersebut ditulis.

Dalam penulisan program dengan menggunakan bahasa C maka harus

mengetahui struktur dari program dengan menggunakan bahasa C. Program dalam

bahasa C dapat dilihat sebagai sekumpulan dari sebuah atau lebih fungsi. Dan

fungsi pertama yang harus ada di pemrogram bahasa C adalah fungsi main().

Sedangkan untuk fungsi-fungsi yang lain dapat dituliskan setelah atau

sebelum fungsi main () dengan menuliskan deskripsi prototype fungsi pada bagian

awal program. Dan dapat juga fungsi-fungsi yang lain dituliskan di file lain,

apabila diinginkan untuk digunakan maka tinggal menuliskan header file dari

fungsi-fungsi tersebut dengan preprocessor directive #include. Seperti contoh bila

kita menggunakan mikrokontroler ATMega16, maka kita harus mengambil

fungsi-fungsi untuk ATMega16 dengan perintah sebagai berikut:

#include<mega16.h>

Sebagai Contoh penulisan program untuk menyalakan LED di PORTB

// deklarasi fungsi-fungsi ekternal

#include <mega16.h> // mengambil fungsi-fungsi untuk ATMega16

#include <delay.h> // mengambil fungsi-fungsi untuk proses tunda

// deklarasi variable global

unsigned char dataout; // deklarasi dataout dalam byte

Page 17: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

17

// penulisan program utama

void main(void)

{

// Port B initialization Port B sebagai output

PORTB=0x00;

DDRB=0xFF;

dataout=00;

// Penulisan program ada di dalam while (1)

while(1)

{

PORTB=dataout; // PB = dataout

delay_ms(100); // tunda selama 100 ms

dataout=dataout+1; // dataout ditambah 1;

}

}

1.3.2. INDENTIFIERS

Dalam pemrogramaman bahasa C sangat perlu sekali untuk diketahui

dalam pemberiah nama atau Identifier yang diberikan pada variabel, fungsi, label

atau objek lain. Dalam pemberian nama dapat mengandung huruf yaitu besar A

sampai Z dan huruf kecil a sampai z dan angka 0 sampai 9 dan karakter ( _ ).

Nama yang digunakan bersifat Case sensitive yaitu membedakan antara huruf

besar dan huruf kecil. Dan untuk nama dapat mencapai maksimal 32 karakter.

1.3.3. KONSTANTA

Dalam pemrogramam bahasa C ada beberapa cara dalam penulisan

konstanta yaitu sebagai berikut: Penulisan untuk Integer dan long integer ditulis

dalam bentuk decimal (123), bila ditulis dalam bentuk biner maka harus didahului

0b seperti 0b10101001, dan jika ditulis dalam bentuk hexadecimal maka harus

didahului 0x seperti 0xA9, sedangkan untuk konstanta karakter harus dilingkungi

oleh tanda kutip seperti ‘a’.

Page 18: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

18

1.3.4. TIPE DATA

Untuk tipe tipe data yang dimiliki oleh pemrograman bahasa C

ditunjukkan dalam Tabel 1.4 berikut ini.

Tabel 1.4. Tipe Data dalam Bahasa C (Andrianto,2008;21)

Tipe Ukuran (Bit) Range

Bit 1

0,1 (Tipe data bit hanya dapat

digunakan untuk variable

global.)

Char 8 -128 to 127

Unsigned char 8 0 to 255

Signed char 8 -128 to 127

Int 16 -32768 to 32767

Short int 16 -32768 to 32767

Unsigned int 16 0 to 65535

Signed int 16 -32768 to 32767

Long int 32 -2147483648 to 214783647

Unsigned long int 32 0 to 4294967295

Signed long int 32 -2147483648 to 214783647

Float 32 ±1.175e-38 to ±3.402e38

Double 32 ±1.175e-38 to ±3.402e38

1.3.5. OPERATOR

Dalam pemrograman operator merupakan intruksi khusus yang digunakan

untuk variable. Adab beberapa yang sering digunakan yaitu operator kondisi atau

pembanding seperti yang ditunjukan dalam Tabel 1.5, operator atirmatika

ditunjukkan dalam Tabel 1.6, operator logika ditunjukkan dalam Tabel 1.7,

operator bitwise ditunjukkan dalam Tabel 1.8, operator Assignment ditunjukkan

dalam Tabel 1.9.

Page 19: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

19

Tabel 1.5. Daftar Operator Kondisi (Andrianto,2008;22)

Operator Kondisi Keterangan

< Lebih kecil

< = Lebih kecil atau sama dengan

> Lebih besar

> = Lebih besar atau sama dengan

= = Sama dengan

! = Tidak sama dengan

Tabel 1.6. Daftar Operator Aritmatika(Andrianto,2008;22)

Operator Aritmatika Keterangan

+ Penjumlahan

- Pengurangan

* Perkalian

/ Pembagian

% Sisa Bagi (modulus)

Tabel 1.7. Daftar Operator Logika(Andrianto,2008;22)

Operator Logika Keterangan ! Boolean NOT && Boolean AND | | Boolean OR

Tabel 1.8. Daftar Operator Bitwise(Andrianto,2008;22)

Operator Bitwise Keterangan

Komplemen Bitwise

& Bitwise NOT

| Bitwise OR

^ Bitwise Exclusive OR

>> Right Shift

<< Left Shift

Page 20: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

20

A>30

PB=0xFF

Y

T

Tabel 1.9. Daftar Operator Assignment(Andrianto,2008;23)

Opereator Assignment Keterangan

= Untuk memasukkan nilai

+ = Untuk menambah nilai dari keadaan semula

- = Untuk mengurangi nilai dari keadaan semula

* = Untuk mengalikan nilai dari keadaan semula

/ = Untuk melakukan pembagian terhadap bilangan

semula

% = Untuk memasukkan nilai sisa bagi dari pembagian

bilangan semula

<< = Untuk memasukkan shift left

>> = Untuk memasukkan shift right

& = Untuk memasukkan bitwise AND

^ = Untuk memasukkan bitwise XOR

\ = Untuk memasukkan bitwise OR

1.3.6. KONTROL ALIRAN PROGRAM

Dalam pemrograman ada beberapa perintah yang dapat digunakan untuk

mengendalikan aliran program antara lain:

a. Perintah percabangan if (…){…} digunakan untuk mengecek satu kondisi

untuk satu blok jawaban dengan flowcart ditunjukkan dalam Gambar 1.5.

Gambar 1.5. Flowcart Perintah if

Page 21: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

21

A >30

PB =0xF F

Y

T

PB =0x00

Dan dengan cara penulisannya sebagai berikut:

if(_uji_benar_atau_salah_)

{_eksekusi_blok_ini_jika_benar_; } ;

seperti contoh:

if (A>30) // jika A lebih besar 30 maka PB = 0xff;

{ PORTB = 0xff;}

b. Perintah percabangan if(…){…} else {…} digunakan untuk mengecek satu

kondisi untuk dua blok jawaban dengan flowcart ditunjukkan dalam Gambar

1.6.

Gambar 1.6. Flowcart Perintah if – else

Dan cara penulisannya sebagai berikut:

if(_uji_benar_atau_salah_)

{_eksekusi_blok_ini_jika_benar_; }

else {_eksekusi_blok_ini_jika_salah_; } ;

seperti contoh:

if (A > 30) // Jika A lebih besar 30

{PORTB=0xff} // maka PB = 0xff;

else {PORTB=0x00;} // jika tidak PB=0x00

c. Perintah while ( … ) { … } digunakan untuk perulangan jika kondisi yang

diuji bernilai benar dengan flowcart ditunjukkan dalam Gambar 1.7

Page 22: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

22

A > 3 0 P B = 0 x F FA = P A

Y

T

A > 3 0

Y

T

P B = 0 x f fA = P A

Gambar 1.7. Flowcart Perintah while

d. dan cara penulisannya sebagai berikut:

while (_eksekusi_blok_ini_jika_benar_atau_salah)

{_selama_benar_blok_ini_akan_selalu_dieksekusi_;};

Seperti contoh:

while (A > 30) // Ulangi selama A lebih besar dari 30,

{ PORTB = 0xff; // PB =0xff;

A = PINA; } // A=PA;

e. Perintah do {…} while (…) digunakan untuk perulangan jika kondisi yang

diuji bernilai benar. Pada perintah ini blok {…} dikerjakan dahulu baru

kemudian diuji, jika benar maka blok {…} diulangi lagi. Dengan flowcart

ditunjukkan dalam Gambar 1.8.

Gambar 1.8. Flowcart Perintah do – while

Page 23: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

23

I< 1 0

Y

T

I= 1

P B = d a ta o u tD a ta o u t+ +

i+ +

Dan cara penulisannya sebagai berikut:

do

{_selama_benar_blok_ini_akan_selalu_dieksekusi_;}

while (_uji_benar_atau_salah_);

Seperti contoh:

do

{ PORTB = 0xff; // PB = 0xff

A = PINA;} // A= PORTA

while (A > 30); // selama A > 30 kerjakan blok diatasnya

f. Perintah for (…. ; …. ; ….) {…} digunakan untuk perulangan dengan kondisi

dan syarat yang telah ditentukan. Biasanya digunakan perulangan dengan

jumlah tertentu dengan flowcart ditunjukkan dalam Gambar 1.9.

Gambar 1.9. Flowcart Perintah for

Dan cara penulisannya sebagai berikut :

for (_kondisi _awal ; _uji_kondisi_ ; _aksi_jika_benar)

{_eksekusi_blok_ini_jika_benar_ ;} ;

Seperti contoh:

for (i=1;i<10;i++) // mengulangi blok dibawah ini sebanyak 9 kali

{ PORTB=dataout; // PB = dataout

dataout=dataout+1;} // dataout=dataout+1

Contoh Soal:

Page 24: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

24

1. Ada berapa jenis memori yang dimiliki ATMega16? Sebutkan.

Jawab:

Ada 3 yaitu: RAM, EEPROM dan Flash Memori Program

2. Ada berapa port yang dimiliki oleh ATMega16?

Jawab:

Ada 4 port yaitu Port A, Port B, Port C dan Port D

Latihan:

1. Buat flowcart dan program untuk menghitung 1 sampai 10 dengan

menggunakan instruksi :

a. while

b. for

Page 25: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

25

BAB II INPUT – OUTPUT

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menyusun algoritma, flowcart dan program dengan memanfaatkan unit

input-output ATMega16.

2.1. TEORI DASAR INPUT-OUTPUT

Semua port AVR memiliki fungsi Baca-Tulis yang dapat dimodifikasi

ketika digunakan sebagai I/O port digital. Yang berarti setiap saat salah satu arah

pin port dapat diubah fungsi. Setiap output buffer memiliki karakteristik arus

simetris yang bagus dengan arus sink yang tinggi dan kemampuan sumber arus.

Sehingga dari pin cukup kuat untuk menjalankan LED display secara langsung.

Semua pin port memiliki individual pull-up resistor. Dan semua pin I/O memiliki

dioda pelindung untuk VCC dan Ground.

Sebagai referensi semua register dan bit ditulis dalam bentuk umum yaitu

sebuah huruf kecil "x" untuk pengganti nama port, dan sebuah huruf kecil "n"

mewakili nomor bit seperti PORTxn.

Ada tiga alamat memori I/O yang dialokasikan untuk setiap port I/O yaitu

Data Register (PORTx), Data Direction Register (DDRx) dan Port Input Pin

(PINx). Data Register (PORTx) digunakan untuk menyimpan data yang akan

ditulis/dikeluarkan ke port I/O pada saat port dikonfigurasi sebagai output

sedangkan Port Input Pin (PINx) digunakan untuk menyimpan data yang terbaca

dari port I/O pada saat port dikonfigurasi sebagai input sedangkan Data Direction

Register (DDRx) digunakan untuk menginisialisasi port sebagai input atau output.

Oleh karena itu, setiap pin port memiliki 3 bit register yaitu: DDxn, PORTxn dan

PINxn. Bit-bit DDxn beralamat di DDRx, bit-bit PORTxn beralamat di PORTx

I/O dan bit-bit PINxn juga beralamat di PORTx I/O.

Bit DDxn yang ada di dalam register DDRx menentukan arah dari pin ini.

Bila DDxn ditulis logika satu “1”, maka Pxn dikonfigurasi sebagai input dan bila

DDxn ditulis logic nol “0” maka Pxn dikonfigurasi sebagai output. Jika PORTxn

ditulis logika satu saat pin dikonfigurasi sebagai pin input, maka pull-up resistor

Page 26: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

26

aktif dan untuk menonatifkan resistor pull-up, PORTxn harus ditulis logika nol

atau pin harus dikonfigurasi sebagai pin output. Pin port adalah tri stated ketika

kondisi reset dan bahkan jika tidak ada clock yang bekerja.

Gambar 2.1 menunjukkan register-register PORTA dan untuk register-

register PORT yang lain sama saja hanya dengan mengganti huruf A menjadi

huruf B, C dan D karena memiliki model konfigurasi yang sama dengan PORTA

tetapi memiliki alamat yang berbeda.

Gambar 2.1. Register-Register PORTA(ATMega16,2010;66)

Dalam bahasa C yang digunakan untuk pemrogramam ATMega16 nama

PORTx, DDRx dan PINx sudah dikenal dan dikemas dalam file mega16.h untuk

mikrokontroler ATMega 16 sehingga tinggal dipanggil saja file tersebut dengan

perintah #include <mega16.h>.

Sedangkan perintah-perintah yang berhubungan dengan Port adalah sebagai

berikut:

- PORTx, merupakan perintah yang digunakan untuk mengeluarkan data ke

Port x, x untuk A, B, C dan D

contoh:

PORTC = 0xff; // perintah untuk mengeluarkan data 0xff ke Port C

- PINx, merupakan perintah yang digunakan untuk membaca data dari Port

x, untuk x A, B, C dan D.

Contoh:

Page 27: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

27

Datain = PINA; // perintah untuk membaca data dari Port A dan hasilnya

disimpan di variable Datain.

- DDRx, merupakan perintah untuk menginisialisasi atau mengisi register

DDRx dengan data sesuai untuk inisialisasi input atau output. Bila diisi 1

untuk inisialisasi Output, bila diisi 0 untuk inisialisasi input

Contoh:

DDRA = 00000000(2) = 0x00(hex)

PortA0 – PortA7 berfungsi sebagai Input

DDRB = 11111111(2) = 0xFF(hex)

PortB0 – PortB7 berfungsi sebagai Output

DDRC = 00001111(2) = 0x0F(hex)

PortC0 – PortC7 berfungsi sebagai Output dan PortC5 – PortC7

berfungsi sebagai Input.

Jika port digunakan sebagai input, maka resistor pullup diaktifkan dengan

memberikan logika 1 pada PORTx. Kemudian baru baca dapat data dari

register PINx dan jika port digunakan sebagai output, langsung dapat

digunakan sebagai saluran untuk keluar ke PORTx.

- Mikrokontroler ATMega16 memiliki juga instruksi bit yaitu PORTx.n

untuk dan PINx.n

Contoh Soal 1.

Buat Algoritma, flowcart dan program untuk membaca Port A dan hasilnya

ditampilkan di Port C seperti pada Gambar 2.2

Gambar 2.2. Port A sebagai Input dan Port C Sebagai Output

Page 28: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

28

Jawab:

Algoritma:

1. Karena Port A dihubungkan dengan saklar maka Port A diinisialisasi

sebagai Input sehingga DDRA = 00000000B atau 0x00, sedangkan port B

dihubungkan dengan rangkaian LED maka Port C diinisialisasi sebagai

Output sehingga DDRC = 11111111B atau 0xff;

2. Baca data dari Port A dan kirim ke Port B

3. Dan ulangi ke 2

Flowcart:

Gambar 2.3. Flowcart Soal 1

Program:

#include<mega16.h> // ambil fungsi-fungsi untuk ATMega16

unsigned char datain ; //datain =>byte (deklarasi global)

void main (void)

{

DDRA = 0x00 ; //PA = Input

DDRC = 0xff ; //PC = Output

while (1) //selalu benar

{

datain = PINA ;

PORTC = datain ;

}

}

Page 29: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

29

Contoh Soal 2.

Dari Gambar 2.2, buat flowcart dan program bila nilai dari Port A kurang dari 80

maka Port C = 0x00 dan lebih maka Port C = 0xff.

Jawab:

Flowcart:

Gambar 2.4. Flowcart Soal 2

Program:

#include <mega16.h>

unsigned char datain;

void main (void)

{

DDRA = 0X00;

DDRC = 0XFF;

While (1)

{

datain = PIN A;

if (datain<80) }

{ PORTC = 0XFF;}

Else { PORTC = 0X00;}

} }

Page 30: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

30

Latihan 1.

Dari Gambar 2.2, buat flowcart dan program dengan ketentuan-ketentuan sebagai

berikut:

1. Bila nilai 0 < Port A < 40 maka Port C = 0000 0000B = 0x00

2. Bila nilai 40 <= Port A < 80 maka Port C = 0000 1111B = 0x0f

3. Bila nilai 80 <= Port A < 100 maka Port C = 1111 0000B = 0xf0

4. Bila nilai Port A >= 100 maka Port C = 1111 1111B = 0xff

Flowchart :

Gambar 2.5. Flowcart Latihan 1

Pertanyaannya: benarkah flowcart Gambar 2.5 ? Buat Programnya.

Buat juga flowcart dan program model yang lain

Page 31: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

31

2.2 . CARA KERJA SAKLAR DAN FOTOTRANSISTOR

Saklar merupakan salah satu jenis masukan yang sering digunakan dalam

rangkaian mikrokontroler. Salah satu rangkaian saklar ditunjukkan dalam Gambar

2.6a dan Gambar 2.6b. Gambar 2.6a merupakan gambar rangkaian saklar dalam

keadaan terbuka, karena dicatu tegangan 5 volt maka besar tegangan di Saklar

sama dengan 5 Volt yang diukur pakai voltmeter, sehingga memiliki logika ‘1’,

sedangkan untuk rangkaian dalam Gambar 2.6b merupakan gambar rangkaian

saklar tertutup, karena Saat saklar tertutup kedua kutup saklar hubung singkat

dengan groung sehingga besar tegangan saklar sama dengan 0 volt bila diukur

dengan voltmeter sehingga memiliki logika ‘0’.

(a) (b)

Gambar 2.6. Rangkaian Saklar Saat Terbuka dan Tertutup

Gambar 2.7. Rangkaian Fototransistor dan LED

Untuk cara kerja dari rangkaian fototransistor dan LED atau optocoupler

dalam Gambar 2.7. hampir sama dengan cara kerja rangkaian saklar dalam

Gambar 2.6. Saat cahaya LED menyinari basis dari fototransistor maka

fototransistor akan ON, keadaan ON seperti saklar ditutup atau Va

Page 32: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

32

dihubungsingkat dengan ground sehingga besar tegangan Va = 0 volt atau

memiliki logika ‘0’, dan jika cahaya LED terhalangi oleh sesuatu sehingga tidak

sampai menyinari basis dari fototransistor maka fototransistor akan OFF, keadaan

OFF seperti saklar dibuka atau Va dan ground tidak ada hubungan sehingga

tegangan Va = 5 Volt atau memiliki logika ‘1’.

Latihan 1.

Buat algoritma, flowcart dan program untuk menghitung jumlah mobil yang

parkir yang telah disediakan seperti dalam Gambar 2.8. Di pintu masuk (IN)

dipasang sensor fototransistor yang dihubungkan dengan Port A bit 0 atau PA0

dan di pintu keluar (OUT) dipasang sensor fototransistor yang dihubungkan

dengan Port A bit 1 atau PA1. Setiap ada mobil masuk maka sensor IN akan

terhalang dan jumlah mobil akan bertambah, dan setiap ada mobil keluar maka

sensor OUT akan terhalang dan jumlah mobil akan berkurang. Bila jumlah mobil

> 10 maka LED1 ON, bila jumlah mobil > 20 LED2 ON, bila jumlah mobil > 30

LED3 ON dan bila jumlah mobil > LED4 ON.

Gambar 2.8. Rangkaian Mikrokontroler Penghitung Mobil

Page 33: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

33

Fototransistor juga digunakan sebagai sensor untuk mengetahui warna

hitam atau putih, oleh karena itu fototransistor dapat digunakan untuk sensor

robot line follower, jika sensor berada diatas garis putih maka warna putih akan

memantulkan cahaya LED sehingga fototransistor menjadi ON, sedangkan jika

sensor berada di atas garis warna hitam atau gelap maka cahaya LED tidak akan

terpantulkan sehingga fototransistor menjadi OFF.

Latihan 2.

Buat flowcart dan program untuk robot line follower dengan 4 sensor

fototransistor seperti yang ditunjukkan dalam Gambar 2.9.

Gambar 2.9. Blok Diagram Robot Line Follower

Motor KIRI

Motor KANAN

Sensor 1

Sensor 2

Sensor 3

Sensor 4

PA0

PC0 PA1 PA2

PC1 PA3

Sensor 1/S1

Motor KIRI

Motor KANAN

Sensor 2/S2

Sensor 3/S3

Sensor 4/S4

Page 34: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

34

Dari Gambar 2.9 ada ketentuan seperti yang ditunjukkan dalam Tabel 2.1.

Tabel 2.1. Ketentuan Posisi Sensor-Sensor Robot Line Follower

S4 S3 S2 S1 ROBOT Motor

KANAN

Motor

KIRI

OFF ON ON OFF MAJU ON ON

ON ON OFF OFF BELOK

KANAN

OFF ON

ON OFF OFF OFF BELOK

KANAN

OFF ON

OFF OFF ON ON BELOK KIRI ON OFF

OFF OFF OFF ON BELOK KIRI ON OFF

OFF OFF OFF OFF BERHENTI OFF OFF

Karena rangkaian yang digunakan sebagai sensor seperti Gambar 2.7 maka

hubungan antara sensor S1, S2, S3 dan S4 dan PA0, PA1, PA2 dan PA3

ditunjukkan dalam Tabel 2.2. Sedangkan untuk hubungan pengendalian motor dan

PC0 dan PC1 ditunjukkan dalam Tabel 2.3. Sehingga hubungan antara Port A dan

Port C ditunjukkan dalam Tabel 2.4.

Tabel 2.2. Hubungan antara Sensor dan Port A

S4 S3 S2 S1 PA3 PA2 PA1 PA0 Nilai Hex

OFF ON ON OFF 1 0 0 1 0x09

ON ON OFF OFF 0 0 1 1 0x03

ON OFF OFF OFF 0 1 1 1 0x07

OFF OFF ON ON 1 1 0 0 0x0c

OFF OFF OFF ON 1 1 1 0 0x0e

OFF OFF OFF OFF 1 1 1 1 0x0f

Page 35: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

35

Tabel 2.3. Hubungan antara Pengedalian Motor dan Port C

ROBOT Motor KANAN Motor KIRI PC1 PC0

MAJU ON ON 1 1

BELOK KANAN OFF ON 1 0

BELOK KANAN OFF ON 1 0

BELOK KIRI ON OFF 0 1

BELOK KIRI ON OFF 0 1

BERHENTI OFF OFF 0 0

Tabel 2.4. Hubungan antara Port A dan Port C

PA3 PA2 PA1 PA0 Nilai Hex Desimal PC1 PC0

1 0 0 1 0x09 9 1 1

0 0 1 1 0x03 3 1 0

0 1 1 1 0x07 7 1 0

1 1 0 0 0x0c 12 0 1

1 1 1 0 0x0e 14 0 1

1 1 1 1 0x0f 15 0 0

Flowcart ditunjukkan dalam Gambat 2.10.

Page 36: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

36

Gambar 2.10. Flowcart Robot Line Follower

Program dari flowcart Gambar 2.10 sebagai berikut:

#include <mega16.h>

unsigned char Data_in;

void main (void)

{

DDRA = 0x00; // PA input

DDRC = 0xff; // PC output

while (1)

{

Data_in = PINA;

if(Data_in = 9)

{

PORTC.0 = 1;

PORTC.1 = 1;

Page 37: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

37

}

if(Data_in = 3)

{

PORTC.0 = 0;

PORTC.1 = 1;

}

if(Data_in = 12)

{

PORTC.0 = 1;

PORTC.1 = 0;

}

if(Data_in =15)

{

PORTC.0 = 0;

PORTC.1 = 0;

}

if(Data_in = 7)

{

PORTC.0 = 0;

PORTC.1 = 1;

}

if(Data_in = 14)

{

PORTC.0 = 1;

PORTC.1 = 0;

}

}}

2.3. TAMPILAN SEVEN SEGMEN

Tampilan seven segmen merupakan sebuah tampilan yang terdiri dari

tujuh segmen LED yang disusun untuk menampilkan angka 0 sampai 9 Seperti

yang ditunjukkan dalam Gambar 2.11. Dan untuk setiap segmen diberi kode

dengan huruf a, b, c, d, e, f, g dan d.p. Ada dua jenis seven segmen yaitu common

Page 38: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

38

anoda (CA) dan common katoda (CC). Untuk common anoda (CA), karena yang

dijadikan satu adalah anoda maka CA dihubungkan dengan Vcc, sehingga untuk

menyalakan segmen maka pin dari segemen tersebut diberi logika 0 atau 0 Volt,

sedang untuk common katode (CC), karena yang dijadikan satu adalah Ground

maka untuk menyalakan segmen pin dari segmen tersebut diberi logika 1 atau 5

Volt.

Gambar 2.11. Tampilan Seven Segmen(Seven Segment Display,2002;4) Contoh Soal 3.

Buat Flowcart dan program untuk menampilkan angka 0 sampai 9 di seven

segmen dihubung dengan Port C seperti gambar 2.12.

Gambar 2.12. Blok Diagram Hubungan antara Port C dengan Seven Segmen

Page 39: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

39

Jawab:

Tampilan seven segmen yang digunakan jenis Common Anoda maka untuk

membuat segmen menyala adalah dengan memberikan logika 0 dan untuk

mematikan segmen diberi logika 1, sehingga untuk menampilkan angka 0 sampai

9 dibutuhkan kombinasi logika 0 dan 1 dari setiap segmen yang dihubungkan

dengan Port C. Dan hasil dari kombinasi nilai Port C untuk menampilkan seven

segmen ditunjukkan dalam Tabel 2.5.

Tabel 2.5. Nilai Port C untuk menampilkan angka 0 sampai 9

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 Nilai Hex

PC Tampilan dot g f e d c b a

1 1 0 0 0 0 0 0 0xC0

1 1 1 1 1 0 0 1 0xF9

1 0 1 0 0 1 0 0 0xA4

1 0 1 1 0 0 0 0 0xB0

1 0 0 1 1 0 0 1 0x99

1 0 0 1 0 0 1 0 0x92

1 0 0 0 0 0 1 0 0x82

1 1 1 1 1 0 0 0 0xF8

1 0 0 0 0 0 0 0 0x80

1 0 0 1 0 0 0 0 0x90

Jawab: Flowcart ditunjukkan dalam Gambar 2.12.

Page 40: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

40

Gambar 2.12. Flowcart Contoh Soal 2

Program:

# include <mega 16.h> // ambil fungsi untuk ATMega 16

# include <delay.h> // ambil fungsi untuk waktu tunda

void main (void)

{

DDRC = 0xff ; // Port C sebagai Output

while (1)

{

PORTC = 0xC0 ; // tampil angka 0

delay_ms (500) ; // tunda 500 ms

PORTC = 0xF9 ; // tampil angka 1

delay_ms (500) ;

PORTC = 0xA4 ; // tampil angka 2

delay_ms (500) ;

PORTC = 0xB0 ; // tampil angka 3

delay_ms (500) ;

PORTC = 0x99 ; // tampil angka 4

Page 41: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

41

delay_ms (500) ;

PORTC = 0x92 ; // tampil angka 5

delay_ms (500) ;

PORTC = 0x82 ; // tampil angka 6

delay_ms (500) ;

PORTC = 0xF8 ; // tampil angka 7

delay_ms (500) ;

PORTC = 0z80 ; // tampil angka 8

delay_ms (500) ;

PORTC = 0x90 ; // tampil angka 9

delay_ms (500) ;

}

}

Latihan 2.

Dengan menggunakan Gambar 2.11 buat flowcart dan program untuk

menampilkan NIM di tampilan seven segmen.

Page 42: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

42

BAB III ANALOG TO DIGITAL CONVERTER (ADC)

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menyusun algoritma, flowcart dan program dengan memanfaatkan unit Analog

to Digital Convert dan unit input-output ATMega16.

3.1. ADC DALAM ATMEGA 16

ATMega memiliki ADC jenis successive approximation dengan data

output sebanyak 10 bit. Ada 8 kanal input ADC yang dimultiplekser dengan pin

Port A dengan acuan 0 Volt atau Ground. ADC juga dilengkapi dengan rangkaian

sample and hold yang menjamin tegangan masukan ADC berada dalam keadaan

konstan saat proses konversi dan Gambar 3.1 menunjukkan blok diagram dari

Skema ADC di mikrokontroler ATMega 16.

Gambar 3.1. Blok Diagram ADC ATMega 16 (ATMega16,2010;205)

Page 43: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

43

Dalam operasinya ADC mengubah tegangan masukan analog ke dalam 10

bit nilai digital dengan successive approximation. Gnd sebagai nilai minimal dan

nilai maksimal mewakili tegangan di pin AREF – 1 LSB, Biasanya AVCC atau

tegangan reverensi internal 1.56 Volt yang mungkin terhubung ke pin AREF

dengan mengatur bit REFSn di register ADMUX.

ADC diaktifkan dengan mengatur bit ADC Enable, ADEN di register

ADCSRA. Tegangan referensi dan saluran masukan ADC yang dipilih tidak akan

berlaku sampai ADEN di set ‘1’.

ADC menghasilkan nilai 10-bit yang disajikan dalam dua register data

ADC yaitu ADCH dan ADCL. Secara default, hasilnya disajikan right adjusted (2

bit di ADCH dan 8 bit di ADCL), tetapi secara opsional dapat disajikan left

adjusted (8 bit di ADCH dan 2 bit di ADCL) dengan mengatur bit ADLAR di

ADMUX. Jika yang dipilih left adjusted maka ADC digunakan dalam 8 bit saja

dengan cukup mengambil data di ADCH. Untuk right adjusted, ADCL dibaca

dahulu setelah itu ADCH agar data yang didapatkan tidak hilang atau rusak.

Sebuah konversi tunggal dimulai dengan menulis logika satu ke bit Start

Convertion ADC atau ADSC di register ADCSRA. Bit ini akan tetap tinggi

selama konversi sedang berlangsung dan akan dihapus oleh hardware bila

konversi selesai. Dan Jika selesai maka bit ADIF akan bernilai satu yang

memberikan tanda bahwa konversi sudah selesai sehingga data hasil konversi

dapat dibaca di ADCH dan ADCL.

Konversi dapat juga dipicu secara otomatis oleh berbagai sumber. Auto

Trigger diaktifkan dengan memberikan logika satu pada bit ADC Auto Trigger

atau ADATE di register ADCSRA. Sumber pemicu dapat dipilih dengan

mengatur bit ADC Trigger Select atau ADTs di register SFIOR.

Modul ADC berisi prescaler, yang menghasilkan frekuensi clock ADC

diterima dari frekuensi CPU. Prescaling diatur oleh bit ADPS di register

ADCSRA. Prescaler mulai bekerja mulai ADC diaktifkan dengan memberi logika

satu di bit ADEN di ADCSRA. Dan akan berhenti jika ADEN diberi logika nol

atau rendah.

Page 44: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

44

Ada beberapa register yang digunakan untuk ADC yaitu:

1. Register ADMUX atau register ADC Multiplexer, dinamakan demikian

karena di dalam register tersebut ada bit-bit yang digunakan untuk memilih

saluran dari input ADC, untuk bit-bit dari ADMUX ditunjukkan dalam

Gambar 3.2.

Gambar 3.2. Bit-bit dalam Register ADMUX(ATMega16,2010;217)

Keterangan dari fungsi bit-bit ADMUX Gambar 3.2 adalah sebagai berikut:

- REF0 dan REF1 (Reference) adalah bit-bit yang digunakan untuk memilih

tegangan referensi dari ADC dan table 3.1 menunjukkan beberapa

tegangan referensi yang dapat digunakan.

Tabel 3.1. Pilihan Tegangan Referensi ADC (ATMega16,2010;217)

REFS1 REFS0 Pilihan tegangan referensi

0 0 AREF (pin 32)

0 1 AVCC (pin 30)

1 0 Tidak digunakan

1 1 Vref internal 2,56V

- ADLAR (ADC Left Adjust Result) adalah bit yang digunakan untuk

menentukan format data hasil konversi ADC. Bila ADLAR = 0 maka hasil

konversi 10 bit disimpan dalam format: 2 bit disimpan di ADCH dan 8 bit

di ADCL seperti ditunjukkan dalam Gambar 3.3, sedangkan bila ADLAR

= 1 maka hasil konversi 10 bit disimpan dalam format: 8 bit disimpan di

ADCH dan 2 bit di ADCL seperti ditunjukkan dalam Gambar 3.4.

Gambar 3.3. Format Hasil Konversi Bila DLAR sama dengan 0 (ATMega16,2010;220)

Page 45: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

45

Gambar 3.4. Format Hasil Konversi Bila DLAR sama dengan 1(ATMega16,2010;220)

- MUX4, MUX3, MUX2, MUX1 dan MUX0, adalah bit-bit yang digunakan

untuk memilih input analog yang akan dikonversi oleh ADC. Kombinasi

MUX4 sampai MUX0 untuk jenis input ADC dengan acuan Ground

(single Ended Input) ditunjukan dalam table 3.2.

Tabel 3.2. Kanal Input ADC untuk jenis Single Ended Input

MUX4 MUX3 MUX2 MUX1 MUX0 Nilai Pilihan Input

ADC

0 0 0 0 0 0 ADC0 0 0 0 0 1 1 ADC1

0 0 0 1 0 2 ADC2

0 0 0 1 1 3 ADC3

0 0 1 0 0 4 ADC4

0 0 1 0 1 5 ADC5

0 0 1 1 0 6 ADC6

0 0 1 1 1 7 ADC7

2. Register ADCSRA atau ADC Control Status Register A, dinamakan demikian

karena register ini tempat untuk mengendalikan (Control) dan dan

mengetahui keadaan (Status) dari ADC, dan untuk bit-bitnya ditunjukkan

dalam Gambar 3.5.

Gambar 3.5. Bit-bit dalam register ADCSRA(ATMega16,2010;219)

Page 46: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

46

Keterangan dari fungsi bit-bit ADCSRA adalah sebagai berikut:

- ADEN atau ADC Enable, merupakan bit untuk mengaktifkan ADC, bila

ADEN = 1 maka ADC aktif dan Port A tidak aktif, bila ADEN = 0 maka

ADC tidak aktif dan Port A aktif.

- ADSC atau ADC Start Convertion, merupakan bit yang digunakan untuk

memberikan perintah mulai konversi, bila ADSC = 1, maka ADC mulai

bekerja untuk mengkonversi input analog dan akan berlogika 0 bila selesai

konversi.

- ADATE atau ADC Auto Trigger Enable, merupakan bit yang digunakan

untuk mengendalikan aktivasi picu otomatis. Jika ADATE = 1 maka

konversi ADC akan dimulai pada saat tepi positif pada sinyal trigger yang

digunakan.

- ADIF atau ADC Interrupt Flag, merupakan bit penanda akhir konversi

ADC. Jika ADIF = 1 maka konversi ADC pada suatu saluran telah selesai

dan siap diakses.

- ADIE atau ADC Interrupt Enabe, merupakan bit pengatur aktivasi

interupsi. Jika ADIE = 1 maka interupsi telah diaktifkan untuk melayani

proses konversi ADC.

- ADPS2, ADPS1 dan ADPS0 atau ADC Prescaler Select, merupakan bit-

bit yang digunakan untuk mengatur frukeunsi clock ADC dan Tabel 3.3

merupakan pemilihan frekuensi clok ADC dengan frekuansi osilator (fosc)

dari mikrokontroler ATMega 16 digunakan sebagai sumber clock dan nilai

ADPSn digunakan untuk memilih pembagi frekuansi.

Tabel 3.3. Frekuensi clock ADC(ATMega16,2010;220)

ADPS2 ADPS1 ADPS0 Clock ADC 0 0 0 fosc /2 0 0 1 fosc /2 0 1 0 fosc /4 0 1 1 fosc /8 1 0 0 fosc /16 1 0 1 fosc /32 1 1 0 fosc /64 1 1 1 fosc 128

Page 47: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

47

3.2. LANGKAH-LANGKAH PENGGUNAAN ADC

Dalam menggunakan ADC untuk mengkonversi tegangan analog menjadi

nilai digital ada beberapa langkah yang diperlukan agar mendapatkan hasil yang

diharapkan adalah sebagai berikut:

a. Memilih besar tegangan referensi atau VREF, di dalam ADC ATMega 16 ada

3 pilihan yaitu AVCC (5 Volt), 2,56 Volt dan dengan melalui pin AREF

(selain 5 Volt dan 2,56 Volt). Pemilihan VREF ini ditentukan oleh besar step

size atau besar sensivitas dari sensor yang digunakan sebagai tegangan input

analog.

Dengan rumus:

step size atau 12

nREFVss n = jumlah bit data digital

atau VREF = ss x (2n-1)

Step size digunakan oleh ADC untuk mendapatkan nilai data digital hasil

konversi dengan rumus:

ssVinDigitalData _

Vin = tegangan input ADC

Contoh .

- Sensor suhu LM35 memiliki sensivitas sensor 10mV/oC, berarti bahwa

saat temperature 25oC maka LM35 mengeluarkan tegangan sebesar:

25x10mV=250 mV, 25oC setara dengan 250 mV, berapa besar VREF

yang cocok untuk sensor LM35 bila jumlah data digitalnya sama dengan 8

bit?

Jawab:

Step size = 10 mV dan n = 8 maka

VREF = ss x (2n-1) = 10 mV x (28-1)

= 10 mV x 255 = 2550 mV = 2,55 Volt atau VREF = 2,56 Volt

- Bila temperature ruangan 27oC berapa data digital hasil konversi ADC?

Jawab:

Besar tegangan input ADC atau Vin = 27 x 10mV = 270 mV

Maka Data Digital = 270mV/10mV = 27 atau 0x1B

Page 48: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

48

b. Memilih saluran ADC yang akan digunakan sebagai input tegangan analog

c. Memilih jumlah bit data digital hasil konnversi

d. Mengaktifkan ADC dan Memilih frekuensi clock ADC

Langkah a, b, c dan d merupakan langkah-langkah untuk inisialisasi ADC.

Contoh:

Bila dipilih VREF = 2,56 Volt atau step size = 10 mV, saluran ADC yang

digunakan ADC0, hasil data digital 8 bit, ADC aktif dan frekuensi clock ADC =

fosc/8, berapa nilai register ADMUX dan ADCSRA?

Jawab:

Dengan table 3.1, 3.2 dan 3.3 digunakan sebagai acuan maka:

1 1 1 0 0 0 0 0 = 0xE0

Keterangan: untuk hasil data digital 8 bit maka DLAR = 1 dan disimpan di ADCH

1 0 0 0 0 0 1 1 = 0x83

Jadi untuk ADMUX = 0xE0 dan ADCSRA = 0x83

e. Setelah dilakukan inisialisasi maka ADC dapat digunakan, dan untuk memulai

maka bit ADSC register ADCSRA diberi nilai 1

f. Dan hasil baru dapat diambil bila ADIF = 1, untuk 8 bit hasil di register

ADCH sedangkan untuk 10 bit hasil di register ADCL dan ADCH.

3.3. LM35

LM35 merupakan IC sensor suhu yang presisi, dengan tegangan output

yang linear sebanding dengan suhu dalam Celcius. LM35 memiliki keuntungan

lebih linear dari sensor suhu yang dikalibrasi dalam o Kelvin sehingga LM35 tidak

memerlukan kalibrasi eksternal. LM35 memiliki impedansi keluaran rendah,

output yang linier, dan kalibrasi yang melekat membuat pembacaan antarmuka

dengan sirkuit kontrol sangat mudah. LM35 dapat digunakan dengan catu daya

tunggal, atau catu daya dengan plus dan minus. Salah satu rangkaian yang sering

digunakan dalam aplikasi ditunjukkan dalam Gambar 3.6. Sedangkan untuk salah

satu bentuk fisik tipe To-92 ditunjukkan dalam Gambar 3.7.

Page 49: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

49

Gambar 3.6. Rangkaian Sensor Suhu dalam Celcius (LM35,1994;1)

Gambar 3.7. Salah Satu Bentuk Fisik LM35 (LM35,1994;1)

Untuk fitur-fitur yang dimiliki oleh LM35 adalah sebagai berikut:

Dikalibrasi langsung dalam oCelcius (celcius)

sensivitasnya atau faktor skala yang Linear = 10,0 mV / oC

Akurasi 0,5 oC (pada 25 oC)

rentang suhu dari - 55 sampai +150 oC

Cocok untuk aplikasi remote

Murah

Beroperasi dari 4 sampai 30 Volt

Arus Drain kurang dari 60 mA

Impedansi Output rendah, 0,1 Ohm untuk 1 beban mA

Contoh Soal1.

Buat Algoritma, flowcart dan program untuk pengaturan suhu tangki pada

Gambar 3.8 pada suhu 45oC, dan besar suhu ditampilkan ke PB untuk nilai

puluhan dan PC untuk nilai satuan. IC LM35 digunakan sebagai sensor suhu.

Page 50: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

50

Gambar 3.8. Pengendalian Suhu Tangki dengan ATMega 16

Jawab:

Algoritma:

1. IC LM35 digunakan sebagai sensor suhu memiliki sensivitas 10 mV/oC

maka step size ADC juga 10 mV, data hasil digital dalam 8 bit maka:

VREF = ss (2n-1) = 10 (28-1) = 10 x 255 = 2550 mV = 2,55 Volt dipilih

2,56 Volt, untuk tegangan input analog dihubungkan dengan PA0 atau

ADC0 maka ADMUX sebagai berikut

1 1 1 0 0 0 0 0 = 0xE0

ADMUX = 0xE0

Sedangkan untuk frekuensi clock ADC dipilih fosc/16 maka:

1 0 0 0 0 1 0 0 = 0x84

ADCSRA = 0x84

Page 51: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

51

2. PB dan PD dihubungkan dengan seven segment sehingga PB dan PD

sebagai Output maka DDRB = 0xff dan DDRD = 0xff; demikian juga

untuk PC yang dihubungkan dengan rangkaian pengendali relay juga

sebagai output maka DDRC = 0xff.

3. Start Konversi ADC dengan memberikan logika 1 di bit ADSC register

ADCSRA

4. Tunggu apakah sudah selesai konversi dengan mengecek bit ADIF register

ADCSRA apakah sudah bernilai 1? Kalau belum tunggu sampai bernilai 1.

5. simpan data hasil konversi ADCH ke dataADC

6. Bandingkan dataADC dengan 45, bila lebih besar maka matikan pemanas

dengan memberi PC0 = 0, bila tidak maka hidupkan pemanas dengan

member PC0 =1

7. Pilah dataADC menjadi nilai Puluhan dan satuan

8. Ambil kode seven segmen dari puluhan dan tampilkan di PB dan ambil

kode seven segmen dari satuan dan tampilan di PD

9. Ulangi ke nomor 3

Dari algoritma 1 sampai 9 maka dibuat flowcart seperti yang ditunjukkan

dalam Gambar 3.9 sebagai berikut:

Gambar 3.9. Flowcart Pengendali Suhu Tangki

Page 52: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

52

Program dari Flowcart Gambar 3.9 sebagai berikut :

#include <mega16.h>

unsigned char dataADC, Pul, Sat ;

unsigned char sevensegmen [10] ={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,

0xF8, 0x80, 0x90}

void main(void)

{

ADMUX=0xE0; // inisialisasi

ADCSRA=0x83;

DDRC=0xFF;

DDRB = 0xff;

DDRD = 0xff;

while(1)

{

ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1

while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu sampai =1

dataADC=ADCH; // ambil data hasil konversi

ADCSRA=ADCSRA|0x10;

if (dataADC > 45) // bila > 45

{

PORTC.0=0; // off pemanas

}

else {

PORTC.0=1; // on pemanas

}

Pul = (dataADC %100)/10; // nilai puluhan di Pul

Sat = dataADC % 10; // nilai satuan di Sat

PORTB = sevensegmen[Pul]; // ambil kode dari array sevensegmen

PORTD = sevensegmen [Sat]; // ambil kode dari array sevensegmen

}

}

Page 53: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

53

Contoh Soal 2.

Pada Gambar 3.10 sebuah sensor tekanan memiliki sensivitas 20 mV/N

dihubungkan dengan PA7. Dan PC0 sampai PC5 digunakan sebagai indicator

besarnya tekanan sebagai berikut:

- bila tekanan > 40 N maka LED di PC0 menyala

- bila tekanan > 80 N maka LED di PC1 menyala

- bila tekanan > 120 N maka LED di PC2 menyala

- bila tekanan > 160 N maka LED di PC3 menyala

- bila tekanan > 200 N maka LED di PC4 menyala

- bila tekanan > 240 N maka LED di PC4 menyala

Gambar 3.10. Tampilan Indikator Tekanan dengan ATMega 16

Buat Algotirma, Flowcart dan Programnya:

Jawab:

Algotirma:

1. sensor tekanan memiliki sensivitas 20 mV/N maka step size ADC juga 20

mV, data hasil digital dalam 8 bit maka:

VREF = ss (2n-1) = 20 (28-1) = 20 x 255 = 5100 mV = 5,1 Volt dipilih 5

Volt atau AVCC, untuk tegangan input analog dihubungkan dengan PA7

atau ADC7 maka ADMUX sebagai berikut

Page 54: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

54

0 1 1 0 0 1 1 1 = 0x67

ADMUX = 0x67

Sedangkan untuk frekuensi clock ADC dipilih fosc/16 maka:

1 0 0 0 0 1 0 0 = 0x84

ADCSRA = 0x84

2. PC yang dihubungkan dengan LED indicator besarnya tekanan maka PC

sebagai output, DDRC = 0xff.

3. Start Konversi ADC dengan memberikan logika 1 di bit ADSC register

ADCSRA

4. Tunggu apakah sudah selesai konversi dengan mengecek bit ADIF register

ADCSRA apakah sudah bernilai 1? Kalau belum tunggu sampai bernilai 1.

5. simpan data hasil konversi ADCH ke dataADC

6. Bandingkan dataADC dengan 40, bila lebih besar maka PC0 = 1, bila

tidak PC0 =0

7. Bandingkan dataADC dengan 80, bila lebih besar maka PC1 = 1, bila

tidak PC1 =0

8. Bandingkan dataADC dengan 120, bila lebih besar maka PC2 = 1, bila

tidak PC2 =0

9. Bandingkan dataADC dengan 160, bila lebih besar maka PC3 = 1, bila

tidak PC3 =0

10. Bandingkan dataADC dengan 200, bila lebih besar maka PC4 = 1, bila

tidak PC4 =0

11. Bandingkan dataADC dengan 240, bila lebih besar maka PC5 = 1, bila

tidak PC5 =0

12. Ulangi ke nomor 3

Dari algoritma 1 sampai 12 maka dibuat flowcart seperti yang ditunjukkan

dalam Gambar 3.10 sebagai berikut:

Flowchart:

Flowcart dari algoritma 1 sampai 12 ditunjukkan dalam Gambar 3.11

Page 55: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

55

Gambar 3.11. Flowcart Indicator Tekanan dengan ATMega 16

Program dari flowcart Gambar 3.11 sebagai berikut:

#include<mega16.h>

unsigned char dataADC;

void main(void)

{

Page 56: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

56

ADMUX=0X67;

ADCSRA=0X83;

DDRC=0XFF;

while(1)

{

ADCSRA= ADSC|0X40;

while(ADCSRA&0X10=0);

dataADC=ADCH;

if (dataADC<250)

{

PORTC.0=1;

}

else {

PORTC.0=0;

}

if (dataADC<200)

{

PORTC.1=1;

}

Else {

PORTC.1=0;

}

if (dataADC<150)

{

PORTC.2=1;

}

else {

PORTC.2=0;

}

if (dataADC<100)

{

PORTC.3=1;

Page 57: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

57

}

else {

PORTC.3=0;

}

if (dataADC<20)

{

PORTC.4=1;

}

else {

PORTC.4=0;

}

ADCSRA.4=1;

}

}

Latihan 1:

Buat Blok Diagram, algoritma, Flowcart dan Program untuk membandingkan dua

buah sensor suhu LM35, sensor 1 (S1) dihubungkan dengan ADC0 dan sensor 2

(S2) dihubungkan dengan ADC7, bila suhu S1> S2 maka Led di Port C akan

menyala semua, bila S1<S2 maka led di Port C akan mati semua, dan bila S1=S2

maka led akan menyala separuh saja.

Page 58: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

58

BAB IV UNIVERSAL SYNCHRONOUS AND ASYNCHRONOUS

SERIAL RECEIVER TRANSMITTER (USART)

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menyusun algoritma, flowcart dan program dengan memanfaatkan unit

USART, unit ADC dan unit input-output ATMega16 untuk proses telemetri

dan telekontrol.

4.1. USART DALAM AT MEGA 16

Universal Synchronous dan Asynchronous dan Transmitter (USART)

adalah perangkat komunikasi serial yang sangat fleksibel. Fitur-fitur utama adalah

sebagai berikut:

Operasi full duplex

Operasi asinkron atau sinkron

Master atau slave clock pada operasi sinkron

Generator baud rate resolusi tinggi

Mendukung frame serial dengan 5, 6, 7, 8, atau 9 bit data dan 1 atau 2 bit

stop

Paritas ganjil atau genap

Deteksi data over run

Deteksi kesalahan framing

Filter terhadap gangguan termasuk deteksi bit start palsu dan low pass

filter digital

Tiga Interrupsi terpisah di TX komplit, TX Data Register Empty, dan RX

komplit

Mode Komunikasi Multi-prosesor

Kecepatan ganda pada mode komunikasi asinkron

Blok diagram sederhana dari USART ditunjukkan pada Gambar 4.1 dan untuk

Register I/O dan pin I/O yang dapat diakses ditampilkan dengan huruf tebal

seperti Register UCSRA, UCSRB, UCSRC, UDR dan UBRR, serta pin RxD,

TxD dan XCK.

Page 59: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

59

Gambar 4.1. Blok Diagram USART pada ATMega 16 (ATMega16,2010;144)

Dalam Gambar 4.1, kotak-kotak yang putus-putus dalam blok diagram

memisahkan tiga bagian utama dari USART yaitu: Generator Clock, Transmitter

dan Receiver. Register Kontrol dibagi ke semua unit. Clock pembangkit logika

terdiri dari logika sinkronisasi untuk masukan clock eksternal yang digunakan

oleh operasi sinkron slave dan generator baud rate. Pin XCK (Clock Transfer)

hanya digunakan oleh mode Transfer Sinkron. Transmitter terdiri dari buffer

register tulis, serial Shift regiseter, generator paritas dan kontrol logika untuk

menangani berbagai format bingkai (frame) serial. Buffer register tulis

memungkinkan transfer data yang berkelanjutan tanpa ada penundaan antara

frame. Pada receiver merupakan bagian paling kompleks dari modul USART

karena clock dan unit pemulihan data. Unit-unit pemulihan digunakan untuk

penerimaan data asinkron. Tambahan fungsi untuk unit pemulihan berupa

Page 60: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

60

pemeriksa paritas penerima (receiver), logika kontrol, Shift Register dan dua

tingkat receive buffer (UDR). Receiver mendukung format frame yang sama

seperti transmitter, dan dapat mendeteksi kesalahan frame, overrun data dan

kesalahan paritas.

Untuk dapat menggunakan USART, perlu diketahui dari fungsi-fungsi

masing-masing register yang ada di dalam Blok diagram pada Gambar 4.1.

Register-register tersebut sebagai berikut:

1. UDR atau USART Data Register

Gambar 4.2. Register UDR (ATMega16,2010;163)

USART Transmit Data Buffer Register dan USART Receive Data Buffer

Register menggunakan alamat I/O yang sama yang disebut USART Data

Register atau UDR. Transmitter Data Buffer Register (TXB) akan menjadi

tujuan dari penulisan data ke lokasi register UDR sedangkan saat membaca

register UDR akan mendapatkan isi dari Receiver Data Buffer Register (RXB)

seperti yang ditunjukkan dalam Gambar 4.2.

2. UCSRA atau USART Control Status Register A, Nama bit-bit UCSRA ditunjukkan dalam Gambar 4.3.

Gambar 4.3. Bit-Bit Register UCSRA (ATMega16,2010;164)

Keterangan bit-bit Register UCSRA adalah sebagai berikut:

- Bit 7 – RXC: USART Receive Complete

Merupakan bit tanda bahwa ada data yang telah masuk secara serial

melalui pin RxD. Bernilai logika satu bila ada data masuk ke buffer

penerima dan belum dibaca, bila data sudah dibaca maka akan berubah

menjadi nol. Bit RXC ini juga digunakan untuk membangkitkan intrupsi

Receive Complete.

Page 61: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

61

- Bit 6 – TXC: USART Transmit Complete

Merupakan bit tanda bila semua data sudah komplit dikirim secara serial

melalui pin TxD. Bernilai logika satu bila transmit shift register telah

kosong dan tidak ada data baru dalam transmit buffer (UDR). Bit TXC ini

akan berubah menjadi nol secara otomatis saat intrupsi transmit complete

dikerjakan atau dapat di-nol-kan dengan menuliskan satu ke bit ini. Tanda

TXC juga membangkitkan sebuah intrupsi Transmit Complete.

- Bit 5 – UDRE: USART Data Register Empty

Tanda UDRE menunjukkan jika transmit buffer (UDR) siap menerima

data. Bila UDRE berlogika satu buffer kosong, berarti siap untuk ditulis.

Tanda UDRE dapat membangkitkan intrupsi Data Register Empty. UDRE

berlogika satu untuk menunjukkan bagian transmitter siap.

- Bit 4 – FE: Frame Error

Bit berlogika satu jika karakter berikutnya dalam buffer penerima terjadi

frame error ketika menerima yaitu saat stop bit pertama dari karakter

berikutnya dalam buffer penerima (receiver) adalah nol. Bit FE adalah nol

ketika stop bit data yang diterima adalah satu. Beri bit ini nol saat menulis

ke UCSRA.

- Bit 3 – DOR: Data OverRun

Bit ini berlogika satu jika kondisi over run data terdeteksi. Sebuah data

overrun terjadi ketika buffer penerima penuh (dua karakter), ada karakter

baru yang menunggu dalam shift Registre penerima, dan start bit baru

terdeteksi. Beri bit ini ke nol saat menulis ke UCSRA.

- Bit 2 – PE: Parity Error

Bit ini berlogika satu jika karakter berikutnya dalam buffer penerima

memiliki kesalahan paritas (Parity Error) saat diterima dan pengecekan

paritas telah diaktifkan pada bagian UPM1 = 1. Beri bit ini nol saat

menulis ke UCSRA.

- Bit 1 – U2X: Double the USART Transmission Speed

Bit ini hanya berpengaruh untuk operasi asinkron. Beri bit ini nol bila

menggunakan sinkron operasi. Bila bit ini diberi nilai logika satu maka

Page 62: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

62

akan mengurangi pembagi dari pembagi baud rate dari 16 ke 8 sehingga

secara efektif menggandakan transfer rate untuk komunikasi asinkron.

- Bit 0 – MPCM: Multi-processor Communication Mode

Bit ini memungkinkan Modus komunikasi multi-prosesor. Apabila bit

MPCM diberi logika satu, maka semua frame yang diterima oleh penerima

USART yang tidak mengandung informasi alamat akan diabaikan.

Transmiiter tidak dipengaruhi oleh pengaturan MPCM.

3. UCSRB atau USART Control Status Register B

Nama bit-bitnya ditunjukkan dalam Gambar 4.4.

Gambar 4.4. Bit-bit Register UCSRB (ATMega16,2010;165)

Keterangan bit-bit Register UCSRB adalah sebagai berikut:

- Bit 7 – RXCIE: RX Complete Interrupt Enable

Bit ini digunakan untuk mengaktifkan intrupsi saat ada data masuk di

buffer penerima atau saat RXC bernilai satu. Jika diberi logika satu maka

intrupsi diaktifkan dan bila diberi nol maka intrupsi tidak aktif.

- Bit 6 – TXCIE: TX Complete Interrupt Enable

Bit ini digunakan untuk mengaktifkan intrupsi saat data sudah selesai

dikirimkan atau saat TXC sama dengan satu. Jika diberi logika satu maka

intrupsi diaktifkan dan bila diberi nol maka intrupsi tidak aktif.

- Bit 5 – UDRIE: USART Data Register Empty Interrupt Enable

Bit ini digunakan untuk mengaktifkan intrupsi saat UDRE sama dengan

satu. Jika diberi logika satu maka intrupsi diaktifkan dan bila diberi nol

maka intrupsi tidak aktif.

- Bit 4 – RXEN: Receiver Enable

Bit ini digunakan untuk mengaktifkan bagian penerima (receiver)

USART, dan pin RxD digunakan sebagai jalur komunikasi serial. Bila

diberi logika satu akan aktif dan logika nol untuk non aktif

- Bit 3 – TXEN: Transmitter Enable

Page 63: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

63

- Bit ini digunakan untuk mengaktifkan bagian pengirim (transmitter)

USART, dan pin TxD digunakan sebagai jalur komunikasi serial. Bila

diberi logika satu akan aktif dan logika nol untuk non aktif

- Bit 2 – UCSZ2: Character Size

Bit UCSZ2 dikombinasikan dengan bit UCSZ1 dan UCSZ0 bit dalam

register UCSRC untuk menetapkan jumlah bit data atau ukuran karakter

dalam frame untuk penerima (receiver) dan pemancar (transmitter).

- Bit 1 – RXB8: Receive Data Bit 8

RXB8 adalah bit data kesembilan dari karakter yang diterima ketika

beroperasi dengan frame serial dengan sembilan bit data. Harus dibaca

sebelum membaca bit rendah dari UDR.

- Bit 0 – TXB8: Transmit Data Bit 8

TXB8 adalah bit data yang kesembilan dari karakter yang akan dikirim

ketika beroperasi dengan frame serial dengan sembilan bit data. Harus

ditulis sebelum menulis bit rendah untuk UDR.

4. UCSRC atau USART Control Status Register C

Nama bit-bit dari Register UCSRC ditunjukkan dalam Gambar 4.5.

Gambar 4.5. Bit-bit Register UCSRC (ATMega16,2010;166)

Alamat lokasi register UCSRC berbagi dengan register UBRRH. Sedang

untuk keterangan bit-bit Register UCSRC adalah sebagai berikut:

- Bit 7 – URSEL: Register Select

Bit ini digunakan untuk memilih antara mengakses register UCSRC atau

register UBRRH. Bila diberi logika satu maka digunakan sebagai register

UCSRC.

- Bit 6 – UMSEL: USART Mode Select

- Bit ini digunakan untuk memilih mode operasi komunikasi serial, bila

diberi logika ‘0’ maka mode Asikron dan bila diberi logika ‘1’satu maka

mode Sinkron

Page 64: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

64

- Bit 5:4 – UPM1dan UPM0: Parity Mode

Bit-bit yang digunakan untuk mengaktifkan dan menetapkan jenis generasi

dan memeriksa paritas. Jika diaktifkan, bagian pemancar akan secara

otomatis menghasilkan dan mengirim bit paritas dari data yang dikirimkan

dalam setiap frame. Dan pada bagian penerima (receiver) akan

menghasilkan nilai paritas dari data yang masuk dan bandingkan dengan

pengaturan UPM0. Jika ketidakcocokan terdeteksi, maka tanda bit PE di

UCSRA akan bernilai satu. Untuk pengaturan bit-bit UPM1 dan UPM0

ditunjukkan dalam Tabel 4.1.

Tabel 4.1.Pengaturan bit-bit UPM (ATMega16,2010;166)

- Bit 3 – USBS: Stop Bit Select

Bit ini digunakan untuk memilih jumlah Bit Stop yang akan dimasukkan

oleh bagian pengirim. Sedang untuk bagian penerima enerima

mengabaikan pengaturan ini. Bila USBS = 0 maka diatur menggunakan 1

bit stop, sedang bila USBS = 1 maka diatur mengunakan 2 bit stop.

- Bit 2:1 – UCSZ1:0: Character Size

bit UCSZ1 dan UCSZ0 dikombinasikan dengan bit UCSZ2 bit dalam

register UCSRB untuk menetapkan jumlah bit data atau ukuran karakter

dalam frame untuk penerima dan pemancar. Dan untuk pengaturan UCSZ2

sampai UCSZ0 ditunjukkan dalam Tabel 4.2.

- Bit 0 – UCPOL: Clock Polarity

Bit ini digunakan untuk mode Sinkron saja. Untuk mode Asikron diberi

logika 0. Bit UCPOL menetapkan hubungan antara perubahan output data

dan sampel input data, dan clock sinkron (XCK). Untuk pengaturan bit

UCPOL ditunjukkan dalam tabel 4.3

Page 65: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

65

Tabel 4.2. Kombinasi UCSZ2 sampai UCSZ0 untuk Pengaturan Ukuran Karakter (ATMega16,2010;167)

Tabel 4.3. Pengaturan Bit UCPOL (ATMega16,2010;167)

5. UBRR atau USART Baud Rate Register

UBRR terdiri dari dua buah register yaitu UBRRH dan UBRRL, register-

register ini digunakan untuk mengatur kecepatan pengiriman data atau Baud

Rate. Untuk alamat register UBRRH digunakan bersama dengan register

UCSRC. Bit-bit dari UBRRH dan UBBRL ditunjukkan dalam Gambar 4.6.

Gambar 4.6. Bit-bit Register UBRRH dan UBRRL (ATMega16,2010;167)

- Bit 15 – URSEL: Register Select

- Bit yang digunakan untuk memilih penggunaan register UBRRH atau

UCSRC, harus diberi logika 0 saat digunakan untuk register UBRRH

- Bit 14 sampai 12, cadangan

Page 66: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

66

- Bit 11 sampai bit 0

- Merupakan register 12-bit yang berisi USART baud rate. Regiseter

UBRRH ini berisi empat bit MSB, dan UBRRL tersebut berisi 8 bit LSB

dari USART baud rate.

Untuk perhitungan Baud Rate dan nilai register UBRR ditunjukkan dalam

tabel 4.4.

Tabel 4.4. Perhitungan Baud Rate dan nilai Register UBRR (ATMega16,2010;147)

Catatan:

1. Baud rate didefinisikan sebagai kecepatan transfer dalam bit per detik (bps).

2. BAUD = Baud rate

3. fosc = Frekuensi Osilator Clock Sistem

4.2. APLIKASI USART

USART harus diinisialisasi sebelum komunikasi apapun dapat terjadi.

Proses inisialisasi biasanya terdiri dari pengaturan baud rate, pengaturan format

frame dan memungkinkan penggunaan bagian Pemancar (transmitter) atau

Penerima (receiver) yang tergantung pada penggunaan.

Flag atau bit TXC dapat digunakan untuk memeriksa bahwa Transmitter

telah menyelesaikan semua transfer, dan flag atau bit RXC dapat digunakan untuk

memeriksa bahwa tidak ada data yang belum dibaca dalam buffer penerima

(receiver).

Contoh Soal:

Berapa nilai UCSRA, UCSRB, UCSRC, UBRRH dan UBRRL jika frekuensi

osilator kerja ATMega 16 sebesar 11.0592 MHz dengan kecepatan 9600 tanpa

Page 67: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

67

kecepatan ganda, format frame data: 8 bit per karakter, tanpa patitas, 1 bit stop,

menggunakan mode Asinkron, dapat menerima dan mengirim secara serial.

Jawab:

- Pada UCSRA ada dua bit yang diisi yaitu U2X dan MPCM, karena tidak

digandakan kecepatannya dan hanya mode single prosesor maka nilai

UCSRA adalah:

0 0 0 0 0 0 0 0 = 0x00

- Pada UCSRB ada tiga bit yang diisi yaitu RXEN, TXEN dan UCSZ2, dari

persoalnya ATMega dapat menerima dan mengirim menggunakan serial

dan 8 bit per karakter maka RXEN = 1, TXEN = 1 dan dengan acuan

Tabel 4.2 maka UCSZ2 = 0 sehingga nilai UCSRB adalah:

0 0 0 1 1 0 0 0 = 0x18

- Pada UCSRC semua bit yang diisi, URSEL = 1 karena mengisi UCSRA,

UMSEL = 0 karena menggunakan mode asikron, UPM1 =0 dan UPM0 = 0

karena tidak menggunakan paritas, USBS = 0 karena menggunakan 1 bit

stop, dengan acuan Tabel 4.2 maka UCZS1 = 1 dan UCZS0 = 1 karena

frame data 8 bit per karakter, UCPOL = 0 karena menggunakan mode

asinkron sehingga UCSRC adalah :

1 0 0 0 0 1 1 0 = 0x86

- Untuk mendapatkan nilai register UBRRH dan UBRRL, frekuensi

kerja/fosc = 11.0592 MHz, Baud rate = 9600 dan U2X = 0, digunakan

rumus dari tabel 4.4 yaitu:

UBRR = (fosc/(16xbaud))-1 = (11.0592 106/(16x9600)) – 1 = 71 maka

nilai UBRRH =0x00 dan UBRRL = 0x47 (71 desimal).

Sehingga hasil keseluruhan adalah:

UCSRA = 0x00

UCSRB = 0x18

Page 68: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

68

UCSRC = 0x86

UBRRH = 0x00

UBRRL = 0x47

Contoh Soal 1:

Buat algoritma, flowcart dan program untuk dua buah ATMega 16 yang

berkomunikasi secara Serial seperti Gambar 4.7.

Gambar 4.7. Telemetri Suhu antara dua MCU ATMega16

Jawab:

Algoritman MCU Master:

1. Inisialisasi USART: frekuensi osilator sebesar 11.0592 MHz dengan

kecepatan 9600 bps tanpa kecepatan ganda, format frame data: 8 bit per

karakter, tanpa patitas, 1 bit stop, menggunakan mode Asinkron, dapat

menerima. Sehingga:

UCSRA = 0x00

UCSRB = 0x10

UCSRC = 0x86

UBRRH = 0x00

UBRRL = 0x47

2. Inisialisasi PB output, PC output

DDRB= 0xff

DDRC=0xff

3. Tunggu selama RXC = 0

4. Baca UDR simpan di DataRX

PB

TxD RxD

PC

ADC0

TxD RxD

7Segmen Puluhan

7Segmen Satuan

LM35

Master Slave

Page 69: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

69

5. Pilah DataRX menjadi puluhan dan satuan

6. Tampilkan kode seven segmen dari puluhan ke PB dan kode seven segmen

dari satuan ke PC

7. Ulangi ke nomor 3

Algoritma MCU Slave:

1. frekuensi osilator sebesar 11.0592 MHz dengan kecepatan 9600 bps tanpa

kecepatan ganda, format frame data: 8 bit per karakter, tanpa patitas, 1 bit

stop, menggunakan mode Asinkron, dapat mengirim sehingga:

UCSRA = 0x00

UCSRB = 0x08

UCSRC = 0x86

UBRRH = 0x00

UBRRL = 0x47

2. untuk ADC yang digunakan ADC0, VREF = 2,56 Volt atau step size

10mV karena sensivitas LM35 sebesar 10mV/oC, frekuensi ADC sebesar

fosc/16 sehingga :

ADMUX = 0xE0

ADCSRA = 0x84

3. Start ADC dengan memberi nilai 1 pada bit ADSC dalam register

ADCSRA

4. Tunggu selama ADIF = 0

5. baca ADCH dan kirim ke UDR

6. tunggu selama TX=0

7. ulangi langkah 3

Flowcart MCU Master ditunjukkan dalam Gambar 4.8.

Page 70: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

70

Gambar 4.8. Flowcart MCU Master

Flowcart MCU Slave ditunjukkan dalam Gambar 4.9.

Gambar 4.9. Flowcart MCU Slave

Page 71: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

71

Program MCU Master:

#include <mega16.h>

unsigned char DataRX, Pul, Sat ;

unsigned char Tabel7segmen [10] ={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,

0xF8, 0x80, 0x90}

void main(void)

{

UCSRA = 0x00; UCSRB = 0x08; UCSRC = 0x86; UBRRH = 0x00;

UBRRL = 0x47; // inisialisasi USART

DDRB=0xFF;

DDRC = 0xff;

while(1)

{

while(UCSRA&0x80==0); // tunggu selama RXC =0

DataRX= UDR;

Pul = (DataRX %100)/10; // nilai puluhan di Pul

Sat = DataRX % 10; // nilai satuan di Sat

PORTB = Tabel7segmen[Pul]; // ambil kode dari array sevensegmen

PORTC = Tabel7segmen [Sat]; // ambil kode dari array sevensegmen

}

}

Program MCU Slave:

#include <mega16.h>

unsigned char dataADC;

unsigned char sevensegmen [10] ={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,

0xF8, 0x80, 0x90}

void main(void)

{

UCSRA = 0x00; UCSRB = 0x10; UCSRC = 0x86; UBRRH = 0x00;

UBRRL = 0x47; // inisialisasi USART

ADMUX=0xE0; ADCSRA=0x84; // inisialisasi ADC

Page 72: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

72

while(1)

{

ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1

while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu selama =0

UDR=ADCH; // ambil data hasil konversi

ADCSRA=ADCSRA|0x10;

while(UCSRA&0x40==0);

}

}

Contoh Soal 2:

Buat algoritma, flowcart dan program di MCU ATMega16 untuk komunikasi

serial antara PC dan MCU ATMega16, PC sebagai Master, MCU ATMega 16

sebagai Slave dengan skema hubungan antara PC dan MCU ATMega 16

diperlukan converter TTL ke RS 232 seperti yang ditunjukkan dalam Gambar

4.10, sedangkan untuk blok diagram rangkaian ditunjukkan dalam Gambar 4.11.

Gambar 4.10. Skema Konverter TTL ke RS-232

Dengan ketentuan:

- Dengan kecepatan 9600 bps, format frame data: 8 bit per karakter, tanpa

patitas, 1 bit stop, menggunakan mode Asinkron.

Page 73: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

73

- Bila PC mengirim huruf ‘A’ maka MCU akan mengambil data suhu LM35

melalui ADC7 dan dikirim ke PC

- Bila PC mengirim huruf ‘B’ maka MCU menjalankan Motor 1 (M1)

- Bila PC mengirim huruf ‘C’ maka MCU menjalankan Motor 2 (M2)

- Bila PC mengirim huruf ‘D’ maka MCU menghentikan Motor 1 (M1)

- Bila PC mengirim huruf ‘E’ maka MCU menghentikan Motor 2 (M2)

Gambar 4.11. Blok Diagram Telekontrol PC ke MCU ATMega16

Jawab:

Algoritma MCU ATMega16:

1. frekuensi osilator sebesar 11.0592 MHz dengan kecepatan 9600 bps tanpa

kecepatan ganda, format frame data: 8 bit per karakter, tanpa patitas, 1 bit

stop, menggunakan mode Asinkron, dapat mengirim dan menerima

sehingga:

PC

TTL ke RS 232

MCU ATMega16

PC1 PC0 ADC7

M2

M2 LM35

Page 74: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

74

UCSRA = 0x00

UCSRB = 0x18

UCSRC = 0x86

UBRRH = 0x00

UBRRL = 0x47

2. untuk ADC yang digunakan ADC7, VREF = 2,56 Volt atau step size

10mV karena sensivitas LM35 sebesar 10mV/oC, frekuensi ADC sebesar

fosc/16 sehingga :

ADMUX = 0xE7

ADCSRA = 0x84

3. untuk PC karena digunakan sebagai pengendali Motor 1 (M1) dan Motor 2

(M2) maka PC output sehingga:

DDRC = 0xff;

4. Tunggu selama RXC = 0

5. Ambil UDR simpan di dataRX

6. Bila dataRX =’A’ maka

o Start ADC/ADSC =1

o Tunggu selama ADIF =0

o Ambil data ADCH kirim ke UDR

o Tunggu selama TXC =0

o ADIF = 1

7. Bila dataRX =’B’ maka PC0 =1, Motor 1 (M1) berjalan

8. Bila dataRX =’C’ maka PC1 =1, Motor 2 (M2) berjalan

9. Bila dataRX =’D’ maka PC0 =0, Motor 1 (M1) berhenti

10. Bila dataRX =’D’ maka PC1 =0, Motor 2 (M2) berhenti

11. Ulangi ke 4

Flowcart untuk MCU ATMega16 ditunjukkan dalam Gambar 4.12.

Page 75: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

75

Gambar 4.12. Flowcart untuk MCU ATMega16 Slave

Page 76: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

76

Dengan Program sebagai berikut:

#include <mega16.h>

unsigned char dataRX;

void main(void)

{

UCSRA = 0x00; UCSRB = 0x18; UCSRC = 0x86; UBRRH = 0x00;

UBRRL = 0x47; // init USART

ADMUX=0xE7; ADCSRA=0x84; // init ADC

DDRC=0xFF; // init PC

while(1)

{

while(UCSRA.7==0); // tunggu selama RXC =0

dataRX=UDR;

if(dataRX==’A’)

{

ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1

while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu selama =0

UDR=ADCH; // ambil data hasil konversi

while(UCSRA.6==0); // tunggu selama TXC=0

ADCSRA.4=1; // ADIF=1

}

if(dataRX==’B’)

{

PORTC.0 =1; // M1 ON

}

if(dataRX==’C’)

{

PORTC.1 =1; // M2 ON

}

if(dataRX==’D’)

{

PORTC.0 =0; // M1 OFF

Page 77: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

77

}

if(dataRX==’E’)

{

PORTC.1 =0; // M2 OFF

} }}

Latihan 1:

Buat blok diagram. algoritma, flowcart dan program untuk MCU Master bila PC

diganti dengan MCU Master tersebut dengan ketentuan sebagai berikut:

- PB dihubungkan dengan seven segmen untuk tampilan puluhan

- PC dihubungkan dengan seven segmen untuk tampilan satuan

- PA0 dihubungkan dengan saklar aktif rendah yang digunakan untuk

memerintahkan MCU Slave untuk mengirimkan data suhu dari LM35

- PA1 dihubungkan dengan saklar aktif rendah yang digunakan untuk

memerintahkan MCU Slave untuk menjalankan Motor 1 (M1)

- PA2 dihubungkan dengan saklar aktif rendah yang digunakan untuk

memerintah MCU Slave untuk menjalankan Motor 2 (M2)

- PA3 dihubungkan dengan saklar aktif rendah yang digunakan untuk

memerintahkan MCU Slave untuk menghentikan Motor 1 (M1)

- PA4 dihubungkan dengan saklar aktif rendah yang digunakan untuk

memerintah MCU Slave untuk menghentikan Motor 2 (M2)

Latihan 2:

Buat Sistem telemetri atau telekontrol antara dua MCU Master dan Slave atau

antara PC dan MCU dari permasalahan yang ada di sekitar kita.

Page 78: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

78

DAFTAR PUSTAKA

Andrianto, Heri, 2008, Pemrograman Mikrokontroler AVR ATMega16,

Bandung, Informatika Bandung.

ATMega16, Datasheet, 2010, Atmel Corporation

LM35/LM35A/LM35C/LM35CA/LM35D, Datasheet, 1994, Precision

Centigrade Temperature Sensors, , National Semiconductor Corporation

Seven Segment Displays, Datasheet 14.2 mm (0.56 inch), 2002, Agilent

Technologies.

Page 79: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

79

GLOSARIUM

ADC Analog to Digital Converter

Pengolah Sinyal analog menjadi data Digital

ALU Aritmarik Logik Unit

AT Mikrokontroler buatan Atmel Co.

AVR Alf and Vegard’s Risc prosesor

Prosesor yang dibuat oleh pabrik ATMEL Co.

Baud rate Kecepatan pengiriman data serial

Bit Satu digit dalam system bilangan biner

Boot Saat pengaktifan Mikrokontroler

Byte 8 bit 8 digit dalam biner

CA common anoda

anoda yang disatukan

CC common katoda

katoda yang disatukan

Chip Integrated Circuit atau IC

CISC Complex Instruction Set Computing

CMOS Complementary metal–oxide–semiconductor

Salah satu jenis bahan pembuatan IC

Counter Penghitung

EEPROM Electrical Eresable Programmable ROM

ROM yang dapat dihapus dengan elektrik dan dapat di program

ulang

Flash Memori tempat penyimpanan program

fosc Frekuensi osilator dari mikrokontroler atau frekuensi kerja

mikrokontroler

header Kepala program

Interrupt Interupsi atau penyela

ISP In System Programming

LED Light Emitting Diode

Main Program utama

Page 80: 00. Modul Ajar Mikrokontroler Dan Interfacing-Azam

80

Master-Slave Model komunikasi dengan satu perangkat memiliki kontrol

searah atas satu atau lebih perangkat lain.

MCS Microcontroller Sistem

MHz Mega Hz atau 106 Hz

MIPS Mega Instruction Per Second

OnChip Tersedia di dalam IC

Port Jalur input-ouput

Prescaler Pembagi frekuensi

PWM Pulse Width Modulation

RAM Random Access Memory

Memori yang dapat dibaca dan ditulis

RISC Reduced Instruction Set Computing

ROM Read Only Memory

Memori yang hanya bisa dibaca

Sensor sesuatu yang digunakan untuk mendeteksi adanya perubahan

lingkungan fisik atau kimia

SPI Serial Periperal Interface

SRAM Static RAM

Step size Besar tegangan setiap kenaikan digit pada ADC

Timer Pewaktu