0% found this document useful (0 votes)
19 views22 pages

Listing Program

This document describes a microcontroller program for an LCD display clock that also monitors temperature and controls lights and fans based on temperature thresholds. The program initializes I/O pins and an LCD, reads the current time and date from a real-time clock chip, displays the time and temperature, and allows the user to set the clock time and set timers for lights to turn on and off.

Uploaded by

KangUsep
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views22 pages

Listing Program

This document describes a microcontroller program for an LCD display clock that also monitors temperature and controls lights and fans based on temperature thresholds. The program initializes I/O pins and an LCD, reads the current time and date from a real-time clock chip, displays the time and temperature, and allows the user to set the clock time and set timers for lights to turn on and off.

Uploaded by

KangUsep
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 22

LISTING PROGRAM

$regfile = "m8535.dat"

$crystal = 8000000

$lib "ds1307clock.lib"

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 =

Portc.7 , E = Portc.3 , Rs = Portc.1

Config Lcd = 16 * 2

Dim Lm35_input As Word , In_lm35(5) As Single , H_lm35 As Single

Dim Tamp_data As String * 5

Dim I As Integer

Dim Weekday As Byte , _day As Byte , _month As Byte , _year As Byte

Dim _sec As Byte , _min As Byte , _hour As Byte

Dim Temp_menit As Byte , T_sec As Byte

Dim Jh(2) As Byte , Jm(2) As Byte

Dim H_waktu As Byte , M_waktu As Byte,

Dim Stat As Bit , Stet As Byte

Dim N_waktu As String * 8

Const Ds1307w = &HD0 ' Addresses of Ds1307 clock

Const Ds1307r = &HD1

Const S_std = 30

Const Bawah = 28
Jh(1) = 18

Jh(2) = 0

Jm(1) = 7

Jm(2) = 0

Stat = 0 : Stet = 0

'=================================

Config Debounce = 30

'configure the scl and sda pins

Config Sda = Portb.2

Config Scl = Portb.1

Fan Alias Porta.7

Lampu Alias Portd.4

Jam Alias Pinb.4

Tambah Alias Pinb.7

Waktu Alias Pinb.6

Kurang Alias Pinb.5

Config Fan = Output

Config Lampu = Output

Config Jam = Input

Config Tambah = Input

Config Kurang = Input


Config Waktu = Input

Set Fan

Set Lampu

Set Jam

Set Tambah

Set Kurang

Set Waktu

'==========================================

Cursor Off

Gosub Tampilan_judul

Wait 2

Gosub Tampilan_nama

Wait 2

Gosub Tampilan_komen

Utama:

Do

Gosub Getdatetime

Gosub Tampilan_jam

If _sec <> T_sec Then

T_sec = _sec

Gosub Ambil_suhu

End If
Gosub Chekkey

Waitms 500

Loop

End

'===================================================

Ambil_suhu:

H_lm35 = 0

For I = 1 To 5

Start Adc

Lm35_input = Getadc(0)

Stop Adc

In_lm35(i) = Lm35_input

In_lm35(i) = In_lm35(i) * 150

In_lm35(i) = In_lm35(i) / 1023

Waitms 100

Next I

For I = 1 To 5

H_lm35 = H_lm35 + In_lm35(i)

Next I

H_lm35 = H_lm35 / 5
Tamp_data = Fusing(h_lm35 , "##.&&")

Locate 2 , 8 : Lcd " "

Locate 2 , 8 : Lcd Tamp_data ; " C"

If H_lm35 > S_std And Stet = 0 Then

Reset Fan

Stet = 1

Elseif H_lm35 < Bawah And Stet = 1 Then

Set Fan

Stet = 0

End If

Return

'===================================================

' pengambilna data ds1307

'===================================================

Getdatetime:

I2cstart ' Generate start code

I2cwbyte Ds1307w ' send address

I2cwbyte 0 ' start address in 1307

I2cstart ' Generate start code

I2cwbyte Ds1307r ' send address

I2crbyte _sec , Ack


I2crbyte _min , Ack ' MINUTES

I2crbyte _hour , Ack ' Hours

I2crbyte Weekday , Ack ' Day of Week

I2crbyte _day , Ack ' Day of Month

I2crbyte _month , Ack ' Month of Year

I2crbyte _year , Nack ' Year

I2cstop

_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)

_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)

Return

'================================================

' penyimpanan tanggal

'================================================

Setdate:

_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)

I2cstart ' Generate start code

I2cwbyte Ds1307w ' send address

I2cwbyte 3 ' starting address in 1307

I2cwbyte Weekday ' Send Data to day

I2cwbyte _day ' Send Data to date

I2cwbyte _month ' month

I2cwbyte _year ' year

I2cstop
Return

'================================================

' penyimpanan waktu

'================================================

Settime:

_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)

I2cstart ' Generate start code

I2cwbyte Ds1307w ' send address

I2cwbyte 0 ' starting address in 1307

I2cwbyte _sec ' Send Data to SECONDS

I2cwbyte _min ' MINUTES

I2cwbyte _hour ' Hours

I2cstop

Return

'================================================

'menampilkan data jam

'================================================

Tampilan_jam:

'menampilan jam

If _hour < 10 Then

Locate 1 , 3 : Lcd "0" ; _hour


Else

Locate 1 , 3 : Lcd _hour

End If

Locate 1 , 6 : Lcd ":"

If Temp_menit <> _min Then

Temp_menit = _min

If _min < 10 Then

Locate 1 , 8 : Lcd "0" ; _min

Else

Locate 1 , 8 : Lcd _min

End If

Gosub Alaram

End If

Locate 1 , 11 : Lcd ":"

If _sec < 10 Then

Locate 1 , 13 : Lcd "0" ; _sec

Else

Locate 1 , 13 : Lcd _sec

End If

Return
Chekkey:

Debounce Jam , 0 , Atur_jam

Debounce Waktu , 0 , Set_waktu

Return

'================================================

' pengaturan jam

'================================================

Atur_jam:

Bitwait Jam , Set

Locate 1 , 2 : Lcd "*"

Set_jam:

Debounce Tambah , 0 , Tambah_jam

Debounce Kurang , 0 , Kurang_jam

Debounce Jam , 0 , Atur_menit

Goto Set_jam

Tambah_jam:

Bitwait Tambah , Set

Incr _hour

If _hour > 23 Then _hour = 0

Locate 1 , 3 : Lcd " "

Locate 1 , 3 : Lcd _hour

Goto Set_jam
Kurang_jam:

Bitwait Kurang , Set

Decr _hour

If _hour > 24 Then _hour = 23

Locate 1 , 3 : Lcd " "

Locate 1 , 3 : Lcd _hour

Goto Set_jam

'================================================

' pengaturan menit

'================================================

Atur_menit:

Bitwait Jam , Set

Locate 1 , 2 : Lcd " "

Locate 1 , 7 : Lcd "*"

Set_menit:

Debounce Tambah , 0 , Tambah_menit

Debounce Kurang , 0 , Kurang_menit

Debounce Jam , 0 , Simpan_menit

Goto Set_menit

Tambah_menit:

Bitwait Tambah , Set

Incr _min
If _min > 59 Then _min = 0

Locate 1 , 8 : Lcd " "

Locate 1 , 8 : Lcd _min

Goto Set_menit

Kurang_menit:

Bitwait Kurang , Set

Decr _min

If _min > 60 Then _min = 59

Locate 1 , 8 : Lcd " "

Locate 1 , 8 : Lcd _min

Goto Set_menit

Simpan_menit:

Bitwait Jam , Set

_sec = 0

Waitms 200

Gosub Settime

Locate 1 , 7 : Lcd " "

Cls

Gosub Tampilan_komen

Return
'================================================

' pengaturan waktu lampu

'================================================

Tampil_waktu_hidup:

H_waktu = Jh(1)

M_waktu = Jh(2)

Gosub Tampilkan_waktu

Return

Tampil_waktu_mati:

H_waktu = Jm(1)

M_waktu = Jm(2)

Gosub Tampilkan_waktu

Return

Tampilkan_waktu:

If H_waktu < 10 Then

Locate 2 , 7 : Lcd "0" ; H_waktu

Else

Locate 2 , 7 : Lcd H_waktu


End If

Locate 2 , 10 : Lcd ":"

If M_waktu < 10 Then

Locate 2 , 12 : Lcd "0" ; M_waktu

Else

Locate 2 , 12 : Lcd M_waktu

End If

Return

'==========================================

Set_waktu:

Bitwait Waktu , Set

Cls

Locate 1 , 1 : Lcd "SET WAKTU HIDUP "

Gosub Tampil_waktu_hidup

'================================================

' pengaturan jam waktu hidup

'================================================

Waktu_hidup:

Bitwait Waktu , Set

Locate 2 , 6 : Lcd "*"

Atur_jam_hidup:

Debounce Tambah , 0 , Tambah_jam_hidup

Debounce Kurang , 0 , Kurang_jam_hidup


Debounce Waktu , 0 , Aturkan_menit_hidup

Goto Atur_jam_hidup

Tambah_jam_hidup:

Bitwait Tambah , Set

Incr H_waktu

If H_waktu > 23 Then H_waktu = 0

Locate 2 , 7 : Lcd " "

Locate 2 , 7 : Lcd H_waktu

Goto Atur_jam_hidup

Kurang_jam_hidup:

Bitwait Kurang , Set

Decr H_waktu

If H_waktu > 24 Then H_waktu = 23

Locate 2 , 7 : Lcd " "

Locate 2 , 7 : Lcd H_waktu

Goto Atur_jam_hidup

'================================================

' pengaturan menit waktu hidup

'================================================

Aturkan_menit_hidup:

Bitwait Waktu , Set

Locate 2 , 6 : Lcd " "

Locate 2 , 11 : Lcd "*"


Atur_menit_hidup:

Debounce Tambah , 0 , Tambah_menit_hidup

Debounce Kurang , 0 , Kurang_menit_hidup

Debounce Waktu , 0 , Simpan_waktu_hidup

Goto Atur_menit_hidup

Tambah_menit_hidup:

Bitwait Tambah , Set

Incr M_waktu

If M_waktu > 59 Then M_waktu = 0

Locate 2 , 12 : Lcd " "

Locate 2 , 12 : Lcd M_waktu

Goto Atur_menit_hidup

Kurang_menit_hidup:

Bitwait Kurang , Set

Decr M_waktu

If M_waktu > 60 Then M_waktu = 59

Locate 2 , 12 : Lcd " "

Locate 2 , 12 : Lcd M_waktu

Goto Atur_menit_hidup
'================================================

' pengaturan penyimpanan waktu hidup lampu

'================================================

Simpan_waktu_hidup:

Bitwait Waktu , Set

Locate 2 , 11 : Lcd " "

Jh(1) = H_waktu

Jh(2) = M_waktu

Cls

Locate 1 , 1 : Lcd "PERUBAHAN WAKTU"

Locate 2 , 1 : Lcd "TELAH DISIMPAN "

Wait 2

'================================================

' pengaturan jam waktu mati lampu

'================================================

Cls

Locate 1 , 1 : Lcd " SET WAKTU MATI "

Gosub Tampil_waktu_mati

Locate 2 , 6 : Lcd "*"

Atur_jam_mati:

Debounce Tambah , 0 , Tambah_jam_mati

Debounce Kurang , 0 , Kurang_jam_mati


Debounce Waktu , 0 , Aturkan_menit_mati

Goto Atur_jam_mati

Tambah_jam_mati:

Bitwait Tambah , Set

Incr H_waktu

If H_waktu > 23 Then H_waktu = 0

Locate 2 , 7 : Lcd " "

Locate 2 , 7 : Lcd H_waktu

Goto Atur_jam_mati

Kurang_jam_mati:

Bitwait Kurang , Set

Decr H_waktu

If H_waktu > 24 Then H_waktu = 23

Locate 2 , 7 : Lcd " "

Locate 2 , 7 : Lcd H_waktu

Goto Atur_jam_mati

'================================================

' pengaturan menit waktu mati

'================================================

Aturkan_menit_mati:

Bitwait Waktu , Set

Locate 2 , 6 : Lcd " "


Locate 2 , 11 : Lcd "*"

Atur_menit_mati:

Debounce Tambah , 0 , Tambah_menit_mati

Debounce Kurang , 0 , Kurang_menit_mati

Debounce Waktu , 0 , Simpan_waktu_mati

Goto Atur_menit_mati

Tambah_menit_mati:

Bitwait Tambah , Set

Incr M_waktu

If M_waktu > 59 Then M_waktu = 0

Locate 2 , 12 : Lcd " "

Locate 2 , 12 : Lcd M_waktu

Goto Atur_menit_mati

Kurang_menit_mati:

Bitwait Kurang , Set

Decr M_waktu

If M_waktu > 60 Then M_waktu = 59

Locate 2 , 12 : Lcd " "

Locate 2 , 12 : Lcd M_waktu

Goto Atur_menit_mati
'================================================

' pengaturan penyimpanan waktu WAKTU

'================================================

Simpan_waktu_mati:

Bitwait Waktu , Set

Locate 2 , 11 : Lcd " "

Jm(1) = H_waktu

Jm(2) = M_waktu

Cls

Locate 1 , 1 : Lcd "PERUBAHAN WAKTU"

Locate 2 , 1 : Lcd "TELAH DISIMPAN "

Wait 2

Gosub Tampilan_komen

Return

'================================================

' MENGAKTIFKAN KOMPUTER

'================================================

Alaram:

If _hour = Jh(1) And _min = Jh(2) Then

If Stat = 0 Then

Reset Lampu

Stat = 1
End If

Elseif _hour = Jm(1) And _min = Jm(2) Then

If Stat = 1 Then

Set Lampu

Stat = 0

End If

End If

Return

'=======================================================

Tampilan_judul:

'=======================================================

Cls

Locate 1 , 1 : Lcd "OTOMATISASI SUHU"

Locate 2 , 1 : Lcd "CAHAYA AQUASCAPE"

Return

Tampilan_nama:

Cls

Locate 1 , 1 : Lcd "OKTA RYANDA "

Locate 2 , 1 : Lcd "BP : 09 - 104 "

Return

Tampilan_komen:

Cls

Locate 1 , 1 : Lcd " "


Locate 2 , 1 : Lcd "SUHU : "

Return

You might also like