Laporan Praktikum Modul 3 Mikroprosessor
-
Upload
independent -
Category
Documents
-
view
0 -
download
0
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
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