\'--------------------------DEFINICIÓN DE REGISTROS PARA EL LCD
DEFINE OSC 4
DEFINE LCD_DREG PORTD \'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS
DEFINE LCD_DBIT 4 \'DESDE EL BIT B.4 AL BIT B.7
DEFINE LCD_RSREG PORTD\'UTILIZAR EL REGISTRO DE CONTROL/DATOS EN EL PUERTO D
DEFINE LCD_RSBIT 1 \'EN EL BIT B.1
DEFINE LCD_EREG PORTD \'UTILIZAR EL ENABLE EN EL PUERTO B
DEFINE LCD_EBIT 3 \'EN EL BIT B.2
define LCD_RWREG PORTD
DEFINE LCD_RWBIT 2
DEFINE LCD_LINES 2 \'Número de líneas del LCD
PAUSE 500 \' PAUSA DE INICIALIZACIÓN DEL LCD
;---------------------- PARÁMETROS DEL ADC
DEFINE ADC_BITS 12 ; NÚMERO DE BITS
DEFINE ADC_CLOCK 3 ; USAR CLOCK INTERNO DEL AD
DEFINE ADC_SAMPLEUS 50 ; TIEMPO DE MUESTREO EN 50US
;------------------------- VARIABLES
RES VAR WORD ; RESULTADO DE LA CONVERSIÓN
VAL VAR WORD \'RESULTADO DE LA OPERACION MATEMATICA
VENTILADOR VAR PORTE.0
CALEFACTOR VAR PORTE.1
LED VAR PORTE.2
TEMP1 VAR byte ; TEMPERATURA C GRADOS VARIABLE
SI CON 1:NO CON 0 \'VARIABLE CONDICION DE BIT
B0 VAR BYTE :B1 VAR BYTE :A0 VAR BYTE :A1 VAR BYTE
CANAL var BYTE \'Nombre de la variable
LINEA VAR BYTE \'Nombre de la variable
CONTADOR VAR BYTE \'Nombre de la variable
RESTO VAR BYTE \'Nombre de la variable
MARCA1 VAR BIT
\'-----------------------CONFIGURACION DE PUERTO
TRISA = %000011 ; RA0 (AN0) COMO ENTRADA Y DEMAS COMO SALIDA
TRISE = %000
PORTE = $000
; -----------------------INICIAR CONVERSIÓN A/D
ADCON1 = %10000010;%10001110 ; ESTABLECER SOLO UN CANAL COMO ANALÓGICO
;------------------- VOLTAJE DE REFERENCIA ES VDD
ADCON0 = %11000001 ; RELOJ DEL A/D, SELECCIONA CANAL AN0
; --------------------INICIAR EL A/D
;GRABAR EN CGRAM DEL LCD
\'----------------------------------PANTALLA DE INICIO
\'MOSTRAR LETRA POR LETRA
LCDOUT $FE, 1,$10 \' LIMPIAR LCD
FOR B0 = 0 TO 9 \'CUANTOS IGUITOS APARECERAN
LOOKUP B0,["Incubadora"],B1
LCDOUT $FE,$0C,B1
PAUSE 100 \'TIEMPO DE DELETREO DEL CURSOR
NEXT
PAUSE 300
LCDOUT $FE, $C0,$10 \'COLOCAR EL CURSOR EN LA SEG LÍNEA
FOR B0 = 0 TO 10
LOOKUP B0,["Por Jose Antonio"],B1
LCDOUT $FE,$0C,B1
PAUSE 100
NEXT
PAUSE 300
LCDOUT 254,1
\'-----------------------------------COMIENZA PROGRAMA
GRAF1:
LCDOUT 254,64, 0 ,16 ,16, 16 ,16 ,16 ,16 ,0 \'cgram posición 0
LCDOUT 254,72, 0 ,24 ,24, 24 ,24 ,24 ,24 ,0 \'cgram posición 1
LCDOUT 254,80, 0 ,28 ,28, 28 ,28 ,28 ,28 ,0 \'cgram posición 2
LCDOUT 254,88, 0 ,30 ,30, 30 ,30 ,30 ,30 ,0 \'cgram posición 3
LCDOUT 254,96, 0 ,31 ,31, 31 ,31 ,31 ,31 ,0 \'cgram posición 4
LCDOUT 254,104, 4,14,31,0,4,14,31 \'cgram posición 5
LCDOUT 254,112, 31,14,4,0,31,14,4 \'cgram posición 6
LCDOUT 254,120, 4,6,7,4,4,31,14 \'cgram posición 7
PAUSE 300
INICIO
\'*******************************************************************************
IF MARCA1 = 1 THEN \'Si es verdadero
LINEA = $2 : ADCIN 0, CANAL : MARCA1 = 0 \'1ºLinea LCD, muestra canal L
ELSE \'Si no lo es
LINEA = $c0: ADCIN 1, CANAL : MARCA1 = 1 \'2ºLinea LCD, muestra canal R
ENDIF
\'*******************************************************************************
RESTO = (CANAL // 5) \'Operación restó de la división
LCDOUT $FE,LINEA \'Inicia la escritura en el LCD
FOR CONTADOR = 1 TO (CANAL / 5) \'Cuenta hacia delante
LCDOUT 4 \'Imprime cgram posición 4
NEXT CONTADOR \'Regresa a CONTADOR
IF RESTO = 1 THEN LCDOUT 0 \'Imprime cgram posición 0
IF RESTO = 2 THEN LCDOUT 1 \'Imprime cgram posición 1
IF RESTO = 3 THEN LCDOUT 2 \'Imprime cgram posición 2
IF RESTO = 4 THEN LCDOUT 3 \'Imprime cgram posición 3
LCDOUT 20, 20, 20 \'Borrado de 3 caracteres
\'*******************************************************************************
ADCIN 0, RES ; LEER EL CANAL A0
TEMP1 = 48828 * RES ; 48828 ES VOLTAJE POR BIT
VAL = DIV32 1000 \' DIVIDIDO POR 1000
\'LCDOUT $FE,$C0,5,6,"TEMP",$10,DEC VAL DIG 3,DEC VAL DIG 2,".",DEC VAL DIG 1, DEC VAL DIG 0,0,"C " \'MOSTRAMOS EL VALOR EN LCD
IF VAL <=3800 THEN CALENTAR \'SI TEMPERATURA ES MENOR O IGUAL A 38.00 ° SE VA A CALENTAR
IF VAL >=4000 Then ENFRIAR \'SI TEMPERATURA ES MAYOR O IGULA A 40.00 ° SE VA A ENFRIAR
\'---------------------SI NO CUMPLE LAS CONDICIONES ANTERIORES SIGUE A NORMAL
LCDOUT $FE,$C0,7,"Temp:",$10,DEC VAL DIG 3,DEC VAL DIG 2,".",DEC VAL DIG 1, DEC VAL DIG 0,223,"C " :VENTILADOR=NO :CALEFACTOR=NO :LED=SI
GOTO INICIO \'COMIENZA TODO
CALENTAR
CALEFACTOR=SI:LED=NO:VENTILADOR=NO : LCDOUT $FE,$C0,5,"Temp:",$10,DEC VAL DIG 3,DEC VAL DIG 2,".",DEC VAL DIG 1, DEC VAL DIG 0,223,"C "
GOTO INICIO \'REGRESA A INICIO
ENFRIAR
VENTILADOR=SI:LED=NO:CALEFACTOR=NO :LCDOUT $FE,$C0,6,"Temp:",$10,DEC VAL DIG 3,DEC VAL DIG 2,".",DEC VAL DIG 1, DEC VAL DIG 0,223,"C "
GOTO INICIO \' COMIENZA INICIO
END