02 June, 2013

Listing Program Sensor suhu dan kelembaban SHT 10


$regfile = "M8535.dat"
$crystal = 12000000
$baud = 2400
$hwstack = 32
$swstack = 10
$framesize = 40

Dim Z1(3) As Byte
Dim Ctr As Byte
Dim Dataword As Word
Dim Command As Byte
Dim Dis As String * 20
Dim Calc As Single
Dim Calc2 As Single
Dim Rhlinear As Single
Dim Rhlintemp As Single
Dim Tempc As Single
Dim Tempf As Single

Const C1 = -2.0468
Const C2 = 0.0367
Const C3 = -0.0000015955
Const T1c = .01
Const T2 = .00008

Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.5 , Rs = Porta.4
Config Lcd = 16 * 2


Sck Alias Portd.6
Dataout Alias Portd.7
Datain Alias Pind.7

Declare Sub Getit()
Ddrd = &B11111111                                           'Semua Port B di set output
Config Pind.6 = Output                                      'sck
Config Pind.7 = Output                                      'datain
Set Dataout
For Ctr = 1 To 12
Set Sck
Waitus 2
Reset Sck
Waitus 2
Next Ctr
Cls
Waitms 20
Cursor Off
Waitms 20
Cls
Do

Z1(1) = 3
Tempf = T1f * Dataword
Tempf = Tempf - 40
Tempc = T1c * Dataword                                    
Tempc = Tempc - 40
Dis = Fusing(tempc , "###.##")
Print "Temperature = " ; Dis
Locate 1 , 1 : Lcd "Temp=" ; Dis ; " C"
Wait 1

Command = &B00000101
Z1(1) = 5
Call Getit                                                
Calc = C2 * Dataword
Calc2 = Dataword * Dataword                               
Calc2 = C3 * Calc2
Calc = Calc + C1
Rhlinear = Calc + Calc2
Dis = Fusing(rhlinear , "##.##")
Print "Humidity = " ; Dis

Calc = T2 * Dataword
Calc = Calc + T1c
Calc2 = Tempc - 25
Calc = Calc2 * Calc
Rhlintemp = Calc + Rhlinear
Dis = Fusing(rhlintemp , "##.##")
Locate 2 , 0 : Lcd "Humd=" ; Dis ; " %"
Wait 1
Loop

Sub Getit()
Local Datavalue As Word
Local Databyte As Byte
Set Sck
Reset Dataout
Reset Sck
Set Sck
Set Dataout
Reset Sck

Shiftout Dataout , Sck , Command , 1
Ddrd = &B11111101                                         
Config Pind.7 = Input                                     
Set Sck                                                    
Reset Sck
Waitus 10                                                 
Bitwait Pind.7 , Reset                                    
Shiftin Datain , Sck , Databyte , 1                       
Datavalue = Databyte

Z1(2) = Databyte
Ddrd = &B11111111
Config Pind.7 = Output
Reset Dataout                                             
Set Sck
Reset Sck
Ddrd = &B11111101                                         
Config Pind.7 = Input
Shiftin Datain , Sck , Databyte , 1                       

Z1(3) = Databyte
Shift Datavalue , Left , 8
Datavalue = Datavalue Or Databyte                         
Dataword = Datavalue
Ddrd = &B11111111
Config Pind.7 = Output
Reset Dataout
Set Sck
Reset Sck
Ddrd = &B11111101                                          
Config Pind.7 = Input
Shiftin Datain , Sck , Databyte , 1

Ddrd = &B11111111
Config Pind.7 = Output
Set Dataout
Set Sck
Reset Sck

End Sub
End

No comments:

Post a Comment