Digital thermometer with LM35 and PIC16F88
Temperature range - 0 to 150'C
Display type - 3 digit multiplexed 7 segment or 3 individual 7 segments
Controller: PIC16F88
Programming Language: BASIC
Compiler: mikroBASIC PRO for PIC v3.20
Complete code:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
program DigThermo
'Programmer: Syed Tahmid Mahbub
'Compiler: mikroBASIC PRO for PIC v3.20
'Target PIC: 16F88 - 18pin DIP
'Configuration: XT OSC, PWRTE OFF, WDT OFF, RA5 - MCLR OFF, BOR OFF, LVP OFF, CP OFF, CPD OFF, DEBUG OFF, CKMNE OFF, INTEXTSW OFF
dim data7, num7 as byte
dim temperature as longword
dim digit as byte[3]
sub procedure send7 (dim value, seven as byte) 'Common Anode Displays (2 7segments)
PORTA = 0
select case value
case 0 data7 = $C0
case 1 data7 = $F9
case 2 data7 = $A4
case 3 data7 = $B0
case 4 data7 = $99
case 5 data7 = $92
case 6 data7 = $82
case 7 data7 = $F8
case 8 data7 = $80
case 9 data7 = $90
end select
PORTB = data7 'send temperature
select case seven
case 1 num7 = 2
case 2 num7 = 4
case 3 num7 = 8
end select
PORTA = num7 'choose which 7segment
end sub
sub procedure GlobInit
TRISA = 1
TRISB = 0
PORTA = 0
PORTB = 0
ANSEL = 1 'AN0 analog
CCP1CON = 0 'PWM off
CMCON = 7 'Comparator off
end sub
sub procedure delay2ms
delay_ms(2)
end sub
main:
GlobInit
while true
temperature = (ADC_Read(0) * 500) >> 10
digit[0] = temperature div 100
digit[1] = (temperature div 10) mod 10
digit[2] = temperature mod 10
send7(digit[0],1)
delay2ms()
send7(digit[1],2)
delay2ms()
send7(digit[2],3)
delay2ms()
wend
end.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Schematic:
The code can be freely used and there is no copyright restrictions or anything as such. Only credit the author where necessary.
Hex file can be freely downloaded from:
http://www.4shared.com/file/o-OBjgGB/DigThermo.html
Comments
Post a Comment