'version 2.D AXE132 8Bit marks via picaxe forum
'modified 10/7/2016 by rq3 to autoadjust display width
'for number of digits
#PICAXE 18M2
#NO_DATA
SETFREQ M32
dirsB = %11111111
dirsC = %11001111
SYMBOL Rx=C.5
SYMBOL E=C.6
SYMBOL RS=C.7
SYMBOL DS18B20 = C.0
SYMBOL senddata=pinsb
SYMBOL index=b0
SYMBOL Temperature=w1
SYMBOL TempMsb=b3
SYMBOL TempLsb=b2
SYMBOL T=w2
SYMBOL Sign=b9
SYMBOL D0=b10
SYMBOL D1=b11
SYMBOL D2=b12
SYMBOL D3=b13
SYMBOL D4=b14
Initialise:
FOR index = 0 to 6
LOOKUP index, ($38,$38,$38,$0C,$01,$02,$06),senddata : PULSOUT E,1 ' Initialise LCD/OLED
'(8bit/2line/5x8)*3(Display On/flashing Cursor)(Clear Display)(Return Home)(Entry Mode Set)
NEXT index
PAUSE 10
Main:
ConvertTemperatureC:
ReadTEMP12 DS18B20,T
Temperature=T
Sign="+" ' Display +
IF TempMsb>127 THEN
Sign="-" ' Display -
Temperature = -Temperature
ENDIF
Temperature=Temperature*8**51200+5 ' Celsius(-55.0C to 125.0C)rounded up
BinTOASCII Temperature,D4,D3,D2,D1,D0
IF D4="0" THEN:D4=" " ' leading zero blanking
IF D3="0" THEN:D3=" " ' leading zero blanking
ENDIF
ENDIF
DisplayTemperatureC:
LOW RS:senddata=128:PULSOUT E,1 ' commandmode (128-147) Line 1 Cursor Position
HIGH RS ' charactermode
FOR index=0 TO 7
IF D3=" " AND D4=" " THEN
LOOKUP index,(Sign,D2,".",D1,223,"C",32,32),senddata
ELSEIF D4=" " THEN
LOOKUP index,(Sign,D3,D2,".",D1,223,"C",32),senddata
ELSE
LOOKUP index,(Sign,D4,D3,D2,".",D1,223,"C"),senddata
ENDIF
PULSOUT E,1 ' sending characters
NEXT index
ConvertTemperatureF:
Temperature=T
Sign="+" ' Display +
Temperature=Temperature+880*16**46080-6700 ' Fahrenheit(-67.0F to 257.0F)rounded up
IF TempMsb>127 THEN
Sign="-" ' Display -
Temperature=-Temperature
ENDIF
Temperature=Temperature+5
BinTOASCII Temperature,D4,D3,D2,D1,D0
IF D4="0" THEN:D4=" " ' leading zero blanking
IF D3="0" THEN:D3=" " ' leading zero blanking
ENDIF
ENDIF
DisplayTemperatureF:
HIGH RS ' charactermode
FOR index=0 TO 7
IF D3=" " AND D4=" " THEN
LOOKUP index,(32,32,Sign,D2,".",D1,223,"F"),senddata
ELSEIF D4=" " THEN
LOOKUP index,(32,Sign,D3,D2,".",D1,223,"F"),senddata
ELSE
LOOKUP index,(Sign,D4,D3,D2,".",D1,223,"F"),senddata
ENDIF
PULSOUT E,1 ' sending characters
NEXT index
GOTO main