f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549
Zobacz temat - Proszę o kod źrodłowy w C pliku 18B20-LCD.hex
 
And-Tech
Forum firmy And-Tech

Płytki startowe EvB3.1 - Proszę o kod źrodłowy w C pliku 18B20-LCD.hex

Pawel_Stasiu - Czw Paź 16, 2008 3:01 pm
Temat postu: Proszę o kod źrodłowy w C pliku 18B20-LCD.hex
Witam. Nie potrafię obsłużyć jednocześnie dwóch czujników temperatury, które znajdują się na mojej płytce. Znam się na programowaniu, ale jeszcze nie do końca na elektronice, dlatego proszę o kod źródłowy.
And-Tech - Sob Paź 18, 2008 6:59 am

Przykłady są pod tym adresem
http://www.and-tech.pl/EvB4.1/programy.zip

morock - Sob Sie 29, 2009 5:07 pm

W c niestety także miałem z tym problem, mam program obsługujący 1 czujnik, jednak taki który obsługiwałby 2 nie znalazłem :/ dlatego przesiałem się na bascom.

Listing w c z obsługą jednego czujnika znajdziesz w linku wyżej , program allegro.c
w katalogu programy\C\przyklad\Test calej plytki

przykładowy program napisany w bascomie:

Kod:

' Zegar, termometr 2 x 18B20
$regfile = "m16def.dat"
$crystal = 16000000

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

Config 1wire = Portd.4

Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim T1 As Integer , Ss As String * 6
Dim T2 As Integer
Dim Mark As Integer

Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32            ' st
Deflcdchar 3 , 4 , 10 , 17 , 27 , 10 , 10 , 14 , 32         ' arrow up
Deflcdchar 4 , 14 , 10 , 10 , 27 , 17 , 10 , 4 , 32         ' arrow down

Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()

Display On
Cursor Off
Cls

Do
   Gosub Temp
Loop
End

Temp:
   1wreset
   1wwrite &H55
   1wverify Dsid1(1)
   1wwrite &HBE
   T1 = 1wread(2)
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)
   1wwrite &HBE
   T2 = 1wread(2)
   1wreset
   1wwrite &HCC
   1wwrite &H44
   Waitms 300
   T1 = T1 * 10
   T1 = T1 / 16
   Ss = Str(t1)
   Ss = Format(ss , "0.0")
   Locate 1 , 1
   Lcd Chr(3)
   If T1 < 100 Then Lcd " "
   Lcd Ss ; Chr(0) ; "C"
   T2 = T2 * 10
   T2 = T2 / 16
   Ss = Str(t2)
   Ss = Format(ss , "0.0")
   Locate 2 , 1
   Lcd Chr(4)
   If T2 < 100 Then Lcd " "
   Lcd "+" ; Ss ; Chr(0) ; "C"

Return



Kod sprawdzony, na pewno działa, niestety nie odczytuje jeszcze temperatur ujemnych, ale będę go dopracowywał. Obydwa czujniki są podłączone do Portu D 4, poprzez magistrale 1wire.

Jeśli czegoś jeszcze potrzebujesz to służę pomocą :)


Powered by phpBB modified by Przemo © 2003 phpBB Group