PERTEMUAN IV PEMOGRAMAN SEVEN SEGMEN DAN LCD TUJUAN: - Mahasiswa mampu memprogram mikrokontroller untuk menampilkan Informasi pada perangkan output Seven Segmen dan LCD. PERALATAN: Modul-modul/perangkat keras yang digunakan dalam praktikum ini terdiri dari : 1. Satu buah Kit-MCU (ATMega16) 2. Satu buah Kit-Display a. 1 sub-modul Led (Merah-Kuning-Hijau-Biru) b. 1 sub-modul Mic c. 1 buah Buzzer d. 1 sub-modul Led & Switch e. 1 sub-modul LDR f. 1 sub-modul Potensio g. 1 sub-modul Phototransistor 3. Satu buah Kit Programmer AVR910-Serial
4. Satu Kit Seven Segmen 5. Satu Kit LCD 6. Satu buah kabel ISP 7. Satu buah LED Senter 8. Satu set kabel jumper yang terdiri : a. 3 buah kabel data 10 pin b. 1 buah kabel jumper 2 pin c. 3 buah kabel jumper 1 pin 4. SEVEN SEGMEN LED Seven Segmen umunya digunakan untuk menampilkan angka satuan desimal yaitu angka 0 sampai dengan 9. Kadang-kadang dapat digunakan juga untuk menampilkan bilang Hexa Desimal yaitu berupa angak 1.. 9 dan ab,c,d,e,f. Untuk dapat menampilkan angka-angka tersebut dengan cara mengubah nyala atau matinya masing-masing dari 7 segmen tersebut. Walaupun nama komponen ini adalah Seven Segmen, sebenarnya terdapat 8 buah Led yang terdiri
7 buah dalam bentuk garis dan 1 buah untuk dalam bentuk titik (untuk desimal/koma). Dengan cara ini pin yang digunakan pada MCU untuk mengendalikan sebuah 7Segmen dengan 7+1 buah pin (untuk jalur data). Adapun penamaan led-led tersebut menggunakan huruf dari A sampai dengan G dan DP untuk titik, untuk lebih jelasnya dapat dilihat pada gambar di bawah ini. Sementara itu secara skematik terdapat dua jenis 7 Segmen ini yaitu Common Anoda (Gambar 52 a dan Common Cathoda (Gambar 52.b). Cara pemakaiannya setiap jenis ini berbeda secara logika,sebagai contoh untuk Common Anoda, common -nya diberikan logika 1 dalam hal ini Vcc (+) dan setiap led akan menyala jika diberi logika 0. Sedangkan untuk Common Cathoda kebalikkannya, commom -nya diberikan logika 0 (nol) dalam hal ini Gnd dan setiap led akan menyala jika diberi logika 1. Gambar 52 Skematik 7Segmen Common Anoda dan Common Cathoda Tugas 4.1 Memprogram Seven Segmen Tunggal 1. Salin source code di bawah ini dan simpan dengan nama file : Tugas_4.1.bas '----------------------------------------- ' Single 7-Segmen Common Anoda '--------------------------------- $regfile = "m16def.dat" $crystal = 11059200 'crystal= 8000000 ' pgfedcba Const N0 = &B00111111 Const N1 = &B00000110 Const N2 = &B01011011 Const N3 = &B01001111 Const N4 = &B01100110 Const N5 = &B01101101
Const N6 = &B01111101 Const N7 = &B00000111 Const N8 = &B01111111 Const N9 = &B01101111 Config PortA = Output Do Porta = N0 Porta = N1 Porta = N2 Porta = N3 Porta = N4 Porta = N5 Porta = N6 Porta = N7 Porta = N8 Porta = N9 Loop 2. Compile & Upload ke dalam MCU 3. Hubungkan MCU dan Kit-7S1 pada 7-segmen tunggal dengan PORT.A 4. Perhatikan prilaku 7-Segmen tunggal tersebut. Tugas Praktikan: 1. Ubah program tersebut sehingga seven segmen dapat menampilkan bilangan hexadesimal dari 0-F pada 7-segmen tunggal. Tugas 4.2 Menampilkan Hasil Counter Up/Down Pada Seven Segmen Pada tugas ini, praktikan diminta untuk membuat program sekaligus merangkaikan kitkit yang ada untuk menghasilkan sebuah Counter Up/Down 1 digit dengan menggunakan dua buah tombol tekan (misal S1 dan S2). Tombol S1 digunakan untuk menaikkan nilai bilangan dan S2 digunakan untuk menurunkan nilai bilangan. Tugas:
1. Mounting kit-kit yang ada/diperlukan. (Kit MCU,Kit Display,Kit 7S-1) 2. Tunjukkan kepada asisten serta jelaskan rencana praktikan terhadap rangkaian yang dirakit. (Asisten memberi paraf pada hal ini. 3. Buat source code untuk menjadikan rangkaian dirakit menghasilkan Counter Up/Down. 4. Source code disimpan dengan nama file : Tugas_4.2.bas 5. Jika rangkaian bekerja sudah sesuai skenario yang diinginkan, tunjukkan kepada asisten. 5. MATERI LCD 16 X 2 Layar LCD merupakan suatu media penampilan data yang sangat efektif dan efisien dalam penggunaannya. Untuk menampilkan sebuah karakter pada layar LCD diperlukan beberapa rangakaian tambahan. Untuk lebih memudahkan para pengguna, maka beberapa perusahaan elektronik menciptakan modul LCD. Adapun bentuk fisik LCD 16x2 seperti pada Gambar 54 Gambar 54 Bentuk Fisik LCD (Amarilys 2010) LCD dibagi menjadi dua bagian yaitu bagian depan panel LCD yang terdiri dari banyak dot atau titik LCD dan mikrokontroler yang menempel pada bagian belakang panel LCD yang berfungsi untuk mengatur titik-titik LCD sehingga dapat menampilkan huruf, angka, dan simbol khusus yang dapat terbaca. 1. Fungsi Pin-Pin LCD Modul LCD berukuran 16 karakter x 2 baris dengan fasilitas backlighting memiliki 16 pin yang terdiri dari 8 jalur data, 3 jalur kontrol dan jalur-jalur catu daya, dengan fasilitas pin yang tersedia maka lcd 16 x 2 dapat digunakan secara maksimal untuk menampilkan data yang dikeluarkan oleh mikrokontroler, secara ringkas fungsi pin-pin pada LCD dituliskan pada Tabel 2.
Sedangkan secara umum pin-pin LCD diterangkan sebagai berikut : Pin 1 dan 2 Merupakan sambungan catu daya, Vss dan Vdd. Pin Vdd dihubungkan dengan tegangan positif catu daya, dan Vss pada 0V atau ground. Meskipun data menentukan catu 5 Vdc (hanya pada beberapa ma), menyediakan 6V dan 4.5V yang keduanya bekerja dengan baik, bahkan 3V cukup untuk beberapa modul. Pin 3 Pin 3 merupakan pin kontrol Vee, yang digunakan untuk mengatur kontras display. Idealnya pin ini dihubungkan dengan tegangan yang bisa dirubah untuk memungkinkan pengaturan terhadap tingkatan kontras display sesuai dengan kebutuhan, pin ini dapat dihubungkan dengan variable resistor sebagai pengatur kontras. Pin 4 Pin 4 merupakan Register Select (RS), masukan yang pertama dari tiga command control input. Dengan membuat RS menjadi high, data karakter dapat ditransfer dari dan menuju modulnya. Pin 5
Read/Write (R/W), untuk memfungsikan sebagai perintah write maka R/W low atau menulis karakter ke modul. R/W high untuk membaca data karakter atau informasi status dari registernya. Pin 6 Enable (E), input ini digunakan untuk transfer aktual dari perintah-perintah atau karakter antara modul dengan hubungan data. Ketika menulis ke display, data ditransfer hanya pada perpindahan high atau low. Tetapi ketika membaca dari display, data akan menjadi lebih cepat tersedia setelah perpindahan dari low ke high dan tetap tersedia hingga sinyal low lagi. Pin 714 Pin 7 sampai 14 adalah delapan jalur data/data bus (D0 sampai D7) dimana data dapat ditransfer ke dan dari display. Pin 16 Pin 16 dihubungkan kedalam tegangan 5 Volt untuk memberi tegangan dan menghidupkan lampu latar/back Light LCD. Pin 7-14 Pin 7 sampai 14 adalah delapan jalur data/data bus (D0 sampai D7) dimana data dapat ditransfer ke dan dari display. Pin 16 Pin 16 dihubungkan kedalam tegangan 5 Volt untuk memberi tegangan dan menghidupkan lampu latar/back Light LCD. 2. Pengalamatan LCD Pengalamatan LCD dimulai dengan menghidupkan modul LCD, karakter kursor pada LCD diposisikan pada awal baris pertama (alamat 00H). Masingmasing sewaktu sebuah karakter dimasukkan, kursor bergerak ke alamat selanjutnya 01H, 02H dan seterusnya. Sebuah alamat awal yang baru bergerak ke alamat selanjutnya, harus dimasukkan sebagai sebuah perintah. Dengan cara mengirimkan sebuah perintah Set Display Address, nilai 80H. Dengan dua line karakter, baris yang pertama dari karakter, baris pertama mulai pada alamat 00H dan baris ke dua pada alamat 40H. Hubungan antara tata letak alamat-alamat terlihat pada Gambar 2.12 berikut ini. Gambar 55 Pengalamatan LCD (anonimc,2008)
Gambar 56 Tampak LCD 5.1 Menampilkan Selamat Datang Pada LCD 16x2 Pada tugas kali ini, praktikan diminta untuk membuat program sekaligus merakit kit-kit yang ada untuk menampilkan sebuah kata Hello! di baris pertama layar LCD 16x2 dan kata bandung di baris kedua. Lakukan langkah berikut. 1. Salin source code di bawah ini dan simpan dengan nama file : Tugas_5.1.bas $regfile = "m16def.dat" $crystal = 8000000 Dim Count As Integer Dim X As Integer Count = 0 Enable Interrupts Config Lcd = 16 * 2 Config Lcdbus = 4 Config Lcdmode = Port Config Lcdpin = Pin, Rs = Portb.2, E = Portb.3 Config Lcdpin = Pin, Db4 = Portb.4, Db5 = Portb.5, Db6 = Portb.6, Db7 = Portb.7 'Display On X = 1 Do Cls Locate 1, X Lcd "Hello! " ; Count Locate 2, X Lcd "Bandung" Count = Count + 1 Wait 1 X = X + 1 If X > 10 Then X = 1 Loop End 2. Compile & Upload ke dalam MCU
3. Sambungkan LCD ke PortB (yang digunakan PinB.2...PinB.7) 4. Perhatikan perubahan LCD 16x2 tersebut. 5. Perlihatkan hasilnya ke asisten Tugas Praktikan: Ubahlah program tersebut sehinga LCD 16x2 menampilkan nama anda pada baris ke 2 kemudian perlihatkan hasil perubahan kepada asisten. 5.2 Menampilkan Bintang Pada LCD 16x2 1. Salin source code di bawah ini dan simpan dengan nama file : Tugas_5.2.bas $regfile = "m16def.dat" $crystal = 8000000 Dim Count As Integer Dim X As Integer Count = 0 Enable Interrupts Config Lcd = 16 * 2 Config Lcdbus = 4 Config Lcdmode = Port Config Lcdpin = Pin, Rs = Portc.2, E = Portc.3 Config Lcdpin = Pin, Db4 = Portc.4, Db5 = Portc.5, Db6 = Portc.6, Db7 = Portc.7 Cursor Off Deflcdchar 0, 32, 4, 4, 31, 4, 4, 32, 32 Deflcdchar 1, 32, 2, 20, 14, 5, 8, 32, 32 Deflcdchar 2, 32, 2, 26, 4, 11, 8, 32, 32 Deflcdchar 3, 32, 17, 10, 4, 10, 17, 32, 32 Deflcdchar 4, 32, 8, 11, 4, 26, 2, 32, 32 Deflcdchar 5, 32, 8, 5, 14, 20, 2, 32, 32 Cls Do For X = 0 To 5 Step 1 Portd = 255 Waitms 100 Portd = 0 Waitms 100 Locate 1, 16
Lcd Chr(x) Next X Loop End 2. Compile & Upload ke dalam MCU 3. Sambungkan LCD ke PortC 4. Perhatikan perubahan LCD 16x2 tersebut. 5. Perlihatkan hasilnya ke asisten 5.3 Menampilkan Orang Pada LCD 16x2 1. Salin source code di bawah ini dan simpan dengan nama file : Tugas_5.3.bas $regfile = "m16def.dat" $crystal = 8000000 Dim X As Integer Dim Z As Integer Config Lcd = 16 * 2 Config Lcdbus = 4 Config Lcdmode = Port Config Lcdpin = Pin, Rs = Portc.2, E = Portc.3 Config Lcdpin = Pin, Db4 = Portc.4, Db5 = Portc.5, Db6 = Portc.6, Db7 = Portc.7 Cursor Off Cursor Off Deflcdchar 0, 21, 14, 4, 4, 4, 27, 32, 32 Deflcdchar 1, 4, 14, 21, 4, 4, 10, 10, 10 Deflcdchar 2, 32, 32, 10, 32, 17, 14, 32, 32 number (0-7) Deflcdchar 3, 32, 32, 10, 32, 32, 14, 17, 32 number (0-7) Cls ' replace [x] with ' replace [x] with Do For X = 0 To 1 Step 1 Portd = 255 Waitms 200 Portd = 0 Waitms 100 Locate 1, 16 Lcd Chr(x) Locate 1, 1 Z = X + 2
Lcd Chr(z) Next X Loop End 2. Compile & Upload ke dalam MCU 3. Sambungkan LCD ke PortC 4. Perhatikan perubahan LCD 16x2 tersebut. 5. Perlihatkan hasilnya ke asisten 5.4 Menampilkan Tanggal dan Waktu Pada LCD 16x2 1. Salin source code di bawah ini dan simpan dengan nama file : Tugas_5.4.bas $regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Dim I As Integer Enable Interrupts Config Portd = Output '------------------ Portd.1 = 0 'hanya aga aman saja krn pin ini pd bisa jadi board kitnya terhubung dengan GND Portd.3 = 0 '------------------ Config Lcd = 16 * 2 Config Lcdpin = Pin, Rs = Portd.0, E = Portd.2, Db4 = Portd.4 Config Lcdpin = Pin, Db5 = Portd.5, Db6 = Portd.6, Db7 = Portd.7 'Config Lcdbus = 4 Config Date = Mdy, Separator = - Config Clock = Soft Date$ = "26/11/08" Time$ = "08:16:00" '----------------------- Cls I = 0 Do Locate 1, 1 Lcd "Tanggal:" ; Date$ Locate 2, 1 Lcd "Pukul:" ; Time$
Cls Locate 1, 1 Lcd "Count : " ; I I = I + 1 Loop End 2. Compile & Upload ke dalam MCU 3. Sambungkan LCD ke PortC 4. Perhatikan perubahan LCD 16x2 tersebut. 5. Perlihatkan hasilnya ke asisten Tugas Praktikan: 1. Buatlah program menampilkan hasil pengukuran sensor (pilih salah satu antara Mic, LDR, Photensiometer, atau Phototransistor) pada LCD 2. Buatlah program menampilkan hasil pengukuran sensor (pilih salah satu antara Mic, LDR, Photensiometer, atau Phototransistor) pada Seven Segmen 3 display.