There are lot of temperature sensors both with analog & digital outputs. This project gives you an another temperature indicator which has been done with a digital sensor SMT160.
Although it is a digital sensor it does not gives out the temperature directly. The output is duty cycled modulated. The sensor can measure temperature from -45deg to +150deg.
The output duty cycle is D.C. = 0.320+0.00470 x t, here t is the temperature.
Therefore Temperature T = Dc / 0.0047
Bascom Code
ββββββββββββmainββββββββββββββ-
$regfile = βm8def.datβ
$crystal = 1000000
βββββββββββ-lcdβββββββββββββββ
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Pinc.5 , E = Pinc.4 , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1 , Db7 = Pinc.0
ββββββββββββdimββββββββββββββ-
Dim avr_reset As Word
Dim Avr_set As Word
Dim Temp As Single
Dim Duty As Single
Dim X As Integer
βββββββββββββββββββββββββββ-
Config Timer1 = Timer , Prescale = 1
Enable Timer1
ββββββββββββmainββββββββββββββ
Config Pinb.2 = Input
βββββββββββββββββββββββββββ
Cursor Off
Cls
Locate 1 , 5
Lcd βHelloβ
Locate 2 , 1
Lcd βavrprojects.infoβ
Wait 2
Cls
Smt160:
Do
Gosub Read_data_sm160
Locate 1 , 1
Lcd βT= β ; Temp ; βcΒ Β Β β;
Wait 1
Loop
βββββββββββββββββββββββββββ-
Read_data_sm160:
Bitwait Pinb.2 , Set
Bitwait Pinb.2 , Reset
Bitwait Pinb.2 , Set
Bitwait Pinb.2 , Reset
Bitwait Pinb.2 , Set
Bitwait Pinb.2 , Reset
Stop Timer1
Bitwait Pinb.2 , Set
Timer1 = 0
Start Timer1
Bitwait Pinb.2 , Reset
βXl = Timer1
avr_set = Timer1
Timer1 = 0
Start Timer1
Bitwait Pinb.2 , Set
βXf = Timer1
Avr_reset = Timer1
X = Avr_set + Avr_reset
Duty = Avr_set / X
Duty = Duty β 0.32
Waitms 1
Temp = Duty / 0.0047
Waitms 1
Locate 1 , 1
Temp = Round(temp)
Stop Timer1
Return
For more Detail: SMT160 based Temperature indicator