Anda di halaman 1dari 71

SISTEM MONITORING KELEMBABAN DAN SUHU RUANG

BERBASIS MIKROKONTROLLER AT89S51 DENGAN


ANTAR MUKA PORT SERIAL

TUGAS AKHIR

Diajukan untuk memenuhi salah satu syarat mencapai gelar Ahli Madya
Program Diploma III Ilmu Komputer

Ari wibowo
M3307004

PROGRAM DIPLOMA III ILMU KOMPUTER


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN
ALAM UNIVERSITAS SEBELAS MARET
2010
1

HALAMAN PERSETUJUAN
SISTEM MONITORING KELEMBABAN DAN SUHU RUANG BERBASIS
MIKROKONTROLLER AT89S51 DENGAN ANTAR MUKA PORT
SERIAL
Disusun oleh :
Ari wibowo
M3307004

Tugas Akhir ini telah disetujui untuk dipertahankan


Di hadapan dewan penguji
Pada tanggal 21 juli 2010

Pembimbing Utama

Darsono, S.Si, M.Si


19700727 199702 1 001

HALAMAN PENGESAHAN

SISTEM MONITORING KELEMBABAN DAN SUHU RUANG BERBASIS


MIKROKONTROLLER AT89S51 DENGAN ANTAR MUKA PORT
SERIAL

Ari wibowo
M3307004

Dibimbing oleh :

Darsono, S.Si, M.Si


19700727 199702 1 001
Tugas akhir ini Telah diterima dan disahkan oleh dewan penguji
Tugas akhir program Diploma III Ilmu komputer
Pada hari Rabu tanggal 21 Juli 2010

1. Penguji 1
2. Penguji 2
3. Penguji 3

Dewan penguji
Darsono, S.Si, M.Si
(
NIP. 19700727 199702 1 001
Fendi Aji Purnomo, S.Si
(
NIDN. 0626098402
Hartatik, M.Stat
(
NIDN. 0703057802

)
)
)

Disahkan oleh :
a.n Dekan MIPA UNS
Pembantu Dekan I

Ketua program studi


DIII ILMU KOMPUTER

Ir. Handono Ramelan, M.Sc, Ph.D


NIP. 19610223 198601 1 001

Drs. Y. S. Palgunadi, M.Sc


NIP. 19560407 198303 1 004
3

ABSTRAK

ARI WIBOWO , 2010 , SISTEM MONITORING KELEMBABAN DAN


SUHU RUANG BERBASIS MIKROKONTROLLER AT89S51 DENGAN
ANTAR MUKA PORT SERIAL, Program DIII Ilmu Komputer fakultas
Matematika dan Ilmu Pengetahuan Alam Universitas Sebelas Maret Surakarta.
Dalam perkembangan teknologi yang semakin maju ini, banyak sekali
dibutuhkan peralatan yang efisien, praktis, dan ekonomis. Salah satunya dalam
pengukuran suhu dan kelembaban udara. Untuk itu dibuat alat ukur kelembaban
dan suhu yang dapat dihubungkan dengan komputer dan dapat menyimpan hasil
pengukuran
Sistem ini memanfaatkan kemampuan mikrokontroler dalam proses
akuisisi data suhu dan kelembaban dari sensor yang digunakan yaitu modul sensor
SHT75. Komunikasi antara mikrokontroler dan komputer dibuat menggunakan
komunikasi serial. Komunikasi serial dibangun dengan IC antarmuka MAX232.
Data suhu dan kelembaban yang diukur sensor dibaca oleh mikrokontroler dan
dikirimkan ke komputer melalui port serial.
Hasil pengujian sistem secara keseluruhan menunjukkan bahwa data
pengukuran suhu dan kelembaban dapat dikirimkan dan ditampilkan di komputer
dalam bentuk tabel. Data yang masuk direkam dalam tabel dengan interval
waktu tertentu sesuai pilihan user.

Kata Kunci : AT89S51, Monitoring Suhu dan Kelembaban, Sensor SHT75, Port
Serial

ABSTRACT

ARI WIBOWO, 2010, MONITORING SYSTEM BASED ON ROOM


TEMPERATURE HUMIDITY AND MICROCONTROLLER AT89S51
WITH SERIAL PORT INTERFACE , Final project 3rd Diploma Programs
Computer Science Faculty of Mathematics and Natural Sciences University of
Surakarta Eleven March

In an increasingly advanced technological developments, a lot of needed


equipment are efficient, practical, and economical. One was in the measurement
of temperature and humidity. For that preferred it is made moisture and
temperature measuring instrument which can be connected with a computer and
can store the measurement results
These systems utilize the ability of the microcontroller in the process of
data acquisition of temperature and humidity sensors used are sensors SHT75
module. Communication between the microcontroller and the computer was
created using serial communication. Serial communication interface built with
MAX232 IC. Data measured temperature and humidity sensors read by the
microcontroller and sent to a computer via serial port.
The test results showed that overall system temperature and humidity
measurement data can be transmitted and displayed on a computer in the form of
tables. Incoming data are recorded in the table by a certain time interval according
to user choice.

Keywords: AT89S51, Temperature and Humidity Monitoring, Sensor SHT75,


Serial Port

PERSEMBAHAN

Kubersembahkan
Untuk keluargaku
Untuk kekasih hatiku
Untuk teman-temanku
Untuk semuanya saja

KATA PENGANTAR

Assalamualaikum Wr. Wb,


Puji Syukur Alhamdulillah kehadirat Allah SWT yang senantiasa
selalu memberikan Ridho dan Rahmatnya sehingga penulis dapat menyelesaikan
tugas akhir dengan judul: MONITORING KELEMBABAN DAN SUHU
RUANG BERBASIS MIKROKONTROLLER AT89S51 DENGAN ANTAR
MUKA PORT SERIAL.
Tugas akhir ini merupakan salah satu syarat akademis untuk memperoleh
gelar Ahli Madya (A.Md.) IlmuKomputer, Universitas Negeri Sebelas Maret
Selama penyusunan tugas akhir penulis mendapatkan banyak bantuan dari
berbagai pihak, maka dalam kesempatan ini penulis mengucapkan terima
kasih yang sebesar-besarnya kepada pihak-pihak sebagai berikut :
1. Bapak Drs. Y.S. Palgunadi,M.Sc

selaku Ketua Program DIII

Ilmu

Komputer Fakultas MIPA UNS.


2. Bapak

Darsono,S.Si,M.Si

selaku

dosen

pembimbing

yang

telah

banyak memberikan bimbingan dan masukan dalam penelitian tugas akhir


ini.
3. Bapak Ibuku tercinta yang senantiasa mendukung dan mendoa-kan ku.
4. Kekasihku tercinta yang selalu mendukungku
5. Teman-teman seperjuangan DIII Teknik Komputer 2007.
6. Rekan-rekan dan semua pihak yang berkenan membantu hingga
terselesaikannya tugas akhir ini.
Semoga segala bantuan yang telah diberikan kepada penulis mendapatkan
balasan dari

Allah SWT, serta sepenuhnya menyadari bahwa tanpa bantuan

beliau-beliau maka laporan ini tidak akan mendapat hasil yang baik. Semoga
tugas akhir ini dapat menjadi manfaat bagi semua pihak.
Wassalamualaikum Wr.Wb.
Surakarta , Juni 2010

Penulis
7

DAFTAR ISI

HALAMAN JUDUL ......................................................................................... i


HALAMAN PERSETUJUAN .......................................................................... ii
LEMBAR PENGESAHAN ............................................................................. iii
INTISARI........................................................................................................ iv
ABSTRACT ..................................................................................................... v
PERSEMBAHAN ........................................................................................... vi
KATA PENGANTAR .................................................................................... vii
DAFTAR ISI ................................................................................................. viii
DAFTAR GAMBAR ........................................................................................ x
DAFTAR TABEL ........................................................................................... xi
Bab I PENDAHULUAN ................................................................................ 1
1.1 Latar Belakang Masalah .................................................................. 1
1.2 Perumusan Masalah ........................................................................ 2
1.3 Batasan Masalah ............................................................................. 2
1.4 Tujuan Penulisan ............................................................................ 3
1.5 Manfaat ........................................................................................... 3
1.6 Metodologi Penelitian ..................................................................... 3
1.7 Sistematika Penulisan ...................................................................... 4
Bab II LANDASAN TEORI ............................................................................ 5
2.1. Kelembaban Udara ......................................................................... 5
2.2. Mikrokontroller AT89S51................................................................... 7
2.3. Sensor SHT75....................................................................................... 12
2.4. Dioda ........................................................................................... 16
2.5. Kapasitor ...................................................................................... 16
2.6. Transistor .............................................................................. 17
2.7. IC LM7805................................................................................... 18
2.8. LCD 16X2 .................................................................................... 18
2.9 Komunikasi Serial ......................................................................... 20
2.10. Perangkat Lunak Mikrokontroller AT89S51 ............................... 21
8

2.11. Visual Basic ............................................................................... 24


Bab III DESAIN DAN PERANCANGAN ...................................................... 25
3.1. Blok Diagram ............................................................................... 25
3.2. Perancangan Hardware ................................................................ 26
3.3.Perancangan Software ................................................................... 31
Bab IV IMPLEMENTASI DAN ANALISIS ................................................... 37
4.1. Penjelasan pengoperasian alat ....................................................... 37
4.2. Pengujian alat ............................................................................... 38
4.3. Hasil Pengujian ............................................................................ 41
Bab V PENUTUP .......................................................................................... 42
5.1. Kesimpulan .................................................................................. 42
5.2. Saran ............................................................................................ 42
Daftar Pustaka ................................................................................................ 43
Lampiran

DAFTAR GAMBAR

Gambar 2.1. Konfigurasi Kaki Mikrokontroller AT89S51................................. 7


Gambar 2.2. Peta Memori Mikrokontroler Atmel ............................................ 11
Gambar 2.3. Block Diagram Sensor SHT75 .................................................... 13
Gambar 2.4. Aplikasi Sensor........................................................................... 13
Gambar 2.5. Transmission Start ...................................................................... 14
Gambar 2.6. Simbol Dioda Zener .................................................................... 16
Gambar 2.7. Gambar Dan Simbol Kapasitor ................................................... 17
Gambar 2.8. Jenis-Jenis Transistor .................................................................. 17
Gambar 2.9. IC LM7805 ................................................................................. 18
Gambar 2.10. LCD 16x2 ................................................................................. 18
Gambar 2.11. Konfigurasi Pin Max232 ........................................................... 20
Gambar 3.1. Blok Diagram Rangkaian pengukur suhu Dan kelembaban ......... 25
Gambar 3.2. Rangkaian Secara Keseluruhan ................................................... 26
Gambar 3.3. Rangkaian Power Supply mikrokontroler .................................... 27
Gambar 3.4. Rangkaian SHT75 dan Mikrokontroler ....................................... 28
Gambar 3.5. Rangkaian Mikrokontroller AT89S51 ......................................... 28
Gambar 3.6. Rangkaian LCD dan Mikrokontroler ........................................... 29
Gambar 3.7. Rangkaian Komunikasi Serial ..................................................... 30
Gambar 3.8. Diagram Alir Program Utama ..................................................... 31
Gambar 3.9. Tampilan antar muka sistem monitoring suhu dan kelembaban ... 34
Gambar 4.1. Tampilan Aplikasi Monitoring suhu dan kelembaban................. 37
Gambar 4.2. Setting Baudrate ......................................................................... 38
Gambar 4.3. Setting Comport ......................................................................... 39

10

DAFTAR TABEL

Tabel 2.1. Kandungan Uap Air Udara Jenuh ..................................................... 5


Tabel 2.2. Fungsi pin-pin Port 3 ........................................................................ 9
Tabel 2.3. Daftar Command dari SHT75 ......................................................... 15
Tabel 2.4. Koefisien Konversi Kelembaban .................................................... 15
Tabel 2.5. Koefisien Kompensasi Dari Temperatur ......................................... 15
Tabel 2.6. Fungsi Pin LCD ............................................................................. 19
Tabel 3.1. Nama Pin Sensor SHT75 ................................................................ 27

11

BAB 1
PENDAHULUAN

1.1. Latar Belakang Masalah


Pada masa sekarang ini teknologi informasi mengalami kemajuan yang
sangat pesat dan tidak terlepas pada bidang komputerisasi. Komputer saat ini telah
menjadi alat bantu utama bagi manusia dan digunakan bukan hanya untuk
menyelesaikan permasalahan di tempat kerja, membuat program atau bermain
game, tetapi dapat digunakan untuk mengontrol alat melalui berbagai port yang
tersedia dan dikenal dengan istilah interfacing komputer ( hubungan antar muka
komputer ).
Dalam perkembangan teknologi yang semakin maju ini, banyak sekali
dibutuhkan peralatan yang efisien, praktis, dan ekonomis. Salah satunya dalam
pengukuran suhu dan kelembaban udara. Banyak sekali aplikasi yang
membutuhkan pengaturan kelembaban dan suhu udara, salah satunya dalam
budidaya tanaman. Budidaya tanaman yang membutuhkan pengaturan suhu dan
kelembaban udara adalah budidaya tanaman anggrek. Kelembaban dan suhu
mempengaruhi pertumbuhan tanaman tersebut. Pada umumnya anggrek-anggrek
yang dibudidayakan memerlukan temperatur 28C dan temperatur minimal
15C. Temperatur yang tinggi dapat menyebabkan dehidrasi yang dapat
menghambat pertumbuhan tanaman. Kelembaban nisbi yang diperlukan untuk
anggrek berkisar antara 60 85 %RH. Fungsi kelembaban yang tinggi bagi
tanaman antara lain untuk menghindari penguapan yang terlalu tinggi. Pada
malam hari kelembaban dijaga agar tidak terlalu tinggi, karena dapat
mengakibatkan busuk akar pada tunas-tunas muda. Oleh karena itu diusahakan
agar media dalam pot jangan terlampau basah. Sedangkan kelembaban yang
sangat rendah pada siang hari dapat diatasi dengan cara pemberian semprotan
kabut di sekitar tempat pertamanan. (www.deptan.go.id )
Alat

ukur

kelembaban analog (Higrometer)

mempunyai banyak

kelemahan, selain tidak dapat diaplikasikan dengan alat kontrol lainya, juga

12

memiliki respon yang sangat lambat sehingga tidak cocok untuk pelaksanaan
proses produksi.
Dengan melihat latar belakang diatas, maka dibuat sebuah alat ukur
kelembaban dan suhu digital. Alat ini dapat mengukur dan menampilkan hasil
pengukuran suhu sekaligus kelembaban.

1.2. Perumusan Masalah


Dengan melihat latar belakang diatas, dapat dirumuskan permasalahan pada
tugas akhir ini yaitu :
1. Bagaimana rancangan alat pengukur suhu dan kelembaban
2. Bagaimana perancangan program yang berfungsi untuk menjalankan
rangkaian
3. Bagaimana komunikasi alat ukur kelembaban dan suhu dengan PC

1.3. Batasan Masalah


Karena kompleksitas permasalahan seringkali dapat menyulitkan, maka
penulis perlu melakukan pembatasan masalah agar kedalaman analisisnya tetap
terjaga. Batasan masalah dalam tugas akhir ini antara lain :
1. Mikrokontroler yang digunakan adalah mikrokontroler jenis AT89S51
2. Sensor kelembaban dan temperatur yang digunakan adalah sensor SHT75
buatan SENSIRION
3. Program yang digunakan adalah bahasa pemrograman Assembly dan
pemrograman Visual Basic.
4. Penghubung alat ukur kelembaban dan komputer menggunakan port serial
dan aplikasi Visual Basic dengan menggunakan converter serial to USB.
5. Satuan yang digunakan untuk temperatur adalah C dan kelembaban %RH
(Relatif Humidity).

13

1.4. Tujuan Penulisan


Rancang Bangun alat ukur kelembaban dan suhu digital yang dapat
mengontrol dan menyimpan hasil pengukuran secara periodik.

1.5. Manfaat
Memberikan informasi kepada pembaca

tentang pembuatan dan

pemanfaatan aplikasi mikrokontroler pada sistem minimum. Dapat digunakan


sebagai pengukur suhu ruang server IT. Pengukur suhu dan kelembaban pada
proses budidaya tanaman anggrek. Digunakan sebagai bahan referensi atau kajian
untuk pengembangan selanjutnya bagi peneliti lain.

1.6. Metodologi Penelitian


Metode yang digunakan dalam pembuatan tugas akhir ini adalah sebagai
berikut :
a. Studi literatur tentang :
-

Sensor SHT75

Mikrokontroller AT89S51

Port Serial

Visual basic

b. Perencanaan aplikasi meliputi :


-

Perancangan rangkaian mikrokontroler dan sensor SHT75

Perancangan rangkaian Osilator

Perancangan rangkaian mikrokontroler dan port serial

Perancangan aplikasi dengan Visual Basic

c. Pengujian dan analisa data meliputi :


-

Pengujian output kelembaban dan temperatur

Pengujian port serial

14

1.7. Sistematika Penulisan


Sistematika tugas akhir ini disusun menjadi enam bab yang secara
singkat dapat diuraikan sebagai berikut :
BAB I

: Pendahuluan
Berisi tentang latar belakang masalah, perumusan masalah,
batasan masalah, tujuan, manfaat, metodologi penulisan dan
sistematika penulisan

BAB II

: Landasan Teori
Berisi tentang tinjauan pustaka. Teori-teori yang disajikan
hanyalah teori-teori yang mendukung tugas akhir.

BAB III

: Desain dan Perancangan


Berisi tentang perencanaan perangkat keras dan perangkat lunak

BAB IV

: Implementasi dan Analisa


Berisi tentang langkah dan hasil analisa dan pembahasan yang
sifatnya terpadu.

BAB V

: Penutup
Berisi tentang kesimpulan dan saran yang diperoleh dari
pembuatan tugas akhir.

15

BAB II
LANDASAN TEORI

2.1 Kelembaban udara


Ketika udara banyak mengandung banyak uap air maka dapat dikatakan
kelembaban udara adalah tinggi. Kelembaban udara adalah besaran yang
menunjukan kandungan uap air didalam udara. Uap air masuk ke atmosfer karena
penguapan air dari lautan, sungai, danau, es, salju, tanah yang basah, dan tumbuhtumbuhan. Pada suhu tertentu udara hanya dapat mengandung uap air dalam
jumlah tertentu. Jumlah uap air maksimum yang dikandung oleh udara dinamakan
udara jenuh. Jumlah uap air yang dapat ditampung oleh udara dipengaruhi oleh
temperatur udara. Pada temperatur yang rendah, uap air yang dibutuhkan untuk
menjenuhkan udara sangat sedikit, sehingga dapat dikatakan udara mulai jenuh.
Sedangkan pada temperatur tinggi, uap air yang dibutuhkan udara sangat banyak,
sehingga dapat dikatakan udara belum mulai jenuh. Kandungan uap air udara
jenuh pada suhu yang berbeda dapat dilihat pada tabel 2.1.
( Kanginan Marthen, 2000 )
Tabel 2.1. kandungan Uap Air Udara Jenuh
Kandungan uap air maksimum di

Suhu udara (oC)

udara (gr/m3 )

-8

2,74

-4

3,66

4,84

6, 33

8,21

12

10, 57

16

13, 50

20

17,12

24

21,54

28

26,93

32

33,45

36

41,82

16

Pada tabel 2.1 terlihat bahwa pada suhu udara 32oC, udara jenuh
mengandung maksimum 33,45 gr/m3, dan pada suhu 200C, udara jenuh
mengandung maksimum 17,12 gr/m3 . jadi pada suhu rendah, kandungan uap air
maksimum diudara lebih sedikit. Sedangkan pada suhu tinggi, kandungan uap air
maksimum diudara lebih banyak.
Kelembaban (humidity) ada dua macam yaitu kelembaban mutlak dan
kelembaban relatif atau nisbi. Kelembaban mutlak adalah bilangan menyatakan
massa uap air (dalam gram) yang terkandung dalam 1 m3 udara. Sebagai contoh,
jika 1 m3 udara mengandung 5 gram uap air, maka kelembaban mutlak udara
adalah 5 gr/m3. Kelembaban relatif adalah bilangan persen yang menunjukan
perbandingan antara massa uap air yang ada di udara dan massa uap air yang
dikandung udara jenuh pada tekanan dan suhu yang sama.

Kelembaban relatif udara berubah-ubah sesuai dengan kondisi dan cuaca


di suatu tempat, dan juga banyak uap air yang diserap udara ditempat itu. Pada
suhu tinggi dimana udara mengandung sedikit uap air, maka kelembaban
relatifnya rendah. Sedangkan pada suhu rendah dimana udara mengandung sedikit
uap air, maka kelembaban relatifnya tinggi. Jadi pada suhu tinggi, udara
memerlukan banyak uap air mencapai kelembaban relatif yang tinggi. Sedangkan
pada suhu rendah, tidak memerlukan banyak uap air untuk mencapai kelembaban
relatif yang tinggi. Oleh karena itu pada siang hari, kelembaban relatifnya lebih
rendah dibandingkan pada pagi hari. Kelembaban relatif pada cuaca cerah lebih
rendah dibandingkan pada cuaca mendung atau hujan. Udara akan terasa nyaman
jika kelembaban relatifnya 50%, dan sangat tidak nyaman jika kelembabanya
99%. Pengontrolan kadar air dalam udara sangat penting untuk kenyamanan
manusia dan dan berpengaruh dalam proses produksi tertentu.
( Kanginan Marthen, 2000 )

17

2.2 Mikrokontroller AT89S51


Salah satu jenis mikrokontroler yang sangat populer saat ini adalah
keluarga MCS51. Intel memperkenalkan mikrokontroler type 8031 / 8051 pada
awal

tahun 1980-an. Selanjutnya banyak pabrik IC besar lainnya (AMD,

PHILIPS, ATMEL, WINBOND) ikut memproduksi dengan menambahkan


kemampuan dan fasilitas pada mikrokontroler buatannya, sehingga terbentuk
sebuah keluarga besar mikrokontroler yang kemudian biasa disebut sebagai
keluarga MCS51.
ATMEL memproduksi 2 macam mikrokontroler MCS-51, yaitu 40
pin (AT89C51, AT89C52, AT89C53, AT89C55 dan AT89C8252) dan 20 pin
(AT89C1051, AT89C2051, AT89C4051). Belakangan ATMEL mempermudah
penggunanya

dengan memproduksi mikrokontroler dengan teknologi ISP (In

System Programming) yang dapat diprogram

secara

serial.

(AT89S51,

AT89S52, AT89S53, AT89S8252, AT89S1051, AT89S2051, AT89S4051).


(Agfianto, Eko P , 2006)

Gambar 2.1. Konfigurasi Kaki Mikrokontroler AT89S51


(http://depokinstruments.files.wordpress.com )

18

Penjelasan dari masing-masing kaki mikrokontroler AT89S51 adalah sebagai


berikut:
-

Vcc
Memberikan tegangan supplay.

GND
Sebagai ground terhadap sumber.

Port 0
Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex
address/data, atau menerima kode byte pada saat Flash Programming.
Port 0 merupakan port I/O 8 bit dua arah. Pada saat sebagai port keluaran
masing masing pinnya dapat menangani 8 input TTL. Saat 1 detik
dimasukkan ke port 0, maka port ini akan berfungsi sebagai input dengan
impedansi tinggi. Pada saat sebagai low order multiplex address/data port
ini akan mempunyai internal pull up dan pada saat Flash Programming
diperlukan external pull up terutama pada saat verifikasi program.

Port 1
Port 1 dapat berfungsi sebagai I/O biasa, low order multiplex
address/data, atau menerima kode byte pada saat pemrograman Flash dan
verifikasi. Saat logika 1 dituliskan pada pin port 1, maka akan ditarik naik
oleh internal pull up dan dapat berfungsi sebagai masukan. Pin 0 dan 1
pada port 1 dapat berfungsi sebagai timer/counter 2 masukan external
count (P1.0/T2) dan timer/counter 2 trigger (P1.1/T2EX).

Port 1

merupakan port I/O 8 bit dua arah dengan internal pull up. Pada saat
sebagai port keluaran masing masing masukannya dapat menangani 4
input TTL.
-

Port 2
Merupakan port I/O 8 bit dua arah dengan internal pull up. Pada saat
sebagai port keluaran masingmasing pinnya dapat menangani 4 input
TTL. Saat logika 1 dimasukkan pada pin dari port 2, maka akan di pull up
oleh internal pull up dan dapat berfungsi sebagai masukan. Port 2
mengeluarkan high-order address byte selama mengambil dari eksternal
19

program memori dan selama mengakses eksternal data memori yang


menggunakan 16-bit alamat (MOVX@DPTR). Selama mengakses
eksternal data memori yang menggunakan 8-bit alamat (MOVX@RI), port
2 mengeluarkan isi dari P2 SFR. Port 2 juga menerima kode byte saat
pemrograman flash dan verifikasi.
-

Port 3
Merupakan port I/O 8 bit dua arah dengan internal pull up. Pada saat
sebagai port keluaran masing masing pinnya dapat menangani 4 input
TTL. Port 3 juga menerima kode byte saat pemrograman flash dan
verifikasi. Selain itu, port 3 juga dapat bekerja sebagai fungsi fungsi
khusus pada AT89C51, yaitu :
Tabel 2.2. Fungsi pin-pin Port 3
Pena Port

Fungsi

P3.0

RXD ( Port Masukan Serial )

P3.1

TXD ( Port Keluaran Serial )

P3.2

INT0 ( Interupsi 0 Eksternal )

P3.3

INT1 ( Interupsi 1 Eksternal )

P3.4

T0 ( Timer 0 )

P3.5

T1 ( Timer 1 )

P3.6

WR ( Write Strobe Data Memory Eksternal )

P3.7

RD ( Read Strobe Data Memory Eksternal )

RST
Masukan Reset tinggi pada pin selama 2 siklus mesin ketika osilator
menjalankan reset peralatan.

ALE / PROG
Address Latch Enable mengeluarkan pulsa untuk byte rendah pada alamat
selama mengakses memori eksternal. Pin ini juga sebagai input pulsa
program ( PROG ) selama memprogram flash.

PSEN
20

PSEN (Program Store Enable ) adalah read strobe untuk memori program
eksternal. Ketika AT89S51 mengeksekusi kode dari memori program
eksternal. PSEN diaktifkan 2 X tiap siklus mesin.
-

EA / Vpp
Eksternal Access Enable harus dihubungkan dengan ground agar peralatan
dapat mengambil kode dari memori program eksternal dimulai pada lokasi
0000H sampai alamat FFFFH, catatan jika lock bit 1 diprogram, EA akan
menjadi pengunci internal pada reset. EA harus dipasang ke VCC untuk
mengeksekusi program internal.

XTAL 1
Masukan untuk penguat osilator pembalik dan masukan untuk rangkaian
operasi detak internal.

XTAL 2
Keluaran dari penguat osilator pembalik.
(Nugroho, Budi , 2006)

2.2.1 Organisasi Memori AT89S51


Mikrokontroler MCS-51 mempunyai 16 bit alamat Program memori
dan Data memori yang terpisah, sehingga MCS-51 dapat mengalamati 64 KB
program memory (ROM) dan 64 KB external data memory (RAM). Selain
itu MCS-51 mempunyai 128/256 Byte internal data memori. Program
memori internal dapat diakses dengan membuat pin EA (External Acces)
berlogika high, sedangkan jika EA dibuat Low, seluruh program diacces dari
external memory.
Data memori internal dari alamat 00H sampai dengan 7FH dapat diacces
secara Direct dan Indirect Addressing. Sedangkan SFR (Special Function
Register)

dengan alamat 80H FFH hanya dapat diacces

secara Direct

addressing. Untuk MCS-51 yang mempunyai 256 Byte internal data memori
alamat 80H FFH hanya dapat diacces secara Indirect.

21

Gambar 2.2. Peta memori mikrokontroler Atmel


(Nugroho, Budi , 2006)

2.2.2 Register MCS-51


Setiap mikroprosesor / mikrokontroler mempunyai register baku yaitu
Program Counter (PC), Stack Pointer (SP), Program Status Word (PSW)
dan Akumulator (Acc/A), yang berfungsi sebagai berikut :

Program Counter Register (PC).


Register 16 bit, bergfungsi menyimpan alamat program yang sedang
dijalankan.

Stack Pointer Register (SP).


Register ini berfungsi untuk menyimpan alamat stack. Stack adalah
memory yang digunakan untuk menyimpan alamat / data

pada saat

terjadi interupsi, mengeksekusi perintah call dan push.

Program Status Word Register (PSW).


PSW sering juga disebut Flag Register yang berfungsi menyimpan
status (Flag) yang dihasilkan setelah suatu instruksi dijalankan. Flag
tersebut adalah :

22

Accumulator (Acc / A)
Register Acc / A adalah

register keperluan umum yang paling

sering digunakan untuk manipulasi data, operasi aritmatika dan logika.


(Nugroho, Budi , 2006)

2.3 Sensor SHT75


SHT75 adalah sensor digital untuk temperatur sekaligus kelembaban
pertama di dunia yang diklaim oleh pabrik pembuatnya, Sensirion Corp.
Mempunyai kisaran pengukuran dari 0-100% RH, dan akurasi RH absolute +/3% RH. Sedangkan akurasi pengukuran temperatur 0.4C pada 25 C. Sensor ini
bekerja dengan interface 2-wire. Aplikasi sensor ini biasanya pada data logging,
pemancar, automotive, perangkat instrumentasi, dll. Sensor ini lebih presisi dan
akurat daripada saudaranya yaitu SHT1x yang juga lebih murah.
Sensor ini juga telah dipatenkan melalui proses mikro oleh CMOSSen
technology sehingga terbukti ketahanan dan stabilitasnya yang bagus. Kedua
sensor tersebut digabungkan dengan analog digital converter (ADC) 14 bit dan
serial interface circuit pada chip yang sama. Hasilnya adalah sinyal besar yang
bagus, waktu respon yang cepat dan ketahanan terhadap gangguan yang berasal
dari luar.
Internal voltage regulation dan 2-wire serial interface memungkinkan
adanya pemasangan yang mudah dan cepat ke dalam suatu system. Ukuranya
kecil dan konsumsi daya rendah membuat sensor ini sebagai pilihan utama untuk
sebagian besar aplikasi.sensor ini terdiri dari 2 bentuk yaitu surface-mountable
LCC(Leadless Chip Carrier) dan plugable 4-pin single-in-line.
(Datasheet SHT75, 2009)

23

Gambar 2.3. Blok Diagram Sensor SHT75


(Sumber : Datasheet SHT75)

2.3.1 Spesifikasi Interface

Gambar 2.4. Aplikasi Sensor


( Sumber : Datasheet SHT75)

2.3.2 Serial interface (Bidirectional 2-wire)


Serial interface dari SHTxx dioptimalkan untuk pembacaan sensor dan
konsumsi power, dan tidak kompatibel dengan I2C interface.
24

Serial Clock input (SCK)


Digunakan untuk sinkronisasi komunikasi antara microcontroller dan
SHT75. Karena interface ini terdiri dari static logic sepenuhnya, maka
tidak ada batasan frekuensi minimum dari SCK.
Serial data (SDA)
Pin data merupakan tri-pin yang digunakan untuk transfer data in dan data
out. DATA berubah setelah transisi turun, dan valid pada transisi naik dari
serial clock SCK. Selama transisi, DATA line harus stabil selama SCK
high. Untuk menghindari adanya signal contention, microcontroller hanya
diperbolehkan men-drive DATA low.
(Datasheet SHT75, 2009)

2.3.3 Mengirim Perintah

Untuk memulai proses pengiriman, perlu adanya suatu transmission start


agar dapat dilakukan. Metodenya adalah sbagai berikut :

Gambar 2.5. transmission start sequence


( Sumber : Datasheet SHT75)

DATA di-reset sehingga keadaanya low sementara SCK di-set menjadi


high, diikuti dengan kondisi low SCK kemudian DATA dan SCK di-set high.
Perintah berikutnya terdiri atas tiga bit alamat (hanya 000 yang tersedia)
dan lima bit command.
(Datasheet SHT75, 2009)

25

Tabel 2.3. Daftar Command dari SHT75

( Sumber : Datasheet SHT75)

2.3.4 Konversi Output ke Nilai Fisik


Kelembaban (Relative Humidity)
Rumus yang dipakai untuk kompensasi ketidak linearan dari sensor
kelembaban ini adalah sebagai berikut :
RHlinear = c1 +c2 *SORH + SORH2

(2.1)

Tabel 2.4.. Koefisien Konversi Kelembaban

( Sumber : Datasheet SHT75)


Untuk kompensasi ketegantungan RH terhadap temperatur digunakan
rumus berikut:
RHtrue = (TC-25)*(t1+t2*SORH)+ RHlinear

(2.2)

Tabel 2.5. Koefisien Kompensasi Dari Temperatur

( Sumber : Datasheet SHT75 )

2.4 Dioda
26

Sebuah

dioda

biasanya

dianggap

sebagai

alat yang

menyalurkan listrik ke satu arah, namun Dioda Zener dibuat sedemikian


rupa sehingga arus dapat mengalir ke arah yang berlawanan jika tegangan
yang diberikan melampaui batas "tegangan rusak" (breakdown voltage) atau
"tegangan Zener".

Gambar 2.6. Simbol diode zener


(http://chip.web44.net)

2.5 Kapasitor
Kondensator
menyimpan energi di

(Capasitor)

dalam medan

adalah
listrik,

suatu alat

yang dapat

dengan cara mengumpulkan

ketidakseimbangan internal dari muatan listrik. Kondensator memiliki satuan


yang disebut

Farad.

Ditemukan oleh Michael Faraday

(1791-1867).

Kondensator kini juga dikenal sebagai "kapasitor", namun kata "kondensator"


masih dipakai hingga saat ini. Pertama disebut oleh Alessandro Volta seorang
ilmuwan Italia pada tahun 1782 (dari bahasa Itali condensatore), berkenaan
dengan
tinggi

kemampuan
dibanding

alat

untuk menyimpan

komponen

suatu muatan

listrik

yang

lainnya. Kebanyakan bahasa dan negara yang

tidak menggunakan bahasa Inggris masih mengacu pada perkataan bahasa Italia
"condensatore", seperti bahasa Perancis condensateur, Indonesia dan Jerman
Kondensator atau Spanyol Condensador.

27

Gambar 2.7. Gambar dan simbol kapasitor


(http://2.bp.blogspot.com)
2.6 Transistor
Merupakan

komponen

elektronika

yang

terdiri dari

lapisan semikonduktor. Transistor dapat dipergunakan antara lain untuk:


a) Sebagai penguat arus, tegangan dan daya (AC dan DC).
b) Sebagai penyearah .
c) Sebagai mixer .
d) Sebagai osilator.
e) Sebagai switch .

Gambar 2.8. Jenis-jenis transistor


(http://opensource.telkomspeedy.com)

28

tiga

2.7 IC LM7805

Gambar 2.9. IC LM7805


(http://4.bp.blogspot.com)

7805 adalah regulator untuk mendapat tegangan 5 volt, 7812 regulator


tegangan 12 volt dan seterusnya. Komponen ini biasanya sudah dilengkapi dengan
pembatas arus (current limiter) dan juga pembatas suhu (thermal shutdown).
Komponen ini hanya tiga pin dan dengan menambah beberapa komponen saja
sudah dapat menjadi rangkaian catu daya yang ter-regulasi dengan baik.
(http://workshop-robot.blogspot.com, 2009)

2.8 LCD 16 X 2

Gambar 2.10. LCD 16 X 2

Display
induksi

LCD

2x16

berfungsi

sebagai

penampil

nilai

kuat

medan elektromagnetik yang terukur oleh alat. LCD yang digunakan

pada alat ini mempunyai lebar display 2 baris 16 kolom atau biasa disebut
sebagai LCD Character

2x16, dengan 16 pin konektor, yang didifinisikan

sebagai berikut:
29

Tabel 2.6. Fungsi pin LCD

Fungsi dari masing masing pin pada LCD adalah pin pertama dan kedua
merupakan pin untuk tegangan suplay sebesar 5 volt, untuk pin ketiga harus
ditambahkan resistor variabel 4K7 atau 5K ke pin ini sebagai pengatur kontras
tampilan yang diinginkan.
Pin keempat berfungsi untuk memasukkan input command atau input data,
jika ingin memasukkan input command maka pin 4 diberikan logic low (0), dan
jika ingin memasukkan input data maka pin 4 diberikan logic high (1).
Fungsi pin kelima untuk read atau write, jika diinginkan untuk membaca
karakter data atau status informasi dari register (read) maka harus diberi masukan
high (1), begitu pula sebaliknya untuk menuliskan karakter data (write) maka
harus diberi masukan low (0). Pada pin ini dapat dihubungkan ke ground bila
tidak diinginkan pembacaan dari LCD dan hanya dapat digunakan untuk
mentransfer data ke LCD.

30

Pin keenam berfungsi sebagai enable, yaitu sebagai pengatur transfer


command atau karakter data ke dalam LCD. Untuk menulis ke dalam LCD data
ditransfer waktu terjadi perubahan dari high ke low, untuk membaca dari LCD
Dapat dilakukan ketika terjadi transisi perubahan dari low ke high.
Pin-pin dari nomor 7 sampai 14 merupakan data 8 bit yang dapat ditransfer
dalam 2 bentuk yaitu 1 kali 8 bit atau 2 kali 4 bit, pin-pin ini akan langsung
terhubung ke pin-pin mikrokontroler sebagai input/output. Untuk pin nomor 1516 berfungsi sebagai backlight

2.9 Komunikasi Serial


Sistem transmisi sinyal RS232 menggunakan level tegangan dengan
respek to sistem common (power ground). Tipe ini bagus untuk komunikasi data
secara satu-satu (point to point communications). RS232 port PC hanya
diperuntukan untuk satu alat (single device). Misal com1 digunakan untuk mouse
port sedangkan Com2 digunakan untuk modem. Syarat sinyal RS232 dapat
berfungsi adalah dengan hubungan ke ground antara PC dengan alat (commond
ground). Jarak maksimal jalur komunikasi sangat terbatas hanya 100/200 kaki
untuk komunikasi data secara asinkron dan hanya 50 kaki untuk komunikasi
sinkron. Kecepatan transfer data RS232 cukup rendah, kecepatan maksimal hanya
19200 bits/detik. RS232 pada PC mempunyai dua jenis konektor, yaitu konektor
dengan 25 Pin (DB25) dan konektor dengan 9 pin (DB9). Pada dasarnya hanya 3
pin yang terpakai, yaitu pin kirim, pin terima, dan ground.

Gambar 2.11. Konfigurasi pin MAX232


( Sumber : www.febat.com)
31

Dalam setiap proses transfer data serial, RS232 memerlukan sebuah Data
Terminal Equipment (DTE) dan Data Communication Equipment (DCE) pada
masing-masing terminal. Pengiriman data dilakukan secara bit per bit. Kecepatan
transfer data harus sama antara pengirim dan penerima, jika tidak sama akan
terjadi overflow. Kecepatan transmisi transfer data sering disebut dengan
baudrate. Panjang data bit yang sering digunakan diantaranya adalah 4,5,6,7, dan
8 bit.
Pada komunikasi data serial pada dasarnya yang dikirimkan adalah
tegangan dan kemudian dibaca dalam bit. Besar level teganganya adalah antara 25 volt sampai dengan +25volt. Untuk bit dengan logika 1 maka besar level
teganganya adalah antara
-3 volt sampai -25 volt, sedangkan untuk bit dengan logika 0 maka besar level
tegangannya antara +3 volt sampai +25 volt.

2.10 Perangkat Lunak Mikrokontroler AT89S51


Bahasa

pemrograman

yang

digunakan

untuk

memprogram

IC

Mikrokontroler AT89S51 adalah dengan menggunakan bahasa Assembly yang


biasanya disimpan dengan menggunakan ekstensi .ASM. Bahasa Assembly adalah
bahasa komputer yang kedudukannya di antara bahasa mesin (kumpulan kode
biner yang merupakan instruksi yang dapat dimengerti dan dijalankan oleh
komputer atau mikrokontroler) dan bahasa level tinggi (bahasa komputer yang
memakai kata-kata dan pernyataan yang mudah dimengerti oleh manusia),
misalnya bahasa C dan Pascal.
Mikrokontroler AT89S51 mempunyai beberapa instruksi, di antaranya
adalah :
a. Instruksi aritmatika
Instruksi aritmatika/ADD dapat dilaksanakan dengan 4 cara, yaitu :

ADD A,7FH

pengalamatan langsung

ADD A@RO

pengalamatan tak langsung

ADD A,R7

pengalamatan register
32

ADD A,#35H

pengalamatan immediate

Untuk aritmatika BCD (Binary Coded Decimal), ADD dan ADDC


harus diikuti dengan operasi DA A (Decimal Adjust) untuk meyakinkan
hasil dari BCD, dimana DA A akan merubah nomor binary menjadi
BCD.
b. Instruksi logika
Instruksi logika pada mikrokontroler AT89S51 memberikan operasi
boolean (AND, OR, EX-OR, dan NOT) dalam byte data. Semua
instruksi logika menggunakan akumulator pada pengoperasian pertama
dalam sebuah siklus mesin. Operasi logika dapat ditampilkan dalam
sebuah byte ruang memori internal data tanpda meninggalkan
akumulator.
c. Instruksi perputaran
Instruksi perputaran (RL A dan RR A) menggeser akumulator satu bit
ke arah kiri atau kanan. Untuk pergeseran ke kiri, MSB berputar ke arah
LSB, untuk pergeseran ke kanan LSB berutar ke arah posisi MSB.
Variasi RL A dan RR A adalah pergeseran 9-bit yang menggunkan
akumulator dan membawa pengikut ke dalam PSW. Instruksi SWAP A
mengubah posisi tinggi ke posisi rendah dengan menggunakan
akumulator.
d. Instruksi data transfer internal RAM
Instruksi ini memindahkan data dengan ruang memori internal yang
akan dilaksanakan pada satu atau dua siklus mesin. Format instruksi ini
adalah : MOV <tujuan> <sumber>
Menyediakan data untuk dipindahkan antar 2 internal RAM atau lokasi
SFR dengan keluaran melalui akumulator. Bagian atas 128 byte data
memori RAM hanya dapat diakses dengan pengalamatan langsung dan
SFR hanya dapat dikases dengan pengalamatan langsung.
e. Instruksi variabel boolean
Mikrokontroler AT89S51 memiliki sebuah prosesor boolean yang
lengkap (bit-tunggal). RAM internal mengandung 128 bit yang dapat
33

dialamati dan ruang SFR dapat mendukung hingga 128 bit yang dapat
dialamati lainnya. Semua jalur port juga merupakan bit yang dapat
dialamati dan masing-masing dapat diperlakukan sebagai port bit
tunggal yang terpisah. Instruksi-instruksi yang mengakses bit-bit ini
tidak hanya di percabangan bersyarat saja, namun lengkap meliputi
instruksi-intruksi pemindahan data (mov), set, clear, komplemen, OR,
dan AND.
f. Instruksi lompatan bersyarat
Instruksi pengetesan bit akan dilewati jika alamat bit set (JC,JB,JBC)
atau jika alamat bit tidak diset (JNC dan JNB). Semua bit PSW adalah
pengalamatan langsung, jadi parity bit atau flag yang digunakan secara
umum dapat juga digunakan sebagai bit instruksi set.
g. Instruksi lompatan
Ada beberapa jenis variasi instruksi : SJMP, LJMP, dan AJMP. Instruksi
SJMP mempunyai ukuran 2 byte, instruksi LJMP mempunyai ukuran 3
byte dan instruksi AJMP mempunyai ukuran 2 byte.
Dalam melakukan pembuatan program pada mikrokontroler AT89S51, ada
beberapa jenis pengalamatan yang biasa digunakan, yaitu:
1. Mode Pengalamatan Langsung (Direct Addressing Mode)
Mode pengalamatan ini digunakan untuk menunjuk data yang berada di
suatu lokasi memori dengan cara menyebut lokasi (alamat) memori tempat
data tersebut berada, misalnya: MOV A, 50H. Instruksi ini menyatakan
bahwa data yang berada pada alamat 50H disalin ke akumulator A.
2. Mode Pengalamatan Segera (Immediate Addressing Mode)
Mode pengalamatan segera digunakan untuk pemindahan data konstan
atau menggunakan konstanta, yaitu data yang menyatu dengan instruksi.
Contoh dari instruksi ini adalah MOV A, #40H. Instruksi ini mempunyai
arti bahwa data sebesar 40H disalin ke akumulator A.
3. Mode Pengalamatan Tidak Langsung (Indirect Addressing Mode)
Mode pengalamatan ini digunakan untuk mengakses data yang berada
didalam memori namun lokasi memori tersebut tidak disebut secara
34

langsung tetapi disimpan dulu ke register lain, contohnya: MOV A, @R0.


Instruksi ini menyatakan bahwa data yang tersimpan pada memori yang
alamat lokasinya tersimpan pada R0 disalin ke Akumulator A.
4. Mode Pengalamatan Register (Register Addresing Mode)
Mode pengalamatan ini digunakan untuk mengakses data dari register
sebagai tempat penyimpanan data yang praktis dan kerjanya sangat cepat,
misalnya MOV A, R0. instruksi ini mempunyai arti bahwa data dalam
register serba guna R0 disalin ke Akumulator A.
5. Mode Pengalamatan Kode Tidak Langsung (Code Indirect Addressing
Mode)
Mode pengalamatan ini digunakan untuk penyebutan data dalam
memori program yang dilakukan secara tidak langsung, misalnya instruksi
MOVC A, @A+DPTR. Instruksi ini mempunyai arti bahwa data yang
berada pada lokasi memori program yang beralamat di DPTR (Data
Pointer Register-2 Byte) ditambah dengan nilai yang tersimpan dalam
Akumulator

A (1 byte).

( Agfianto Eko Putra, 2006)

2.11 Visual Basic


Visual Basic adalah salah satu bahasa pemrograman komputer. Bahasa
pemrograman adalah perintah-perintah yang dimengerti oleh komputer untuk
melakukan tugas-tugas tertentu. Bahasa pemrograman Visual Basic, yang
dikembangkan oleh Microsoft sejak tahun 1991, merupakan pengembangan dari
pendahulunya yaitu bahasa pemrograman BASIC (Beginners All-purpose
Symbolic Instruction Code) yang dikembangkan pada era 1950-an. Visual Basic
merupakan salah satu Development Tool yaitu alat bantu untuk membuat berbagai
macam program komputer, khususnya yang menggunakan sistem operasi
Windows. Visual Basic merupakan salah satu bahasa pemrograman komputer
yang mendukung object (Object Oriented Programming = OOP).

35

BAB III
DESAIN DAN PERANCANGAN

3.1. Diagram Blok


Masukan

Sensor
SHT75

Keluaran

Mikrokontroller
AT89S51

Display
LCD
komputer

Gambar 3.1 Blok Diagram Rangkaian pengukur suhu dan kelembaban

Pada blok pertama terdapat blok masukan. Dimana pada blok ini terdapat
sensor suhu sekaligus kelembaban yang menggunakan IC SHT75 sebagai
sensornya. Sensor ini dipilih karena memiliki banyak kelebihan, untuk
pengukuran suhu dan kelembaban hanya dibutuhkan satu sensor yang telah
terkalibrasi. Sedangkan mikrokontroller yang berfungsi sebagai otak dari sistem
pengukuran ini menggunakan AT89S51.
Pada blok yang terakhir terdapat blok keluaran. Pada blok ini terdapat
display LCD dan Komputer. LCD berfungsi sebagai display dari monitoring suhu
dan kelembaban. Sedangkan komputer berfungsi untuk menyimpan hasil
pembacaan suhu dan kelembaban dalam bentuk database. Selain meyimpan hasil
pengukuran komputer juga berfungsi untuk mengatur pengukuran dalam setiap
beberapa waktu sekali.

36

Gambar 3.2. Rangkaian Secara Keseluruhan

3.2. Perancangan Hardware


3.2.1 Power Supply
Sumber tegangan dari mikrokontroler berasal dari travo 1A dengan
tegangan input AC 220 V dan output AC 12 V. Tegangan output AC 12 V ini
dihubungkan dengan dioda bridge dan kondensator agar menjadi tegangan DC 12
V. Untuk menghindari drop tegangan, diperlukan suatu kondensator yang akan
menyimpan sementara tegangan tersebut.
Sebelum masuk ke dalam rangkaian mikrokontroller, tegangan DC 12 V
diturunkan menjadi DC 5 V dengan menggunakan regulator tegangan 7805.
Untuk pengaman dari polaritas yang terbalik rangkaian ini dilengkapi sebuah
diode. Penggunaan kapasitor dimaksudkan untuk menyimpan tegangan sementara.

37

Gambar 3.3 Rangkaian Power Supply Mikrokontroller

3.2.2 Sensor
Sensor yang digunakan adalah SHT75 buatan SENSIRION yang
menggunakan komunikasi 2-wire interface. Sensor ini memiliki dua fungsi, yaitu
sebagai sensor temperatur dan sensor kelembaban. Sensor ini memiliki tingkat
kepresisian yang baik sehingga layak digunakan dalam sistem pengukuran ini.
Pada sensor ini terdapat 4 buah pin yaitu VCC, GND, DATA, dan SCK.

Tabel 3.1 Nama Pin sensor SHT75

38

Gambar 3.4 Rangkaian SHT75 dan mikrokontroler

3.2.3 mikrokontroler AT89S51


Mikrokontroler AT89S51 adalah bagian utama dan merupakan otak
dalam proses akuisisi data dari sensor. Dalam rangkaian ini mikrokontroler
digunakan sebagai kontrol input dan output saja.

Gambar 3.5 Rangkaian mikrokontroler AT89S51


Pada rangkaian, Pin 31 External Access Enable (EA) diset high (H).
Ini dilakukan karena mikrokontroller AT89S51 tidak menggunakan memori
39

eksternal. Pin 18 dan 19 dihubungkan ke XTAL 11,0592 MHz dan kapasitor


33 pF. XTAL ini

akan mempengaruhi kecepatan mikrokontroller AT89S51

dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan


reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan me-reset
mikrokontroller ini. Pin 1 sampai 8 adalah Port 1. Pin 21 sampai 28 adalah Port 2.
Dan Pin 10 sampai 17 adalah Port 3. Pin 20 merupakan ground dihubungkan
dengan ground pada power supply. Pin 40 merupakan sumber tegangan positif
dihubungkan dengan + 5 volt dari power supply.

3.3.5 LCD 16 x 2
Untuk menampilkan hasil pembacaan temperatur dan kelembaban dari
sensor digunakan LCD (Liquid Crystal Display) dengan ukuran 16x2. Koneksi
LCD ke port mikrokontroler dapat dilihat pada gambar di baha ini.

Gambar 3.6 Rangkaian LCD dan mikrokontroler


Hasil perhitungan sensor SHT75 dengan mikrokontroler akan ditampilkan
pada LCD display ini. Nilai yang ditampilkan antara lain nilai temperatur dan
nilai kelembaban. Tampilan LCD ini memakai modus 4 bit sehingga pin yang
digunakan untuk transfer data adalah pin 11-14. Port yang digunakan untuk
mengirim data ke LCD adalah port 0. Selain itu untuk mengatur kecerahan LCD
ditambahkan Resisitor Variabel (VR).
40

3.3.6 Rangkaian Max 232

Gambar 3.7 Rangkaian Komunikasi Serial


Selain memakai LCD 16x2 sebagai penampil, pada alat ini juga akan
menghasilkan hasil pengukuran suhu dan kelembaban yang dapat disimpan yang
ditampilkan pada komputer. Agar dapat berkomunikasi dari alat ke komputer
maka dibutuhkan suatu dekoder yaitu berupa IC MAX232. Pada IC MAX232 pin
11(T1in) dihubungkan dengan pin 11(TXD) di mikrokontroler, pin 12 (R1out)
dihubungkan dengan pin 10 (RXD). Kemudian untuk menghubungkan alat
dengan komputer diperlukan sebuah konektor yaitu DB9. Pin yang digunakan di
DB9 ini ada tiga yaitu pin 2, 3, dan 5. Pin 2 dihubungkan dengan pin 14 (T1out)
pada IC MAX232 , pin 3 dihubungkan dengan pin 13 (R1in) pada IC MAX232,
sedangkan pin 5 dihubungkan dengan ground.

41

3.3 perancangan Software


3.3.1 perancangan program pada mikrokontroler
Perancangan software dalam pembuatan alat ukur suhu dan kelembaban
ini menggunakan compiler ASM_51. Pemrograman ini menggunakan bahasa
assembly dimana hasil compile program tersebut dalam ekstensi hex.

Gambar 3.8 Diagram Alir program utama


42

3.3.2 bagian pendeklarasian


$mod51
;port 1 : LCD 4bit interface
rs

bit

p0.4

rw bit

p0.5

en bit

p0.6

lcd equ

p0

sckl bit

p1.0

dtl bit

p1.3

csuhu

equ

00000011b

chumi

equ

00000101b

crst

equ

00011110b

;d4-d7 bit p100-p0.3

listing program diatas merupakan pendeklarasian pin pin dari LCD. Selain
pendeklarasian pin LCD program diatas juga mendeklarasikan pin dari sensor
SHT75. LCD ditempatkan pada port 0, rs dihubungkan dengan p0.4, rw
dihubungkan dengan p0.5 dan en dihubungkan dengan p0.4. kaki dari sensor yaitu
sck dihubungkan dengan port 1 sedangkan data dihubungkan dengan p1.3
cseg at 0h
jmp start

cseg (code segment) menandakan awal dari program, jmp ( lompat ke


alamat start)
org

23h
jb

(origin, alamat interupsi serial)


ti,xser (jika ti (transmit interflect)=1 lompat ke xser,0
kebawah

jnb

ri,$

(jum if not bit) jika ri=0

mov

a,sbuf

cjne

a,#255,xser (compire jump not equal)

call

ukur

( serial bufer)

43

call

hitung

call

kirim

clr

tr0

xser: reti

(ritern from interupt)

program diatas merupakan procedure untuk menerima dan mengirim data


ke sensor, org 23h merupakan alamat interupt yang berada di mikrokontroler,
xser (alamat selesai ), ti (transmit interflect). Data akan diterima dan disimpan
sementara di sbuf kemudian dicopy di a untuk diproses selanjutnya. Jika a =255
akan siap untuk menerima data sensor dan jika a 255 maka lompat ke xser, xser
adalah selesai dari interupsi.

start: mov

tmod,#21h

;timer 0 mode 1, timer 1 mode 2

mov

th1,#0fdh

;9600 bps

setb

tr1

mov

scon,#50h

;serial mode 1

setb

ea

;enable interupt

setb

et0

;timer0

setb

es

;serial

call

d11ms

;tunggu sht siap

call

rst11x

;reset sth11x

call

d11ms

;tunggu > 11ms

call

initlcd

;initialaisasi LCD

call

line1

;baris 1

mov

dptr,#tb1

;temperatur

call

ctkrom

call

line2

;baris 2

mov

dptr,#tb2

;kelembaban

call

ctkrom
44

mov

dtime,#20

setb

tr0

jmp

listing program diatas merupakan inisiasi dari timer,serial dan reset sensor
dan merupakan program utama untuk membaca sensor sht75

kirim: clr

ti (memulai pengiriman data)

mov

sbuf,temp

jnb

ti,$

clr

ti

mov

sbuf,hum

jnb

ti,$

clr

ti

ret

program diatas merupakan procedure untuk mengirim data ke sensor


melalui port serial, clr ti menandakan transmit interflect dikosongkan agar dapat
diisi data yang dikirim, kemudian data disalin ke sbuf (serial buffer) yaitu berupa
data temperatur. Jika ti bernilai 0 maka lompat di jnb. ti dinolkan agar dapat
menerima data pengukuran lagi yaitu data humidity.
3.3.3 Perancangan program pada antar muka komputer

Pemrograman antarmuka komputer menggunakan software Visual Basic


6.0. Tampilan antarmuka dibuat dengan konsep user friendly yang akan
memudahkan pengguna dalam pengoperasian sistem.

45

Gambar 3.9 Tampilan antar muka sistem monitoring kelembaban dan suhu

Pada perancangan diatas terdiri dari frame sampling, frame Aktual


Value, DataGrid, dan 3 buah CommandButton. Frame sampling berisi setting
waktu menit dan detik. Setting waktu ini digunakan untuk mengatur selang waktu
perubahan pengukuran suhu dan kelembaban. Sedangkan rate berfungsi untuk
mengetahui proses pengukuran. Apabila Rate ini berubah-ubah warna antara biru
dan kuning maka proses perubahan pengukuran sedang terjadi.
Frame Actual Value berisi nilai pengukuran temperatur dan kelembaban.
Nilai temperatur ditunjukan dengan C sedangkan kelembaban ditunjukan dengan
%. Tombol Run berfungsi untuk memulai proses pengukuran, apabila tombol ini
ditekan akan berubah menjadi STOP yang sekaligus berfungsi untuk
menghentikan proses pengukuran. Tombol Data baru berfungsi untuk menghapus
tabel hasil pengukuran sebelumnya sedangkan tombol cetak berfungsi untuk
mencetak hasil pengukurun yang terdapat di tabel untuk disimpan atau diprint.

46

Private Sub Form_Load()


Timer1.Enabled = False
MSComm1.PortOpen = True
Text1(0).Text = 99 - VScroll2.Value
Text1(1).Text = 59 - VScroll1.Value
Text2(0).Text = ""
Text2(1).Text = ""
VScroll1.Max = 58
VScroll1.Min = 0
VScroll2.Max = 99
VScroll2.Min = 0
VScroll1.Value = 58
VScroll2.Value = 99
Label1(5).Caption = Chr(176) & "C"
End Sub
Kode-kode program diatas akan melakukan aksi sebagai berikut :
Timer pertama kali diset false/mati kemudian port Mscom dibuka agar
bisa berkomunikasi. Text1(0) menunjukan sampling menit dimana dapat diset
manual dengan batas maksimal 99. Text1(1) menunjukan sampling detik dimana
dapat diset manual dengan batas maksimal 59. Text2(0) dan text2(1) menunjukan
nilai actual value, dan saat pertama kali dijalankan bernilai kosong.

Private Sub Command1_Click()

'Run/Stop

Timer1.Interval = (Val(Text1(0).Text) * 60 + Val(Text1(1).Text)) * 1000


If Timer1.Enabled = False Then
Timer1.Enabled = True
Command1.Caption = "Stop"
Command2.Enabled = False
Command3.Enabled = False
Else
Timer1.Enabled = False
47

Command1.Caption = "Run"
Command2.Enabled = True
Command3.Enabled = True
End If
End Sub
Listing program diatas digunakan untuk menjalankan program. Interval timer
diambil dari value text1(0) dikalikan 60 kemudian ditambah dengan value text1(1)
kali 1000. Button run akan berubah menjadi STOP sedangkan button DATA
BARU dan button Cetak tidak aktif. Apabila timernya bernilai false maka button
STOP akan menjadi RUN dan button DATA BARU dan button CETAK aktif.
Private Sub MSComm1_OnComm()
xx = MSComm1.Input
On Error GoTo errhand
Text2(0).Text = Asc(Left(xx, 1))
Text2(1).Text = Asc(Right(xx, 1))
With Adodc1.Recordset
.AddNew
!tanggal = Date
!jam = Time
!suhu = Val(Text2(0).Text)
!humid = Val(Text2(1).Text)
.Update
End With
Adodc1.Recordset.Requery
Adodc1.Recordset.MoveLast
errhand:
Exit Sub
End Sub

48

BAB IV
IMPLEMENTASI DAN ANALISIS

4.1 Penjelasan Dan Pengoperasian Alat

Gambar 4.1 Tampilan Aplikasi monitoring suhu dan kelembaban

Gambar 4.1 merupakan

tampilan

aplikasi monitoring suhu dan

kelembaban pada komputer yang dibuat pada program visual basic, dan
aplikasi ini dilengkapi dengan database data report. Pada pengolahan
mikrokontroler menghasilkan dua macam data yaitu kelembaban dan suhu yang
ditampilkan pada aplikasi monitoring. Kedua data ini akan disimpan pada
database, yang kemudian diproses untuk dihitung nilainya dan ditampilkan
kembali pada tabel monitoring. Aplikasi ini dapat digunakan untuk berkalikali
percobaan, dan kemudian hasil dari percobaan percobaan tersebut dapat dicetak.
Pengoperasian alat dilakukan dengan menekan tombol Run terlebih
dahulu, sehingga pengukuran suhu dan kelembaban akan berjalan secara otomatis.
49

Untuk mengetahui perubahan nilai pengukuran suhu dan kelembaban dapat diatur
selang waktu yang dibutuhkan pada bagian sampling. Pengukuran akan berhenti
apabila tombol STOP ditekan dan hasil pengukuran akan ditampilkan pada bagian
tabel yang isinya antara lain tanggal, jam, suhu dan kelembaban. Untuk mencetak
hasil pengukuran tekan tombol cetak, sedangkan tombol Data Baru digunakan
untuk menghapus atau membersihkan data hasil pengukuran lama yang berada
ditabel.

4.2 Pengujian Alat


Awal pengujian dilakukan dengan menghubungkan konektor DB9 ke port
serial Komputer COM1. Kabel yang digunakan untuk komunikasi serial ini
menggunakan kabel komputer dengan panjang kabel 1 meter. Sebelum dijalankan
pada Device Manager bagian Ports disetting untuk nilai Bits per second 9600,
nilai Data bits 8, dan nilai Stop bits 1. Selanjutnya untuk setting Comport Number
pada bagian advanced Setting pilih Com1 kemudian klik OK.

Gambar 4.2 setting Baudrate

50

Gambar 4.3 Setting ComPort

Setelah selesai Setting Com port Number selanjutnya program tampilan


antarmuka Visual Basic dijalankan. Apabila port yang dipilih tidak sesuai maka
akan muncul peringatan invalid Port!. Baudrate diset pada 9600 sesuai dengan
baudrate mikrokontroler.
Pengujian alat secara keseluruhan berjalan dengan baik, kemudian
selanjutnya pengujian terhadap sistem secara keseluruhan untuk melakukan
monitoring suhu dan kelembaban serta melakukan perekaman data. Pengujian
dilakukan dirumah bagian ruang tamu, sampling atau interval waktu diset pada 1
menit. Pilihan ini akan membuat data yang masuk akan disimpan di database dan
ditampilkan ditabel tiap interval 1 menit. Apabila tombol Run dijalankan maka
proses pengukuran akan berjalan dengan ditandai warna Rate akan berubah atau
berkedip-kedip biru kuning. Hasil pengukuran akan ditampilkan seperti gambar
dibawah ini:

51

Gambar 4.4 Tampilan Pengukuran

Data suhu dan kelembaban hasil bacaan sensor ditampilkan dengan angka
dengan satuan C dan %. Data yang ditampilkan pada Frame Actual Value akan
berubah setiap menit. Hal ini karena mikrokontroler diset untuk meminta data
bacaan dari sensor dan mengirimkanya ke port serial dengan jeda waktu 1 menit
pada setiap loop-nya. Nilai suhu dan kelembaban yang ditampilkan merupakan
nilai actual pada saat itu.
Data suhu dan kelembaban yang masuk ke port serial akan ditampilkan
pada properti Text1 dan Text2 kemudian disimpan dalam file data.mdb. data juga
akan ditampilkan pada Datagrid dalam bentuk tabel. Tabel yang ditampilkan pada
datagrid dapat disimpan dalam database bawaan visual basic. Sebelumnya
tombol STOP harus ditekan terlebih dahulu untuk dapat mengaktifkan tombol
tombol cetak. Setelah menekan tombol cetak maka akan muncul kotak save as
untuk member nama file dan menentukan lokasi penyimpanan file. File yang
disimpan akan memiliki ekstensi *.html atau *.txt.

52

Data yang disimpan pada database dapat dihapus dengan menggunakan


tombol Data Baru. Tombol ini akan menghapus data record pada tampilan
Datagrid.
Dalam pengujian yang dilakukan, alat ditempatkan didalam dan diluar
ruangan. Kesatuan alat ditempatkan pada ruang yang terbuka untuk mengukur
suhu dan kelembaban pada aliran udara bebas. Dengan pengujian ini data yang
terukur akan mewakili perbandingan nilai suhu dan kelembaban udara.

4.3 Hasil pengujian

Tabel 4.1 Data hasil pengujian sistem didalam ruangan


Tanggal

Jam

Suhu

Kelembaban

24/06/2010

15:02:09

31

70

24/06/2010

15:03:09

31

70

24/06/2010

15:04:09

32

85

24/06/2010

15:05:09

31

71

24/06/2010

15:06:10

31

70

24/06/2010

15:07:10

31

70

24/06/2010

15:08:10

31

71

24/06/2010

15:09:10

31

70

24/06/2010

15:10:31

31

71

24/06/2010

15:11:31

31

70

24/06/2010

15:12:31

31

71

53

BAB V
PENUTUP

5.1 Kesimpulan
Dari hasil pengujian dan pengukuran dapat disimpulkan sebagai berikut :
1. Sistem yang telah dibuat dapat melakukan pengukuran

suhu dan

kelembaban relatif secara periodik, data pengukuran dikirimkan ke


komputer melalui port serial dan ditampilkan dalam bentuk tabel dengan
tampilan antarmuka menggunakan Visual Basic dan perekaman data
menggunakan tabel data Report.
2. Program perekaman data dengan data report dapat menyimpan data yang
dikirimkan dari port serial dengan penomoran sesuai dengan urutan waktu
terjadinya interupsi penerimaan data port serial.
3. Komunikasi data serial antara mikrokontroler dengan komputer dibuat
menggunakan IC MAX232 sebagai antarmuka dengan panjang kabel
sampai dengan 1 meter tanpa terjadi error.
4. Keseluruhan sistem sudah berjalan dengan baik seperti konsep yang sudah
dibuat.

5.2 Saran
Berdasarkan penelitian yang telah dilakukan terhadap alat, maka untuk
pengembangan selanjutnya penulis menyarankan agar:
1. Melakukan proses kalibrasi terhadap sensor yang digunakan sehingga hasil
pengukuran sensor dapat dibuktikan keakuratannya.
2. Menggunakan

komunikasi

nirkabel

(wireless) untuk

komunikasi

antara alat dengan komputer sehingga penempatan / seting alat tidak


lagi terbatas pada seberapa panjang kabel yang digunakan.
3. Mengembangkan sistem agar dapat terkoneksi dengan jaringan baik secara
Local Area Network (LAN), intranet, maupun jaringan internet sehingga
hasil proses monitoring dapat diakses secara luas.

54

DAFTAR PUSTAKA

Agfianto, Eko P. 2006. Belajar Mikrokontrolller AT89C51/52/55 Teori Dan


Aplikasi Edisi 2.Yogyakarta: Penerbit Gava Media
Sensirion. SHT71/SHT75 Humidity & temperature sensor. April 2009.
<http://www.sensirion.com/en/download/humiditysensor/sht75.pdf>
Diakses pada tanggal 24 april 2010 jam 10:04 AM
Nugroho, budi, 2003, Pengantar mikroprosesor/ Mikrokontroler, Akademi
Teknologi Warga, Surakarta
Http://elektronika-elektronika.blogspot.com/2007/02/capasitor.html Diakses pada
tanggal 29 mei 2010 jam 08:50 PM
Kanginan, Marthen. 2000. FISIKA 2000 JILID 2A. Jakarta: Penerbit Erlangga
Http://www.deptan.go.id/
Http://chip.web44.net/simbol_diode.jpg Diakses pada tanggal 29 mei 2010 jam
08:50 PM
Http://opensource.telkomspeedy.com/jenis-jenis-transistor/transistor.jpg Diakses
pada tanggal 29 mei 2010 jam 08:50 PM
Http://4.bp.blogspot.com/IC_LM7805.jpg Diakses pada tanggal 29 mei 2010 jam
08:50 PM
Http://www.febat.com/pin-pin-max232/max232.jpg Diakses pada tanggal 29 mei
2010 jam 08:50 PM
Http://depokinstruments.files.wordpress.com/2007/09/at89s51.jpg Diakses pada
tanggal 25 juli 2010 jam 08:20 PM

55

Lampiran 1
Script assembly mokrokontroller
;Pengukur suhu dan kelembaban dengan SHT75X
;SHT11X (Temperature & Humidity sensor)
;humidity = sensor * 0.04 (12 bit) = sensor / 25
;temperatur = sensor * 0.01 - 40 (14 bit) = sensor / 100
$mod51
;port 1 : LCD 4bit interface
Rs
bit
p0.4
Rw
bit
p0.5
En
bit
p0.6
Lcd
equ
p0 ;d4-d7 bit p100-p0.3
Sckl
Dtl
Csuhu
Chumi
Crst

bit
bit
equ
equ
equ

p1.0
p1.3
00000011b
00000101b
00011110b

Dseg at 40h
hasil0
hasil1
temp
temp0
temp1
hum
hum0
hum1
dtime

:
:
:
:
:
:
:
:
:

1
1
1
1
1
1
1
1
1

ds
ds
ds
ds
ds
ds
ds
ds
ds

;awal program
;-----------------cseg at 0h
jmp start
;timer 0 interupt
;---------------mov th0,#high(-50000) (timer nol diset 50 mili detik)
mov tl0,#low(-50000) (timer nol diset 50 milidetik)
djnz dtime,xtim0
mov dtime,#20
call
ukur
call
hitung
call
kirim
xtim0: reti
56

;Serial interrupt
;--------------org
23h
jb
ti,xser
jnb
ri,$
mov a,sbuf
clr
ri
cjne a,#255,xser
call
ukur
call
hitung
call
kirim
clr
tr0
xser: reti
;seting timer,serial & rst sht11
;-----------------------start: mov tmod,#21h
;timer 0 mode 1 (16 bit), timer 1 mode 2
mov th1,#0fdh
;9600 bps
setb tr1
mov scon,#50h
;serial mode 1 (serial control
mov ip,#10h
;serial high
setb ea
;enable interupt
setb et0
;timer0
setb es
;serial
call
d11ms
;tunggu sht siap
call
rst11x
;reset sth11x
call
d11ms
;tunggu > 11ms
call
call
mov
call
call
mov
call
mov
setb
jmp

initlcd
line1
dptr,#tb1
ctkrom
line2
dptr,#tb2
ctkrom
dtime,#20
tr0
$

;initialisasi LCD
;baris 1
;temperatur
;baris 2
;kelembaban

;===========
;SUB PROGRAM
;===========
;Kirim serial
;-----------kirim: clr
ti
mov sbuf,temp
57

jnb
clr
mov
jnb
clr
mov
jnb
clr
ret

ti,$
ti
sbuf,hum
ti,$
ti
sbuf,#255
ti,$
ti

;Hitung Hum, Temp dan Coun ke display


;-----------------------------------hitung: mov operand,hum0
;hitung humidity
mov operand+1,hum1
mov pembagi,#25
;konstanta humidity (0.04)
mov pembagi+1,#0
call
pembagian
mov a,hasilbagi
;konversi ke dseimal
clr
c
subb a,#4
;konstanta pengurang 4
cjne a,#100,$+3
jc
betul
mov a,#99
betul: mov hum,a
mov b,#10
div
ab
push acc
mov a,#12
call
line2a
pop
acc
add
a,#30h (merubah ke kode sci,ditambah 30 h)
call
cetak
mov a,b
add
a,#30h
call
cetak
mov operand,temp0
;hitung temperatur
mov operand+1,temp1
mov pembagi,#100
;konstanta temp (0.01)
mov pembagi+1,#0
call
pembagian
mov a,hasilbagi
clr
c
subb a,#40
;konstanta pengurang temp (40)
cjne a,#100,$+3
jc
betul1
mov a,#99
58

betul1: mov
mov
div
push
mov
call
pop
add
call
mov
add
call
ret

temp,a
b,#10
ab
acc
a,#12
line1a
acc
a,#30h
cetak
a,b
a,#30h
cetak

;kolom ke 11

;mengukur suhu dan kelembaban


;============================
ukur: mov a,#csuhu
;ukur suhu
call
cmd
mov temp0,hasil0 ;simpan suhu
mov temp1,hasil1
mov a,#chumi
;ukur humidity
call
cmd
mov hum0,hasil0 ;simpan humidity
mov hum1,hasil1
ret
;reset sth11x
;------------rst11x: mov a,#crst
lrst11: call
cmd
ret

;reset sht 11x

;send command sth11x (a=command)


;------------------------------cmd: setb sckl
;start clk 1
nop
nop
nop
nop
clr
dtl
;data 0
nop
nop
nop
nop
clr
sckl
;clk 0
nop
59

nop
nop
nop
setb
nop
nop
nop
nop
setb
nop
nop
nop
nop
clr
nop
nop
nop
nop
mov
lcmd: rlc
mov
call
djnz
setb
jb
call
rlc
cjne
ret
ljtz: jb
nop
nop
nop
call
mov
call
call
mov
call
call
setb
ret
;clock pulsa
;----------clock: setb

sckl

;clk 1

dtl

;data 1

sckl

;clk 0

b,#8
a
dtl,c
clock
b,lcmd
dtl
dtl,$
clock
a
a,#crst,ljtz
dtl,ljtz ;$

;end start
;command = 8 bit pada acc
;cary <-- cmd bit (msb first)
;data line <-- cary
;clock
;ulang 8x
;idle dtl=1
;tunggu ack sht

;cmd=crst
;exit
;tunggu pengukuran selesai

baca
hasil1,a
ack
baca
hasil0,a
ack
clock
sckl

;ambil byte atas

sckl

;clock high

;ambil byte bawah


;skip akcnowledge

60

nop
nop
nop
nop
nop
clr
sckl
;clock Low
nop
nop
ret
;baca hasil pengukuran per 8 bit
;------------------------------baca: mov b,#8
lbaca: mov c,dtl
;data line --> cary
rlc
a
;simpan ke acc
call
clock
;sebanyak 8 bit
djnz b,lbaca
ret
;Acknowledge
;----------ack: clr
dtl
nop
nop
nop
nop
call
clock
nop
nop
nop
nop
setb dtl
ret
;delay > 11 ms
;----------d11ms: mov r7,#25
dl1: mov r6,#0
djnz r6,$
djnz r7,dl1
ret
;delay 330 ms
;-----------dl330: mov r3,#25
td1: call
d11ms
djnz
r3,td1
ret

;25 * 500 = 12,5 ms

61

;initialisasi LCD 4 bit interface


initlcd:mov r6,#250
;wait 25ms
dl2: call
d100
djnz r6,dl2
mov lcd,#43h
CALL clk
mov r6,#41
;4,1 ms
dl3: call
d100
djnz r6,dl3
mov lcd,#43h
CALL clk
dl4: call
d100
;100 uS
mov lcd,#43h
CALL clk
call
d100
mov lcd,#42h
CALL clk
call
d100
mov lcd,#42h
CALL clk
mov lcd,#48h
;4bit, 2baris, 5x8
CALL clk
call
d100
mov lcd,#40h
;display on
CALL clk
mov lcd,#4Ch
;cursor off
CALL clk
call
d100
mov lcd,#40h
;display clear
CALL clk
mov lcd,#41h
CALL clk
mov r6,#16
dl16: call
d100
;wait 1.6 ms
djnz r6,dl16
ret
;Set cursor pada LCD baris 1
line1: mov lcd,#48h
call
clk
mov lcd,#40h
call
clk
call
d100
ret
line1a: mov lcd,#48h
call
clk
62

add
mov
call
call
ret

a,#40h
lcd,a
clk
d100

;kolom ke a

;Set cursor pada LCD baris 2


line2: mov lcd,#4ch
call
clk
mov lcd,#40h
call
clk
call
d100
ret
line2a: mov lcd,#4ch
call
clk
add
a,#40h
mov lcd,a
;kolom ke a
call
clk
call
d100
ret
;cetak data dari rom
ctkrom:
mov a,#0
movc a,@a+dptr
cjne a,#13,ljt1
ret
ljt1: call
cetak
inc
dptr
jmp ctkrom
;cetak data dari ram
ctkram:mov a,@r0
cjne a,#13,ljt2
ret
ljt2: call
cetak
inc
r0
jmp ctkram
;Cetak ke lcd
cetak: push
mov
swap
ljt:
anl
orl
mov
call

b
b,a
a
a,#0fh
a,#060h
lcd,a
clk

;ambil data dari rom


;jika 13, data habis
;cetak
;data berikutnya

;ambil data daari ram


;13, data habis
;cetak
;data berikutnya

;simpan a
;ambil high nible
;rs=1, rw=0,en=1 ,0 = a
;kirim ke lcd
;aktifkan enable
63

mov
swap
anl
orl
mov
call
call
pop
ret

a,b
a
a,#0fh
a,#060h
lcd,a
clk
d100
b

;clock enable
clk:
clr
en
nop
nop
setb en
RET

;siapkan low nible


;ambil low nible

;wait 100uS

;enable = 0

;enable = 1

;delay 100uS
d100: mov r7,#50
djnz r7,$
ret
tb1:
tb2:

db 'Temperatur: XX',0dfh,'C',13
db 'Kelembaban: xx %',13

;16 Bit Arithmatic routine


;=========================
$include(arith51.asm)

64

;*****************************************
;***** Multi Byte Arithmatic routine *****
;*****************************************
$mod51
DSEG
SizeX equ 2
;32 bit! 'menunjukan perkalian aritmatik 2byte/16 bit
;***** Byte Ordering : LS Byte .... MS Byte
Operand:
Pembagi:
HasilBagi:
SisaBagi:

DS
DS
DS
DS

SizeX 'bilangan yang akan dioperasikan


SizeX
SizeX
SizeX

Pengali
HasilKali

EQU Pembagi
EQU HasilBagi

CSEG
;
; ***** Multi Byte divider
;
Pembagian:
MOV R0,#HasilBagi
ACALL
HapusNilai
MOV R0,#SisaBagi
ACALL
HapusNilai
;
MOV R3,#SizeX*8
LoopPembagian:
CLR C
MOV R0,#Operand
ACALL
GeserKiri1X
MOV R0,#SisaBagi
ACALL
GeserKiri1X
;
MOV R0,#SisaBagi
MOV R1,#Pembagi
ACALL
Perbandingan
;SisaBagi-Pembagi?
JC
JanganDikurangi
;SisaBagi<Pembagi, skip!
;
MOV R0,#SisaBagi
MOV R1,#Pembagi
ACALL
Pengurangan
;SisaBagi:=SisaBagi-Pembagi
JanganDikurangi:
CPL C
MOV R0,#HasilBagi
;Simpan hasil
65

ACALL
GeserKiri1X
DJNZ R3,LoopPembagian
RET
GeserKiri1X:
MOV R2,#SizeX
LeftShift:
MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R2,LeftShift
RET
;
; ***** Multi Byte Multiplier
;
Perkalian:
MOV R0,#HasilKali
ACALL
HapusNilai
;
MOV R3,#SizeX*8
LoopPerkalian:
CLR C
MOV R0,#Pengali+SizeX-1
MOV R2,#SizeX
GeserKanan:
MOV A,@R0
RRC A
MOV @R0,A
DEC R0
DJNZ R2,GeserKanan
JNC

JanganDitambah

MOV R0,#HasilKali
MOV R1,#Operand
ACALL
Penambahan
JanganDitambah:
CLR C
MOV R0,#Operand
ACALL
GeserKiri1X
DJNZ R3,LoopPerkalian
RET
;
; ***** Multi Byte Adder
;
66

Penambahan:
CLR C
MOV R2,#SizeX
LoopPenambahan:
MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,LoopPenambahan
RET
;
; ***** Multi Byte Comparator
;
Perbandingan:
CLR C
MOV R2,#SizeX
LoopPerbandingan:
MOV A,@R0
SUBB A,@R1
INC R1
INC R0
DJNZ R2,LoopPerbandingan
RET
;
; ***** Multi Byte Substractor
;
Pengurangan:
CLR C
MOV R2,#SizeX
LoopPengurangan:
MOV A,@R0
SUBB A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,LoopPengurangan
RET
;
; ***** Multi Byte Eraser
;
HapusNilai:
MOV R2,#SizeX
LoopHapus:
MOV @R0,#0
INC R0
67

DJNZ R2,LoopHapus
RET
;
; ***** Multi Byte Copier
;
Copy:
MOV R2,#SizeX
LoopCopy:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,LoopCopy
RET
end

68

Lampiran 2
Script Visual Basic
Dim yy As String
Private Sub Adodc1_MoveComplete(ByVal adReason As
ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As
ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
Adodc1.Caption = "Data Suhu dan Kelembaban " &
Adodc1.Recordset.AbsolutePosition & "/" & Adodc1.Recordset.RecordCount
End Sub
Private Sub Command1_Click() 'Run/Stop
Timer1.Interval = (Val(Text1(0).Text) * 60 + Val(Text1(1).Text)) * 1000
If Timer1.Enabled = False Then
Timer1.Enabled = True
Command1.Caption = "Stop"
Command2.Enabled = False
Command3.Enabled = False
Else
Timer1.Enabled = False
Command1.Caption = "Run"
Command2.Enabled = True
Command3.Enabled = True
End If
End Sub
Private Sub Command2_Click() 'data baru
Adodc1.Recordset.MoveFirst
Do While Not Adodc1.Recordset.EOF
Adodc1.Recordset.Delete
'Adodc1.Refresh
Adodc1.Recordset.MoveNext
Loop
Adodc1.Recordset.Requery
End Sub
Private Sub Command3_Click() 'cetak
Form1.Enabled = False
DataEnvironment1.rsCommand1.Open
DataEnvironment1.rsCommand1.Requery
DataReport1.Show
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
MSComm1.PortOpen = True
69

Text1(0).Text = 99 - VScroll2.Value
Text1(1).Text = 59 - VScroll1.Value
Text2(0).Text = ""
Text2(1).Text = ""
VScroll1.Max = 58
VScroll1.Min = 0
VScroll2.Max = 99
VScroll2.Min = 0
VScroll1.Value = 58
VScroll2.Value = 99
Label1(5).Caption = Chr(176) & "C"
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As
Integer)
MSComm1.PortOpen = False
End Sub
Private Sub MSComm1_OnComm()
On Error GoTo errhand
xx = MSComm1.Input
If Asc(xx) = 255 Then
Text2(0).Text = Asc(Left(yy, 1))
Text2(1).Text = Asc(Right(yy, 1))
yy = ""
With Adodc1.Recordset
.AddNew
!tanggal = Date
!jam = Time
!suhu = Val(Text2(0).Text)
!humid = Val(Text2(1).Text)
.Update
End With
Adodc1.Recordset.Requery
Adodc1.Recordset.MoveLast
Else
yy = yy & xx
End If
errhand:
Exit Sub
End Sub
Private Sub Timer1_Timer()
MSComm1.Output = Chr(255)
Shape1.FillColor = vbYellow
xx = Timer
70

Do While xx + 0.1 > Timer


DoEvents
Loop
Shape1.FillColor = vbBlue
End Sub
Private Sub VScroll1_Change()
Text1(1).Text = 59 - VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
'Print VScroll1.Value
End Sub
Private Sub VScroll2_Change()
Text1(0).Text = 99 - VScroll2.Value
If VScroll2.Value < 99 Then
VScroll1.Max = 59
Else
VScroll1.Max = 58
End If
End Sub

71

Anda mungkin juga menyukai