Hola, Estoy haciendo un sensor de temperatura usando el LM335 con el Pic16F777, mi codigo de proton es el siguiente:
Device 16F777
Declare XTAL 4
Declare ADIN_RES 10 ' 10-bit
Declare ADIN_TAD 8_FOSC ' Reloj del ADC
Declare ADIN_STIME 50 ' Allow 50us sample time
Declare LCD_TYPE 0 ' LCD Alphanumerico
Declare LCD_DTPIN PORTB.4 ' Se usa PortB B4,B5,B6,B7
Declare LCD_RSPIN PORTB.2 ' RS en B2
Declare LCD_ENPIN PORTB.3 ' Enable en pin B3
Declare LCD_INTERFACE 4 ' Interface de 4 bit
Dim ADC_Result As Float
Dim ADC_Total As Float
Dim Temp_Float As Float
Dim ADC_Channel As Byte
Dim ADC_Loops As Word
Dim Temp As Word
Dim Last_Result1 As Float
Dim Last_Result2 As Float
ADCON1 = %10000000 ' Poner en Analogo todas las entradas (PORTA)
TRISA = $FF ' Declarar porta como entradas
DelayMS 150
Cls
Print $FE,$40,$07,$05,$07,$00,$00,$00,$00,$00 ' Caracter para Grados
ADC_Loops = 200
Main:
ADC_Channel = 1 ' ADC en el primer canal o referencia
GoSub ADC_Average ' Avarage para mejor presicion
Temp_Float = ADC_Result ' Guarda el resultado
ADC_Channel = 0 ' ADC en el segundo canal
GoSub ADC_Average ' Avarage para mejor presicion
ADC_Result = ADC_Result * 5000 / 1023 ' Convierte valores en Volts (en escala de 1000)
Temp_Float = Temp_Float * 5000 / 1023 ' Reduce errores decimales
ADC_Result = ADC_Result - Temp_Float ' Calcula la diferencia
ADC_Result = ADC_Result / 10 ' Escala 10mV = 1 Deg C
If ADC_Result <> Last_Result1 Then ' Verifica si cambian los valores
Print At 1,1, DEC1 ADC_Result, 0, "F " ' Actualiza el Display si los valores cambiaron
Last_Result1 = ADC_Result ' Nuevo valor para el Display
EndIf
GoTo Main ' Loop
ADC_Average: ' Perform an averaging on ADC conversions
' to reduce errors
ADC_Total = 0 ' Clear summing register
For Temp = 1 To ADC_Loops ' Loop for a pre-determined number of times
ADC_Result = ADIn ADC_Channel ' Grab a new ADC value
ADC_Total = ADC_Total + ADC_Result ' Sum it to the total register
DelayUS 1 ' Allow internal capacitors to discharge
Next Temp
ADC_Result = ADC_Total / ADC_Loops ' Determin the average of all the equations
Return
Mi problema es que al momento de mostrar los datos en el Display no me muestra nada, no se si tenga problemas en convertir los datos analogos a digital, porfavor si alguien me puede ayudar a solucionar el problema seria de enorme ayuda.
Por cierto ya hice la simulacion en Proteus y ahi si me muestra todo bien es al momento de hacerlo fisico cuando no me funciona bien el display, el archivo adjunto es una foto de mi simulacion en ISIS.
Gracias por cualquier cosa