BERBASIS MIKROKONTROLER
AVR ATMEGA32
TUGAS AKHIR
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Fakultas Teknik Universitas Sanata Dharma
Disusun Oleh :
BAKRI SUSANTO
NIM : 035114020
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
BASED ON AVR ATMEGA32
MICROCONTROLLER
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
to Obtain the SARJANA TEKNIK Degree
in Electrical Engineering
of Sanata Dharma University
By :
BAKRI SUSANTO
Student Number : 035114020
ELECTRICAL ENGINEERING STUDY PROGRAM
ELECTRICAL ENGINEERING DEPARTMENT
ENGINEERING FACULTY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
“Saya menyatakan dengan sesungguhnya bahwa tugas akhir yang saya tulis ini
tidak memuat karya atau bagian karya orang lain,
kecuali yang telah disebutkan dalam kutipan dan daftar pustaka,
sebagaimana layaknya karya ilmiah.”
Yogyakarta, 9 Juli 2007
Bakri
Susanto
Keberhasilan perlu dikejar dengan semangat dan kerja keras.
Orang biasa belajar sedikit dari keberhasilan
tetapi belajar banyak dari kegagalan.
Tak seorang pun akan sukses dan tetap sukses
tanpa bekerja sama dengan orang lain.
(Benyamin Franklin)
Orang yang paling lemah adalah
orang yang tidak mampu mencari sahabat-sahabat
tetapi orang yang lebih lemah lagi adalah
Orang yang mendapatkan beberapa sahabat
tetapi menyia-nyiakannya.
(Imamali)
Kupersembahkan Tugas Akhir ini untuk:
•
Bapaku yang di surga,
•
Segenap keluargaku , dan
•
Teman-teman seperjuangan
AVR ATMEGA32
Bakri Susanto
035114020
Intisari
Komunikasi dapat dilakukan melalui berbagai media. Media-media
komunikasi antara lain telepon, radio, televisi, dan lain-lain. Melalui media
komunikasi, sebuah pesan dapat disampaikan kepada orang lain, misalnya melalui
televisi. Televisi merupakan suatu perangkat untuk menampilkan gambar dan suara.
Akan tetapi, karena kemampuan televisi untuk mereproduksi gambar, teks dan grafik
maka televisi menjadi sangat bermanfaat dan pemakaiannya jauh lebih banyak.
Berdasarkan alasan inilah, maka dibuat suatu alat yang dapat berfungsi untuk
menampilkan pesan pada televisi dengan menggunakan mikrokontroler.
Dalam penelitian ini mikrokontroler yang digunakan adalah mikrokontroler
AVR ATmega32 dari Atmel. Mikrokontroler ini mempunyai memori dan kecepatan
yang cukup untuk membangkitkan sinyal video hitam putih pada televisi. Standar
sinyal video yang digunakan adalah NTSC dengan frekuensi kerangka 30 Hz.
Resolusi tampilan adalah 128 (horizontal) x 100 (vertikal)
pixel
.
Alat ini terdiri dari 2 bagian, yaitu bagian perangkat keras dan bagian
perangkat lunak. Bagian perangkat keras terdiri dari rangkaian antarmuka
mikrokontroler, televisi, dan keyboard. Sedangkan bagian perangkat lunak merupakan
program untuk membangkitkan sinyal video hitam putih.
Alat ini telah dicoba dan terbukti mampu menampilkan karakter berupa angka
maupun huruf ke layar televisi. Alat ini mampu menampilkan 16 karakter dalam satu
baris horizontal dengan ukuran karakter 5x7. Untuk ukuran karakter yang lebih besar,
jumlah karakter yang dapat ditampilkan dalam satu baris menjadi berkurang. Alat ini
dapat membaca masukan yang berasal dari
keyboard
.
Kata kunci
: sinyal video, aplikasi mikrokontroler AVR
MICROCONTROLLER
Bakri Susanto
035114020
Abstract
Communication can be done through various media. Communication medias
are telephone, radio, television, etc. Through communication media, a message can
be informed to another people for example through television. Television is a device
to display image and sound. But, because of television ability to reproduce picture,
text and graphic, so television become very useful and it more use now. Based on this
reason, a device that can display messages on television using microcontroller is
being made.
In this research, the microcontroller that is being used is ATmega32 AVR.
This microcontroller has enough memory and speed to generate black and white
television video signal. The standard of video signal has been used is NTSC with
frame frequency 30 Hz. The display resolution is 128 (horizontal) by 100 (vertical)
pixel.
This device consists of two parts which are hardware and software. The
hardware contains microcontroller interface circuit, television, and keyboard. The
software is to generate black and white video signal.
This device has been tested and proven can display character in form of
numbers or letters to television screen. This device can display 16 characters in a row
with 5x7 sized characters. For larger characters, the number of characters that can be
displayed in a row is less. This device can receive inputs from keyboard.
Keywords
: video signal, AVR microcontroller application
Puji dan syukur penulis panjatkan ke hadirat Tuhan Yang Maha Esa yang telah
melimpahkan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan tugas
akhir berjudul “Sistem Penampil Pesan Pada Televisi Berbasis Mikrokontroler AVR
ATmega32”.
Tugas akhir ini merupakan salah satu syarat untuk memperoleh gelar Sarjana
Teknik pada Jurusan Teknik Elektro Universitas Sanata Dharma Yogyakarta.
Penulisan tugas akhir ini didasarkan pada hasil-hasil yang penulis dapatkan selama
proses perancangan, pembuatan, pengujian dan pengembangan alat.
Penulisan tugas akhir ini tidak lepas dari bantuan berbagai pihak. Oleh karena
itu, penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada:
1.
Bapak Djoko Untoro Suwarno, S.Si., M.T. selaku pembimbing I yang telah
meluangkan waktu, tenaga dan pikirannya untuk membimbing penulis.
2.
Bapak Ir. Tjendro selaku pembimbing II yang dengan senang hati memberikan
saran, ide, dukungan dan semangat.
3.
Bapak Damar Wijaya, S.T, M.T. atas bantuannya dalam peminjaman kartu kredit
untuk pembelian
software
CodeVision AVR.
4.
Bapak Alexius Rukmono, S.T. dan teman-teman dari CV. E-tech Mandiri yang
telah memberitahu rangkaian
downloader
untuk AVR.
5.
Bapak Pius Yozy Merucahyo, S.T., M.T. dan Bapak Petrus Setyo Prabowo, S.T.
sebagai dosen penguji saat ujian kolokium yang telah memberikan tambahan ide
dan revisi pada skripsi penulis.
6.
Ibu Wiwien Widyastuti, S.T, M.T. dan Bapak Ir. Iswanjono, M.T. sebagai dosen
penguji saat ujian pendadaran yang telah memberikan revisi pada skripsi penulis.
7.
Bapak dan Ibu dosen yang telah banyak memberikan pengetahuan dan bimbingan
kepada penulis selama kuliah di Universitas Sanata Dharma.
8.
Bapak Aris Sukardjito dan seluruh karyawan/wati Sekretariat Fakultas Teknik
Universitas Sanata Dharma.
9.
Kedua orang tua penulis yang telah memberikan semangat dan doa yang tak
pernah putus sehingga penulis dapat menyelesaikan tugas akhir ini.
yang telah memberikan semangat baik material maupun spiritual.
11.
Temanku Opang yang telah bersedia meminjamkan kameranya, memberikan
saran, dukungan dan ide kepada penulis.
12.
Teman-teman kontrakan : Sungkit, Andreas, Manto, Topan dan Boboto yang telah
menemani penulis dalam suka maupun duka.
13.
Teman-teman kost Tasura 52 : Njoo, Jerry, Aweng, Hartono, Jigo, Jimbong,
Anton, Aan atas kebersamaannya selama penulis kuliah di Universitas Sanata
Dharma.
14.
Laboran Teknik Elektro : mas Hardi, mas Suryono, mas Mardi, mas Broto dan
mas Yusuf.
15.
Teman-teman mahasiswa jurusan Teknik Elekro yang telah banyak membantu :
Jeffry, Widyono, Suryo, Denis, Winarto, Cecep, Merry, Yohe, Inggit dan semua
pihak yang tidak dapat penulis sebutkan satu per satu.
Penulis menyadari bahwa masih banyak kelemahan dan kekurangan dari
penulisan tugas akhir ini. Oleh karena itu segala kritik dan saran yang bersifat
membangun sangat penulis harapkan.
Akhir kata penulis berharap agar skripsi ini dapat bermanfaat bagi penulis
maupun pembaca semuanya.
Yogyakarta, 31 Juli 2007
Penulis
Bakri
Susanto
HALAMAN JUDUL
………...
i
HALAMAN PERSETUJUAN PEMBIMBING ………..
iii
HALAMAN PENGESAHAN
... iv
PERNYATAAN KEASLIAN KARYA
……….
v
MOTO DAN PERSEMBAHAN
………...
vi
INTISARI
………..
vii
ABSTRACT ………...
viii
KATA PENGANTAR
……….
ix
DAFTAR ISI
………...
xi
DAFTAR GAMBAR
………. xiv
DAFTAR TABEL
………. xvi
DAFTAR LAMPIRAN
………. xvii
BAB I. PENDAHULUAN
………
1
1.1
Latar Belakang Masalah ……….. 1
1.2
Tujuan dan Manfaat Penelitian ……… 2
1.3
Batasan Masalah ………... 2
1.4
Metodologi Penelitian ………. 3
1.5
Sistematika Penulisan ……….. 3
BAB II. DASAR TEORI
……….
4
2.1 Televisi ……….... 4
2.1.1 Elemen-elemen
Gambar
………. 4
2.1.2 Pemayaran
Horizontal dan Vertikal ………... 5
2.1.3 Garis-garis Setiap Kerangka ……… 7
2.1.4 Frekuensi Kerangka ……… 7
2.1.5 Frekuensi Medan ……… 7
2.1.6 Frekuensi Pemayaran Horizontal dan Vertikal ……….. 8
2.1.7 Waktu untuk Garis Horizontal ……… 8
2.2 Sinyal Video ……… 9
2.3 Konverter Digital ke Analog ………... 10
2.4.1 Pendahuluan
……… 11
2.4.2 Arsitektur ATmega32 ………. 12
2.4.3 Fitur ATmega32 ……….. 13
2.4.4 Konfigurasi Pin ATmega32 ……… 13
2.4.5 Peta Memori ……… 14
2.4.6 Status Register (SREG) ……….. 16
2.4.7 Mode
Sleep
………. 17
2.4.8 Interupsi
……….. 18
2.4.9 I/O Port ………... 18
2.4.10
Timer/Counter
1 ………. 19
2.5 Keyboard IBM PC ……… 22
2.5.1 Tata
Kerja
Keyboard
PC ………. 22
2.6 Pemrograman Mikrokontroler ATmega32 ……….. 25
2.6.1 Struktur Program dalam Bahasa C ………. 26
2.6.2 Tipe Data dalam Bahasa C ………. 27
2.6.3 Variabel
………..
28
2.6.4 Operator pada Bahasa C ………. 28
2.6.4.1 Operator Aritmatika ……… 28
2.6.4.2 Operator
Bitwise
(Manipulasi Bit) ………. 29
2.6.4.3 Operator Relasi ……… 29
2.6.4.4 Operator Logika ……….. 30
2.6.5 Percabangan dan Perulangan ……….. 30
2.6.5.1 Percabangan Bersyarat (
Conditional Branch
) ………. 30
2.6.5.2 Perulangan
………...
31
2.6.5.2.1 Struktur
Perulangan
For
……….. 31
2.6.5.2.2 Struktur
Perulangan
While
dan
Do-while
………... 31
2.6.6
Compiler
………. 32
BAB III. PERANCANGAN ALAT
………...
33
3.1 Perancangan Perangkat Keras ……….. 33
3.1.1 Rangkaian Mikrokontroler ATmega32 ………... 33
3.1.1.1 Rangkaian Osilator Mikrokontroler ATmega32 …………. 33
3.1.1.2 Rangkaian
Reset
……….
34
3.2 Perancangan Perangkat Lunak ………. 36
3.2.1
Preprocessor Directive
& Variabel Global ………. 37
3.2.2 Rutin Utama ……… 39
3.2.2.1 Mode F1 ……….. 40
3.2.2.2 Mode F2 ……….. 41
3.2.2.3 Mode F3 ……….. 43
3.2.3 Sub Rutin Interupsi ………. 43
3.2.4 Sub Rutin Untuk Menampilkan Titik ………. 46
3.2.5 Sub Rutin Untuk Menampilkan Garis ……… 46
3.2.6 Sub Rutin Untuk Menampilkan Karakter ………... 47
3.2.6.1 Karakter Generator 3x5 ……….. 48
3.2.6.2 Karakter Generator 5x7 ……….. 49
3.2.7 Sub Rutin Pengambilan
Scan Code
Keyboard
………... 49
3.2.8
Look Up Table
……… 52
BAB IV. HASIL DAN PEMBAHASAN
………. 56
4.1 Hasil Akhir Perancangan ………. 56
4.2 Pengamatan Sinyal Keyboard ………. 55
4.3 Pengamatan Sinyal Video ……… 58
4.4 Pengujian dan Pembahasan Resolusi Tampilan ……….. 59
4.5 Pengujian dan Pembahasan Program ……….. 63
4.5.1 Sub Rutin Interupsi ………. 63
4.5.2 Sub Rutin Untuk Menampilkan Titik ………. 64
4.5.3 Sub Rutin Untuk Menampilkan Garis ……… 66
4.5.4 Sub Rutin Untuk Menampilkan Karakter ………... 68
4.5.5 Sub Rutin Untuk Pengambilan
Scan Code
Keyboard
………. 69
4.5.6 Program Utama ………... 69
4.6 CodeVision AVR ………. 70
BAB V. KESIMPULAN DAN SARAN
……….. 73
5.1 Kesimpulan
……….
73
5.2 Saran ……… 73
DAFTAR PUSTAKA
………... 74
LAMPIRAN
Gambar 2.1
Pembuatan (reproduksi) sebuah gambar dengan meniru (duplikasi)
elemen-elemen gambar ………... 5
Gambar 2.2
Pemayaran linear horizontal ………... 6
Gambar 2.3 Sinyal video ……… 9
Gambar 2.4
Konverter digital ke analog ……… 10
Gambar 2.5 Blok diagram ATmega32 ………... 12
Gambar 2.6 Pin ATmega32 ……… 14
Gambar 2.7 Konfigurasi memori data AVR ATmega32 ………... 15
Gambar 2.8 Memori program AVR ATmega32 ……… 15
Gambar 2.9 Status register ATmega32 ……….. 16
Gambar 2.10 Register MCUCR ……… 17
Gambar 2.11 Blok diagram dari
Timer/Counter
1 ………... 19
Gambar 2.12 Register TCCR1A ……….. 20
Gambar 2.13 Register TCCR1B ……….. 22
Gambar 2.14
Keyboard
PC bagian utama ……… 23
Gambar 2.15
Keyboard
PC bagian tambahan ……….. 24
Gambar 2.16 Struktur penulisan program dalam bahasa C ……….. 26
Gambar 2.17 Bentuk dasar penulisan
if
dan
if…else
……….. 30
Gambar 2.18 Bentuk dasar penulisan
for
………. 31
Gambar 2.19 Bentuk dasar penulisan
while
dan
do-while
……… 31
Gambar 3.1 Diagram blok rangkaian ………. 33
Gambar 3.2 Rangkaian osilator ……….. 34
Gambar 3.3 Rangkaian reset ……….. 34
Gambar 3.4 Rangkaian video DAC ……… 35
Gambar 3.5 Rangkaian antarmuka
keyboard
dengan ATmega32 ………. 36
Gambar 3.6 Konektor pada
keyboard
……… 36
Gambar 3.7 Susunan bit-bit tampilan ……… 37
Gambar 3.8
Flowchart
rutin utama ………... 39
Gambar 3.9
Flowchart
mode F1 ……… 40
Gambar 3.10
Flowchart
mode F2 ……… 41
Gambar 3.13
Flowchart
sub rutin interupsi ……….. 44
Gambar 3.14 Sinyal data dan
clock
dari
keyboard
PC ……….. 50
Gambar 3.15
Flowchart
pengambilan
scan code
………. 50
Gambar 4.1 Alat penampil pesan pada televisi ……….. 56
Gambar 4.2
Scan code
untuk tombol ‘a’ ……… 56
Gambar 4.3
Scan code
untuk tombol ‘Tab’ ………... 57
Gambar 4.4
Scan code
untuk tombol ‘Caps Lock’ ………. 57
Gambar 4.5
Scan code
untuk tombol ‘Enter’ ………. 58
Gambar 4.6 Sinyal video ……… 58
Gambar 4.7 Pengujian resolusi tampilan ……… 62
Gambar 4.8 Letak koordinat (13,3) ……… 65
Gambar 4.9 v
ideo_pt
(13,3,1) ……… 66
Gambar 4.10 Garis horizontal, vertikal, dan diagonal ………. 67
Gambar 4.11
Codevision compiler control panel
……… 68
Gambar 4.12 Karakter generator 5x7 dan 3x5 ………. 68
Gambar 4.13 Tampilan mode F1 ………. 69
Gambar 4.14 Tampilan mode F2 ………. 70
Gambar 4.15 CodeVision AVR ………... 70
Gambar 4.16 Tampilan CodeVision AVR ………... 71
Gambar 4.17 Informasi hasil kompilasi ………... 72
Tabel 2.1 Bit pemilih mode sleep ………. 17
Tabel 2.2 Macam sumber interupsi pada AVR ATmega32 ………. 18
Tabel 2.3 Konfigurasi
setting
untuk port I/O ……… 18
Tabel 2.4 Konfigurasi bit
CompareOutput Mode Non PWM
………... 20
Tabel 2.5 Konfigurasi bit
Compare Output Mode Fast PWM
……….. 20
Tabel 2.6 Konfigurasi bit
Compare Output Mode Phase Correct and Frequency
Correct PWM
………... 21
Tabel 2.7 Mode operasi
Timer/Counter
1 ……….... 21
Tabel 2.8 Konfigurasi bit sumber
clock
……… 22
Tabel 2.9 Tipe data dalam bahasa C ………. 27
Tabel 2.10 Operator aritmatika ………... 28
Tabel 2.11 Operator bitwise (manipulasi bit) ………. 29
Tabel 2.12 Operator relasi ……….. 29
Tabel 3.1
Look up table
……… 52
Lampiran I
Perancangan Tampilan Mode F1 ………. LI
Lampiran II
Gambar Rangkaian ……….. LII
Lampiran III
Daftar ASCII ………... LIII
Lampiran IV
Listing Program .………... LIV
Lampiran V
Datasheet
……….
LV
PENDAHULUAN
1.1
Latar Belakang Masalah
Komunikasi bisa dilakukan dengan berbagai cara. Ada komunikasi langsung
di mana satu atau beberapa orang saling bertemu di tempat atau waktu yang sama,
kemudian mereka saling berkomunikasi entah dengan berbicara maupun dengan
bahasa isyarat. Di samping itu, komunikasi juga bisa dilakukan secara tidak langsung
yaitu melalui suatu media, misalnya radio, televisi, telegraf dan lain-lain.
Kebutuhan akan komunikasi membuat manusia mengembangkan teknologi
penampil. Salah satu contohnya yaitu teknologi penampil atau layar yang semakin
berkembang seiring dengan kebutuhan masyarakat saat ini. Ada beberapa penampil
yang sudah merambah dunia teknologi diantaranya layar CRT (
Cathode Ray Tube
),
layar LCD (
Liquid Crystal Display
), dan Dot Matrix. Layar CRT biasa digunakan
pada televisi, monitor komputer, osiloskop dan lain-lain. Layar LCD banyak
digunakan pada laptop. Selain pada laptop, layar LCD sekarang juga sudah digunakan
pada televisi dan monitor komputer. Sedangkan Dot Matrix banyak digunakan pada
kalkulator. Dot Matrix merupakan dioda dengan kemasan khusus yang dapat
memancarkan cahaya bila dialiri arus listrik.
Tujuan dari komunikasi adalah untuk menyampaikan informasi atau pesan
kepada orang lain. Suatu pesan dapat disampaikan kepada orang lain melalui
teknologi penampil yang sudah ada. Televisi merupakan salah satu sarana komunikasi
yang menggunakan teknologi penampil. Pada mulanya, televisi hanya digunakan
untuk menyiarkan program-program berita dan hiburan dari suatu stasiun televisi.
Akan tetapi karena kemampuan televisi yang dapat mereproduksi gambar, bahan teks,
dan informasi visual maka televisi telah menjadi begitu bermanfaat sehingga
pemakaiannya sekarang jauh lebih banyak. Misalnya suatu permainan video (
video
game
), dapat dihubungkan ke penerima televisi. Ide yang sama juga diterapkan untuk
menggunakan penerima televisi sebagai alat untuk menampilkan pesan dengan
menggunakan mikrokontroler.
1.2
Tujuan dan Manfaat Penelitian
Tujuan dari penelitian ini adalah untuk membuat sebuah peralatan yang dapat
berfungsi untuk mengirim pesan melalui layar televisi.
Manfaat yang akan dicapai dari hasil penelitian adalah memberikan pilihan
baru kepada masyarakat untuk menampilkan informasi melalui layar televisi, sebagai
literatur atau referensi tentang
interfacing
mikrokontroler dengan televisi. Selain itu,
proyek penelitian ini juga bermanfaat sebagai literatur mengenai bahasa C sebagai
salah satu bahasa pemrograman mikrokontroler selain asembler.
1.3
Batasan Masalah
Proyek penelitian yang akan dilakukan ini mempunyai batasan-batasan
sebagai berikut :
a.
Sinyal video yang dibangkitkan adalah sinyal video hitam putih.
b.
Resolusi tampilan adalah 128 bit horizontal x 100 bit vertikal.
c.
Jumlah garis dalam satu medan adalah 262 dengan frekuensi 60 Hz. Sehingga
waktu untuk satu garis pemayaran akan sama dengan 63,61
μ
s.
d.
Input berasal dari
keyboard
PC dengan tombol-tombol yang digunakan adalah F1,
F2, F3, Tab, Spasi, Enter, angka 0 sampai 9, dan huruf a sampai z.
e.
Karakter yang ditampilkan hanya huruf besar.
f.
Karakter yang dapat ditampilkan ke layar televisi mempunyai dua tipe yaitu
karakter 5x7 dan karakter 3x5.
g.
Jumlah karakter dalam satu baris maksimal 16.
h.
Terdapat 3 mode masukan yaitu F1, F2, dan F3.
i.
Mode F1 merupakan mode masukan khusus dengan tampilan tetap.
j.
Mode F2 merupakan mode
editing
.
User
dapat menulis pesan yang akan
ditampilkan melalui
keyboard
maksimal 7 baris dan bisa disimpan. Pesan yang
diketikkan tidak akan langsung tertampil pada televisi tetapi diproses terlebih
dahulu di dalam mikrokontroler.
k.
Mode F3 digunakan untuk melihat pesan yang tersimpan di dalam mode F2.
l.
Jumlah tampilan untuk masing-masing mode adalah satu.
m.
Mikrokontroler yang digunakan adalah mikrokontroler dari keluarga AVR, yaitu
jenis ATmega32.
1.4
Metodologi Penelitian
Adapun metodologi-metodologi yang dilakukan penulis untuk melakukan
penelitian adalah sebagai berikut :
a.
Mengumpulkan referensi dan literatur dari perpustakaan dan internet.
b.
Membuat
downloader
untuk mikrokontroler ATmega32.
c.
Membuat rangkaian
interfacing
antara mikrokontroler dengan televisi dan
keyboard
.
d.
Membuat program.
e.
Menguji alat.
f.
Menulis laporan.
1.5
Sistematika Penulisan
Penulisan
laporan
penelitian tugas akhir ini terdiri dari lima bab yang
masing-masing bab berisi tentang :
BAB I
merupakan pendahuluan yang berisi latar belakang masalah, tujuan dan
manfaat penelitian, batasan masalah, metodologi penelitian, dan
sistematika penulisan.
BAB
II
berisi dasar teori tentang televisi, sinyal video,
keyboard
dan
mikrokontroler yang digunakan dalam perancangan serta bahasa
pemrogramannya.
BAB III
berisi tentang penjelasan perangkat keras dan perangkat lunak dalam
pembuatan sistem penampil pesan ke layar televisi.
BAB IV
memuat hasil akhir perancangan dan pembahasan mengenai hasil
penelitian yang telah dilaksanakan.
BAB V
berisi ringkasan hasil penelitian yang telah dilakukan dan saran yang
berisi ide-ide untuk perbaikan atau pengembangan terhadap penelitian
DASAR TEORI
2.1
Televisi
Kata televisi tersusun dari 2 kata, yaitu “
tele
” dan “
vision
”. Televisi berarti
“melihat dari jauh”. Pada mulanya, televisi dimaksudkan sebagai suatu cara lain untuk
menyiarkan program-program berita dan hiburan. Pada sistem siaran televisi,
informasi visual yang dilihat pada layar diubah menjadi sinyal listrik yang dikirimkan
ke penerima. Perubahan-perubahan listrik yang sesuai dengan perubahan-perubahan
dalam nilai cahaya membentuk sinyal yang dapat dilihat (
video signal
). Pada pesawat
penerima (
receiver
), sinyal yang dapat dilihat ini digunakan untuk menyusun kembali
bayangan pada layar tabung gambar. Pada televisi monokrom (
monochrome
), gambar
direproduksi dalam warna hitam dan putih dengan bayangan abu-abu. Pada televisi
berwarna, semua warna alamiah ditambahkan sebagai gabungan dari warna merah,
hijau, dan biru dalam bagian utama gambar.
Televisi merupakan suatu sistem untuk mereproduksi gambar diam seperti
adegan. Akan tetapi, gambar-gambar yang diperlihatkan satu di atas yang lainnya
cukup cepat sehingga memberikan ilusi gerakan. Satu kerangka gambar sendiri
hanyalah sekelompok daerah yang kecil dari cahaya dan gambar. Rincian yang lebih
mendalam mengenai gambar pada televisi diuraikan dalam subbab-subbab berikut:
elemen-elemen gambar, pemayaran horizontal dan vertikal, frekuensi kerangka
(
frame
) dan medan (
field
), frekuensi pemayaran horizontal dan vertikal.
2.1.1 Elemen-Elemen Gambar
Pada dasarnya sebuah gambar diam adalah suatu susunan dari banyak daerah
gelap dan terang yang kecil. Dalam cetakan foto, butir-butir perak halus memberikan
perbedaan dalam cahaya, yang diperlukan untuk memproduksi citra (bayangan). Bila
sebuah gambar dicetak, terdapat banyak titik-titik tercetak hitam kecil yang
membentuk citra. Dengan melihat pada pandangan yang diperbesar, dapat terlihat
bahwa gambar tercetak tersebut tersusun dari daerah-daerah elementer kecil hitam dan
putih.
Setiap daerah kecil dari cahaya merupakan sebuah rincian gambar atau elemen
gambar. Untuk singkatnya, ini disebut
pixel
. Semua elemen secara bersama-bersama
mengandung informasi visual pada layar. Jika elemen-elemen ini ditransmisikan dan
direproduksi dalam tingkat cahaya atau bayangan yang sama seperti yang asli dan
pada posisi yang sesuai, maka gambar direproduksi.
Sebagai suatu contoh, misalkan bahwa kita ingin mentransmisikan sebuah
citra dari sebuah silang hitam pada suatu dasar putih, di sebelah kiri pada gambar 2.1
ke bagian kanan gambar. Gambar dibagi dalam daerah-daerah elementer berwarna
hitam dan putih. Elemen gambar dalam dasar hitam adalah putih dan
pixel-pixel
yang
membentuk silang adalah hitam. Bila tiap elemen gambar ditransmisikan ke sisi kanan
gambar dan direproduksi dalam posisi semula dengan bayangan hitam atau putih, citra
direproduksi.
Citra
(bayangan)
Reproduksi
Gambar 2.1 Pembuatan (reproduksi) sebuah gambar dengan meniru
(duplikasi) elemen-elemen gambar
2.1.2
Pemayaran Horizontal dan Vertikal
Gambar televisi dipayar dalam deretan garis-garis horizontal yang berurutan,
satu di bawah yang lain. Pemayaran ini memungkinkan suatu sinyal video untuk
mencakup keseluruhan gambar. Pada suatu saat, sinyal video hanya dapat
memperlihatkan satu variasi. Guna memiliki satu sinyal video untuk semua variasi
cahaya, semua rincian gambar dipayar dalam tingkatan waktu yang berurutan.
Pemayaran membuat reproduksi gambar televisi berbeda dengan reproduksi
gambar pada cetakan foto. Dalam sebuah foto, keseluruhan gambar direproduksi pada
suatu waktu. Dalam televisi, gambar dikumpulkan kembali garis demi garis dan
televisi dapat muncul dengan struktur garis yang terpotong-potong dalam
segmen-segmen diagonal dan kerangka-kerangka bergulung ke atas atau ke bawah layar.
Gambar televisi dipayar dalam cara yang sama seperti membaca sebuah
halaman buku untuk meliput semua kata dalam satu garis dan semua garis dalam satu
halaman. Dimulai dari bagian atas kiri pada gambar 2.2, semua elemen gambar
dipayar dalam barisan yang berurutan dari kiri ke kanan dan dari atas ke bawah, satu
garis pada satu saat. Metode ini disebut pemayaran linear horizontal (
horizontal linear
scanning
). Ini digunakan dalam tabung gambar pada pesawat penerima untuk
mengumpulkan kembali gambar yang direproduksi.
Atas
Kiri
Berkas pemayaran
Kanan
Gambar 2.2 Pemayaran linear horizontal
Bawah
Urutan untuk pemayaran semua elemen gambar adalah sebagai berikut.
1.
Berkas elektron menyapu satu garis horizontal, meliputi semua elemen gambar
pada garis tersebut.
2.
Pada ujung tiap-tiap garis, berkas kembali dengan cepat ke bagian kiri untuk
memulai pemayaran garis horizontal berikutnya. Waktu untuk kembali ini disebut
pengulangan jejak (
retrace
) atau
flyback
. Tidak ada informasi gambar yang
dipayar selama pengulangan jejak sebab pada periode ini, tabung gambar
dikosongkan. Jadi pengulangan jejak haruslah cepat karena pengulangan jejak
3.
Bila berkas telah kembali ke sebelah kiri, posisi vertikalnya menurun sehingga
berkas tersebut akan memayar garis berikutnya ke bawah dan tidak mengulangi
garis yang sama. Ini dilakukan oleh gerak pemayaran vertikal dari berkas, yang
diberikan sebagai tambahan bagi pemayaran horizontal.
Sebagai akibat pemayaran vertikal, semua garis horizontal miring sedikit arah
ke bawah dari atas ke bawah. Bila berkas berada di bawah, pengulangan jejak vertikal
mengembalikan berkas ke atas untuk memulai kembali urutan pemayaran.
2.1.3
Garis-Garis Setiap Kerangka
Jumlah garis-garis pemayaran untuk satu gambar lengkap sebaiknya adalah
besar agar mencakup jumlah elemen-elemen gambar paling banyak, dan berarti lebih
terperinci. Akan tetapi, faktor-faktor lain membatasi pemilihan, dan ini telah
distandarkan. Untuk NTSC, jumlah garis-garis pemayaran pada satu gambar lengkap
adalah sebesar 525 garis.
2.1.4
Frekuensi Kerangka
Perhatikan bahwa berkas bergerak dengan lambat ke arah bawah sewaktu
memayar secara horizontal. Gerak pemayaran vertikal ini diperlukan agar garis-garis
tidak akan dipanyar satu di atas yang lainnya. Pemayaran horizontal menghasilkan
garis-garis dari kiri ke kanan, sedangkan pemayaran vertikal menyebabkan garis-garis
untuk mengisi kerangka dari atas ke bawah.
Waktu untuk satu kerangka lengkap dengan 525 garis pemayaran adalah 1/30
detik. Maka laju pengulangan gambar sama dengan 30 kerangka setiap detik.
2.1.5
Frekuensi Medan
Laju pengulangan gambar sebesar 30 kerangka setiap detik ternyata masih
belum cukup cepat untuk mengatasi kedipan pada level-level cahaya yang dihasilkan
oleh layar tabung gambar. Oleh karena itu, setiap kerangka dibagi menjadi dua
bagian, sehingga 60 pandangan adegan disajikan ke mata selama tiap detik. Setiap
kelompok atau bagian tersebut disebut dengan medan (
field
).
Laju pengulangan medan-medan adalah 60 setiap detik, karena dua medan
pandangan gambar diperlihatkan selama 1 detik. Laju pengulangan ini adalah cukup
tepat untuk menghilangkan kedipan
(flicker)
.
2.1.6
Frekuensi Pemayaran Horizontal dan Vertikal
Laju medan sebesar 60 Hz merupakan frekuensi pemayaran vertikal. Ini
adalah laju kecepatan pada mana berkas elektron menyelesaikan siklus gerak
vertikalnya dari atas ke bawah dan kembali lagi ke atas. Dengan demikian,
rangkaian-rangkaian defleksi vertikal untuk tabung gambar beroperasi pada 60 Hz. Waktu dari
setiap siklus pemayaran vertikal untuk satu medan adalah 1/60 detik.
Jumlah garis-garis pemayaran horizontal di dalam sebuah medan adalah
setengah dari jumlah 525 garis untuk sebuah kerangka lengkap, sebab satu medan
mengandung setiap garis lainnya. Ini memberikan 262
1/
2garis horizontal untuk setiap
medan vertikal.
Karena waktu untuk satu medan adalah 1/60 detik dan karena setiap medan
mengandung 262
1/
2garis, jumlah garis-garis setiap detik adalah :
262
1/
2×
60 = 15.750 Hz
Atau dengan mengalikan laju kerangka sebesar 30 Hz dengan 525 garis untuk satu
kerangka diperoleh jumlah garis-garis setiap detik sama dengan 15.750 Hz.
Frekuensi 15.750 Hz ini adalah kecepatan berkas elektron untuk
menyelesaikan siklus gerak horizontalnya dari kiri ke kanan dan kembali lagi ke kiri.
Dengan demikian rangkaian-rangkaian defleksi horizontal untuk tabung gambar
bekerja pada 15.750 Hz.
2.1.7
Waktu Untuk Garis Horizontal
Waktu untuk setiap garis pemayaran horizontal (
H
) adalah 1/15.750 detik.
Dalam mikrodetik :
Waktu
H
=
μ
750
.
15
000
.
000
.
1
detik = 63,5
μ
detik (pendekatan)
Waktu dalam mikrodetik ini menunjukkan bahwa sinyal video untuk
elemen-elemen gambar dalam garis-garis horizontal dapat memiliki frekuensi-frekuensi
tinggi, yakni dalam orde megahertz. Jika terdapat lebih banyak garis, waktu
pemayaran akan lebih singkat yang menghasilkan frekuensi-frekuensi video yang
2.2
Sinyal Video
Dalam suatu sinyal video, amplitudo tegangan dan arus berubah terhadap
waktu, sama seperti sinyal audio. Tetapi sinyal video berhubungan dengan informasi
visual. Sebuah contoh sinyal video diperlihatkan pada gambar 2.3.
Gambar 2.3 Sinyal video
[8]Sinyal video ini memperlihatkan informasi gambar untuk empat garis
pemayaran horizontal. Setiap garis dimulai dengan sebuah pulsa sinkronisasi
horizontal. Setelah pulsa sinkronisasi horizontal, sinyal video mengandung informasi
gambar berupa level-level tegangan di antara 0,3 volt dan 1 volt. Level-level tegangan
di antara 0,3 volt dan 1 volt ini akan mengontrol intensitas warna yang dipancarkan ke
layar televisi. Untuk sinyal video hitam putih berarti hanya ada dua level tegangan
untuk informasi gambarnya yaitu 0,3 volt dan 1 volt. Tegangan 0,3 volt akan
menghasilkan warna hitam dan tegangan 1 volt akan menghasilkan warna putih.
Perlu diingat bahwa untuk menampilkan satu gambar lengkap dalam satu
medan dibutuhkan 262
1/
2garis pemayaran horizontal. Untuk tujuan praktisnya,
1/
2garis yang terakhir dapat dihilangkan sehingga setiap medan akan mempunyai 262
garis pemayaran horizontal. Akan tetapi dari 262 garis pemayaran horizontal tersebut,
hanya 242 garis yang mengandung informasi gambar. 20 garis pemayaran terakhir
digunakan untuk sinkronisasi vertikal. Sinkronisasi vertikal bertujuan untuk
mengembalikan berkas pemayaran ke atas layar untuk memulai kembali urutan
pemayaran medan berikutnya. Selama sinkronisasi vertikal, tidak ada informasi
2.3
Konverter Digital ke Analog
Pengubah digital ke analog (
digital to analog converter
, DAC) menerima
masukan digital pararel dan mengubahnya ke nilai tegangan yang disajikan masukan
biner. Teknik pengubahan digital ke analog yang paling sederhana adalah
menggunakan jaringan pembagi resistif.
Dalam tugas akhir ini, proses pengubahan digital ke analog dibutuhkan untuk
mengubah sinyal video digital yang dibangkitkan oleh mikrokontroler menjadi sinyal
video analog yang dapat diterima oleh televisi. Adapun rangkaian DAC yang
digunakan tampak seperti gambar 2.4.
Masukan
digital
Gambar 2.4 Konverter digital ke analog
Dengan 2 masukan digital yaitu V1 dan V2, akan dihasilkan empat level
tegangan dari 00 sampai 11. Akan tetapi, karena untuk membangkitkan sinyal video
hitam putih ke televisi hanya membutuhkan tiga level tegangan yaitu level
sinkronisasi, level warna hitam, dan level warna putih maka terdapat satu kondisi
masukan yang tidak terpakai.
Level tegangan analog yang dihasilkan dapat dihitung dengan menggunakan
rumus pembagi tegangan. Sebagai contoh, tegangan masukan digital untuk logika ‘0’
adalah 0 volt dan logika ‘1’ adalah 5 volt maka :
Untuk masukan V2 =1 dan V1 = 0
V
R
R
R
R
Vout
*
5
2
//
1
3
3
+
=
Untuk masukan V2 =1 dan V1 = 1
V
R
R
R
R
R
Vout
*
5
3
2
//
1
2
//
1
2.4 Mikrokontroler
ATmega32
2.4.1 Pendahuluan
Mikrokontroler adalah suatu mikroprosesor
plus
. Mikrokontroler adalah otak
dari suatu sistem elektronika, seperti halnya mikroprosesor sebagai otak komputer.
Nilai plus bagi mikrokontroler adalah terdapatnya memori dan port
input/output
dalam suatu kemasan IC yang kompak. Kemampuannya yang
programmable
, fitur
yang lengkap, dan juga harga yang terjangkau memungkinkan mikrokontroler
digunakan pada berbagai sistem elektronis.
Salah satu mikrokontroler yang sedang berkembang adalah mikrokontroler
AVR (
Alf and Vegard’s Risc processor
) dari Atmel. Mikrokontroler AVR memiliki
arsitektur RISC 8 bit, di mana semua instruksi dikemas dalam kode 16 bit dan
sebagian besar instruksi dieksekusi dalam satu siklus
clock
, berbeda dengan instruksi
MCS51 yang membutuhkan 12 siklus
clock
. Tentu saja itu terjadi karena kedua jenis
mikrokontroler tersebut memiliki arsitektur yang berbeda. AVR berteknologi RISC
(
Reduced Instruction Set Computing
), sedangkan seri MCS51 berteknologi CISC
(
Complex Instruction Set Computing
). Secara umum, AVR dapat dikelompokkan
menjadi 4 kelas, yaitu ATtiny, keluarga AT90Sxx, keluarga ATmega, dan
AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori,
peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, semua
keluarga mikrokontroler AVR bisa dikatakan hampir sama.
AVR memiliki register keperluan umum (GPR,
General Purpose Register
)
sebanyak 32 register. Semua operasi aritmatika dan logika dilakukan pada GPR.
Memori data yang tersedia pada AVR ada yang mencapai 64 KB dan dapat dialamati
baik secara langsung maupun tidak langsung menggunakan instruksi
Load/Store
. Pada
pengalamatan tidak langsung, bagian lain GPR digunakan sebagai
pointer
(penunjuk)
pengalamatan tidak langsung. GPR dan register I/O juga dipetakan pada bagian
bawah memori data dan dapat diakses menggunakan instruksi-instruksi
Load/Store
.
Semua mikrokontroler AVR memiliki jenis memori program
Flash
yang dapat
diprogram ulang. Hal ini sangat cocok untuk pengembangan sistem maupun bagi para
hobbist yang gemar memodifikasi dan membuat proyek-proyek baru. Selain itu,
semua mikrokontroler AVR memiliki memori EEPROM yang terintegrasi dalam
Meskipun terdapat banyak seri mikrokontroler AVR, namun yang akan
digunakan untuk proyek penelitian ini adalah ATmega32. Seri ATmega32 dipilih
karena mikrokontroler ini cukup cepat dalam melaksanakan instruksi untuk
membangkitkan sinyal video dan memiliki kapasitas memori program dan data yang
besar serta fasilitas yang lengkap.
2.4.2 Arsitektur ATmega32
Gambar 2.5 Blok diagram ATmega32
Mikrokontroler AVR memiliki model arsitektur Harvard, di mana memori dan
bus untuk program dan data dipisahkan. Dalam arsitektur AVR, seluruh 32 register
umum yang ada terhubung langsung ke ALU prosesor. Hal inilah yang membuat
AVR begitu cepat dalam mengeksekusi instruksi. Dalam satu siklus
clock
, terdapat
Dari 32 register yang ada, terdapat enam buah regiser yang dapat digunakan
untuk pengalamatan tidak langsung 16 bit sebagai register
pointer
. Register tersebut
memiliki nama khusus, yaitu X,Y, dan Z. Masing-masing terdiri dari sepasang
register. Register-register khusus tersebut adalah R26:R27 (register X), R28:R29
(register Y), R30:R31 (register Z).
2.4.3 Fitur
ATmega32
Mikrokontroler ATmega32 memiliki fitur-fitur utama antara lain sebagai
berikut:
a)
131 macam instruksi.
b)
32 x 8 bit
General Purpose Register
.
c)
Kecepatan maksimal 16 MHz.
d)
Memori program
Flash
32 KB.
e)
Memori data SRAM 2 KB.
f)
Memori EEPROM 1024
byte
.
g)
Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan PortD.
h)
Dua buah
Timer/Counter
8 bit.
i)
Satu buah
Timer/Counter
16 bit.
j)
Watchdog Timer
dengan osilator internal.
k)
Port USART untuk komunikasi serial.
l)
Port antarmuka SPI.
m)
Antarmuka komparator analog.
n)
ADC 10 bit sebanyak 8 saluran.
o)
PWM sebanyak 4 saluran.
p)
Unit interupsi internal dan eksternal.
2.4.4 Konfigurasi Pin ATmega32
Konfigurasi pin ATmega32 dapat dilihat pada gambar 2.6. Dari gambar
tersebut dapat dijelaskan konfigurasi pin ATmega32 sebagai berikut:
a.
VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.
b.
GND merupakan pin ground.
d.
Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
Timer/Counter
, komparator analog, dan SPI.
e.
Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI,
komparator analog, dan
Timer Oscilator
.
f.
Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
komparator analog, interupsi eksternal, dan komunikasi serial.
g.
RESET merupakan pin yang digunakan untuk mereset mikrokontroler.
h.
XTAL1 dan XTAL2 merupakan pin masukan
clock
eksternal.
i.
AVCC merupakan pin masukan tegangan untuk ADC.
j.
AREF merupakan pin masukan tegangan referensi DC.
Gambar 2.6 Pin ATmega32
2.4.5 Peta
Memori
AVR ATmega32 memiliki ruang pengalamatan memori data dan memori
program yang terpisah. Memori data terbagi menjadi 3 bagian, yaitu 32 buah register
umum, 64 buah register I/O, dan 2048
byte
SRAM Internal.
Register keperluan umum menempati
space
data pada alamat terbawah, yaitu
$00 sampai $1F. Sementara itu, register khusus untuk menangani I/O dan kontrol
terhadap mikrokontroler menempati 64 alamat berikutnya, yaitu mulai dari $20
hingga $5F. Register tersebut merupakan register yang khusus digunakan untuk
mengatur fungsi terhadap berbagai
peripheral
mikrokontroler, seperti kontrol register,
secara lengkap dapat dilihat pada lampiran L8. Alamat memori berikutnya digunakan
untuk SRAM 2048
byte
, yaitu pada lokasi $60 sampai dengan $85F. Konfigurasi
memori data ditunjukkan pada gambar berikut.
Gambar 2.7 Konfigurasi memori data AVR ATmega32
Memori program yang terletak dalam
Flash
PEROM tersusun dalam word
atau 2
byte
karena setiap instruksi memiliki lebar 16 bit atau 32 bit. AVR ATmega32
memiliki 16 K
byte
X 16 bit
Flash
PEROM dengan alamat mulai dari $000 sampai
$3FFF. AVR tersebut memiliki 14 bit
Program Counter
(PC) sehingga mampu
mengalamati isi
Flash
.
Selain itu, ATmega32 juga memiliki memori data berupa EEPROM sebanyak
1024
byte
. Untuk melakukan akses terhadap EEPROM, terdapat tiga register penting
yang berhubungan dengan EEPROM. Register tersebut adalah EEAR (
EEPROM
Address Register
), EEDR (
EEPROM Data Register
), dan EECR (
EEPROM Control
Register
).
2.4.6 Status Register (SREG)
Status Register adalah register berisi status yang dihasilkan pada setiap operasi
yang dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti
CPU mikrokontroler.
Gambar 2.9 Status register ATmega32
a.
Bit 7 – I:
Global Interrupt Enable
Bit harus diset untuk meng-
enable
interupsi. Setelah itu, diaktifkan interupsi mana
yang akan digunakan dengan cara meng-
enable
bit kontrol register yang
bersangkutan secara individu. Bit akan di-
clear
apabila terjadi suatu interupsi
yang dipicu oleh
hardware
, dan bit tidak akan mengizinkan terjadinya interupsi,
serta akan diset kembali oleh instruksi RETI.
b.
Bit 6 – T:
Bit Copy Storage
Instruksi BLD dan BST menggunakan bit-T sebagai sumber atau tujuan dalam
operasi bit. Suatu bit dalam sebuah register GPR dapat disalin ke bit T
menggunakan instruksi BST, dan sebaliknya bit-T dapat disalin kembali ke suatu
bit dalam register GPR menggunakan instruksi BLD.
c.
Bit 5 – H:
Half Carry Flag
d.
Bit 4 – S:
Sign Bit
Bit-S merupakan hasil operasi EOR antara flag-N (negatif) dan flag V
(komplemen dua
overflow
).
e.
Bit 3 – V:
Two’s Complement Overflow Flag
f.
Bit 2 – N:
Negative Flag
Apabila suatu operasi menghasilkan bilangan negatif, maka flag-N akan diset.
g.
Bit 1 – Z:
Zero Flag
Bit akan diset bila hasil operasi yang diperoleh adalah nol.
h.
Bit 0 – C:
Carry Flag
Apabila suatu operasi menghasilkan
carry
, maka bit akan diset.
2.4.7 Mode
Sleep
Mode
sleep
dapat diatur melalui register MCUCR yang terdapat pada
mikrokontroler ATmega32 mulai bit ke 4 sampai bit ke 7.
Gambar 2.10 Register MCUCR
a.
Bit 7 – SE:
Sleep Enable
Bit SE harus diset untuk membuat mikrokontroler masuk ke dalam mode
sleep
,
ketika instruksi
SLEEP
dieksekusi.
b.
Bit 6…4 – SM2…SM0:
Sleep Mode Selects Bits 2,1, and 0
Bit pemilih mode
sleep
.
2.4.8 Interupsi
Interupsi adalah kondisi yang membuat CPU berhenti dari rutinitas yang
sedang dikerjakan (rutin utama) untuk mengerjakan rutin lain (rutin interupsi).
ATmega32 memiliki 21 sumber interupsi yang ditunjukkan pada tabel 2.2.
Tabel 2.2 Macam sumber interupsi pada AVR ATmega32
2.4.9
I/O Port
Port I/O pada mikrokontroler ATmega32 dapat difungsikan sebagai
input
ataupun
output
dengan keluaran
high
atau
low
. Untuk mengatur fungsi port I/O
sebagai
input
ataupun
output
, perlu dilakukan penyetingan pada DDR dan Port.
Berikut tabel pengaturan port I/O:
Tabel 2.3 Konfigurasi
setting
untuk Port I/O
DDR bit = 1
DDR bit = 0
Port bit = 1
Output High
Input pull-up
2.4.10 Timer/Counter 1
Timer/Counter
1 adalah 16-bit
timer/counter
yang memungkinkan program
pewaktuan lebih akurat. Berbagai fitur dari
Timer/Counter
1 adalah:
•
Desain 16 bit (juga memungkinkan 16 bit PWM)
•
Dua buah
compare
unit
•
Dua buah register pembanding
•
Satu buah input
capture
unit
•
Timer dinolkan saat
match compare
(
auto reload
)
•
Dapat menghasilkan gelombang PWM dengan
glitch-free
•
Periode PWM yang dapat diubah-ubah.
•
Pembangkitan frekuensi
•
Empat buah sumber interupsi (TOV1, OCF1A, OCF1B, dan ICF1)
Pengaturan pada
Timer/Counter
1 diatur melalui register TCCR1A
Gambar 2.12 Register TCCR1A
Penjelasan untuk setiap bit:
a.
Bit 7: 6 – COM1A1:0 :
Compare Ouput Mode
untuk
channel
A
Bit 5: 4 – COM1B1:0 :
Compare Output Mode
untuk
channel
B
Bit COM1A1:0 dan COM1B1:0 mengontrol kondisi pin
Output Compare
(OC1A dan OC1B). Jika salah satu atau kedua bit pada register COM1A1:0 ditulis
menjadi satu, maka kaki pin OCIA tidak berfungsi normal sebagai port I/O. Begitu
juga pada register COM1B1:0. Fungsi pada pin OC1A dan OC1B tergantung pada
seting bit pada regiser WGM13:0 diset sebagai mode PWM atau mode non-PWM.
Tabel 2.4 Konfigurasi bit
Compare Output Mode non PWM
Tabel 2.6 Konfigurasi bit
Compare Output Mode Phase Correct
dan
Frequency Correct PWM
b.
Bit 3 – FOC1A :
Force Output Compare
untuk
channel
A
Bit 2 – FOC1B :
Force Output Compare
untuk
channel
B
c.
Bit 1:0 – WGM11:0 :
Waveform Generation Mode
Dikombinasikan dengan bit WGM13:2 yang terdapat pada register TCCR1B, bit
tersebut mengontrol urutan pencacah dari
counter
, sumber maksimum (TOP) nilai
counter
, dan tipe gelombang yang dibangkitkan. Mode yang dapat dilakukan antara
lain mode normal, mode
Clear Timer on Compare Match
(CTC) dan tiga tipe mode
PWM. Setingan mode dapat dilihat pada tabel berikut.
Tabel 2.7 Mode operasi
Timer/Counter
1
Pengaturan
Timer
1 juga diatur oleh register TCCR1B
Gambar 2.13 Register TCCR1B
a.
Bit 7 – ICNC1 :
Input Capture Noise Canceler
b.
Bit 6 – ICES1 :
Input Capture Edge Select
c.
Bit 5 :
Reserved Bit
d.
Bit 4:3 – WGM1 1:3 :
Waveform Generation Mode
e.
Bit 2:0 :
Clock Select
Ketiga bit tersebut berfungsi untuk mengatur sumber
clock
yang digunakan pada
Timer/Counter
1. Pengaturan sumber
clock
dapat dilihat pada tabel di bawah ini.
Tabel 2.8 Konfigurasi bit sumber
clock
2.5 Keyboard
IBM
PC
Keyboard
IBM PC merupakan sarana
input
yang sangat murah, hanya dengan
2 utas kabel catu daya sistem berbasis mikrokontroler dengan mudah bisa dilengkapi
dengan 101 tombol untuk mengisikan teks maupun angka.
2.5.1 Tata Kerja Keyboard PC
Setiap kali salah satu tombol
keyboard
ditekan atau dilepas,
keyboard
akan
mengirim kode ke
host
(
host
adalah komputer kalau
keyboard
dihubungkan ke PC,
atau berupa mikrokontroler kalau
keyboard
dihubungkan ke peralatan berbasis
Scan code
tombol
‘s’
adalah
1B
(angka heksadesimal setara dengan angka
biner 00011011). Ketika tombol
‘s’
ditekan
keyboard
akan mengirim
1B
, jika tombol
‘s’
ditekan terus maka
keyboard
akan mengirimkan
1B
berikutnya terus menerus,
sampai ada tombol lain yang ditekan atau tombol
‘s’
tadi dilepas.
Keyboard
juga mengirim kode saat ada satu tombol yang lepas, kodenya
adalah
F0
(angka heksadesimal setara dengan angka biner 11110000), jadi kalau
tombol
‘s’
tadi dilepas
keyboard
akan mengirim
F0
dan
1B
.
Kode-kode tersebut dikirim
keyboard
secara seri, artinya dikirim satu bit demi
satu bit. Misalnya
1B
(00011011) dikirimkan dengan cara: mula-mula dikirim ‘1’,
sesaat kemudian ‘1’ lagi dan menyusul ‘0’ sampai akhirnya terkirim sebanyak 8 bit
yang berbentuk 00011011 (dikirim dari bit yang paling kanan kemudian bergeser satu
per satu sampai yang paling kiri).
Masing-masing tombol memiliki
scan code
sendiri, termasuk tombol
‘shift’
,
tombol
‘ctrl’
, dan lain-lain. Jadi jika tombol
‘ctrl’
ditekan bersama dengan
‘s’
maka
scan code
yang terkirim adalah
14
(
scan code
untuk
‘ctrl’
) dan
1B
(
scan code
untuk
‘s’
). Terserah
host
untuk meng-interpretasi
scan code
itu sebagai apa yang merupakan
tugas program dalam mikrokontroler untuk mengenal
scan code
tersebut.
Scan code
disusun sebagai kode 8 bit, bisa dipakai untuk membedakan 256
macam kode, sedangkan
keyboard
PC hanya punya 101 tombol, sehingga kode 8 bit
ini cukup untuk semua tombol. Tombol di
keyboard
PC dikelompokkan menjadi 2
bagian, yaitu bagian utama dan bagian tambahan. Bagian utama dinyatakan dengan
scan code
1
byte
, sedangkan bagian tambahan diwakili dengan beberapa
byte
scan
code
yang selalu diawali dengan
E0
. Misalnya tombol
‘ctrl’
kiri diwakili dengan
14
sedangkan tombol
‘ctrl’
kanan diwakili dengan
E0 14
.
Gambar 2.15
Keyboard
PC bagian tambahan
Pada gambar 2.14 dan gambar 2.15 memperlihatkan
scan code
masing-masing
tombol
keyboard
PC.
Scan code
tidak berupa kode
ASCII
(
American Standart Code
for Information Interchange
) yang biasa dipakai mewakili huruf, dan ditentukan
secara acak, sehingga setelah diterima
host
(PC atau mikrokontroler),
scan code
harus
dirubah menjadi kode
ASCII
dengan memakai cara ‘pencarian tabel’.
Komunikasi antara
keyboard
dan
host
adalah komunikasi dua arah.
Keyboard
mengirim
scan code
ke
host
,
host
bisa mengirim perintah untuk mengatur kerja dari
keyboard
. Kode perintah untuk
keyboard
tidak sebanyak
scan code
. Kode perintah
untuk
keyboard
(dalam heksadesimal) antara lain:
1.
ED Perintah untuk menyalakan/memadamkan lampu indikator di
keyboard
.
Setelah menerima perintah ED dari
host
,
keyboard
akan menjawab dengan
FA sebagai tanda perintah itu telah dikenali (ACK-
acknowledge
) dan
menunggu 1
byte
perintah lagi dari
host
untuk menentukan lampu
indikator yang mana yang perlu dinyalakan/dipadamkan.
1
byte
perintah susulan tersebut akan diartikan sebagai berikut: bit 0
dipakai untuk mengatur lampu indikator
Scroll Lock
, bit 1 untuk
Num
Lock
dan bit 2 untuk
Caps Lock
, bit-bit lainnya diabaikan.
2.
EE
Dipakai
host
untuk memeriksa apakah
keyboard
masih aktif. Setelah
menerima perintah EE dari
host
,
keyboard
akan menjawab dengan EE
3.
F0
Ada
keyboard
yang dilengkapi 3 set
scan code
, perintah ini dipakai untuk
memilih
scan code
yang ingin dipakai. Setelah menerima F0 dari
host
,
keyboard
akan menjawab dengan FA sebagai tanda perintah itu telah
dikenali (ACK-
acknowledge
) dan
host
menjawab 1
byte
lagi (nilainya 1, 2,
atau 3) untuk memilih set
scan code
. Jika
byte
yang dikirimkan nilainya 0,
keyboard
akan menjawab dengan nomor set
scan code
yang saat itu
dipakai.
4.
F3
Dipakai untuk mengatur kecepatan tanggapan
keyboard
(
Typematic Repeat
Rate
). Setelah menerima perintah F3 dari
host
,
keyboard
akan menjawab
dengan FA sebagai tanda perintah itu telah dikenali (ACK-
acknowledge
)
dan
host
menjawab 1
byte
nilai kecepatan tanggapan
keyboard
yang
dikehendaki.
5.
F4
Digunakan untuk mengaktifkan kembali
keyboard
. Setelah menerima
perintah ini
keyboard
akan menjawab dengan FA (ACK-
acknowledge
).
6.
F5
Digunakan untuk menonaktifkan
keyboard
. Setelah menerima perintah ini
keyboard
akan menjawab dengan FA (ACK-
acknowledge
).
7.
FE
Dipakai untuk meminta
keyboard
mengirim ulang
scan code
terakhir yang
dikirim.
8.
FF
Perintah untuk me-reset
keyboard
.
Selain perintah dari
host
,
keyboard
juga mempunyai kode-kode lain selain
scan code
yang dikirimkan ke
host
, yaitu sebagai berikut.
1.
FA
Artinya ACK (
acknowledge
), yaitu jawaban dari
keyboard
bahwa perintah
dari
host
telah dikenali dengan baik.
2.
AA
Berarti
keyboard
selesai memeriksa diri dan siap bekerja setelah diberi
catu daya.
3.
EE
Berarti
keyboard
masih aktif.
4.
FE
Artinya meminta
host
mengulang perintah terakhir yang dikirim.
5.
FF/00 Berarti terjadi kesalahan pada
keyboard
.
2.6 Pemrograman
Mikrokontroler ATmega32
Program sumber (
source program
) untuk mikrokontroler dapat dituliskan
yang dituliskan menggunakan bahasa
Basic
untuk mikrokontroler. Untuk
menghasilkan kode yang dapat dijalankan pada mikrokontroler,
source program
harus dikompilasi menggunakan program yang sesuai.
Setiap bahasa memiliki kelebihan dan kekurangannya masing-masing. Bahasa
asembler dituliskan dengan detail setiap langkah yang dijalankan, sehingga
penulisannya relatif lebih panjang. Namun demikian, program asembler sangat cocok
dalam hal efisiensi penggunaan memori program. Di sisi lain, bahasa C memiliki
kemudahan dalam penulisan program, namun terkadang kode yang dihasilkan akan
menggunakan memori program yang besar.
2.6.1 Struktur Program dalam Bahasa C
Struktur dari program C dapat dilihat sebagai kumpulan dari sebuah atau lebih
fungsi-fungsi. Dimana masing-masing fungsi tersebut mempunyai nama. Fungsi
utama yang harus ada di program C sudah ditentukan namaya, yaitu
main()
.
Pada gambar 2.16 merupakan struktur atau pola penulisan program dalam
bahasa C.
penulisan file-file pustaka
main()
{
statement-statement;
………
}
fungsi_fungsi_lain ()
{
statement-statement;
………
}
2.6.2 Tipe Data dalam Bahasa C
Di dalam bahasa pemrograman komputer, data yang digunakan umumnya
dibedakan menjadi data numerik (bilangan) dan data karakter (huruf dan kata). Data
numerik dibedakan lagi menjadi data numerik integer (bilangan bulat) dan data
numerik pecahan. Data numerik pecahan dapat dibedakan lagi menjadi data numerik
pecahan ketepatan tunggal (32 bit) dan data numerik pecahan ketepatan ganda (64
bit). Bahasa pemrograman komputer membedakan data ke dalam beberapa tipe data
ini untuk tujuan supaya operasi data menjadi efisien dan efektif.
Bahasa C menyediakan lima macam tipe data dasar, yaitu tipe data
integer
(data numerik bulat yang dideklarasikan dengan
int
),
floating point
(data numerik
pecahan ketepatan tunggal yang dideklarasikan dengan
float
),
double precision
(data
numerik pecahan ketepatan ganda yang dideklarasikan dengan
double
), karakter
(dideklarasikan dengan
char
) dan kosong (dideklaraskan dengan
void
). Lima data ini
dapat dikombinasikan dengan perintah pengubah (modifier)
signed
,
unsigned
,
long
,
dan
short
. Hasil dari kombinasi tipe data ini dapat dilihat pada tabel 2.9.
Tabel 2.9 Tipe data dalam bahasa C
Jangkauan Nilai
Tipe Lebar
Dari Sampai
dengan
bit 1
bit
0
1
char
signed char
-128
127
unsigned char
8 bit
0
255
int
short int
signed int
-32768
32768
unsigned int
16 bit
0
65535
long int
signed long int
-2147483648
2147483647
unsigned long int
0
4294967295
float
32 bit
Pengubah
signed
berarti nilai variabel dapat mempunyai tanda, sehingga dapat
bernilai positif maupun negatif. Terlihat pada tabel 2.9 di atas bahwa
int
dan
signed
int
mempunyai nilai jangkauan yang sama, sehingga sebenarnya pengubah
signed
tidak perlu untuk
int
,
char
, dan
long int
, karena
default
dari tipe ini sudah
signed
.
2.6.3 Variabel
Variabel digunakan untuk memesan tempat di memori (RAM) saat mewakili
suatu nilai di dalam proses program. Nilai variabel ini dapat diubah-ubah
sewaktu-waktu.
Semua variabel yang akan digunakan dalam pemrograman perlu terlebih
dahulu di deklarasikan (memesan tempat dalam memori) terlebih dahulu. Bentuk
umum dari deklarasi variabel sebagai berikut:
tipe nama_nama variabel;
2.6.4 Operator pada Bahasa C
Operator merupakan simbol yang biasa dilibatkan dalam program untuk
melakukan sesuatu operasi atau manipulasi. Bahasa C memiliki operator jauh lebih
banyak daripada bahasa-bahasa pemrograman lainnya. Berikut ini adalah beberapa
operator yang digunakan dalam pemrograman.
2.6.4.1
Operator Aritmatika
Bahasa C menyediakan sejumlah operator aritmatika seperti pada tabel 2.10
di bawah ini.
Tabel 2.10 Operator aritmatika
Operator Keterangan
* Perkalian
/ Pembagian
%
Sisa pembagian (modulus)
+ Penjumlahan
2.6.4.2
Operator Bitwise (Manipulasi Bit)
Operator-operator
bitwise
digunakan untuk memanipulasi bit-bit dari nilai data
yang ada di memori. Karena bahasa C memang dimaksudkan untuk dapat beroperasi
secara level rendah, seperti halnya bahasa mesin, maka operator
bitwise
ini sangat
diperlukan keberadaannya. Seluruh operator
bitwise
hanya bisa dikenakan pada
operand
bertipe integer atau karakter. Operator-operator ini dapat dilihat pada tabel
2.11.
Tabel 2.11 Operator bitwise
Operator Keterangan
<<
Geser bit ke kiri
>>
Geser bit ke kanan
&
Bitwise AND (dan)
|
Bitwise OR (atau)
^
Bitwise XOR
~
Bitwise NOT (komplemen)
2.6.4.3
Operator Relasi
Operator relasi biasa digunakan untuk membandingkan dua buah nilai.
Keseluruhan operator relasi dapat dilihat pada tabel 2.12.
Tabel 2.12 Operator relasi
Operator Keterangan
= =
Sama dengan (bukan penugasan)
!=
Tidak sama dengan
> Lebih
dari
< Kurang
dari
>=
Lebih dari atau sama dengan
<=
Kurang dari atau sama dengan
Ungkapan ini memberikan nilai benar atau salah. Hasil ungkapan berupa :
0 kalau ungkapan bernilai salah
2.6.4.4 Operator Logika
Operator logika biasa digunakan untuk menghubungkan dua buah ungkapan
kondisi menjadi sebuah ungkapan kondisi. Operator-operator ini berupa :
&& (operator logika dan)
| | (operator logika atau)
! (operator logika bukan)
2.6.5
Percabangan dan Perulangan
Sebuah program dapat berjalan secara berurutan maupun tidak (dengan kata
lain menggunakan percabangan). Program yang menggunakan percabangan dapat
melalui penyeleksian kondisi (melalui syarat-syarat tertentu), namun tidak menutup
kemungkinan penulisan program percabangan dilakukan tanpa penyeleksian kondisi.
2.6.5.1 Percabangan Bersyarat (Conditonal Branch)
Untuk pecabangan bersyarat, dapat digunakan statement
if
dan
if…else
.
Bentuk dasar dari
if
dan
if…else
dapat dilihat pada gambar 2.17.
Pernyataan-pernyataan
(
statement
yang berada di dalam blok
if
) akan
dijalankan apabila ungkapan atau kondisi di dalam kurung bernilai benar. Begitu juga
dengan perintah