salle
01.11.2005, 18:30
Hallo!
Ich werd verrückt.
Mein Display will einfach nicht.
Bitte kann mir wer helfen. Ich will das Display mit 4bit-Daten ansprechen.
Danke im Vorraus
mfg Christian
/*
Displayansteuerung
2x20 Display an ATmega8
Pinbelegung: PORTD = (x,E,RS,RW,D7,D6,D5,D4)
*/
#include <avr/io.h>
#include <stdlib.h>
#define LCD_RS 5
#define LCD_E 7
void warten(int t) // Warteschleife
{
int h;
for (;t>0;t--)
{
for (h=1600;h>0;h--) {}
}
return;
}
void lcd_enable( int d )
{
PORTD = d;
PORTD |= 1<<LCD_E;
PORTD &= ~(1<<LCD_E);
}
void lcd_init( void )
{
PORTD = 0x00;
lcd_enable(0x03); // 8 bit mode
warten( 500 );
lcd_enable(0x03);
warten( 200 );
lcd_enable(0x03);
warten( 200 );
lcd_enable(0x02); // 4 bit mode
warten( 200 );
lcd_enable(0x08); // 2zeilig, 5*8
warten( 200 );
lcd_enable(0x01); // clear Display
warten( 200 );
lcd_enable(0x0F); // Disp., Cursor, blink. ein
warten( 200 );
}
void main(void) // Hauptprogramm
{
DDRD = 0xFF;
lcd_init();
}
Ich werd verrückt.
Mein Display will einfach nicht.
Bitte kann mir wer helfen. Ich will das Display mit 4bit-Daten ansprechen.
Danke im Vorraus
mfg Christian
/*
Displayansteuerung
2x20 Display an ATmega8
Pinbelegung: PORTD = (x,E,RS,RW,D7,D6,D5,D4)
*/
#include <avr/io.h>
#include <stdlib.h>
#define LCD_RS 5
#define LCD_E 7
void warten(int t) // Warteschleife
{
int h;
for (;t>0;t--)
{
for (h=1600;h>0;h--) {}
}
return;
}
void lcd_enable( int d )
{
PORTD = d;
PORTD |= 1<<LCD_E;
PORTD &= ~(1<<LCD_E);
}
void lcd_init( void )
{
PORTD = 0x00;
lcd_enable(0x03); // 8 bit mode
warten( 500 );
lcd_enable(0x03);
warten( 200 );
lcd_enable(0x03);
warten( 200 );
lcd_enable(0x02); // 4 bit mode
warten( 200 );
lcd_enable(0x08); // 2zeilig, 5*8
warten( 200 );
lcd_enable(0x01); // clear Display
warten( 200 );
lcd_enable(0x0F); // Disp., Cursor, blink. ein
warten( 200 );
}
void main(void) // Hauptprogramm
{
DDRD = 0xFF;
lcd_init();
}