Witam,
Mam taki problem. Chcę wysyłać do PC informację w formie takiego
temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz czasu a timer0 do pomiaru częstotliwości (na 555)
I screeny:
[/img]
Mam taki problem. Chcę wysyłać do PC informację w formie takiego
temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz czasu a timer0 do pomiaru częstotliwości (na 555)
$regfile = "m32def.dat" ' informuje kompilator o pliku dyrektyw mikrokontrolera
$crystal = 16000000 ' informuje kompilator o częstotliwości oscylatora taktującego mikrokontroler
$baud = 9600
Config Lcd = 24 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 ' Konfiguracja wyświetlacza LCD
Config Timer0 = Counter , Edge = Rising ' ???
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Timer , Async = Off , Prescale = 256 ' Zlicza czas, taktuje Timer 0
Config Pinc.2 = Output ' 74HC138A klawiatura
Config Pinc.3 = Output ' 74HC138B klawiatura
Config Pinc.4 = Output ' 74HC138C klawiatura
Config Pinc.5 = Input ' klawiatura
Config Pinc.6 = Input ' klawiatura
Config Pind.4 = Output ' wyjście mocy
Config Pind.5 = Output ' wyjście mocy
Config Pina.7 = Output ' przekaźnik
Config 1wire = Portc.7
Dim A As Bit '
Dim Licz1 As Byte ' licznik impulsów od wilgotności
Dim Temp2 As Byte '
Dim Temp As Byte '
Dim N As Single '
Dim N1 As Single '
Dim N2 As Single '
Dim N3 As Single '
Dim Wys As String * 4
Dim Znak As Byte '
Dim I As Byte '
Przekaznik Alias Porta.7 '
Dim T1 As Single
Dim T2 As Single
Dim B1 As Byte , B2 As Byte , R As Byte
Dim Tmp1 As String * 6
Dim Tmp2 As String * 6
Dim Znak1 As String * 1
Reset Przekaznik
R = &HFF
Deflcdchar 0 , 6 , 9 , 6 , 32 , 32 , 32 , 32 , 32 ' znak stopnia
Dim Licz2 As Byte ' Licznik Timera 2 zlicza 250 przerwań ( 1 sek.)
Pwm1b = 0 '
I = 0 '
Config Debounce = 25 '
Reset Portc.2 '
Reset Portc.3 '
Reset Portc.4 '
Licz1 = 0 '
Temp = 0 '
Temp2 = 0 '
A = 0 '
N = 0
Enable Interrupts '
Enable Timer2 '
Enable Timer0
Enable Timer1 ' '
On Timer2 Przekrocz2 '
On Timer0 Przekrocz0 '
Start Timer2
Cls
Cursor Off
'********************************************************************************
Do
Reset Portc.2
Reset Portc.3
Reset Portc.4
Debounce Pinc.5 , 0 , P1 , Sub 'obsługa klawiatury
Debounce Pinc.6 , 0 , P5 , Sub
Set Portc.2
Reset Portc.3
Reset Portc.4
Debounce Pinc.5 , 0 , P2 , Sub
Debounce Pinc.6 , 0 , P6 , Sub
Reset Portc.2
Set Portc.3
Reset Portc.4
Debounce Pinc.5 , 0 , P3 , Sub
Debounce Pinc.6 , 0 , P7 , Sub
Set Portc.2
Set Portc.3
Reset Portc.4
Debounce Pinc.5 , 0 , P4 , Sub
Debounce Pinc.6 , 0 , P8 , Sub
'************************* obsługa DS18B20 *************************************
1wreset
1wwrite &HCC
1wwrite &H44
1wreset
1wwrite &HCC
1wwrite &HBE 'odczytywanie temp.
B1 = 1wread() 'program odczytu podany przez producenta
B2 = 1wread()
If B1 >= 248 Then
B1 = R - B1
B2 = R - B2
Znak1 = "-"
Else
Znak1 = "+"
End If
T1 = B1 / 16
T2 = B2 * 16
T1 = T1 + T2
Tmp1 = Fusing(t1 , "###.&")
'******************************************************************************
If Licz2 > 249 Then
Licz2 = 0
Timer0 = 0
N = 0
A = 1
End If
If Licz2 = 10 Then
Licz1 = Timer0 'przepisanie zliczonych impulsów zewnętrznych do zmiennej
'przygotowanie timera0 do ponownego liczenia
End If
If Licz2 = 12 Then 'Transmisja co sekundę
N3 = 0
N3 = N * 256
N3 = N3 + Licz1
End If
If Licz2 = 50 And A = 1then
Print Znak1 ; Tmp1 ; Chr(0) ; "C " ;
A = 0
End If
'Znak = Inkey()
'If Znak = "d" Then
'Gosub Rs232
'End If
Loop
End
'**************************************************************
Przekrocz0:
N = N + 1
Return
Przekrocz2:
Load Timer2 , 250
Incr Licz2
If Licz2 = 2 Then
Start Timer0
End If
If Licz2 = 7 Then
Stop Timer0
End If
Return
P1:
Cls
I = I - 5
If I >= 0 And I <= 255 Then
Pwm1b = I
Else
I = 0
End If
Lcd Pwm1b
Return
P2:
Cls
I = I + 5
If I >= 0 And I <= 255 Then
Pwm1b = I
Else
I = 0
Lcd Pwm1b
End If
Return
P3:
Cls
Pwm1b = 255
I = 255
Lcd Pwm1b
Return
P4:
Cls
Pwm1b = 0
I = 0
Lcd Pwm1b
Return
P5:
Set Przekaznik
Return
P6:
Reset Przekaznik
Return
P7:
Lcd "7"
Return
P8:
Lcd "8"
Return
I screeny:
[/img]
