ik gebruik onderstaande code maar temp geef 8 graden te veel aan weet iemand wat het probleem is?
code
Device = 16F877
Config WDT_OFF, PWRTE_ON, HS_OSC
XTAL = 4
Declare LCD_TYPE 0
Declare LCD_DTPIN PORTD.4 ; Used for 4-line.
Declare LCD_ENPIN PORTD.3 ; e line
Declare LCD_RSPIN PORTD.2 ; r/s line
Declare LCD_INTERFACE 4 ; 4 bits interface
;Normale constanten
Symbol Convert = $44 ;Vaste, constante waarde (zie datasheet DS1820)
Symbol Graad = 223 ;223 is de ASCII code voor het 'graad' karakter
Symbol RdScratchPad = $BE ;Vaste, constante waarde (zie datasheet DS1820)
Symbol SkipROM = $CC ;Vaste, constante waarde (zie datasheet DS1820)
;Poortnamen
Symbol DS1820 = PORTB.0 ;Sluit de DS1820 temperatuur sensor aan op deze poort
;Variabele declareren
;BYTE
Dim Temperatuur As Byte ;Bevat de factor 2 van de temperatuur Celsius
Clear ;Wis RAM geheugen
DelayMS 500 ;LCD stabilisatie
;Hoofdprogramma
Cls ;Wis LCD scherm
While 1 = 1
OWrite DS1820, 1, [SkipROM, Convert] ;Zend 'Convert' opdracht (temperatuur meten)
OWrite DS1820, 1, [SkipROM, RdScratchPad] ;Zend 'Read ScratchPad' opdracht
ORead DS1820, 2, [Temperatuur] ;Lees temperatuur en plaats dit in de variabele
Print At 1, 1, Dec Temperatuur / 2, ".", DEC1 (Temperatuur // 2) * 5, Graad, "C "
Wend