Forum www.nestor-electronic.pl Strona Główna www.nestor-electronic.pl
Forum sterowników procesorowych- programy BASCOM
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

proszę o sprawdzenie i poprawę układu

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Inne programy jakie dokładam- nie opisane wcześniej
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Kamilo18
Nowy


Dołączył: 14 Mar 2009
Posty: 20

PostWysłany: Wto Kwi 07, 2009 9:06 pm    Temat postu: proszę o sprawdzenie i poprawę układu Odpowiedz z cytatem

Proszę o sprawdzenie układu poprawę. jest to termometr i voltomierz. chciałbym jeszcze dodać zegarek, ale nie wiem jak mam dodać temperaturę i napięcie w jednej linij



$regfile = "m8def.dat" 'informuje
kompilator o pliku
'dyrektyw mikrokontrolera
$crystal = 8000000 'informuje kompilator




Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2

Config Adc = Single , Prescaler = Auto , Reference = Internal



'reset wystąpi po 8192 ms
'Start Watchdog






Declare Sub Odcz_temp

Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia
Dim T1 As Single
Dim T2 As Single
Dim B1 As Byte , B2 As Byte , R As Byte
Dim Tmp As String * 6
Dim Znak As String * 1

Dim T1b As Single
Dim T2b As Single
Dim B1b As Byte , B2b As Byte
Dim Tmpb As String * 6
Dim Znakb As String * 1



Config Pinc.0 = Input
Config Pinc.1 = Input


R = &HFF
Declare Sub 1wr


Config Portc.1 = Output
Config Portb.2 = Output 'wyjścia przekazników

Config Pinb.3 = Input 'porty jako wejściowe


Set Portb.3 ' ustawia na stan wysoki



Dim Wart_nap As Word
Dim Wart_nap1 As Word
Dim Wart_nap2 As String *
Dim Wart_nap22 As Word



Dim Wart_ac As Word
Dim Wart_ac1 As Word


Dim V As Single
Dim V_z_zerem As String * 10
Dim V1 As Single



Dim Adres As Byte , Command As Byte

Cursor Off Noblink 'Wyłącznie kursora "_"

Enable Interrupts
' Set Portb.3 = Input


Cls
Lcd "Witam serdecznie" 'tu wpisujesz dowolny napis
Lowerline
Lcd "URSUS C-360 3P" 'tu też dowolny napis

Wait 5 ' tu stawiasz czasu wyswietlania powitania w sekundach

Cls
Start Adc

Do


'czytam pierwszy czujnik
'waitms 20
Wart_ac = Getadc(0)
V = Wart_ac * 0.0026


Reset Watchdog

Do
1wreset Pinc , 1 'podprogram 1wr
1wwrite &HCC , 1 , Pinc , 1 'komenda skip ROM
1wwrite &H44 , 1 , Pinc , 1 'komenda convert T
Waitms 250
Waitms 250
1wreset Pinc , 1 'podprogram 1wr
1wwrite &HCC , 1 , Pinc , 1 'komenda skip ROM
1wwrite &HBE , 1 , Pinc , 1 'komenda read

B1 = 1wread(1 , Pinc , 1) 'odczyt z termometru
B2 = 1wread(1 , Pinc , 1)

1wreset Pinc , 1 'podprogram 1wr

If B2 >= 248 Then 'w przypadku temperatur ujemnych
B1 = R - B1 'Od 255 Odejmujemy B1
B2 = R - B2 'od 255 odejmujemy B2
Znak = "-"
Else
Znak = "+"
End If
T1 = B1 / 16 'Przesuniecie w pawo o 4 bajty
T2 = B2 * 16 'przesuniecie w lewo o 4 bajty
T1 = T1 + T2

Tmp = Fusing(t1 , " ###.&")







1wreset Pinc , 0 'podprogram 1wr
1wwrite &HCC , 1 , Pinc , 0 'komenda skip ROM
1wwrite &H44 , 1 , Pinc , 0 'komenda convert T
'Set Portc.0
Waitms 500
'Waitms 250
'Reset Portc.0

1wreset Pinc , 0 'podprogram 1wr
1wwrite &HCC , 1 , Pinc , 0 'komenda skip ROM
1wwrite &HBE , 1 , Pinc , 0 'komenda read

B1b = 1wread(1 , Pinc , 0) 'odczyt z termometru
B2b = 1wread(1 , Pinc , 0)

1wreset Pinc , 0 'podprogram 1wr

If B2b >= 248 Then 'w przypadku temperatur ujemnych
B1b = R - B1b 'Od 255 Odejmujemy b1b
B2b = R - B2b 'od 255 odejmujemy B2b
Znakb = "-"
Else
Znakb = "+"
End If
T1b = B1b / 16 'Przesuniecie w pawo o 4 bajty
T2b = B2b * 16 'przesuniecie w lewo o 4 bajty
T1b = T1b + T2b
Tmpb = Fusing(t1b , " ###.&")


Cls

V_z_zerem = Fusing(v , "#.##") 'W tej i kolejnej linijce następuje dodanie
V_z_zerem = Format(v_z_zerem , "00000") 'na początku liczby - 0 np z 1.02 na 01.02

Lcd "Napiecie:" ; V_z_zerem
Lowerline

Lcd "temp1:" ; Znakb ; Tmpb ; Chr(1) ; "C "



Cls



Cls

Sub 1wr 'podprogram resetujacy magistrale
'1wreset
End Sub
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Scofield
Lekko zaangażowany


Dołączył: 19 Gru 2008
Posty: 48
Skąd: -----

PostWysłany: Sro Kwi 08, 2009 3:56 pm    Temat postu: Odpowiedz z cytatem

Dość dużo pozmieniałem w kodzie. U mnie skompilował się bez problemu, ale czy działa w to nie wiem bo nie mam na czym testować Smile

Kod:

$regfile = "m8def.dat"                                      'informuje kompilator o pliku
'dyrektyw mikrokontrolera
$crystal = 8000000 'informuje kompilator




Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2

Config Adc = Single , Prescaler = Auto , Reference = Internal



'reset wystąpi po 8192 ms
'Start Watchdog


Declare Sub Odcz_temp

Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia
Dim Temperatura(2) As Byte


Config Pinc.0 = Input
Config Pinc.1 = Input



Config 1wire = Portc.1                                      'konfugurowanie linii magistrali 1wire dla czujnika temp
Config Portb.2 = Output 'wyjścia przekazników

Config Pinb.3 = Input 'porty jako wejściowe


Set Portb.3 ' ustawia na stan wysoki



Dim Wart_nap As Word
Dim Wart_nap1 As Word
Dim Wart_nap2 As String *
Dim Wart_nap22 As Word



Dim Wart_ac As Word
Dim Wart_ac1 As Word


Dim V As Single
Dim V_z_zerem As String * 10
Dim V1 As Single



Dim Adres As Byte , Command As Byte

Cursor Off Noblink 'Wyłącznie kursora "_"

Enable Interrupts
' Set Portb.3 = Input


Cls
Lcd "Witam serdecznie" 'tu wpisujesz dowolny napis
Lowerline
Lcd "URSUS C-360 3P" 'tu też dowolny napis

Wait 5 ' tu stawiasz czasu wyswietlania powitania w sekundach

Cls
Start Adc

Do

Call Odcz_temp                                              'Skok do procedury gdzie następuje odczytanie temperatury
Cls

V_z_zerem = Fusing(v , "#.##") 'W tej i kolejnej linijce następuje dodanie
V_z_zerem = Format(v_z_zerem , "00000") 'na początku liczby - 0 np z 1.02 na 01.02

Lcd "Napiecie:" ; V_z_zerem
Lowerline


If Temperatura(2) = 0 Then                                  'Jeżeli temperatura(2) = 0 to temp jest dodatnia
Lcd "Temp: +" ; Temperatura(1) ; Chr(1) ; "C "
Else

Lcd "Temp: -" ; Temperatura(1) ; Chr(1) ; "C "
End If
Loop
End

Sub Odcz_temp
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE

Temperatura(1) = 1wread(2)

1wreset
If Err = 1 Then
Cls
Lcd "Brak cz.temp"
Wait 1
End If

If Temperatura(2) > 0 Then

Temperatura(1) = 256 - Temperatura(1)
End If
Temperatura(1) = Temperatura(1) / 2

End Sub
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Inne programy jakie dokładam- nie opisane wcześniej Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


Powered by phpBB © 2001, 2005 phpBB Group