Hola de nuevo. Estoy haciendo un proyecto con el 16F88 para medir la temperatura con el DS18D20 y mostrarlo en un LCD, pero no funciona el sensor de temperatura, el display se enciende y muestra en pantalla 0,00 C y 32.00 F. Creo que lo que tengo mal es la configuracion del conversor AD. Como no lo tenia muy claro puse la configuracion de otro proyecto que media voltage.
¿Alguien sabe como se configura?
#CONFIG
ifdef PM_USED
device pic16F88, xt_osc, wdt_on, lvp_off, protect_off
else
__config _CONFIG1, _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
endif
#ENDCONFIG
Define Osc 4
cmcon = 7 'desactiva los comparadores
INCLUDE "MODEDEFS.BAS" 'si no pones esta linea no admite el termino de Serin
temperatura var word
count_remain var byte
count_per_c var byte
DQ var PORTA.1 'DS18B20
'Define el LCD
DEFINE LCD_DREG PORTB ' Indica que el Bus de datos estará conectado en el Puerto B.
DEFINE LCD_DBIT 0 ' Selección del Bit de inicio del puerto en el uC para el bus de datos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin “RS” estará en el Puerto B
DEFINE LCD_RSBIT 5 ' “RS” estará conectado en RB5
DEFINE LCD_EREG PORTB ' Indica al uC que el pin “E” estará en el Puerto B
DEFINE LCD_EBIT 4 ' “E” estará conectado en RB4
DEFINE LCD_BITS 4 'El bus de datos de la LCD será de cuatro bits.
DEFINE LCD_LINES 2 'LCD de dos lineas
'Define el conversor analogico digital
DEFINE ADC_BITS 10 'A/D number of bits
DEFINE ADC_CLOCK 3 'Use A/D internal RC clock
DEFINE ADC_SAMPLEUS 50 'Set sampling time in us
ANSEL = %000010 'configura la entrada A1 como analogica
ADCON0 = %11000001 'Activar modulo ADC y bits de selección de reloj de conversión
ADCON1 = %10000000 'Justificación a la derecha para 10 bits de resolución
'los RA 43210
TRISA = %00010 ' Configuración del Puerto A
'Los RB 76543210
TRISB = %00000000 'Configuración del Puerto B
PORTA = 0 ' Inicializa el puerto "A"
PORTB = 0 ' Inicializa el puerto "B"
inicio:
pause 100 'Tiempo de espera para reiniciar el display
owout DQ, 1, [$CC, $44]'inicia la conversion de temperatura
pause 2000
owout DQ, 1, [$CC, $BE]'lee la temperatura
owin DQ, 0, [temperatura.LOWBYTE, temperatura.HIGHBYTE]
temperatura= temperatura */1600 'calcula la temperatura en grados C 2 decimales. No validos
lcdout $fe, 1 , dec (temperatura/100), ".", DEC2 temperatura, "C" 'para temperatura negativa
temperatura = (temperatura */461) + 3200
lcdout $fe, $c0, dec (temperatura /100), ".", DEC2 temperatura, "F"
goto inicio