Saludos. Soy nuevo aquí y en la electrónica.
Tengo un código para hacer un termómetro con el LM35 y un PIC16F88
El caso es, que tengo todo bien pero quisiera incluir un detalle, y es que necesito poner un delay al adc para evitar el salto de un grado a otro tan rápido que se pueda ver un parpadeo que de una lectura errónea.
Estoy usando mikroBasic Pro for PIC y el código lo encontré en Internet.
Tengo un código para hacer un termómetro con el LM35 y un PIC16F88
El caso es, que tengo todo bien pero quisiera incluir un detalle, y es que necesito poner un delay al adc para evitar el salto de un grado a otro tan rápido que se pueda ver un parpadeo que de una lectura errónea.
Estoy usando mikroBasic Pro for PIC y el código lo encontré en Internet.
PHP:
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
Última edición por un moderador: