Tengo un pequeño problema no he podido imprimir en un LCD alfanumerica una variable del tipo float seguramente el problema esta en la funcion de control de la lcd que utilizo en win AVR es la siguiente
como no se mucho del manejo de la libreria stdio.h no tengo ni idea
de como hacer que se imprima una variable "float" en la lcd alfanumerica, por la funcion que manejo manda datos a la lcd del tipo "char"...
Si hay alguien que maneje WIN AVR y una funcion o algun otro metodo para imprimir variables del tipo "float" estaria muy agradecido con que comparta el código o cualquier ayuda posible...
Código:
#include<stdio.h>
#include<avr/io.h>
#include<util/delay.h>
void delay_ms(int n){
while(n--){
_delay_ms(1);
}
}
#define RS 2
#define EN 3
void EN_pulse(void){
PORTD|=(1<<EN);
_delay_us(1);
PORTD&=~(1<<EN);
}
void lcd_general(char dato,char tipo){
PORTD=dato&0xf0;
if(tipo)PORTD|=(1<<RS);
EN_pulse();
PORTD=(dato<<4);
if(tipo)PORTD|=(1<<RS);
EN_pulse();
_delay_us(40);
}
#define lcd_char(l) lcd_general(l,1)
#define lcd_cmd(c) lcd_general(c,0)
void lcd_clear(void){
lcd_cmd(1);
delay_ms(2);
}
void lcd_init(void){
PORTD=0;
DDRD|=0xfc;
delay_ms(5);
PORTD=0x30;
EN_pulse();
delay_ms(5);
PORTD=0x30;
EN_pulse();
delay_ms(5);
PORTD=0x30;
EN_pulse();
delay_ms(5);
PORTD=0x20;
EN_pulse();
delay_ms(5);
lcd_cmd(0x28);
lcd_cmd(0x0E);
lcd_cmd(0x06);
lcd_clear();
}
//********************MANEJO DEL STDIO.H****************************
int lcd_putchar(char c,FILE *stream){ //file se agrega en stdio.h
if((c==10)||(c==13)) //habilita \n para nueva linea
lcd_cmd(0xc0); //comando para salto de linea
else
lcd_char(c); // escribe el texto
return 0; //retorna de donde vino con valor 0
}
FILE lcd=FDEV_SETUP_STREAM(lcd_putchar,NULL,_FDEV_SETUP_WRITE); //declaraciones de stdio.h
void print_init(void){
lcd_init();
stdout=&lcd; // habilita printf con ayuda de stdio.h el comando de stdio.h es enmascarado con
// el contenido de la lcd
}
como no se mucho del manejo de la libreria stdio.h no tengo ni idea
Si hay alguien que maneje WIN AVR y una funcion o algun otro metodo para imprimir variables del tipo "float" estaria muy agradecido con que comparta el código o cualquier ayuda posible...