TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: microfull en 14 de Octubre de 2006, 03:12:58
-
Estoy trabajando en un circuito que lea el valor de una termocupla este valor se toma con uno de los conversores del pic
la lectura es de 10bit luego ese valor lo envio por el puerto serie para luego capturarlo con visual basic y mostar la temperatura, al igual visual envia datos como set poin control de encendido de vcentiladores que luego el pic debe activar
el primer problema es que al enviar los datos de el voltaje memido con el pic por serie obtengo en hipèrterminal una cadena interminable osea el numero yo lo mueto tambien en una lcd ella me muestra "Value:114" pero al enviar el valor por via serie me envia 114114114141141141141141141141441441414 en numero pegado como puedo hacer para que el puerto serie reciba 114 solo y cuando el valor cambie ejemplo 54 y no 114114114114545454545114141117414
porque asi no se como obtenerlo con visual basic y com le digo a visual cuando el valor es de un conversor y cuando de otro por ejemplo quiero decirle AN0=114 AN1=54 An2=10 Ventilador=oK deferentes variables
envio hasta donde llevo el programa
' PicBasic Pro program to display result of
' 10-bit A/D conversion on LCD
'
' Connect analog input to channel-0 (RA0)
' Define ONINT_USED to allow use of the boot loader.
' This will not affect normal program operation.
Define ONINT_USED 1
DEFINE OSC 20
' Define LCD registers and bits
Define LCD_DREG PORTB
Define LCD_DBIT 4
Define LCD_RSREG PORTB
Define LCD_RSBIT 1
Define LCD_EREG PORTB
Define LCD_EBIT 3
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
' Define ADCIN parameters
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
' Comunicacion Serie configuracion
DEFINE HSER_RCSTA 90h 'Reseptor Habilitado
DEFINE HSER_TSTA 20h 'Trabsmicion Habilitado
DEFINE HSER_BAUD 9600 'Velocidad De Transmicion
adval var word ' Create adval to store result
TRISA = %11111111 ' Set PORTA to all input
ADCON1 = %10000010 ' Set PORTA analog and right justify result
Low PORTE.2 ' LCD R/W line low (W)
Pause 500 ' Wait .5 second
loop: ADCIN 0, adval ' Read channel 0 to adval
Lcdout $fe, 1 ' Clear LCD
Lcdout "Value: ", DEC adval ' Display the decimal value
HSEROUT [DEC ADVAL]
Pause 100 ' Wait .1 second
Goto loop ' Do it forever
End
Les pido el favor que me ayuden en lo que mas puedan
-
Hola no he trabajdo aun con envio serie por Hardware todo lo he hecho por software, pero aun asi creo que puedes agregar ademas de DEC ADVAL un" ,13" que si no mal recuerdo es una vuelta de carro o enter para que los datos se separeny no salgan pegaditos. Con respecto a lo de mandar por separado los valores de cada sensor podrias usar datos de control o sincronizacion, via software es:
serout pinx, velocidad,[dato1,dato2]
donde dato1 es de control, como un 1 si es dato del an0 o 2 si es dato del an1, calro que para el programa de visual basic tendrias que implementar que si el primer dato es igual a 1 el siguiente valor corresponda a tu entra de an0.
Si te da muchos problemas porque no usas comunicacion por software es mas facil.
-
Hola...
algo como esto me funciona con visual basic
serout pinx, velocidad,[dato1,dato2,13,10]
salu2