medidor

Páginas: 7 (1732 palabras) Publicado: 27 de marzo de 2013
Medidor de distancias con PIC16F876 y LCD 2x16:
 

 
Nota: Como puede verse en el esquema no esta puesto el circuito oscilador de 4 MHz necesario para que funcione el montaje, no olvidarse de ponerlo! (cristal de 4MHz y condensadores de 27pF)
  El programa usa una tabla de conversión calibrada para usar con una cartulina blanca como objeto distante para la medición y muestra en el LCDla distancia en centímetros continuamente, para otros objetos de diferente color se puede modificar la tabla fácilmente.



;************************************************* www.x-robotics.com *******
; PROGRAMA : GP2D02.asm
; Funcion :Medicion de distancia de 10 a 80 cms con el sensor integrao GP2D02
; de Sharp y visualizacion en LCD conectado a PORTB 8 lineas + PORTA0, PORTA1
; yPORTA2
;
;
;---------------------------------------------------------------------------
; Revision : 1.00 Fecha: 8/12/2003 Programa para : PIC16F876
; CPU Clock : 4 MHz Tiempo instruccion : 1uS
; WDT : OFF Tipo de reloj : XT
; Code Prot : OFF cfg USART rs232 ; none
; Autor : ionitron -> ionitron@x-robotics.com;----------------------------------------------------------------------------

INICIO bcf STATUS,RP0 ;banco 0
bcf STATUS,RP1

clrf PORTA
bsf STATUS,RP0 ;banco 1
movlw 0x06
movwf ADCON1
movlw b'00001000' ;pone entradas y salidas.. RA3=IN
movwf TRISA

clrf TRISB ;portb como salida
clrf TRISC

bcf STATUS,RP0 ;banco 0

movlw b'00000000' ;todo a 0 menosRA3 a 1
movwf PORTA

bsf PORTC,0

movlw d'105' ;offset usado con tabla conversiones
movwf despl ;calibracion para centimetros.
movlw d'235'
movwf max

;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
START CALL LCD_INI ;Inicia LCD (CFG puertos...)
START_1 MOVLW b'00000001' ;Borrar LCD yHome
CALL LCD_REG
MOVLW b'00000110' ;
CALL LCD_REG
MOVLW b'00001100' ;LCD On, cursor Off,Parpadeo Off
CALL LCD_REGMOVLW 0x80 ;Direccion caracter
CALL LCD_REG
REPETIR MOVF Digito,w ;W=Digito
CALL DATO_1 ;Coge el caracter
IORLW 0 ;Compara
BTFSC STATUS,2 ;Es el ultimo?
GOTO acabar ;SiCALL LCD_DATOS ;Visualiza caracter
INCF Digito,f ;Incrementa numero de Digito
GOTO REPETIR ;Vuelve a escribir

acabar movlw d'7'
movwf cnt_bit ;contador de bits para lectura
bcf PORTC,0 ;pone a 0 Vin

movlw d'70' ;delay 70mS espera acaptura
call delay


bsf PORTC,0 ;sube de nuevo

;-----------------------------------------------

lee call Delayp1 ;delay 0,1mS
bcf PORTC,0 ;lee primer bit MSB
nop
nop
nop
nop
nop
nop
btfss PORTA,3 ;compara el bit entrante
goto es_cero

es_uno bsf BUFFER,0 ;pone el bit actual
bcf STATUS, C
rlf BUFFER,F ;rota a izquierda
gotocontinuar

es_cero bcf BUFFER,0 ;pone el bit actual
bcf STATUS, C
rlf BUFFER,F ;rota a izquierda


continuar bsf PORTC,0
decfsz cnt_bit,F
goto lee
;---------------------------------------------------------------
lee_ultimo bcf PORTC,0 ;lee primer bit MSB
nop
nop
nop
nop
nop
nop
btfss PORTA,3 ;compara el bit entrante
goto es_cero2...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Medidor
  • Medidores
  • Medidores
  • Medidores
  • Medidor
  • Medidor de ph
  • Medidores de temperatura
  • Medidores Monofásicos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS