Tengo un problema en mi programa de voltímetro digital.
El voltímetro hace de 0v a 5v mi problema es ¿como hacer para que sea de -5v a 5v ?
Utilizo el PIC16F877A
Aquí esta mi programa.
El voltímetro hace de 0v a 5v mi problema es ¿como hacer para que sea de -5v a 5v ?
Utilizo el PIC16F877A
Aquí esta mi programa.
Código:
'***************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 29/11/2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
' Programa de voltimetro con pic basic pro de tension (0-5VDC) e ilustracion en
' LCD con 2 decimas a traves de pic 16f877A.
'definicion de Oscilador externo
@ device xt_osc ; oscilador externo XT
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
Define LOADER_USED 1
' Definicion de configuracion de pines para comunicacion con lcd a 4bits.
DEFINE LCD_DREG PORTB 'Seleccion de port B
DEFINE LCD_DBIT 4 'Seleccion de RB4 a RB7
DEFINE LCD_RSREG PORTB 'Seleccion de port B
DEFINE LCD_RSBIT 0 'Seleccion de RB4 a RB7
DEFINE LCD_RWREG PORTB 'RS en port B
DEFINE LCD_RWBIT 1 'RS en RB1
DEFINE LCD_EREG PORTB 'RS en port B
DEFINE LCD_EBIT 2 'RW en RB2
DEFINE LCD_EBITS 4 'RW en RB2
DEFINE LCD_LINES 2 '2 lineas
DEFINE LCD_COMMANDUS 2000 '2 lineas
DEFINE LCD_DATAUS 50 '2 lineas
ADCON1=6
CMCON=7
' Definicion de parametro de conversion A/D
DEFINE ADC_BITS 10 ' Selecionar numero de bits conversion A/D
DEFINE ADC_CLOCK 3 ' Selecionar reloj interno de conversion A/D
DEFINE ADC_SAMPLEUS 50 ' Selecionar tiempode conversion Useg
'creacion de variable y configuracion puertos del pic 16f877A
adval Var Word 'Variable donde se va ha guardar medida obtenida
TRISA = %11111111 ' Selecionar PORTA como entrada
ADCON1 = %10000010 ' Selecionar PORTA analogo
Low PORTB.2 ' LCD R/W colocado a cero logico(W)
Pause 500 ' esperar 0.5 second
'Inicio del programa
voltimetro:
Adcin 0, adval 'leer canal cero y guardar resultado en al avariable adval
adval = (adval */ 500)>>2 'lectura de tension
LCDOut $fe,1 ' Clear LCD
LCDOUT $fe,$83,"VOLTAJE"
lcdout $fe,$c5,DEC (adval/100),".", DEC2 adval 'mostrar en LCD
Pause 100 ' esperea 100mseg
Goto voltimetro ' volver medir
End
Adjuntos
Última edición por un moderador: