Ari wibowo 4398 2010

(1)

1

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


(2)

2

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


(3)

3

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

Dewan penguji

1. Penguji 1 Darsono, S.Si, M.Si ( ) NIP. 19700727 199702 1 001

2. Penguji 2 Fendi Aji Purnomo, S.Si ( ) NIDN. 0626098402

3. Penguji 3 Hartatik, M.Stat ( ) NIDN. 0703057802

Disahkan oleh :

a.n Dekan MIPA UNS Pembantu Dekan I

Ir. Handono Ramelan, M.Sc, Ph.D NIP. 19610223 198601 1 001

Ketua program studi DIII ILMU KOMPUTER

Drs. Y. S. Palgunadi, M.Sc NIP. 19560407 198303 1 004


(4)

4

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


(5)

5

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


(6)

6

PERSEMBAHAN

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


(7)

7

KATA PENGANTAR

Assalamu’alaikum 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 mendo’a-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.

Wassalamu’alaikum Wr.Wb.

Surakarta , Juni 2010


(8)

8

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.1Latar Belakang Masalah ... 1

1.2Perumusan Masalah ... 2

1.3Batasan Masalah ... 2

1.4Tujuan Penulisan ... 3

1.5Manfaat ... 3

1.6Metodologi Penelitian ... 3

1.7Sistematika 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


(9)

9

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


(10)

10

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


(11)

11

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


(12)

12

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 ± 28ºC dan temperatur minimal 15ºC. 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


(13)

13

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


(14)

14

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


(15)

15

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.


(16)

16

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 tumbuh-tumbuhan. 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

Suhu udara (oC) Kandungan uap air maksimum di udara (gr/m3 )

-8 2,74

-4 3,66

0 4,84

4 6, 33

8 8,21

12 10, 57

16 13, 50

20 17,12

24 21,54

28 26,93

32 33,45


(17)

17

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.


(18)

18

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 )


(19)

19

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 masing–masing 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


(20)

20

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.


(21)

21

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


(22)

22

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 :


(23)

23

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.4ºC 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.


(24)

24

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


(25)

25  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.


(26)

26

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 = (TºC-25)*(t1+t2*SORH)+ RHlinear (2.2)

Tabel 2.5. Koefisien Kompensasi Dari Temperatur

( Sumber : Datasheet SHT75 )


(27)

27

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 (Capasitor) adalah suatu alat yang dapat menyimpan energi di dalam medan listrik, 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 kemampuan alat untuk menyimpan suatu muatan listrik yang tinggi dibanding komponen 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.


(28)

28

Gambar 2.7. Gambar dan simbol kapasitor

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

2.6 Transistor

Merupakan komponen elektronika yang terdiri dari tiga 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


(29)

29

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 LCD 2x16 berfungsi sebagai penampil nilai kuat induksi 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:


(30)

30

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.


(31)

31

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 15-16 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


(32)

32

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


(33)

33  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


(34)

34

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


(35)

35

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 (Beginner’s 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).


(36)

36

BAB III

DESAIN DAN PERANCANGAN

3.1. Diagram Blok

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.

Masukan

Sensor SHT75

Mikrokontroller AT89S51

Keluaran

Display LCD komputer


(37)

37

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.


(38)

38

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.


(39)

39

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


(40)

40

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).


(41)

41

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.


(42)

42

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.


(43)

43

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 ;d4-d7 bit p100-p0.3

sckl bit p1.0 dtl bit p1.3

csuhu equ 00000011b chumi equ 00000101b crst equ 00011110b

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 (origin, alamat interupsi serial)

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

jnb ri,$ (jum if not bit) jika ri=0 mov a,sbuf ( serial bufer)

cjne a,#255,xser (compire jump not equal) call ukur


(44)

44 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


(45)

45 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.


(46)

46

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.


(47)

47 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


(48)

48 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


(49)

49

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 berkali–kali 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.


(50)

50

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.


(51)

51

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:


(52)

52

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.


(53)

53

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


(54)

54

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


(55)

55

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


(56)

56

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 bit p1.0

Dtl bit p1.3 Csuhu equ 00000011b Chumi equ 00000101b Crst equ 00011110b Dseg at 40h

hasil0 : ds 1 hasil1 : ds 1 temp : ds 1 temp0 : ds 1 temp1 : ds 1 hum : ds 1 hum0 : ds 1 hum1 : ds 1 dtime : ds 1 ;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


(57)

57

;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 initlcd ;initialisasi LCD call line1 ;baris 1

mov dptr,#tb1 ;temperatur call ctkrom

call line2 ;baris 2 mov dptr,#tb2 ;kelembaban call ctkrom

mov dtime,#20 setb tr0 jmp $ ;=========== ;SUB PROGRAM ;=========== ;Kirim serial ;--- kirim: clr ti


(58)

58

jnb ti,$ clr ti

mov sbuf,hum jnb ti,$ clr ti

mov sbuf,#255 jnb ti,$ clr ti ret

;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


(59)

59

betul1: mov temp,a mov b,#10 div ab push acc

mov a,#12 ;kolom ke 11 call line1a

pop acc add a,#30h call cetak mov a,b add a,#30h call cetak ret

;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 ;reset sht 11x lrst11: call cmd

ret

;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


(60)

60

nop nop nop

setb sckl ;clk 1 nop

nop nop nop

setb dtl ;data 1 nop

nop nop nop

clr sckl ;clk 0 nop

nop nop

nop ;end start

mov b,#8 ;command = 8 bit pada acc lcmd: rlc a ;cary <-- cmd bit (msb first)

mov dtl,c ;data line <-- cary call clock ;clock

djnz b,lcmd ;ulang 8x setb dtl ;idle dtl=1 jb dtl,$ ;tunggu ack sht call clock

rlc a

cjne a,#crst,ljtz ;cmd=crst ret ;exit

ljtz: jb dtl,ljtz ;$ ;tunggu pengukuran selesai nop

nop nop

call baca ;ambil byte atas mov hasil1,a

call ack

call baca ;ambil byte bawah mov hasil0,a

call ack ;skip akcnowledge call clock

setb sckl ret

;clock pulsa ;---


(61)

61 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 ;25 * 500 = 12,5 ms dl1: mov r6,#0

djnz r6,$ djnz r7,dl1 ret

;delay 330 ms ;---

dl330: mov r3,#25 td1: call d11ms djnz r3,td1 ret


(62)

62

;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


(63)

63

add a,#40h

mov lcd,a ;kolom ke a call clk

call d100 ret

;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 ;ambil data dari rom cjne a,#13,ljt1 ;jika 13, data habis ret

ljt1: call cetak ;cetak

inc dptr ;data berikutnya jmp ctkrom

;cetak data dari ram

ctkram:mov a,@r0 ;ambil data daari ram cjne a,#13,ljt2 ;13, data habis ret

ljt2: call cetak ;cetak

inc r0 ;data berikutnya jmp ctkram

;Cetak ke lcd cetak: push b

mov b,a ;simpan a swap a

ljt: anl a,#0fh ;ambil high nible

orl a,#060h ;rs=1, rw=0,en=1 ,0 = a mov lcd,a ;kirim ke lcd


(64)

64

mov a,b

; swap a ;siapkan low nible anl a,#0fh ;ambil low nible orl a,#060h

mov lcd,a call clk

call d100 ;wait 100uS pop b

ret ;clock enable

clk: clr en ;enable = 0 nop

nop

setb en ;enable = 1 RET

;delay 100uS

d100: mov r7,#50 djnz r7,$ ret

tb1: db 'Temperatur: XX',0dfh,'C',13 tb2: db 'Kelembaban: xx %',13 ;16 Bit Arithmatic routine

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


(65)

65

;***************************************** ;***** Multi Byte Arithmatic routine *****

;***************************************** $mod51

DSEG

SizeX equ 2 ;32 bit! 'menunjukan perkalian aritmatik 2byte/16 bit ;***** Byte Ordering : LS Byte .... MS Byte

Operand: DS SizeX 'bilangan yang akan dioperasikan Pembagi: DS SizeX

HasilBagi: DS SizeX SisaBagi: DS SizeX Pengali EQU Pembagi HasilKali 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


(66)

66

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 ;


(67)

67

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


(68)

68

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


(69)

69

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


(70)

70

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


(71)

71

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


(1)

66 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 ;


(2)

67 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


(3)

68 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


(4)

69 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


(5)

70 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


(6)

71 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