Laporan Praktikum Modul 3 Mikroprosessor

23
LAPORAN PRAKTIKUM MIKROPROSSESOR Modul III : Akses LCD Karater 16x2 dan Baca Data Sensor Disusun Oleh : Hanif Rifkha Pambudi 13101055 Rekan Praktikum : Hendro Bayu Pramono (13101056) Asisten Praktikum : Andika Agung Khoirun Ni’mah Henni Mahdalena LABORATURIUM SWITCHING SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM PURWOKERTO 2015

Transcript of Laporan Praktikum Modul 3 Mikroprosessor

LAPORAN PRAKTIKUM

MIKROPROSSESOR

Modul III : Akses LCD Karater 16x2 dan Baca Data Sensor

Disusun Oleh :

Hanif Rifkha Pambudi

13101055

Rekan Praktikum : Hendro Bayu Pramono (13101056)

Asisten Praktikum : Andika Agung

Khoirun Ni’mah

Henni Mahdalena

LABORATURIUM SWITCHING

SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM

PURWOKERTO

2015

I. Dasar Teori

LCD ( Liquid Crystal Display) merupakan salah satu jenis display

elektronik yang dibuat dengan teknologi CMOS logic yang bekerja dengan tidak

menghasilkan cahaya tetapi memantulkan cahaya yang ada di sekelilingnya

terhadap front-lit atau mentransmisikan cahaya dari back-lit.[1]

Gambar I.1 Rangkaian LCD 16x2 Gambar I.2 Bentuk Fisik LCD 16x2

LCD (Liquid Cristal Display) berfungsi sebagai penampil data baik dalam

bentuk karakter, huruf, angka ataupun grafik. LCD adalah lapisan dari campuran

organik antara lapisan kaca bening dengan elektroda transparan indium oksida

dalam bentuk tampilan seven-segment dan lapisan elektroda pada kaca belakang.

Ketika elektroda diaktifkan dengan medan listrik (tegangan), molekul organik

yang panjang dan silindris menyesuaikan diri dengan elektroda dari segmen.

Lapisan sandwich memiliki polarizer cahaya vertikal depan dan polarizer cahaya

horisontal belakang yang diikuti dengan lapisan reflektor. Cahaya yang

dipantulkan tidak dapat melewati molekul-molekul yang telah menyesuaikan diri

dan segmen yang diaktifkan terlihat menjadi gelap dan membentuk karakter data

yang ingin ditampilkan [1]

HD44780 merupakan modul LCD matrix dengan konfigurasi 16 karakter

dan 2 baris dengan setiap karakternya dibentuk oleh 8 baris pixel dan 5 kolom

pixel(1 baris pixel terakhir adalah kursor). M1632 sendiri menggunakan HD44780

(buatan hitachi) sebagai display controller. HD44780 buatan hitachi ini sudah

tersedia dalam modul M1632 yang dikeluarkan oleh Hitachi, Tian Ma, Seiko,

Wintek, dan modul - modul M1632 lainnya. Secara default LCD ini

menggunakan antarmuka parallel synchronous, ada 2 mode yang dapat dipilih

yaitu mode 8 bit dan mode 4 bit. Pada mode 8 bit data akan dikirimkan pada pin

D0-D7 sedangkan pada mode 4 bit data hanya dikirimkan pada pin D4-D7 hanya

saja karena format data yang diminta adalah selebar 8 bit maka data dikirimkan 2

kali, pin Data(D0-D7) LCD jenis ini memiliki 3 jenis pin kontrol sebagai berikut.

1. RS, RS digunakan untuk menentukan data yang dikirimkan sebagai

opcode (command) atau operand (data).

2. RW, RW digunakan untuk menentukan operasi Read atau Write, untuk

operasi Write data berasal dari External Device (Mikrokontroller

misalnya) sedangkan untuk operasi Read data berasal dari LCD(Kontroller

LCD). Biasanya operasi read digunakan untuk membaca letak pointer pada

LCD atau mengetahui kondisi LCD(Busy atau Idle).

3. E, E digunakan sebagai pin clock, karena antarmuka yang digunakan

adalah parallel synchronous maka clock dibutuhkan untuk memvalidasi

data yang dikirimkan.

Dari 2 jenis konfigurasi yang dapat dipilih kebanyakan programmer lebih

senang memilih menggunakan mode 4 bit dikarenakan lebih menghemat

pemakaian pin I/O pada mikrokontroller yang memang jumlahnya terbatas.

HD44780 sendiri adalah kontroller yang dirancang khusus untuk mengendalikan

LCD dan mempunyai kemampuan untuk mengatur proses scanning scanning dari

layar LCD. Sehingga ketika mikrokontroller kita mengakses modul LCD ini kita

tidak lagi perlu mengatur proses scanning pada layar LCD. Mikrokontroller kita

hanya perlu mengirimkan data-data yang merupakan karakter/perintah ke LCD

untuk menampilkan huruf atau mengkonfigurasi LCD. [2]

Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi

untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan.

Sensor suhu LM35 yang dipakai dalam penelitian ini berupa komponen

elektronika elektronika yang diproduksi oleh National Semiconductor LM35

memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan

dengan sensor suhu yang lain, LM35 juga mempunyai keluaran impedansi

yangrendah dan linieritas yang tinggi sehingga dapat dengan mudah

dihubungkandengan rangkaian kendali khusus serta tidak memerlukan penyetelan

lanjutan.

Gambar I.3 fisik dari LM35 Gambar I.4 Diagram LM35

Gambar diatas menunjukan bentuk dari LM35 tampak depan dan tampak

bawah. 3 pin LM35 menujukan fungsi masing-masing pin diantaranya, pin 1

berfungsi sebagai sumber tegangan kerja dari LM35, pin 2 atau tengah digunakan

sebagai tegangan keluaran atau Vout dengan jangkauan kerja dari 0 Volt sampai

dengan 1,5 Volt dengan tegangan operasi sensor LM35 yang dapat digunakan

antar 4 Volt sampai 30 Volt.[3]

Karakteristik dari sensor LM35 adlah sebagai

berikut:

1. Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan

suhu 10 mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius.

2. Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC

seperti terlihat pada gambar 2.2.

3. Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.

4. Bekerja pada tegangan 4 sampai 30 volt.

5. Memiliki arus rendah yaitu kurang dari 60 µA.

6. Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari

0,1 ºC pada udara diam.

7. Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.

8. Memiliki ketidaklinieran hanya sekitar ± ¼ ºC.[3]

II. Hasil Data

Praktikum modul 3 yang berisi tentang akses LCD 16x2 dan baca data

sensor merupakan praktikum untuk menampilkan hasil codingan ke dalam LCD

dan mengukur suhu ruangan praktikum dengan menggunakan sensor LM 35 dan

hasilnya akan ditampilkan dalam pada LCD lagi. Karena pada praktikum ini

dalam pembuatan projek harus membuat source juga setelah kita membuat projek

terlebih dahulu. .

Gambar II.1 Gambar II.2

Pilih Project > OK, lalu muncul gambar seperti di gambar II.2 Ketika muncul

jendela di atas pilih “No”, bisa juga pilih “Yes” dan itu cara lebih cepat tanpa

membuat file source secara manual, namun pada praktikum ini kita memakai cara

manual agar sesuai prosedur. Maka setelah itu akan muncul gambar seperti ini,

Gambar II.3.

Ketik nama file yang akan dibuat, lalu klik “Save”. Lalu akan muncul jendela

Configure Project seperti gambar dibawah ini.

Gambar II.4.

Pilih menu pada taskbar “C Compiler” maka isi Chip dengan ATmega 324A,dan

Clock sebesar 11.0592 > OK. Setalah itu pilih file > New maka akan tampil

gambar berikiut

Gambar II.5.

Pada jendela ini pilih source lalu OK, setelah itu pilih menu setting >

Programmer pastikan bahwa USB Downloader sudah terdeteksi maka pilih OK.

Seperti gambar pada berikut.

Gambar II.6.

Setelah itu ketikkan list coding yang telah tertulis dalam modul. Setelah coding

dimasukan kemudian langkah selanjutnya yaitu configure project dengan cara

memilih menu Project kezmudian pilih Configure kemudian pilih After Build

kemudian centang Program the Chip klik OK.

Gambar II.7. – II.9.

Gambar II.10.

Setelah itu klik menu Add dan pilih nama projek yang telah kita simpan tadi lalu

klik OK.

Setelah itu tekan F9 untuk melihat apakah masih ada coding yang salah atau sudah

benar. Jika coding sudah benar semua maka pilih menu Project kemudian Build

All atau langsung menekan ctrl+F9 setelah itu pilih Program the Chip untuk

melihat hasil dari program yang dibuat.

Gambar II.11.

Berikut gambar hasil dari praktikum modul 3,

Gambar II.12 hasil dari projek pertama

Gambar II.13 hasil projek kedua

Gambar II.14 hasil dari projek ketiga

Gambar II.15 hasil dari projek keempat

Gambar II.16 hasil dari projek keenam menggunakan LM 35

III. Analisa dan Pembahasan

Praktikum modul 3 tentang karakter LCD 16x2 dan baca data sensor

merupakan praktikum yang berbeda dengan praktikum sebelumnya karena kita

tidak menggunakan keypad maupun seven segment. Pada praktikum kali ini

terbagi dalam 6 projek projek pertama kita menampilkan tulisan ST3 TELKOM

pada baris pertama dan PURWOKERTO pada baris kedua. Berikut list coding-

nya.

#include <mega324a.h>

#include <alcd.h>

#include <delay.h>

void main(void)

{

lcd_init(16); // inisialisai LCD

lcd_clear(); // Menghapus layar

while (1)

{

lcd_gotoxy(0,0);

lcd_putsf(" ST3 TELKOM ");

lcd_gotoxy(0,1);

lcd_putsf(" PURWOKERTO ");

delay_ms(1000);

lcd_clear();

delay_ms(500);

}

}

Untuk baris koding dari baris pertama hingga keempat mempunyai fungsi sama

dengan praktikum hari kemarin. Dan yang berbeda adalah pada saat baris

selanjutnya adalah perintah ini lcd_init(16); // inisialisai LCD |

lcd_clear(); // Menghapus layar pada list tersebut mempunyai bahwa kita

mengecek kalo LCD tersebut benar 16x2. Dan perintah selanjutnya adalah while

(1) berfungsi untuk menampilkan tulisan nanti berulang kali. Dan selanjutnya

adalah list koding untuk menampilkan tulisan ST3 TELKOM PURWOKERTO

dan perintah untuk menampilkan tulisan tersebut adalah lcd_gotoxy(0,0);|

lcd_putsf(" ST3 TELKOM "); | lcd_gotoxy(0,1); | lcd_putsf(" PURWOKERTO

"); | delay_ms(1000); | lcd_clear(); | delay_ms(500);, dengan delay yang

telah diatur selama 500 milisecond maka tulisan akan muncul dan hilang dengan

teratur, untuk flowchart sendiri terdapat pada halaman terakhir analisa dan

pembahasan. Projek pertama telah selesai.

Selanjutnya adalah projek kedua untuk menampilkan tulisan tulisan ST3

TELKOM PURWOKERTO secara begerak. Pada dasarnya list koding dari projek

kedua tidak jauh berbeda dengan list koding projek pertama, hanya ada beberapa

penambahan yang dilakukan seperti penambahan perintah #include <alcd.h> |

char x; dan for(x = 0; x < 6; x++) | for(x = 6; x >= 1; x--), beberapa

perintah tersebut merupakan perintah untuk menggerakkan tulisan tadi. Berikut

list kodingnya.

#include <mega324a.h>

#include <alcd.h>

#include <delay.h>

void main(void)

{

char x;

lcd_init(16); // inisialisai LCD

lcd_clear(); // Menghapus layar

while (1)

{

for(x = 0; x < 6; x++)

{

lcd_gotoxy(x,0);

lcd_putsf("ST3 TELKOM");

lcd_gotoxy(x,1);

lcd_putsf("PURWOKERTO");

delay_ms(500);

lcd_clear();

}

or(x = 6; x >= 1; x--)

{

lcd_gotoxy(x,0);

lcd_putsf("ST3 TELKOM");

lcd_gotoxy(x,1);

lcd_putsf("PURWOKERTO");

delay_ms(500);

lcd_clear();

}

}

Selanjutnya adalah projek ketiga kita membuat projek dengan menggunakan

keypad, dan projek ini mempunyai maksud untuk menghitung angka dengan

menekan keypad. Berikut list kodingnya.

#include <mega324a.h> #include <alcd.h>

#include <stdlib.h>

#include <delay.h>

void main(void)

{

char angka = 0, teks[16];

DDRB = 0x00;

PORTB = 0xFF;

lcd_init(16);

lcd_clear();

while(1)

{

lcd_gotoxy(0,0);

lcd_putsf("Anda menekan");

lcd_gotoxy(0,1);

lcd_putsf("tombol");

lcd_gotoxy(9,1);

lcd_putsf("kali");

lcd_gotoxy(7,1);

itoa(angka,teks);

lcd_puts(teks);

if(PINB.0 == 0)

{

delay_ms(200);

angka++;

}

}

}

Untuk coding diatas kita mengatur untuk dapat mengakses keypad sebagai alat

masukan untuk menampilkan berapa jumlah yang tombol yang telah ditekan. Pada

projek ini kita menambahkan PORT B sebagai tempat untuk untuk

menghubungkan keypad dengan micro setelah itu diteruskan ke layar LCD.

Ketika program koding telah didownload ke LCD maka akan tampil teks “anda

telah menekan XXkali” XX sendiri itu jumlah tombol yang telah ditekan. Dan

selanjutnya adalah projek keempat yang hasilnya hampir sama dengan projek

ketiga tadi, berikut list kodingnya.

#include <mega32.h>

#include <alcd.h>

#include <stdlib.h>

#include <delay.h>

#include <string.h>

void main(void)

{

char angka = 0, teks[16];

DDRB = 0x00;

PORTB = 0xFF;

lcd_init(16);

lcd_clear();

while(1)

{

lcd_gotoxy(0,0);

lcd_putsf("Anda menekan");

lcd_gotoxy(0,1);

lcd_putsf("tombol");

lcd_gotoxy(7,1);

itoa(angka,teks);

strcat(teks," kali");

lcd_puts(teks);

if(PINB.0 == 0)

{

delay_ms(200);

angka++;

}

}

}

Sekilas hasil dari projek ini akan sama, tetapi ketika diteliti lebih lanjut terdapat

perbedaan yang ada yaitu pada koding yang ditambah yaitu #include <string.h>.

setelah perintah koding tersebut ditambah maka perubahan terjadi ketika program

tersebut dijalankan. Perubahan yang terjadi adalah teks “ anda telah menekan

XXkali” menjadi “anda telah menekan XX kali”. Perbedaannya terjadi dengan

adanya spasi antara XX dengan kata kali. Flowchart dari projek ini terdapat pada

halaman terakhir dari analisa pembahasan.

Selanjutnya adalah projek kelima tentang mengukur suhu dengan sensor

LM 35. Seperti yang tertera dalam dasar teori di atas, sensor LM 35 merupakan

sensor yang berfungsi sebagai pengukur suhu sekitar. Pada kali ini suhu ini

berfungsi mengukur suhu ruangan lab. Switching. Pada baris pertama hingga

keenam #include <mega324a.h> | #include <stdlib.h> | #include <stdio.h> |

#include <delay.h> | #include <alcd.h> | #define ADC_VREF_TYPE 0xE0 berfungsi

sebagai pemanggil standar setiap yang tertera dalam tanda kurung. Pada fungsi

baris kelima merupakan fungsi alphanumeric LCD, dibawahnya merupakan fungsi

ADC 8 bit dengan Vref sebesar 2,56 V. Selanjutnya ADMUX=adc_input |

(ADC_VREF_TYPE & 0xff); | delay_us(10); | ADCSRA|=0x40; | while ((ADCSRA

& 0x10)==0); | ADCSRA|=0x10; | return ADCH;. Maksud dari koding ini adalah

kita memulai konversi dan setalah itu menunggu respon dari AD, setelah konversi

selesai maka hasilnya akan disimpan pada ADCH. Setelah itu kita masuk dalam

fungsi yang utama dan menggunakan variabel Buff. Berikut list koding untuk

perintah tersebut, void main(void){ | unsigned char buff[10]; | #pragma

optsize- | CLKPR=0x80; | CLKPR=0x00; | #ifdef _OPTIMIZE_SIZE_ | #pragma

optsize+ | #endif. Pada baris selanjutnya untuk projek terakhir modul 3 ini

adalah PORTA=0x00; | DDRA=0x00; | DIDR0=0x00; | ADMUX=ADC_VREF_TYPE &

0xff; | ADCSRA=0x87;, maksud dari perintah ini adalah kita menginisialisasi

PORT A serta menginiliasasi ADC dan frekuensi klok ADC sebesar 86400 kHz;

sedangkan tegangan ADC sebesar 2.56 V, serta cap. On AREF. Untuk baris

selanjutnya // RS - PORTC Bit 0 | // RD - PORTC Bit 1 | // EN - PORTC Bit

2 | // D4 - PORTC Bit 4 | // D5 - PORTC Bit 5 | // D6 - PORTC Bit 6 | //

D7 - PORTC Bit 7 | // Characters/line: 16 | lcd_init(16);, maksud dari

koding tersebut adalah kita mengatur RS, RD, EN, D4, D5, D6, D7 adalah untuk

di pasangkan di port C dari portc 0 – portc 7, dan itu urut. while (1){ |

lcd_clear(); | lcd_gotoxy(6,0); | sprintf(buff,"%d",read_adc(0)); |

lcd_puts(buff); | delay_ms(1000);}}. Ini merupakan list koding terakhir dari

projek kelima dan pada projek ini suhu akan tampil dan akan berubah pada setiap

saat, tergantung kita mengukur di ruangan mana. Pada lab. Switching terdeteksi

memiliki suhu kisaran 25 derajat celcius – 27 derajat celcius. Ini berarti projek

kelima berhasil karena bisa mendeteksi suhu rungan. Ketika suhu berubah maka

secara otomatis micro akan memproses secara ulang dari awal dan selanjutnya

tetap begitu. Untuk Flowchart ada dihalaman terakhir analisa dan pembahasan.

Flowchart Projek 1. Flowchart Projek 2

Start

lcd_init

(16)

lcd_clear()

while

lcd_gotoxy(0,

0);

lcd_putsf(ST3

Telkom

Purwokerto

Lcd clear

()

Delay

Displayed

“ST3 Telkom

Purwokerto”

END

Start

lcd_init

(16)

lcd_clear()

For x dari 0 –

5; x++;

lcd_putsf(ST3

Telkom

Purwokerto

For x dari 6 –

0; x--;

lcd_putsf(ST3

Telkom

Purwokerto

Displayed

“ST3 Telkom

Purwokerto”

Bergerak

END

Flowchart Projek 3 Flowchart Projek 4

Start

Char

angka=0

Teks[16]

PORTB=0xFF

While

Lcd_putchar

angka = 0,

teks[16];

DDRB =

If (PINB.0

==0)

Delay_ms(200);

Angka++;

Display “Anda

menekan

tombol Xkali”

END

Start

Add

#include

<string.h>

char angka =

0, teks[16];

PORTB = 0xFF

While

Lcd_putchar

angka = 0,

teks[16];

DDRB =

itoa(angka,t

eks);strcat(

teks,"

kali");

If (PINB.0

==0)

Delay_ms(200);

Angka++;

Display “Anda

menekan

tombol XX

kali”

END

Flowchart Projek 5

Start

ADMUX=adc_input.

Delay_us(10)

ADCSRAC I =0X40;

WHILE (( ADCSRA

&0X10)==10;

--

Return.

Unsigned char buff

[10];

#Pragma optsize-

CLKPR =0X80;

END IF

SETTING PORT INPUT

For LM 35.

Setting PORT

Controler LCD

Clear LCD.

Set Position

di x6 y0 Add

delay

Set Position

caracter LCD di x

=6 and y=0 to LCD.

Input Delay (

1000);

END

IV. Kesimpulan dan Saran

Kesimpulan dari praktikum kali ini adalah

1. LCD (Liquid Cristal Display) berfungsi sebagai penampil data baik

dalam bentuk karakter, huruf, angka ataupun grafik.

2. HD44780 merupakan modul LCD matrix dengan konfigurasi 16

karakter dan 2 baris dengan setiap karakternya dibentuk oleh 8 baris

pixel dan 5 kolom pixel.

3. LCD jenis ini memiliki 3 jenis pin control yaitu RS , RW dan E.

4. Sensor suhu LM 35 merupakan salah satu dari sekian banyaknya sensor

suhu dalam micro.

5. Dan sensor suhu bisa memberitahukan suhu kepada LCD melalui micro

terlebih dahulu.

Saran yang bisa diberikan adalah

1. Pemeriksaan kelayakan secara berkala pada tiap-tiap komponen setelah

maupun sebelum praktikum

2. Untuk penulisan coding harus teliti serta di awali dan di akhiri dengan

tanda kurung kurawal setiap perintah.

V. Daftar Pustaka

1. Pramono, S., & Saptadi, A. H. (2015). MODUL PRAKTIKUM MIKRO PROSESSOR

MODUL III AKSES LCD BERKARAKTER 16X2 dan BACA DATA SENSOR. Purwokerto.

2. Anynomous. (n.d.). http://elektronika-dasar.web.id/teori-elektronika/lcd-liquid-

cristal-display/. Retrieved 05 15, 2015, from elektronika-dasar:

http://elektronika-dasar.web.id/teori-elektronika/lcd-liquid-cristal-display/

3. Fauzan, N. (n.d.). http://www.academia.edu/9481245/SENSOR_SUHU_LM35.

Retrieved 05 16, 2015, from academia:

http://www.academia.edu/9481245/SENSOR_SUHU_LM35

VI. Lampiran

Tugas Pertanyaan

1. Apa yang tertampil di LCD? Baris mana sajakah dari listing program di

atas yang berfungsi untuk mengatur letak tulisan?

Jawab : ST3 TELKOM PURWOKERTO, listing program untuk

mengatur tampilan tersebut terdapat pada baris ke 8 – 14.

2. Apa perbedaannya dengan program sebelumnya?

Jawab : terdapat penambahan program pada projek kedua praktikum

modul 3 yaitu ditambahnya program untuk menggeser tulisan ke kanan

dan ke kiri.

3. Apa yang salah dengan program tersebut? Coba tekan dan tahan tombol

hingga angka menunjukkan puluhan. Tekan dan tahan kembali hingga

menunjukkan ratusan.

Jawab :

4. Tentukan jumlah Bit ADC & Tegangan Referensi yang digunakan?

Jawab : Jumlah bit ADC ada 8 bit, dan tegangan referensinya adalah 2,56

V.

5. Apa perintah / coding untuk mengatur jumlah Bit ADC & Tegangan

Referensi yang digunakan?

Jawab : berikut perintah untuk mengatur jumlah bit ADC define

ADC_VREF_TYPE 0xE0

Tugas 1 membuat program untuk menampilkan Nama dan NIM dengan ketentuan

sbb:

Baris pertama “Nama Mahasiswa” (sesuai nama masing masing)

Baris kedua “NIM : XXXXXXX” (XXXX NIM masing masing)

Tulisan tampil (1+Z) detik , Blank (1+Y) detik.

Berikut hasilnya,

Berikut codingnya,

Tugas 2 membuat program Up down Counter menggunakan tampilan LCD

dengan ketentuan sbb:

- Bila PB 0 ditekan hitungan bertambah 1,

- Bila PB 1 ditekan Hitungan Berkurang 1,

- PB 2 sebagai Reset

Berikut Hasilnya,

Berikut list kodingnya

Tugas 3 Membuatlah program indikator suhu menggunakan LCD dengan

ketentuan sbb :

- LM 35 pada Port A pin Z (bagi NIM XY8 menggunakan pin 1, NIM XY9

menggunakan pin 2).