Microcontroladores - Inicializacion LCD-Display

   
Vista:

Inicializacion LCD-Display

Publicado por Ana (2 intervenciones) el 06/03/2012 21:54:48
Hola todos, en primer lugar gracias por el simple hecho de estar leyendo esto. Espero que alguien pueda ayudarme. Estoy intentando inicializar un display algo diferente a lo que se encuentra por ahi y por ello no encuentro ningun post sobre el. Es un EA DIP 204-6 y lo estoy intentando inicializar con un ATmega8 en modo 4 bits. Despues de leerme la hoja de datos mil veces, he creado un codigo que, si lo he entendido todo bien, deberia funcionar, pero no lo hace, asi que probablemente no lo he entendido todo bien. Donde mas dudas tengo son en el tema del Enable y los 4 bits, asi que quizas por ahi vaya el fallo.

Segun lo he entendido, debo encender el Enable, entonces mandar la orde y antes de que esta se termine de mandar, apagar el Enable. Mientras tanto, RS y R/W deben estar a cero. Quizas el tiempo que dejo encendido el Enable es falso, no se.

Por otro lado tengo una duda en lo de enviar los 8bits en dos tandas de 4. Yo envio los 4 primeros ye inmediatamente despues los otros 4, pero quizas debo dejar tiempo entre medio, no se, no encuentro informacion sobre ello, quizas lo hago mal.

Os pedo el codigo para que lo veais:

Display.c


#include <avr/io.h>
#include "Routines.h"

int main(void)
{

lcd_init();

while(1){ }
}

-------------------------------------------------------------------------------------------------------

Routines.h

#ifndef ROUTINES_H
#define ROUTINES_H



#ifndef F_CPU
#define F_CPU 16000000UL
#endif


#define LCD_PORT PORTC // D4,D5,D6,D7 --> PC0,PC1,PC2,PC3
#define LCD_DDR DDRC
#define CONT_PORT PORTB // Control Port (RS, EN)
#define CONT_DDR DDRB
#define LCD_RS PB0 // RS --> PB0
#define LCD_EN PB1 // EN --> PB1

void lcd_init( void );

#endif

-------------------------------------------------------------------------------------------------------------

Routines.c


#include <avr/io.h>
#include "Routines.h"
#include <util/delay.h>


static void lcd_e( void )
{

CONT_PORT |= (1<<LCD_EN); // Encender Enable
_delay_us(50); // PWEH
CONT_PORT &= ~(1<<LCD_EN); // Apagar Enable
}


void lcd_init( void )
{
CONT_DDR=0xFF;
LCD_DDR=0xFF;
CONT_PORT &= ~(1<<LCD_RS);

lcd_e();
LCD_PORT = 0x02; //4bit modo
_delay_ms(5);

lcd_e();
LCD_PORT =0x02;
LCD_PORT =0x00;
_delay_ms(5);

lcd_e();
LCD_PORT =0x00;
LCD_PORT =0x0F;
_delay_ms(5);

lcd_e();
LCD_PORT =0x00;
LCD_PORT =0x06;
_delay_ms(5);
}

-------------------------------------------------------------------------------------------------------

¿y, encuentran que hago mal? Estaria muy agradecida si alguien pudiese ayudarme, despues de varias semanas de trabajo, el display aun no se inicializa :-(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Inicializacion LCD-Display

Publicado por Ana (2 intervenciones) el 11/03/2012 13:45:37
¿nadie? :-(
Alguien que al menos sepa inicializar un Display? Creo que lo del 4bits modo es igual para todos, no tiene que ser alguien que sepa concretamente el modelo de Display que uso.
Por favor, alguien tiene que haber inicializado un display alguna vez no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar