Einen schönen Tag euch allen!
Da ich mich erst seit kurzer Zeit mit Microcontrollern befasse habe ich hier
im Forum gesucht und einen Code gefunden mit dem man mit dem DS1820 eine Temp. messen und auf dem Display darstellen kann.
Jedoch wird keine Kommastelle auf dem Display angezeit.
ich verwende das Boar myavr. Hier der Code
Was mache ich falsch und was muss ich ändern, dass auch Kommastellen angezeigt werden. Am besten wäre die hier schon ein paar mal geschielderte 0,1 C Genauigkeit.Code:$regfile = "m8def.dat" $crystal = 3686400 $baud = 9600 Config 1wire = Portb.0 Config Lcd = 40 * 2 Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 Config Lcdbus = 4 Config Lcdmode = Port Dim ___lcdno As Bit Dim T1 As Integer Dim T2 As Integer Dim I As Byte Dim Id1(8) As Byte Dim Id2(8) As Byte Dim Ar1(2) As Byte Dim Ar2(2) As Byte ___lcdno = 0 Initlcd Cursor Off Cls ___lcdno = 1 Initlcd Cursor Off Cls Id1(1) = 1wsearchfirst() Id2(1) = 1wsearchnext() Do 1wreset 'reset 1wwrite &H55 'Match Rom command 1wwrite Id1(1) , 8 'Id von Sensor 1 1wwrite &H44 'Convert T Waitms 300 'warten bis convert T fertig ist 1wreset 'reset 1wwrite &H55 'match rom command 1wwrite Id1(1) , 8 'id von sensor 1 1wwrite &HBE 'scratchpad lesen Ar1(1) = 1wread(1) 'erstes byte auslesen, da steht Temp drin Ar1(2) = 1wread(1) 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen Waitms 500 1wreset 'reset 1wwrite &H55 'Match Rom command 1wwrite Id2(1) , 8 'Id von Sensor 2 1wwrite &H44 'Convert T Waitms 300 'warten bis convert T fertig ist 1wreset 'reset 1wwrite &H55 'match rom command 1wwrite Id2(1) , 8 'id von sensor 2 1wwrite &HBE 'scratchpad lesen Ar2(1) = 1wread(1) 'erstes byte auslesen, da steht Temp drin Ar2(2) = 1wread(1) 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen T1 = Ar1(1) / 2 T2 = Ar2(1) / 2 ___lcdno = 0 Upperline If Ar1(2) = 0 Then 'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg Lcd "Temp. 1:" ; " " ; T1 Else Lcd "Temp. 1:" ; "-" ; T1 End If Lowerline If Ar2(2) = 0 Then 'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg Lcd "Temp. 2:" ; " " ; T2 Else Lcd "Temp. 2:" ; "-" ; T2 End If ___lcdno = 1 ' Upperline ' Lcd "ID 1:" ; Id1(1) ; Id1(2) ; Id1(3) ; Id1(4) ; Id1(5) ; Id1(6) ; Id1(7) ; Id1(8) ' Lowerline ' Lcd "ID 2:" ; Id2(1) ; Id2(2) ; Id2(3) ; Id2(4) ; Id2(5) ; Id2(6) ; Id2(7) ; Id2(8) Waitms 500 Loop
Danke für die Hilfe
Martin







					
					
					
						
Zitieren

Lesezeichen