Este es un proyecto en el que se aplica la instruccion count para contar los pulsos en el puerto B6
y visualizar como frecuencia en el modulo lcd, el puerto A.0 sta configurado como entrada analogica de 10 bits para el conversor analogico digital del pic, en este proyecto no he usado oscilador externo, sta configurado a 4Mhz con oscilador interno, esto es un problema al momento de medir frecuencias altas, en la practica sugiero usar oscilador externo para no tener inconvenientesLa compilacion sta hecha en pbp y la simulacion en proteus
A continuacion el enlace de descarga.
descargar
El programa escrito es:
'****************************************************************
'* Name : frecuencimetro voltimetro *
'* Author : Leonardo Saldaña *
'* Date : 16/07/2012 *
'* Version :
1.0
*
'* Notes :
*
'*
: *
'***************************************************************
osccon=%1100100 ;DEFINE EL OSCILADOR INTERNO A 4MHZ;
DEFINE LCD_DREG
PORTB ;DEFINE EL PUERTO B PARA CONTROL DE LCD;
DEFINE LCD_DBIT
0 ;SE USAN LOS PINES MENOS SIGNIFICATIVOS DEL PUERTOB
DEFINE LCD_RSREG
PORTB ;REGISTRO LCD
DEFINE LCD_RSBIT
5 ;REGISTRO DE LCD EN PORTB.5 (PIN RS )
DEFINE LCD_EREG
PORTB ;BIT HABILITAR LCD
DEFINE LCD_EBIT
4 ;PUERTOB.4 HABILITAR LCD
DEFINE ADC_BITS
8 ;FIJA NUMEROS DE BITS DEL RESULTADO(5,8,10)
DEFINE ADC_CLOCK
3 ;FIJA EL RELOJ
DEFINE ADC_SAMPLEUS
50 ;VELOCIDAD DE MUESTRE0
TRISA = %0011
;PUERTO A.0 COMO ENTRADA, EL RESTO COMO
SALIDA
TRISB=%01000000 ;PUERTO B COMO SALIDAS
ADCON1=%00001110
;PUERTO A.0 ES CONVERSOR, EL RESTO DIGITALES
X VAR BYTE ;VARIABLE PARA LA INSTRUCCION FOR NEXT
Y VAR BYTE ;VARIABLE PARA LA INSTRUCCION FOR NEXT
Z VAR BYTE ;VARIABLE PARA LA INSTRUCCION FOR NEXT
A VAR BYTE
B VAR BYTE
DEF VAR BYTE
ABC VAR BYTE ;VARIABLE PARA LA INSTRUCCION LOOKUP
DATOS VAR WORD ;VARIABLE PARA ALMACENAR LOS DATOS LEIDOS
PULS VAR WORD
VOLTAJE VAR WORD
ARRANQUE:
;ETIQUETA PREVIA A INICIO DE PROGRAMA
FOR X=0 TO 3
SOUND PORTB.7,[10000,2]
NEXT
LOW PORTB.7
FOR Z=0
TO 2 ;REPETIR 2 VECES
LCDOUT $FE,1 ;LIMPIAR LCD
FOR Y=0 TO 9 ;REPETIR 9 VECES
LOOKUP Y,[" INICIANDO"],ABC ;TOMAR CARACTER POR CARACTER Y ALMACENAR EN
"ABC"
LCDOUT,ABC
PAUSE 50
NEXT
NEXT
GOTO INICIO
INICIO:
FOR A=0
TO 10
COUNT PORTB.6,1000,PULS
ADCIN 0,DATOS
PAUSE 5
VOLTAJE =
DATOS *5/255
LCDOUT $FE,1," FREC:",DEC PULS,"hz"
LCDOUT $FE,$C4,DEC
VOLTAJE
VOLTAJE =
(DATOS) *100 /51
LCDOUT $FE,$C5,".",DEC2 VOLTAJE,"V"
NEXT
LOGO:
FOR B=0
TO 1
LCDOUT $FE,1
FOR Y=0
TO 13
LOOKUP Y,[" PIC BASIC PRO"],DEF
LCDOUT,DEF
PAUSE 100
NEXT
NEXT
GOTO INICIO
Para probar el funcionamiento del ADC del pic podemos desconectar el puerto A.0 del genrador y conectralo a un potenciometro conectado a vcc como muetra la imagen
No hay comentarios:
Publicar un comentario