It shows time, inside and outside temperature. Brain for the clock is axe200 module that controls ds1307 rtc and 3 saa1064 chips. I`m not going in details because ho is skilled enough to solder smd will figure it out.

Here is some pictures:

Picture 1 Picture 2 Picture 3 Picture 4

And code:

Code:

```
#picaxe 28x2
#no_data
#no_table
#terminal off
symbol clock=$70
symbol in=$74
symbol out=$76
symbol ds1307=$D0
symbol outsensor=c.6
symbol insensor=c.5
symbol hourplus=pinb.7
symbol minuteplus=pinb.6
symbol minute=b1
symbol minute2=b2
symbol hour=b3
symbol nr1=b4
symbol nr2=b5
symbol nr3=b6
symbol nr4=b7
symbol temp=w4
symbol temp2=w6
init:
i2cslave clock,i2cslow,i2cbyte
hi2cout $00,($1F)
i2cslave in,i2cslow,i2cbyte
hi2cout $00,($1F)
i2cslave out,i2cslow,i2cbyte
hi2cout $00,($1F)
wait 2
readtemp12 outsensor,temp
gosub tempconvert
i2cslave out,i2cslow,i2cbyte
hi2cout $00,($17,nr1,nr2,nr3,$80)
readtemp12 insensor,temp
gosub tempconvert
i2cslave in,i2cslow,i2cbyte
hi2cout $00,($17,nr1,nr2,nr3,$80)
i2cslave ds1307,i2cfast, i2cbyte
hi2cout $07, (%00010000)
hi2cin $01,(minute,hour)
nr1=hour/16:nr2=hour AND $0F
nr3=minute/16:nr4=minute AND $0F
gosub clocknr
i2cslave clock, i2cslow, i2cbyte
hi2cout $00, ($17,nr1,nr2,nr3,nr4)
Main:
i2cslave ds1307,i2cfast, i2cbyte
hi2cin $01,(minute,hour)
nr1=hour/16:nr2=hour AND $0F
nr3=minute/16:nr4=minute AND $0F
if hourplus=1 then gosub hourset
if minuteplus=1 then gosub minuteset
pause 500
minute=nr3*10+nr4
if minute2=minute then main
minute2=minute
gosub clocknr
i2cslave clock, i2cslow, i2cbyte
hi2cout $00, ($17,nr1,nr2,nr3,nr4)
readtemp12 outsensor,temp
gosub tempconvert
i2cslave out,i2cslow,i2cbyte
hi2cout $00,($17,nr1,nr2,nr3,$80)
readtemp12 insensor,temp
gosub tempconvert
i2cslave in,i2cslow,i2cbyte
hi2cout $00,($17,nr1,nr2,nr3,$80)
goto main
minuteset:
minute=minute+1
if minute =10 then : minute = Minute+6
elseif minute =26 then : minute = Minute+6
elseif minute =42 then : minute = Minute+6
elseif minute =58 then : minute = Minute+6
elseif minute =74 then : minute = Minute+6
elseif minute = 90 then : minute = 0
endif
i2cslave ds1307,i2cfast, i2cbyte
hi2cout $01, (minute)
hi2cin $01,(minute,hour)
nr1=hour/16:nr2=hour AND $0F
nr3=minute/16:nr4=minute AND $0F
gosub clocknr
i2cslave clock, i2cslow, i2cbyte
hi2cout $00, ($17,nr1,nr2,nr3,nr4)
pause 500
if minuteplus=1 then minuteset
return
hourset:
hour=hour+1
if hour=10 then : hour = hour + 6
elseif hour=26 then : hour = hour + 6
elseif hour=36 then : hour = 0
endif
i2cslave ds1307,i2cfast, i2cbyte
hi2cout $02, (hour)
hi2cin $01,(minute,hour)
nr1=hour/16:nr2=hour AND $0F
nr3=minute/16:nr4=minute AND $0F
gosub clocknr
i2cslave clock, i2cslow, i2cbyte
hi2cout $00, ($17,nr1,nr2,nr3,nr4)
pause 500
if hourplus=1 then hourset
return
tempconvert:
temp2=temp
if temp> 2048 then gosub negative
if temp<=2048 then gosub positive
return
positive:
let temp2=temp2*10/16
let nr1=temp2/ 100
let nr2=temp2//100 / 10
let nr3=temp2// 10
lookup nr1,($0,$3,$5D,$57,$33,$76,$7E,$43,$7F,$77),nr1
lookup nr2,($6F,$3,$5D,$57,$33,$76,$7E,$43,$7F,$77),nr2
lookup nr3,($EF,$A8,$F6,$FC,$B9,$DD,$DF,$E8,$FF,$FD),nr3
return
negative:
temp2= INV temp2
temp2= temp2 AND 4095 + 1
let temp2=temp2*10/16
if temp2=255 then : temp2=0
endif
let nr1 =temp2 / 100
let nr2 =temp2//100 / 10
let nr3 =temp2 // 10
lookup nr1,($80,$83,$DD,$D7,$B3,$F6,$FE,$C3,$FF,$F7),nr1
lookup nr2,($6F,$3,$5D,$57,$33,$76,$7E,$43,$7F,$77),nr2
lookup nr3,($EF,$A8,$F6,$FC,$B9,$DD,$DF,$E8,$FF,$FD),nr3
if temp2<100 then : nr1=$10
endif
return
clocknr:
lookup nr1,($0,$14,$6E),nr1
lookup nr2,($77,$14,$6E,$3E,$1D,$3B,$7B,$16,$7F,$3F),nr2
lookup nr3,($77,$41,$3B,$6B,$4D,$6E),nr3
lookup nr4,($77,$41,$3B,$6B,$4D,$6E,$7E,$43,$7F,$6F),nr4
return
```