Hola amigos esta vez haremos uso de 3 conversores analogicos del pic16f877a de los 8 que posee este pic, de sensor emplearemos 3 lm35 en cada entrada en Ra0 Ra1 y Ra3 y para mostrar el resultado empleamos un LCD de 2*16
;EL PROGRAMA
DEFINE LCD_DREG PORTB ;bit de datos del LCD empezando
DEFINE LCD_DBIT 0 ;por B.0, B.1, B.2 y B.3DEFINE LCD_RSREG PORTB ;bit de registro del LCD conectar
DEFINE LCD_RSBIT 5 ;en el puerto B.5
DEFINE LCD_EREG PORTB ;bit de Enable conectar en el
DEFINE LCD_EBIT 4 ;puerto B.4
s1 VAR BYTE ;variable para almacenar sensor1
s2 VAR BYTE ;variable para almacenar sensor2
s3 VAR BYTE ;variable para almacenar sensor3
ADCON1 =%100 ;configura PortA 0,1, 3 en conversores A/D
Inicio:
PAUSE 300
medicion1:
ADCON0 =%1000001 ;activar canal 0 a Fosc/8
GOSUB medir
s1= ADRESH
medicion2:
ADCON0 =%1001001 ;activar canal 1 a Fosc/8
GOSUB medir
s2= ADRESH
medicion3:
ADCON0 =%1011001 ;activar canal 3 a Fosc/8
GOSUB medir
s3= ADRESH
LCDOUT $fe, 1," T1 T2 T3" ;limpiar LCD y sacar texto
LCDOUT $fe,$c1,#s1 ;casilla 1 el valor decimal de s1
LCDOUT $fe,$c6,#s2 ;casilla 7 el valor decimal de s2
LCDOUT $fe,$cb,#s3 ;casilla 12 el valor decimal de s3
GOTO inicio
medir: ;subrutina para leer el conversor A/D
PAUSEUS 50 ;pausa para setear el canal
ADCON0.2 = 1 ;iniciar conversión
PAUSEUS 50 ;pausa para la conversión
RETURN ;retornar al GOSUB que lo envió
END
funciona bien gracias.
ResponderEliminaroye que onda lo ocupo en mplab y no me funciona debo cambiar algo o agregar algo mas?
ResponderEliminarPara compilarlo (crear el archivo HEX.) lo tienes que hacer con el microcode studio que es un compilador para picbasic, el mplab es para compilar progemas en asembler
ResponderEliminarOies enbes de darme la temperatura q aparece en el LM35, me aparece pero la mitad
ResponderEliminarmejor lo pruebas en protoboard, por que simulandolo no creoq q te de el resultado exacto.
ResponderEliminarHola me gustaria probarlo en el proto, pero tengo una duda, es necesario crear la rutina de inicializacion para la lcd. Es que se me hace tan facil que no puedo creer que valla a funcionar. ¿Apoco con solo estas instrucciones funciona realmente en un pic real?
ResponderEliminarEsa es la ventaja de usar lenguajes para pics avanzados,las rutinas de inicializacion de lcds ya estan inmersas dentro del mismo lenguaje picbasic, si no crees prueba o simulalos y convencete.
ResponderEliminarespero que leas esto funcionara con un 16f887 que es basicamente lo mismo que el 77a pero sin ocilador externo ?
ResponderEliminarEl pic16f877a no tiene oscilador interno por eso usa el cristal externo, ahora si el pic16f887 tiene oscilador interno hay que configurarlo y lo puedes usar sin cristal externo
ResponderEliminar