Rancang Bangun Sistem Pendeteksi Banjir Pada Daerah Aliran Sungai dengan Menggunakan SCADA (Supervisory Control And Acquisition) Berbasis Mikrokontroler AT89S51

  LAMPIRAN

  A-1 Listing Program 1.

Menu Utama

  Private Sub mn_adata_Click() frm_display_data.Show Me.Hide End Sub Private Sub mn_koneksiport_Click() frm_koneksi.Show Me.Hide End Sub Private Sub mn_tentang_Click() frm_tentang.Show Me.Hide End Sub Private Sub mn_keluar_Click() End End Sub 2.

Aquisisi

  Sub Aktifdg_data() With dg_data .Cols = 4 .RowHeightMin = 300

  A-2 .Col = 0 .Row = 0 .Text = "Tanggal" .CellFontBold = True .ColWidth(0) = 1200 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 1 .Row = 0 .Text = "Waktu" .CellFontBold = True .ColWidth(1) = 1200 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "Ketinggian" .CellFontBold = True .ColWidth(2) = 2000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 3 .Row = 0 .Text = "Status" .CellFontBold = True .ColWidth(3) = 1200 A-3 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub tampil_data() Dim Baris As Integer dg_data.Clear Call Aktifdg_data dg_data.Rows = 2 Baris = 0 Set Rs_data = New ADODB.Recordset Rs_data.Open "SELECT * FROM tbl_status ORDER BY id DESC", KonekDb, adOpenDynamic, adLockOptimistic If Rs_data.PageCount > 0 Then With Rs_data .MoveFirst Do While Not .EOF On Error Resume Next Baris = Baris + 1 dg_data.Rows = Baris + 1 dg_data.ColAlignment(0) = 4 dg_data.ColAlignment(1) = 4 dg_data.ColAlignment(2) = 4 dg_data.ColAlignment(3) = 4 dg_data.TextMatrix(Baris, 0) = !tanggal

  A-4 dg_data.TextMatrix(Baris, 1) = !waktu dg_data.TextMatrix(Baris, 2) = !ketinggian dg_data.TextMatrix(Baris, 3) = !Status .MoveNext Loop End With End If End Sub Private Sub Form_Load() Label4.Caption = "0" If Koneksi = "" Then MsgBox "Port Belum Terhubung" Label9.Caption = "-" Label9.Alignment = vbCenter Label4.Caption = "-" Label4.Alignment = vbCenter End If Call BukaDatabase Call tampil_data MSComm2.CommPort = Port MSComm2.Settings = Bound_Rate + "N,8,1" MSComm2.PortOpen = True End Sub A-5 Private Sub Form_Unload(Cancel As Integer) MSComm2.PortOpen = False frm_utama.Show Me.Hide End Sub Private Sub Timer1_Timer() Label2.Caption = Format(Date, "dd-mm-yyyy") Label3.Caption = Format(Time, "hh:mm:ss") End Sub Private Sub Timer2_Timer() Dim tinggi As String Dim strwaktu As String Dim strtanggal As String strtanggal = Label2.Caption strwaktu = Label3.Caption SQLsimpan = "" SQLsimpan = "INSERT INTO tbl_status (tanggal, waktu, ketinggian, status)" _ & " VALUES('" & strtanggal & "','" & strwaktu & "','" _ & Label4.Caption & "', '" & Label9.Caption & "')" KonekDb.Execute SQLsimpan, , adCmdText Call tampil_data End Sub Private Sub Timer3_Timer()

A-6 If Koneksi = "Terhubung" Then If MSComm2.CommEvent = comEvReceive Then tinggi = "" tinggi = MSComm2.Input tinggi = 200 - Int(tinggi) If Int(tinggi) <= 0 Then Label4.Caption = "-" Label4.Alignment = vbCenter Else Label4.Caption = tinggi End If If Int(tinggi) > 195 And Int(tinggi) <= 200 Then Label9.Caption = "Banjir" ElseIf Int(tinggi) > 188 And Int(tinggi) <= 195 Then Label9.Caption = "Awas" ElseIf Int(tinggi) > 181 And Int(tinggi) <= 188 Then Label9.Caption = "Aman" ElseIf Int(tinggi) > 177 And Int(tinggi) <= 181 Then Label9.Caption = "Normal" Else Label9.Caption = "-" Label9.Alignment = vbCenter End If End If End If End Sub

  A-7

  Private Sub cmdConnect_Click() On Error GoTo errcode Select Case cbo_port.ListIndex Case -1 Port = 1 Case 0 Port = 1 Case 1 Port = 2 Case 2 Port = 3 Case 3 Port = 4 Case 4 Port = 5 Case 5 Port = 6 Case 6 Port = 7 Case 7 Port = 8 Case 8 Port = 9 End Select

  A-8 If MSComm1.PortOpen = False Then MSComm1.CommPort = Port MSComm1.RThreshold = 1 MSComm1.Settings = cbo_boundrate.List(cbo_boundrate.ListIndex) & ",N,8,1" MSComm1.PortOpen = True Bound_Rate = cbo_boundrate.Text Koneksi = "Terhubung" Text1.Text = "Status : " & vbNewLine & vbNewLine & "Terhubung" cmdConnect.Enabled = False cmdDisconnect.Enabled = True End If Exit Sub errcode: Text1.Text = "Status : " & vbNewLine & vbNewLine & "Port Salah" cbo_port.SetFocus End Sub Private Sub cmdDisconnect_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False cmdConnect.Enabled = True cmdDisconnect.Enabled = False Koneksi = "" Text1.Text = "Status : " & vbNewLine & vbNewLine & "Port Terputus" End If End Sub

  A-9 Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() cbo_port.AddItem "COMM1" cbo_port.AddItem "COMM2" cbo_port.AddItem "COMM3" cbo_port.AddItem "COMM4" cbo_port.AddItem "COMM5" cbo_port.AddItem "COMM6" cbo_port.AddItem "COMM7" cbo_port.AddItem "COMM8" cbo_port.AddItem "COMM9" cbo_port.ListIndex = 0 With cbo_boundrate .AddItem "2400" .AddItem "4800" .AddItem "9600" .AddItem "19200" .AddItem "38400" .AddItem "58600" End With If Koneksi = "Terhubung" Then Select Case Port Case 1 A-10 cbo_port.ListIndex = 0 Case 2 cbo_port.ListIndex = 1 Case 3 cbo_port.ListIndex = 2 Case 4 cbo_port.ListIndex = 3 Case 5 cbo_port.ListIndex = 4 Case 6 cbo_port.ListIndex = 5 Case 7 cbo_port.ListIndex = 6 Case 8 cbo_port.ListIndex = 7 Case 9 cbo_port.ListIndex = 8 End Select cbo_boundrate.Text = Bound_Rate MSComm1.CommPort = Port MSComm1.Settings = Bound_Rate + "N,8,1" MSComm1.PortOpen = True Timer1.Enabled = False cmdConnect.Enabled = False cmdDisconnect.Enabled = True

A-11 Else Timer1.Enabled = True cmdConnect.Enabled = True cmdDisconnect.Enabled = False End If End Sub 4. tentang

  Unload Me End Sub Private Sub Form_Unload(Cancel As Integer) frm_utama.Show Me.Hide End Sub 5. keluar

  Private Sub mn_keluar_Click() End End Sub 6.

Module

  Option Explicit Public KonekDb As New ADODB.Connection Public Rs_data As New ADODB.Recordset Public Koneksi, Bound_Rate As String Public currentcolor As ColorConstants

  A-12 Public Port As Integer Public SQLubah, SQLsimpan, SQLhapus As String Sub BukaDatabase() Dim strSS, strPort, strDB, strUID, strPWD As String strSS = "localhost" strPort = "3306" strDB = "db_data" strUID = "root" strPWD = "" Set KonekDb = New ADODB.Connection KonekDb.CursorLocation = adUseClient KonekDb.ConnectionString = "" _ & "DRIVER={MYSQL ODBC 3.51 Driver};" _ & "SERVER=" & strSS & ";" _ & "DATABASE=" & strDB & ";" _ & "UID=" & strUID & ";" _ & "PWD=" & strPWD & ";" _ & "OPTION=" On Error Resume Next If KonekDb.State = adStateOpen Then KonekDb.Close

  A-13 Set KonekDb = New ADODB.Connection KonekDb.Open Else KonekDb.Open End If If Err.Number <> 0 Then MsgBox "GAGAL KONEKSI SERVER", vbOKOnly, "Kesalahan" End If End Sub

  B-1

  

Program Assembly

1.

Listing Program Mikrokontroller

  Ping: setb p1.2 acall tunda clr p1.2 acall tunda setb p1.2 acall tunda clr p1.2 acall tunda setb p1.2 nop nop nop nop clr p1.2 nop nop nop nop jb p1.3,$ mov 70h,#0 mov 71h,#0 mov 72h,#0 hitung: acall pulsa1 jnb p1.3,terus_Hitung acall tunda acall kirimdata acall tunda acall tunda sjmp ping terus_Hitung: inc 70h mov r2,70h cjne r2,#0ah,hitung mov 70h,#0h

  B-2 inc 71h mov r2,71h cjne r2,#0ah,hitung mov 71h,#0h inc 72h mov r2,72h cjne r2,#0ah,hitung mov 72h,#0h ljmp hitung Kirimdata: inc 70h inc 71h inc 72h ulang: acall frek38khz acall frek38khz mov r0,#11 acall data acall frek38khz acall frek38khz mov r0,70h acall data acall frek38khz acall frek38khz mov r0,71h acall data acall frek38khz acall frek38khz mov r0,72h acall data acall frek38khz acall frek38khz ret frek38khz: mov r0,#10 loop: clr P2.0 nop nop nop B-3 nop nop nop nop nop nop nop nop nop setb P2.0 nop nop nop nop nop nop nop nop nop nop djnz r0,loop ret data: loop1: acall pulsa djnz r0,loop1 ret pulsa: setb P2.0 mov r7,#2 pls: mov r6,#255 djnz r6,$ djnz r7,pls mov r7,#50 djnz r7,$ ret tunda: mov r7,#255

B-4 tnd: mov r6,#255 djnz r6,$ djnz r7,tnd ret pulsa1: mov r7,#23 djnz r7,$ ret

  4. listing program Mikrokontroler – II (Assembly)

  MOV TMOD,#20H MOV SCON,#50H MOV TH1,#-3 SETB TR1 Utama: mov 60h,#0h jb P0.0,$ nop jnb P0.0,$ nilai: inc 60h acall hitung jb P0.0,nilai mov a,60h mov b,#10 div ab dec a cjne a,#10,Utama mov 61h,#0h jb P0.0,$ nop jnb P0.0,$ nilai1: inc 61h acall hitung jb P0.0,nilai1 mov 62h,#0h jb P0.0,$

  B-5 nop jnb P0.0,$ nilai2: inc 62h acall hitung jb P0.0,nilai2 mov 63h,#0h jb P0.0,$ nop jnb P0.0,$ nilai3: inc 63h acall hitung jb P0.0,nilai3 mov a,61h mov b,#10 div ab dec a mov 70h,a mov a,62h mov b,#10 div ab dec a mov 71h,a mov a,63h mov b,#10 div ab dec a mov 72h,a mov r0,70h cjne r0,#0,ke1 ljmp benar ke1: cjne r0,#1,ke2 ljmp benar ke2: cjne r0,#2,ke3 ljmp benar ke3: cjne r0,#3,ke4 ljmp benar ke4: B-6 cjne r0,#4,ke5 ljmp benar ke5: cjne r0,#5,ke6 ljmp benar ke6: cjne r0,#6,ke7 ljmp benar ke7: cjne r0,#7,ke8 ljmp benar ke8: cjne r0,#8,ke9 ljmp benar ke9: cjne r0,#9,balik1 ljmp benar balik1: ljmp Utama Benar: mov r0,71h cjne r0,#0,ke11 ljmp benar1 ke11: cjne r0,#1,ke21 ljmp benar1 ke21: cjne r0,#2,ke31 ljmp benar1 ke31: cjne r0,#3,ke41 ljmp benar1 ke41: cjne r0,#4,ke51 ljmp benar1 ke51: cjne r0,#5,ke61 ljmp benar1 ke61: cjne r0,#6,ke71 ljmp benar1 ke71:

  B-7 cjne r0,#7,ke81 ljmp benar1 ke81: cjne r0,#8,ke91 ljmp benar1 ke91: cjne r0,#9,balik11 ljmp benar1 balik11: ljmp Utama benar1: mov r0,72h cjne r0,#0,ke12 ljmp benar2 ke12: cjne r0,#1,ke22 ljmp benar2 ke22: cjne r0,#2,ke32 ljmp benar2 ke32: cjne r0,#3,ke42 ljmp benar2 ke42: cjne r0,#4,ke52 ljmp benar2 ke52: cjne r0,#5,ke62 ljmp benar2 ke62: cjne r0,#6,ke72 ljmp benar2 ke72: cjne r0,#7,ke82 ljmp benar2 ke82: cjne r0,#8,ke92 ljmp benar2 ke92: cjne r0,#9,balik12 ljmp benar2

  B-8 balik12: ljmp Utama benar2: mov a,72h mov b,#100 mul ab mov 77h,a mov a,71h mov b,#10 mul ab mov b,77h add a,b mov b,70h add a,b mov p1,a mov r0,70h acall konversi mov 74h,r1 ;73h nilai satuan des mov r0,71h acall konversi mov 75h,r1 ;74h nilai puluhan des mov r0,72h acall konversi mov 76h,r1 ;75h nilai ratusan des acall kirim_disp ljmp Utama balik: ljmp Utama konversi: cjne r0,#0h,satu mov r1,#'0' ret satu: cjne r0,#01h,dua mov r1,#'1' ret dua: cjne r0,#02h,tiga mov r1,#'2' B-9 ret tiga: cjne r0,#03h,empat mov r1,#'3' ret empat: cjne r0,#04h,lima mov r1,#'4' ret lima: cjne r0,#05h,enam mov r1,#'5' ret enam: cjne r0,#06h,tujuh mov r1,#'6' ret tujuh: cjne r0,#07h,delapan mov r1,#'7' ret delapan: cjne r0,#08h,sembilan mov r1,#'8' ret sembilan: cjne r0,#09h,konversi mov r1,#'9' ret kirim_disp: mov sbuf,76h jnb ti,$ clr ti mov sbuf,75h jnb ti,$ clr ti mov sbuf,74h jnb ti,$ clr ti acall tunda acall tunda

B-10 acall tunda ret tunda: mov r7,#255 tnd: mov r6,#255 djnz r6,$ djnz r7,tnd ret hitung: mov r7,#50 djnz r7,$ ret

  

Universitas Sumatera Utara

  C

  • – 1