Gast
#3181850
Hallo
Ich hab ein kleines Programm, welches einen LCD display ansteuert wie
aber kann ich die 2 Zeile ansteuern?
Ich habe nur herausgefunden, dass ich statt der 0x80 in der
Commando-Funkrtion die 0x40 verwende soll, mit diesem Befehl aber wird
zwar in die 2.Zeile gesteurt und der Anzeigebalken verschiebt sich auch
um die Anzahl der eingegebene Buchstaben mehr auch nicht.
#include <avr/io.h>
#include <util/delay.h>
#define RS PC0 //RS= 1---->Daten, RS=0---->Befehl
#define RW PC1
#define EN PC2 //Enable=1 LCD stellt sich auf Empfang ein
int main(void)
{
DDRC = 0xFF;
DDRD = 0xFF;
LCD_init();
_delay_ms(50);
LCD_write_string("Hallo");
}
void LCD_init(void)
{
LCD_commando(0x38);
_delay_ms(1);
LCD_commando(0x0F);
_delay_ms(1);
LCD_commando(0x01);
_delay_ms(1);
LCD_commando(0x80);
_delay_ms(1);
}
void LCD_commando(unsigned int befehl)
{
PORTD= befehl;
PORTC= (0<<RS)|(0<<RW)|(1<<EN);
_delay_ms(1);
PORTC= (0<<RS)|(0<<RW)|(0<<EN);
_delay_ms(50);
return;
}
void LCD_write(unsigned char buchstabe)
{
PORTD = buchstabe;
PORTC = (1<<RS)|(0<<RW)|(1<<EN);
_delay_ms(1);
PORTC = (1<<RS)|(0<<RW)|(0<<EN);
return;
}
void LCD_write_string(unsigned char str[])
{
int i=0;
while (str[i] != 0)
{
LCD_write(str[i]);
i++;
}
}