Hallo Leute,
ich versuche gerade ein Display mit einem HD44780-Controller in Betrieb
zu nehmen aber irgendwie funktioniert das nicht so ganz.
Habe mir mal eine Init geschrieben wo nach meiner Meinung nach
Beendigung dieser der Cursor auf Position 1 blinken müsste.
Mehr will ich ja für den Anfang mal nicht ;-)
Vielleicht sieht ja einer von euch denn Fehler auf anhieb.
Lg
Sebastian
P.S. der Code:
#define F_CPU 16000000
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
//**************Definitionen***********************
#define dport PORTA
#define RS PA0
#define RW PA1
#define E PA2
#define D4 PA4
#define D5 PA5
#define D6 PA6
#define D7 PA7
void display_init()
{
_delay_ms(50);
dport = (1<<D4) | (1<<D5);
display_enable();
_delay_ms(10);
display_enable();
_delay_ms(10);
display_enable();
_delay_ms(10);
dport = (1<<D5);
display_enable();
_delay_ms(10);
//**************Function Set*********************
display_enable(); //4-Bit-Interface einstellen
_delay_ms(10);
dport = (1<<D7); //2-Zeilig - 5x7 Pixel
display_enable();
_delay_ms(10);
//*************Display OFF***********************
dport = 0;
display_enable();
_delay_ms(10);
dport = (1<<D7) | (1<<D6) | (1<<D5) | (1<<D4); //Display ein //
Cursor ein // Cursor blinken ein
display_enable();
_delay_ms(10);
//*************Display Clear*********************
dport = 0;
display_enable();
_delay_ms(10);
dport = (1<<D4); //Display wird gelöscht und der Cursor auf Position 0
gesetzt
display_enable();
_delay_ms(10);
//*************Entry-Mode-Set********************
dport = 0;
display_enable();
_delay_ms(10);
dport = (1<<D6) | (1<<D5) | (1<<D4); //Cursor-Position um 1 erhöhen
wenn Zeichen geschrieben wird //Display wird gescrollt
display_enable();
_delay_ms(10);
dport = 0;
}
void display_enable()
{
dport |= (1<<E);
_delay_us(10);
dport |= (0<<E);
_delay_us(10);
}
int main(void)
{
display_init();
while(1)
{
//TODO:: Please write your application code
}
}
Sebastian Müller schrieb: > dport |= (1<<E); > _delay_us(10); > dport |= (0<<E); > _delay_us(10); So wird das nix. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Ver.C3.A4ndern_von_Registerinhalten
Oh........ was für ein dummer Fehler......
Bin aber noch ein blutiger Anfänger ;-)
Ok habe nun die Zeile abgeändert in:
void display_enable()
{
dport |= (1<<E);
_delay_us(10);
dport &= ~(1 << E);
_delay_us(10);
}
Ah...... hab den 2. Fehler......
Vielleicht sollte man den PORTA noch als Output konfigurieren ;-)
Danke euch 2.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.