#rem
2 Dig Temperature Guage using TLC59116
Driving common anode twin 7 seg display
Uses DS18B20 as temp sensor
Version 1.0, January 2015
Right Digit
hi2cout $02,($XX) 'DP
hi2cout $03,($XX) 'C
hi2cout $04,($XX) 'D
hi2cout $05,($XX) 'E
hi2cout $0e,($XX) 'G
hi2cout $0f,($XX) 'F
hi2cout $10,($XX) 'A
hi2cout $11,($XX) 'B
Left Digit
hi2cout $06,($XX) 'DP
hi2cout $07,($XX) 'C
hi2cout $08,($XX) 'D
hi2cout $09,($XX) 'E
hi2cout $0a,($XX) 'G
hi2cout $0b,($XX) 'F
hi2cout $0c,($XX) 'A
hi2cout $0d,($XX) 'B
($00) is LED off, (&FF) is LED max brightness
I use ($7f) to reduce current & heat
-A-
| |
F B
| |
-G-
| |
E C
| |
-D- DP
BASEADDR 1100000X (C0)
LED ALL CALL 1101000X (D0) (enabled at power up)
SUB ADD 1 1101001X (D2)
SUB ADD 2 1101010X (D4)
SUB ADD 3 1101100X (D8)
X = R/W 1 read, 0 write
#endrem
#picaxe 08m2
#no_data
#terminal 4800
symbol temp = w0
symbol adjtemp = w1
symbol sensor = C.4
Init:
pause 1000
hi2csetup i2cmaster,$d0,i2cslow,i2cbyte 'LED all call address (datasheet says not to use this for general comms)
hi2cout $00,($08) 'enable OSC & sub address 1 ($d2)
pause 100
hi2csetup i2cmaster,$d2,i2cslow,i2cbyte 'sub address 1
hi2cout $14,($ff) 'LED output driver 0 state enable (led 0-3)
hi2cout $15,($ff) 'LED output driver 1 state enable (led 4-7)
hi2cout $16,($ff) 'LED output driver 2 state enable (led 8-11)
hi2cout $17,($ff) 'LED output driver 3 state enable (led 12-15)
Main:
do
readtemp12 sensor, temp
if temp = 0 then gosub Fail
if temp > 2048 then goto Negative
adjtemp = temp * 10 / 16
bintoascii adjtemp,b23,b24,b25,b26,b27
if b24 > 48 then hi2cout $02,($7f) hi2cout $06,($7f) endif 'if temp over 99 light up DP's
if b24 = 48 then hi2cout $02,($00) hi2cout $06,($00) endif
gosub Rdig
gosub Ldig
sertxd (43,b24,b25,b26,".",b27,13,10)
loop
Fail: 'display FF if sensor not responding
do
hi2cout $0c,($7f) hi2cout $0d,($00) hi2cout $07,($00) hi2cout $08,($00) hi2cout $09,($7f) hi2cout $0b,($7f) hi2cout $0a,($7f)
hi2cout $10,($7f) hi2cout $11,($00) hi2cout $03,($00) hi2cout $04,($00) hi2cout $05,($7f) hi2cout $0f,($7f) hi2cout $0e,($7f)
sertxd ("fail",13,10)
pause 1000
readtemp12 sensor, temp
if temp <> 0 then
return
endif
loop
Negative: 'if temp is below -9 display "- -"
if temp >= 3195 then
hi2cout $0c,($00) hi2cout $0d,($00) hi2cout $07,($00) hi2cout $08,($00) hi2cout $09,($00) hi2cout $0b,($00) hi2cout $0a,($7f)
hi2cout $10,($00) hi2cout $11,($00) hi2cout $03,($00) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($00) hi2cout $0e,($7f)
sertxd("-9.9 or lower",13,10)
goto main
endif
'display temps down to -9
let temp = - temp 'two's compliment
adjtemp = temp * 10 / 16
bintoascii adjtemp,b23,b24,b25,b26,b27
'left digit -
hi2cout $0c,($00) hi2cout $0d,($00) hi2cout $07,($00) hi2cout $08,($00) hi2cout $09,($00) hi2cout $0b,($00) hi2cout $0a,($7f)
'right digit
select case b26
case 49 hi2cout $10,($00) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($00) hi2cout $0e,($00)
case 50 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($00) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($00) hi2cout $0e,($7f)
case 51 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($00) hi2cout $0f,($00) hi2cout $0e,($7f)
case 52 hi2cout $10,($00) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 53 hi2cout $10,($7f) hi2cout $11,($00) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($00) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 54 hi2cout $10,($7f) hi2cout $11,($00) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 55 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($00) hi2cout $0e,($00)
case 56 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 57 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 48 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($7f) hi2cout $0e,($00)
end select
sertxd (45,b25,b26,".",b27,13,10)
goto main
Rdig: 'right digit
select case b26
case 49 hi2cout $10,($00) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($00) hi2cout $0e,($00)
case 50 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($00) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($00) hi2cout $0e,($7f)
case 51 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($00) hi2cout $0f,($00) hi2cout $0e,($7f)
case 52 hi2cout $10,($00) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 53 hi2cout $10,($7f) hi2cout $11,($00) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($00) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 54 hi2cout $10,($7f) hi2cout $11,($00) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 55 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($00) hi2cout $0e,($00)
case 56 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 57 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($00) hi2cout $05,($00) hi2cout $0f,($7f) hi2cout $0e,($7f)
case 48 hi2cout $10,($7f) hi2cout $11,($7f) hi2cout $03,($7f) hi2cout $04,($7f) hi2cout $05,($7f) hi2cout $0f,($7f) hi2cout $0e,($00)
end select
return
Ldig: 'left digit
select case b25
case 49 hi2cout $0c,($00) hi2cout $0d,($7f) hi2cout $07,($7f) hi2cout $08,($00) hi2cout $09,($00) hi2cout $0b,($00) hi2cout $0a,($00)
case 50 hi2cout $0c,($7f) hi2cout $0d,($7f) hi2cout $07,($00) hi2cout $08,($7f) hi2cout $09,($7f) hi2cout $0b,($00) hi2cout $0a,($7f)
case 51 hi2cout $0c,($7f) hi2cout $0d,($7f) hi2cout $07,($7f) hi2cout $08,($7f) hi2cout $09,($00) hi2cout $0b,($00) hi2cout $0a,($7f)
case 52 hi2cout $0c,($00) hi2cout $0d,($7f) hi2cout $07,($7f) hi2cout $08,($00) hi2cout $09,($00) hi2cout $0b,($7f) hi2cout $0a,($7f)
case 53 hi2cout $0c,($7f) hi2cout $0d,($00) hi2cout $07,($7f) hi2cout $08,($7f) hi2cout $09,($00) hi2cout $0b,($7f) hi2cout $0a,($7f)
case 54 hi2cout $0c,($7f) hi2cout $0d,($00) hi2cout $07,($7f) hi2cout $08,($7f) hi2cout $09,($7f) hi2cout $0b,($7f) hi2cout $0a,($7f)
case 55 hi2cout $0c,($7f) hi2cout $0d,($7f) hi2cout $07,($7f) hi2cout $08,($00) hi2cout $09,($00) hi2cout $0b,($00) hi2cout $0a,($00)
case 56 hi2cout $0c,($7f) hi2cout $0d,($7f) hi2cout $07,($7f) hi2cout $08,($7f) hi2cout $09,($7f) hi2cout $0b,($7f) hi2cout $0a,($7f)
case 57 hi2cout $0c,($7f) hi2cout $0d,($7f) hi2cout $07,($7f) hi2cout $08,($00) hi2cout $09,($00) hi2cout $0b,($7f) hi2cout $0a,($7f)
case 48 hi2cout $0c,($7f) hi2cout $0d,($7f) hi2cout $07,($7f) hi2cout $08,($7f) hi2cout $09,($7f) hi2cout $0b,($7f) hi2cout $0a,($00)
end select
return