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

Temas similares

30/04/2011 #1

Avatar de PACH870501

Desplegado de una variable en un lcd
Hola a todos!

Estoy programando un avr mas especificamente el ATmega8 y utilizo el win AVR como compilador, mi proyecto es un sensor de temperatura con desplegado en un lcd, ya tengo la parte de lectura de temperatura en una variable de 16 bits, como puedo desplegar esta variable en mi lcd?

Hasta ahora lo que he ntentado es usando estas lineas de codigo:

void main(void)
{
............
lcd gotoxy(0,1);
lcd_puts("La temp es:");
lcd gotoxy(1,0);
lcd_puts(c); donde c es mi variable a desplegar
}


he leido en varios lados el uso de el comando printf, pero esto estaria ligado directamente al uso de una libreria especifica?

para manipular mi lcd, estyo utilizando una libreria externa, y segun lo poco que se de C el comando printf esta en la libreria stduio.h

Alguien me podria decir ayudar a aclarar estos puntos?

Desde ya muchas gracias!
01/05/2011 #2

Avatar de Moyano Jonathan

Hola como estás.

Hasta ahora lo que he ntentado es usando estas lineas de codigo:

void main(void)
{
............
lcd gotoxy(0,1);
lcd_puts("La temp es:");
lcd gotoxy(1,0);
lcd_puts(c); donde c es mi variable a desplegar
}
No es tan directo como pasarle el valor al LCD con printf. En AVR - GCC, tenés que abrir un puerto de comunicaciones. En este caso el puerto del LCD y decirle a la función printf que saque los datos formateados por dicho puerto.

Para el puerto serie se hace de la siguiente manera, vos tendrías que adaptarlo al LCD:

Código:
int USART0SendByte(char u8Data, FILE *stream)
{
   if(u8Data == '\n')
   {
      USART0SendByte('\r', 0);
   }
//wait while previous byte is completed
while(!(UCSR0A&(1<<UDRE0))){};
// Transmit data
UDR0 = u8Data;
return 0;
}
int USART0ReceiveByte(FILE *stream)
{
uint8_t u8Data;
// Wait for byte to be received
while(!(UCSR0A&(1<<RXC0))){};
u8Data=UDR0;
//echo input data
USART0SendByte(u8Data,stream);
// Return received data
return u8Data;
}
//set stream pointer
FILE usart0_str = FDEV_SETUP_STREAM(USART0SendByte, USART0ReceiveByte, _FDEV_SETUP_RW);
En el código te muestra las funciones de salida y entrada de datos...y como abrimos un handler para poder usar las funciones printf y scanf.
02/05/2011 #3

Avatar de PACH870501

primero que nada te agradezco por tu respuesta, pero leyendo esto lo relaciono con el envio de datos por comunicacion USART, veras, este sensor de temperatura debe enviar los datos a la pc para que por medio de una aplicacion en VB podemos graficar la temperatura, asi que ya tengo la habilitacion serie para el envio de datos, por lo cual no puedo utilizar utilizar este puerto para el lcd......

estoy tratando de manipular primero una variable y mostrarla en mi lcd, sin embargo tengo un ligero problema al parecer tengo que definir en mi libreria de lcd que tipos de variables manejare....lo cual le quita la portabilidad a mi libreria....


y al arecer el uso del printf relaciona al puerto serie no? o puedo manejarlo por otro puerto?
02/05/2011 #4

Avatar de Moyano Jonathan

estoy tratando de manipular primero una variable y mostrarla en mi lcd, sin embargo tengo un ligero problema al parecer tengo que definir en mi libreria de lcd que tipos de variables manejare....lo cual le quita la portabilidad a mi libreria....
En C podés utilizar identificadores de tipo para declarar variables, con eso solucionas el problema de variables.

y al arecer el uso del printf relaciona al puerto serie no? o puedo manejarlo por otro puerto?
Podés enviar la información de manera formateada por el puerto serie, SPI, I2C, LCD, etc.
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.