Interfacing 'Alat Pengatur Suhu Berbasis Mikrokontroller AT89C52' (bag.3) PDF Print E-mail
Written by Sony Ferbangkara   
Sunday, 21 October 2007
Interfacing 'Alat Pengatur Suhu Berbasis Mikrokontroller AT89C52'
dengan 'IBM PC' (bag.3)

Oleh
Sony Ferbangkara


Berikut Program Pengatur Suhu versi 2.0 beserta listing programnya.


3. Program Pengatur Suhu v.2.0

Pada gb.3 dapat dilihat interface program ketika baru diaktifkan. Pengaktifan dan pengesetan (setting) suhu dapat dilihat pada gb.4 dimana layar pesan dapat berfungsi sebagaimana mestinya. Penggunaan layar pesan lebih efektif untuk mengetahui suhu sebelumnya. Penggunannya pun dapat mengetahui kesalahan user (human error) dalam mengoperasikan program ini. Namun program ini masih cukup sederhana karena hanya mendeteksi kesalahan pada program saja sehingga masih perlu dikembangkan kembali. Diharapkan ke depan program maupun interface ini dapat sekaligus mengetahui kesalahan pada alat pengatur suhu itu sendiri.


Grafik User Interface :
Berikut tampilan Program Pengatur Suhu yang telah diperbaiki:

Sample Image

Gb.3 GUI Program Pengatur Suhu 3 Titik  (tidak aktif)

  Sample Image

Gb.4 GUI Program Pengatur Suhu 3 Titik (aktif)

Berikut disajikan listing program versi 2.0 yang diharapkan dapat dikembangkan kembali menjadi interface program yang lebih sempurna. Beberapa bagian memang sengaja dihilangkan karena hanya bersifat optional yang tidak terlalu mempengaruhi kinerjanya. Misalnya saja penggunaan file header (header file), sebenarnya yang diperlukan hanya 'conio.h' saja. File header yang lain merupakan hasil dari compiling program yang berisi bagian-bagian dari header yang gunakan, dan akan berbeda antara tiap program yang dibuat, sehingga tidak perlu terlalu diperhatikan.

Listing Program :
Listing Program Pengatur Suhu 3 Titik v.2.0 dengan Menggunakan Bahasa Pemograman C ++

// Pengatur Suhu 3 TitikDlg.cpp :
//

#include "stdafx.h"
#include "Pengatur Suhu 3 Titik.h"
#include "Pengatur Suhu 3 TitikDlg.h"
#include <conio.h> // : outp(port,value),getch()

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

////// ///////////// //////////// ////////// ///////// //////// ////////// ///////// ////////

...........bagian ini sengaja dihilangkan karena bersifat optional.........

////// ///////// ///////// /////////// ////////// //////// ////// ////////// /////// ////////

---------------------------- Berikut Program Utama -----------------------------

//// /////// ////////// /////////// //////// /////////// ///////// //////// /////// ///// /////


void CPengaturSuhu3TitikDlg::OnStop()
{
for (int a=1;a<=1000000;a++)
{
_outp(888,33);

}
for (int b=1;b<=3000;b++)
{
_outp(888,0);
}
_outp(888,32);

m_text1 = "... SISTEM DI NON-AKTIF-KAN ... ";
m_text2 = "klik 'jalankan sistem' untuk setting dan mengaktifkan sistem.";
UpdateData(FALSE);
}

void CPengaturSuhu3TitikDlg::OnSet()
{
CString sA,sB,sC,Perintah,warna,warnb,warnc;
int iA,iB,iC;

int a,b,c,a1,a2,a3,a4,a5,a6,a7,a8,b1,b2,b3,b4,b5,b6,b7,b8;
int DeltaupA,DeltaupB,DeltaupC,DeltadownA,DeltadownB,DeltadownC;
int aa,bb,ii,jj,qq,rr;

m_a.GetWindowText(sA);
iA=atoi(sA);
warna=(CString)sA;
m_b.GetWindowText(sB);
iB=atoi(sB);
warnb=(CString)sB;
m_c.GetWindowText(sC);
iC=atoi(sC);
warnc=(CString)sC;

DeltaupA = (37-iA);
DeltaupB = (37-iB);
DeltaupC = (37-iC);
DeltadownA = (iA-37);
DeltadownB = (iB-37);
DeltadownC = (iC-37);

if(iA==NULL || iB==NULL || iC==NULL) goto Warning;
if(iA>=37 && iB>=37 && iC>=37) goto Satu;
if(iA>=37 && iB>=37 && iC<37) goto Dua;
if(iA>=37 && iB<37 && iC>=37) goto Tiga;
if(iA<37 && iB>=37 && iC>=37) goto Empat;
if(iA>=37 && iB<37 && iC<37) goto Lima;
if(iA<37 && iB>=37 && iC<37) goto Enam;
if(iA<37 && iB<37 && iC>=37) goto Tujuh;
if(iA<37 && iB<37 && iC<37) goto Delapan;

Warning:

m_text1 = "... SISTEM TIDAK MERESPON ... ";
m_text2 = "Error! Masukkan suhu setiap sensor. Pengosongan nilai suhu atau pemberian KARAKTER pada sensor tidak akan direspon oleh sistem dan dianggap tidak memberikan perintah. Pengosongan nilai bukan berarti bernilai '0'";
UpdateData(FALSE);
goto Halt;

Satu:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);
}

for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a1=1;a1<=1000000;a1++) //stop
{
_outp(888,65);

}
for ( b1=1;b1<=3000;b1++)
{
_outp(888,0);
}

for (a=1;a<=DeltadownA;a++) //upa
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}


for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (b=1;b<=DeltadownB;b++) //upb
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (c=1;c<=DeltadownC;c++) //upc
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}
m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Dua:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);

}
for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a2=1;a2<=1000000;a2++) //stop
{
_outp(888,1);

}
for ( b2=1;b2<=3000;b2++)
{
_outp(888,0);
}

for (a=1;a<=DeltadownA;a++) //upa
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (b=1;b<=DeltadownB;b++) //upb
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupC;a++) //downc
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Tiga:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);

}
for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a3=1;a3<=1000000;a3++) //stop
{
_outp(888,1);
}
for ( b3=1;b3<=3000;b3++)
{
_outp(888,0);
}

for (a=1;a<=DeltadownA;a++) //upa
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupB;a++) //downb
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (c=1;c<=DeltadownC;c++) //upc
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Empat:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);
}
for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a4=1;a4<=1000000;a4++) //stop
{
_outp(888,1);

}
for ( b4=1;b4<=3000;b4++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupA;a++) //downa
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (b=1;b<=DeltadownB;b++) //upb
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (c=1;c<=DeltadownC;c++) //upc
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Lima:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);

}
for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a5=1;a5<=1000000;a5++) //stop
{
_outp(888,1);

}
for ( b5=1;b5<=3000;b5++)
{
_outp(888,0);
}

for (a=1;a<=DeltadownA;a++) //upa
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupB;a++) //downb
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupC;a++) //downc
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Enam:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);

}
for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a6=1;a6<=1000000;a6++) //stop
{
_outp(888,1);

}
for ( b6=1;b6<=3000;b6++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupA;a++) //downa
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (b=1;b<=DeltadownB;b++) //upb
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);
}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupC;a++) //downc
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Tujuh:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);

}
for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a7=1;a7<=1000000;a7++) //stop
{
_outp(888,1);

}
for ( b7=1;b7<=3000;b7++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupA;a++) //downa
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupB;a++) //downb
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on
}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (c=1;c<=DeltadownC;c++) //upc
{
for (int a=1;a<=100000;a++)
{
_outp(888,68); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}
m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Delapan:

for ( ii=0;ii<=100000;ii++) //reset
{
_outp(888,66);

}
for ( jj=0;jj<=100000;jj++)
{
_outp(888,0);
}

for ( a8=1;a8<=1000000;a8++) //stop
{
_outp(888,1);

}
for ( b8=1;b8<=3000;b8++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupA;a++) //downa
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupB;a++) //downb
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

for ( qq=0;qq<=100000;qq++) //select
{
_outp(888,80);

}
for ( rr=0;rr<=100000;rr++)
{
_outp(888,0);
}

for (a=1;a<=DeltaupC;a++) //downc
{
for (int a=1;a<=100000;a++)
{
_outp(888,72); //on

}
for (int b=1;b<=100000;b++)
{
_outp(888,0); //off
}
}

m_text1 = "... SISTEM AKTIF ... ";
m_text2 = "Suhu telah di set pada sensor #1= "+warna+" ^C Suhu telah di set pada sensor #2= "+warnb+" ^C Suhu telah di set pada sensor #3= "+warnc+" ^C ";
UpdateData(FALSE);
goto Stop2;

Stop2:

for (aa=1;aa<=100000;aa++)
{
_outp(888,1);

}
for (bb=1;bb<=3000;bb++)
{
_outp(888,0);
}

_outp(888,128);

Halt:

{}
}

void CPengaturSuhu3TitikDlg::OnRun()
{
for (int aa=1;aa<=100000;aa++)
{
_outp(888,129);

}
for (int bb=1;bb<=3000;bb++)
{
_outp(888,0);
}
_outp(888,128);


m_text1 = "SISTEM TELAH DI-AKTIF-KAN ... ";
UpdateData(FALSE);
}


//<end of program>

[BERSAMBUNG KE BAG.4]
Last Updated ( Tuesday, 09 June 2009 )
 
< Prev   Next >