Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

27/01/2010 #1


duda variables
hola a todos!! os explico he hecho un programa en C18 en el que simplemente visualizo por un lcd el valor de la conversion ad con un 18f4550, pero tengo un problema y creo que es con las variables, porque a ver, utilizo alineacion a izquierdas, para asi solo utilizar el registro ADRESH y lo multiplico por 4. el caso es que si la multiplicacion la hago en la misma instruccion que envio el dato al lcd, si que me muestra hasta 1020, pero si lo hago en una variable, llega a 255 y luego vuelve a empezar. os pongo el codigo:
Código:
 while(1){
		 ADCON0bits.GO=1;
		 do{}
	 	 while(ADCON0bits.GO==1);
		 voltios=ADRESH;// si la hago aqui no funciona
		 itoa(voltios*4, medida);
		 WriteCmdXLCD(0x01);
		 BusyXLCD();
		 putsXLCD(medida);
		} 
	
	 }
la variable voltios es del tipo unsigned int asi que no deberia tener problemas de espacio porque son 16bits no? y yo solo utilizo 10 o me equivoco? la conversion se que la hace perfectamente porque sino no lo sacaria de esa forma. gracias por adelnatado.
luego queria tmb preguntar una cosa, como estoy actualizando constantemente el valor, en el lcd se produce un parpadeo (por lo menos en proteus) deberia poner ahi un latch para mantener el valor? me podeis decir la referencia de algun circuito que haga eso?
Un saludoo!!!
27/01/2010 #2

Avatar de elbrujo

Respuesta: duda variables
Para que no parpadee podes guardar el valor y si este cambia lo actualizas, sino dejas el anterior que seria el mismo..
27/01/2010 #3


Respuesta: duda variables
GRACIAS!!eso ya esta solucionado pero y lo d elas variables¿¿? porque no puedo guardar el valor multplicado por 4 en una variable?¿?¿?
27/01/2010 #4

Avatar de elbrujo

Respuesta: duda variables
no entiendo el problema, pero prueba esto a ver:

1)Define la variable x, 2) asignale un valor x= al producto, 3) muestra x
27/01/2010 #5


Respuesta: duda variables
asi lo hago pero es como si no cupiera y cuando llega a 255 vuelve a 1, a ver te explico de nuevo a ver si asi se entiende, está la variable voltios que es un unsigned int (16bits), y luego esta la variable medida que es un char, esta la utilizo para poder escribir el valor en el lcd. Vamos con la variable voltios, ahi almaceno el valor de ADRESH multiplicaod por 4, es decir
Código:
voltios=ADRESH*4;
, si lo hago asi pasa lo que he explicado antes, sin embargo si lo hago en la conversion de entero a string, esto:
Código:
itoa(voltios*4, medida);
, si que me lo hace bien, entonces por eso creo que el problema esta en las variables.
Otra cosa, si yo quiero mostrar un float en el lcd. . como lo hago? porque hay instrucciones para pasar de long a string, de entero a string(que es la que utilizo ahi). . pero no hay una de float a string. . . lo he probado con un sprintf pero no funciona, y a parte he leido por ahi que sprintf no admite floats. . como lo puedo solucionar?
Un saludo
27/01/2010 #6

Avatar de elbrujo

Respuesta: duda variables
tienes esto: http://electronicapic.iespana.es/man...desde_cero.pdf
27/01/2010 #7


Respuesta: duda variables
si, yo la declaro como unsigned int que son 2 bytes, sin embargo solo llega hasta los 8 bits de menor peso. . . hace tiempo tambien me pasaba algo parecido al utilizar el modulo pwm. . . y entonces tampoco pude averiguar que podia ser. y lo de mostrar las variables float sabes como podria hacerlo?
Un saludo
28/01/2010 #8

Avatar de elbrujo

Respuesta: duda variables
Si llega a 255 te esta tomando unsigned char que es de 8 bits, prueba con unsigned long que es de 32 bits. Para mostrar un float se utiliza sprintf (output,"%5.2f",f);
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.