Oleh:
Tegangan kerja dari LCD dan OLED +5VDC, dengan konsumsi arus yang kecil.
Tegangan pada LCD terdapat dua bagian, 1 bagian untuk kerja Rangkaian LCD (Pin
1 dan 2) dan 1 bagian lainnya untuk tegangan cahaya latar (back Light) (PIN 15 dan
16). Jalur data untuk meng-akses karakter terdiri dari 4bit MSB yang berada pada
kaki 11-14, sedangkan 4bit LSB (kaki 7-10) tidak dihubungkan dengan
mikrokontroler. Berikut ilustrasi konfigurasi fungsi masing-masing pin;
Gb. 3 Fungsi setiap PIN pada LCD 16x2
Penulisan program untuk mengirim atau menampilkan data pada LCD telah di-
library-kan pada CVAVR, sehingga cukup menggunakan instruksi-instruksi yang
sudah disediakan data dapat ditampilkan. Berikut beberapa instruksi yang disediakan
oleh CVAVR; lcd_clear();→Menghapus LCD lcd_gotoxy(x,y); →Meletakkan posisi
dalam memulai menampilkan karakter
x → sebagai posisi kolom (integer) y → sebagai posisi baris (integer)
#asm
.equ lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
Penghubungan PORT mikro ke LCD sudah memiliki aturan seperti yang telah di
cantumkan dalam pengaturan menggunakan CodeWizard. Pemasangan ini telah
disesuaikan dengan aturan komunikasi yang dibuat pada library CVAVR.
Penghubungan dapat dilihat pada sub. B Gambar rangkaian Hardware selanjutnya.
Penjelasan gambar diatas terdiri dari dua bentuk sinyal, yaitu sinyal analog dengan
sinyal discreet yang nanti dijadikan data hasil konversi digital. Pengubahan tegangan
masukan analog menjadi digital memperhatikan beberapa variabel, seperti V/Aref
yang menetukan kerapatan resolusi (tinggi step discreet) dan tipe kemampuan
pengolahan ADC yang digunakan. Tipe ADC pada keluarga AVR mikrokontroler
seperti diatas telah dijelaskan yaitu ADC 8bit. Guna menghitung kerapatan
pengubahan sinyal discrit perlu memperhatikan dua factor tersebut, misalkan
terdapat beberapa contoh sebagai berikut:
ADC 8bit ATMega 16 menggunakan tegangan referensi (ARef) sebesar
+5VDC, berapa resolusinya?
Jawaban dari pertanyaan seperti itu adalah:
(5/255) x 1000 = 20mV
Sehingga besarnya step discreet terjadi perubahan pembacaan data digital
setiap kelipatan 20mV, seperti pada gambar diatas. Setiap kenaikan tegangan
masukan 20mV akan mengubah data digital satu tingkat lebih tinggi.
AVCC 1K
Uc
ARef
1K
Setelah pengaturan diatas selesai dan masuk pada area program (Generate, Save
and exit) maka akan muncul sebuah blok fungsi yang sudah dibuatkan CVAVR
sebagai fungsi pembacaan/pengkonversian ADC. Berikut listing program yang dapat
dituliskan;
……….
#define ADC_VREF_TYPE 0x20
// Read the 8 most significant bits // of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
……………..
Sedangkan pada CVAVR sendiri sudah terdapat instruksi/statement yang dapat
digunakan untuk meng-akses pembacaan tegangan analog, yaitu; read_adc(no
ADC)
contoh: (misal terdapat tegangan masukan yang akan dibaca pada ADC0)
adc=read_adc(0);
Keterangan program diatas adalah “baca tegangan pada ADC0 dan hasilnya
dimasukan dalam variable adc”.
Penggunaan fasilitas ADC pada mikrokontroler harus dibarengi dengan penggunaan
suatu tampilan yang dipakai sebagai penampil data. Tampilan data tersebut bisa
berupa LED, 7Seg, atau sebuah LCD. Khusus untuk penggunaan LCD yang
digunakan menampilkan data pecahan dari
hasil pengolahan suhu, serta menggunakan instruksi program sprintf(…), perlu ada
pengaturan yang khusus sebelum program itu di build. Pengaturan itu dapat dilakuka
dengan cara: Menu Project → Configure → C Compiler → kemudian pada sprintf
Feature dipilih float width width, precision.
Keyword Komponen
Nama Komponen Keyword ISIS
Mikrokontroler ATMega16 ATMEGA16
LCD LM016
RESISTOR RES
D.2
Keyword Komponen
Nama Komponen Keyword ISIS
Mikrokontroler ATMega16 ATMEGA16
LCD LM016
RESISTOR RES
E. Hasil Tugas Mandiri
D.1
Dari flowchart dapat dijelaskan :
Tahap 1 (Terminator) :
Permulaan program
Tahap 2 (Preparation) :
Proses inisialisasi/pemberian harga awal. Dalam tahap ini program harus
menyertai library dari mikrokontroler yang digunakan. Karena dalam project
ini saya menggunakan beberapa library, yaitu mega16.h, delay.h, stdio.h,
alcd.h. lalu medeklarasikan beberapa tip data, yaitu unsigned char, int j, n,
dan lcd_int(16).
Tahap 3 (Input/Output Data) :
Proses input/output data, parameter, dan informasi. Dalam dalam program
ini, PORTC digunakan sebagai proses input/output data.
Tahap 4 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. Dalam program, digunakan looping jenis while(). Dalam
program digunakan while(1) : artinya program akan terus berjalan/looping
atau lanjut lagi ke tahap 5, karena perbandingan pernyataan bernilai
1(TRUE/Yes). Jika tidak atau perbandingan pernyataan bernilai
0(FALSE/No), maka program akan lanjut ke tahap 14.
Tahap 5 (Proses) :
Proses perhitungan dan pengelolahan data. m = 0. Lanjut ke tahap 6.
Tahap 6 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. m <= 100. Jika, True lanjut ke tahap 7. Jika ,False
kembali ke tahap 3. Dan jika m > 100, lanjut ke tahap 9.
Tahap 7 (input/output data) :
Proses input/output data, parameter, dan informasi. LCd akan counter up
dari 0 sampai 100. Lalu, lanjut ke tahap 8.
Tahap 8 (Proses) :
Proses perhitungan dan pengelolahan data. m++. Lalu kembali ke tahap 6.
Tahap 9 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. jika, m > 100 (True) lanjut ke tahap 10. Jika, False
kembali ke tahap 3.
Tahap 10 (Proses) :
Proses perhitungan dan pengelolahan data. n = 1000. Lanjut ke tahap 11.
Tahap 11 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. n <= 100. Jika, True lanjut ke tahap 12. Jika ,False
kembali ke tahap 3.
Tahap 12 (input/output data) :
Proses input/output data, parameter, dan informasi. LCD akan counter
down dari 1000 sampai 0. Lalu, lanjut ke tahap 13.
Tahap 13 (Proses) :
Proses perhitungan dan pengelolahan data. n--. Lalu kembali ke tahap 11.
Tahap 14 (Terminator) :
Akhir program.
Pengaturan pada bagian Alphanumeric LCD untuk port yang akan digunakan
sebagai jalur kontrol dan jalur data. Disini digunakan PORTC sebagai jalur kontrol
dan jalur data.
Script ini saya diprogram untuk menyalakan dan mengendalikan data LCD (16x2)
agar counter up dari 0 sampai 100, lalu counter down dari 1000 sampai 0
menggunakan mikrokontroler ATmega16. Pada dasarnya CVAVR di tulis dalam
bahasa pemrograman C.
#include <mega16.h>, →dimaksudkan untuk menyertakan library dari chip
ATmega16.
#include <delay.h>, →dimaksudkan untuk menyertakan file fungsi delay.
#include <stdio.h>, →dimaksudkan untuk menyertakan library tempat dimana
sprintf berada.
#include <alcd.h>, →dimaksudkan untuk menyertai library dari LCD.
Void main(void) {…},→ dimaksudkan bahwa progaram utama yang akan
dijalankan.
unsigned char data[10]={0,1,2,3,4,5,6,7,8,9}, →dimaksudkan untuk pendeklarasian
tipe data unsigned char dan data[10]={0,1,2,3,4,5,6,7,8,9} yang mana adalah
array yang berisi 10 data.
int m,n →deklarasi variabel m dan n sebagai tipe data integer.
lcd_int(16) → lcd dengan tipe data integer yang bernilai 16 bit.
While(1), →adalah infinite looping. “1” berarti “true” dimana program didalamnya
akan terus berjalan loop salama tidak ada false (0).
for(m = 0; m <= 100; m++){...} → merupakan bentuk perulangan/looping. Dengan
m = 0 lalu syarat m <= 100 dan m++ (m=1+m).
lcd_clear();→ membersikan LCD sehabis perhitungan sebelumnya.
lcd_gotoxy(3,0);→ karakter berada pada kolom 3 baris 0.
lcd_putsf("Counter Up");→ cetak “Counter Up” pada LCD.
sprintf(data, "%d" ,m);→ masukan nilai m di kedalam data.
lcd_gotoxy(7,1);→ karakter berada pada kolom 7 baris 1.
lcd_puts(data);→ tampilkan parameter data ke dalam LCD (Counter up dari 0
sampai 100 ).
delay_ms(100);→ delay/waktu tunda sebesar 100 mili detik setiap perubahan data.