سلام دوستان
فکر کنم این مدار ما درست بشو نیست :angry: :cry:
دوتا برنامه دارم یکی با lcd که جواب نمیده
یکیم با 7سگمنت فردا آخرین مهلتمه لطفا کمکم کنید
برنامه با lcd
فکر کنم این مدار ما درست بشو نیست :angry: :cry:
دوتا برنامه دارم یکی با lcd که جواب نمیده
یکیم با 7سگمنت فردا آخرین مهلتمه لطفا کمکم کنید
برنامه با lcd
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portb.6 , E = Portb.7 , Db4 = Portd.5 , Db5 = Portd.6 _
, Db6 = Portd.7 , Db7 = Portd.8
Cursor Off
Cls
Declare Sub Get_th(t As Byte , H As Byte)
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128
Dht_put Alias Portc.0
Dht_get Alias Pinc.0
Dht_io_set Alias Ddrc.0
Dim T As Byte
Dim H As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Enable Interrupts
Set Dht_io_set
Set Dht_put
Cls
Do
Waitms 200
Call Get_th(t , H)
Home
Lcd "TMP: " ; T ; "C "
Lowerline
Lcd "HDT: " ; H ; "% "
Loop
Sub Get_th(t As Byte , H As Byte)
Count = 0
Sensor_data = ""
Set Dht_io_set
Reset Dht_put
Waitms 25
Set Dht_put
Waitus 40
Reset Dht_io_set
Waitus 40
If Dht_get = 1 Then
H = 1
Exit Sub
End If
Waitus 80
If Dht_get = 0 Then
H = 2
Exit Sub
End If
While Dht_get = 1 : Wend
Do
While Dht_get = 0 : Wend
Waitus 30
If Dht_get = 1 Then
Sensor_data = Sensor_data + "1"
While Dht_get = 1 : Wend
Else
Sensor_data = Sensor_data + "0"
End If
Incr Count
Loop Until Count = 40
Set Dht_io_set
Set Dht_put
Tmp_str8 = Left(sensor_data , 8)
H = Binval(tmp_str8)
Tmp_str8 = Mid(sensor_data , 17 , 8)
T = Binval(tmp_str8)
Tmp_str8 = Right(sensor_data , 8)
Crc = Binval(tmp_str8)
Mybyte = T + H
If Mybyte <> Crc Then
H = 3
End If
End Sub
اینم با 7سگمنته$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portb.6 , E = Portb.7 , Db4 = Portd.5 , Db5 = Portd.6 _
, Db6 = Portd.7 , Db7 = Portd.8
Cursor Off
Cls
Declare Sub Get_th(t As Byte , H As Byte)
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128
Dht_put Alias Portc.0
Dht_get Alias Pinc.0
Dht_io_set Alias Ddrc.0
Dim T As Byte
Dim H As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Enable Interrupts
Set Dht_io_set
Set Dht_put
Cls
Do
Waitms 200
Call Get_th(t , H)
Home
Lcd "TMP: " ; T ; "C "
Lowerline
Lcd "HDT: " ; H ; "% "
Loop
Sub Get_th(t As Byte , H As Byte)
Count = 0
Sensor_data = ""
Set Dht_io_set
Reset Dht_put
Waitms 25
Set Dht_put
Waitus 40
Reset Dht_io_set
Waitus 40
If Dht_get = 1 Then
H = 1
Exit Sub
End If
Waitus 80
If Dht_get = 0 Then
H = 2
Exit Sub
End If
While Dht_get = 1 : Wend
Do
While Dht_get = 0 : Wend
Waitus 30
If Dht_get = 1 Then
Sensor_data = Sensor_data + "1"
While Dht_get = 1 : Wend
Else
Sensor_data = Sensor_data + "0"
End If
Incr Count
Loop Until Count = 40
Set Dht_io_set
Set Dht_put
Tmp_str8 = Left(sensor_data , 8)
H = Binval(tmp_str8)
Tmp_str8 = Mid(sensor_data , 17 , 8)
T = Binval(tmp_str8)
Tmp_str8 = Right(sensor_data , 8)
Crc = Binval(tmp_str8)
Mybyte = T + H
If Mybyte <> Crc Then
H = 3
End If
End Sub
$regfile = "m8def.dat"
$crystal = 8000000
Config Portb = Output
Config Portd = Output
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128
Dim A As Word
Dim B As Long
Dim C As Word
Dim D As Word
Dim E As Word
Dim F As Byte
Dim G As Byte
Dim I As Byte
Dim J As Long
Dim T As Byte
Dim H As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Declare Sub Get_th(t As Byte , H As Byte)
Declare Sub Trm_seg
Declare Sub Hum_seg
Declare Sub Trm
Declare Sub Hum
Declare Sub Mcu
Dht_put Alias Portc.0
Dht_get Alias Pinc. 0
Dht_io_set Alias Ddrc. 0
En1_1 Alias Portb.0
En1_2 Alias Portb.1
En1_3 Alias Portb.2
Dp1 Alias Portb.3
En2_1 Alias Portb.4
En2_2 Alias Portb.5
En2_3 Alias Portb.6
Dp2 Alias Portb.7
Enable Interrupts
Set Dht_io_set
Set Dht_put
'******************************* COMMAN ANOD *********************************
Do
Call Mcu
Call Trm
Call Hum
Loop
End
'******************************************** ***********************************
Sub Mcu
'Incr B
'If B > 999 Then B = 0
'Decr J
'If J < 1 Then J = 999
Call Get_th(t , H)
B = T
J = H
End Sub
'******************************************** ***********************************
Sub Get_th(t As Byte , H As Byte)
Count = 0
Sensor_data = ""
Set Dht_io_set
Reset Dht_put
Waitms 25
Set Dht_put
Waitus 40
Reset Dht_io_set
Waitus 40
If Dht_get = 1 Then
H = 1
Exit Sub
End If
Waitus 80
If Dht_get = 0 Then
H = 2
Exit Sub
End If
While Dht_get = 1 : Wend
Do
While Dht_get = 0 : Wend
Waitus 30
If Dht_get = 1 Then
Sensor_data = Sensor_data + "1"
While Dht_get = 1 : Wend
Else
Sensor_data = Sensor_data + "0"
End If
Incr Count
Loop Until Count = 40
Set Dht_io_set
Set Dht_put
Tmp_str8 = Left(sensor_data , 8)
H = Binval(tmp_str8)
Tmp_str8 = Mid(sensor_data , 17 , 8)
T = Binval(tmp_str8)
Tmp_str8 = Right(sensor_data , 8)
Crc = Binval(tmp_str8)
Mybyte = T + H
If Mybyte <> Crc Then
H = 3
End If
End Sub
'******************************************** ***********************************
Sub Trm
Call Trm_seg
Dp1 = 0
En1_3 = 0
Portd = F
Waitus 400
En1_3 = 1
En1_2 = 0
Portd = G
Waitus 400
En1_2 = 1
En1_1 = 0
Portd = I
Waitus 400
En1_1 = 1
End Sub
'******************************************** ***********************************
Sub Hum
Call Hum_seg
Dp2 = 0
En2_3 = 0
Portd = F
Waitus 400
En2_3 = 1
En2_2 = 0
Portd = G
Waitus 400
En2_2 = 1
En2_1 = 0
Portd = I
Waitus 400
En2_1 = 1
End Sub
'******************************************** ***********************************
Sub Trm_seg
C = B / 10
C = C * 10
C = B - C
F = C
F = Lookup(f , 7seg)
D = B / 100
D = D * 100
D = B - D
D = D / 10
G = D
G = Lookup(g , 7seg)
E = B / 100
I = E
I = Lookup(i , 7seg)
End Sub
'******************************************** ***********************************
Sub Hum_seg
C = J / 10
C = C * 10
C = J - C
F = C
F = Lookup(f , 7seg)
D = J / 100
D = D * 100
D = J - D
D = D / 10
G = D
G = Lookup(g , 7seg)
E = J / 100
I = E
I = Lookup(i , 7seg)
End Sub
'******************************************** ***********************************
7seg:
'Data &B1000000 , &B1111001 , &B0100100 , &B0110000 , &B0011001
'Data &B0010010 , &B0000010 , &B1111000 , &B0000000 , &B0010000
Data &B0111111 , &B0000110 , &B1011011 , &B1001111 , &B1100110
Data &B1101101 , &B1111101 , &B0000111 , &B1111111 , &B1101111
'******************************************** ***********************************
$crystal = 8000000
Config Portb = Output
Config Portd = Output
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128
Dim A As Word
Dim B As Long
Dim C As Word
Dim D As Word
Dim E As Word
Dim F As Byte
Dim G As Byte
Dim I As Byte
Dim J As Long
Dim T As Byte
Dim H As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Declare Sub Get_th(t As Byte , H As Byte)
Declare Sub Trm_seg
Declare Sub Hum_seg
Declare Sub Trm
Declare Sub Hum
Declare Sub Mcu
Dht_put Alias Portc.0
Dht_get Alias Pinc. 0
Dht_io_set Alias Ddrc. 0
En1_1 Alias Portb.0
En1_2 Alias Portb.1
En1_3 Alias Portb.2
Dp1 Alias Portb.3
En2_1 Alias Portb.4
En2_2 Alias Portb.5
En2_3 Alias Portb.6
Dp2 Alias Portb.7
Enable Interrupts
Set Dht_io_set
Set Dht_put
'******************************* COMMAN ANOD *********************************
Do
Call Mcu
Call Trm
Call Hum
Loop
End
'******************************************** ***********************************
Sub Mcu
'Incr B
'If B > 999 Then B = 0
'Decr J
'If J < 1 Then J = 999
Call Get_th(t , H)
B = T
J = H
End Sub
'******************************************** ***********************************
Sub Get_th(t As Byte , H As Byte)
Count = 0
Sensor_data = ""
Set Dht_io_set
Reset Dht_put
Waitms 25
Set Dht_put
Waitus 40
Reset Dht_io_set
Waitus 40
If Dht_get = 1 Then
H = 1
Exit Sub
End If
Waitus 80
If Dht_get = 0 Then
H = 2
Exit Sub
End If
While Dht_get = 1 : Wend
Do
While Dht_get = 0 : Wend
Waitus 30
If Dht_get = 1 Then
Sensor_data = Sensor_data + "1"
While Dht_get = 1 : Wend
Else
Sensor_data = Sensor_data + "0"
End If
Incr Count
Loop Until Count = 40
Set Dht_io_set
Set Dht_put
Tmp_str8 = Left(sensor_data , 8)
H = Binval(tmp_str8)
Tmp_str8 = Mid(sensor_data , 17 , 8)
T = Binval(tmp_str8)
Tmp_str8 = Right(sensor_data , 8)
Crc = Binval(tmp_str8)
Mybyte = T + H
If Mybyte <> Crc Then
H = 3
End If
End Sub
'******************************************** ***********************************
Sub Trm
Call Trm_seg
Dp1 = 0
En1_3 = 0
Portd = F
Waitus 400
En1_3 = 1
En1_2 = 0
Portd = G
Waitus 400
En1_2 = 1
En1_1 = 0
Portd = I
Waitus 400
En1_1 = 1
End Sub
'******************************************** ***********************************
Sub Hum
Call Hum_seg
Dp2 = 0
En2_3 = 0
Portd = F
Waitus 400
En2_3 = 1
En2_2 = 0
Portd = G
Waitus 400
En2_2 = 1
En2_1 = 0
Portd = I
Waitus 400
En2_1 = 1
End Sub
'******************************************** ***********************************
Sub Trm_seg
C = B / 10
C = C * 10
C = B - C
F = C
F = Lookup(f , 7seg)
D = B / 100
D = D * 100
D = B - D
D = D / 10
G = D
G = Lookup(g , 7seg)
E = B / 100
I = E
I = Lookup(i , 7seg)
End Sub
'******************************************** ***********************************
Sub Hum_seg
C = J / 10
C = C * 10
C = J - C
F = C
F = Lookup(f , 7seg)
D = J / 100
D = D * 100
D = J - D
D = D / 10
G = D
G = Lookup(g , 7seg)
E = J / 100
I = E
I = Lookup(i , 7seg)
End Sub
'******************************************** ***********************************
7seg:
'Data &B1000000 , &B1111001 , &B0100100 , &B0110000 , &B0011001
'Data &B0010010 , &B0000010 , &B1111000 , &B0000000 , &B0010000
Data &B0111111 , &B0000110 , &B1011011 , &B1001111 , &B1100110
Data &B1101101 , &B1111101 , &B0000111 , &B1111111 , &B1101111
'******************************************** ***********************************
دیدگاه