Hallo,
ich habe mal wieder ein LCD Problem.
ich habe das AV2040 Display von Conrad (4Zeilen*20Zeichen)
Hier mal mein Testcode, nur funktioniert der leider nicht.
Warum?
Kann mir das bitte jemand helfen?Code:#include <util/delay.h> #define RS PA5 #define RW PA6 #define E PA7 void RS_Low(void) { PORTA &= ~(1<<RS); } void RS_High(void) { PORTA |= (1<<RS); } void RW_Low(void) { PORTA &= ~(1<<RW); } void RW_High(void) { PORTA |= (1<<RW); } void busy(void) { char richtungC = DDRC; char richtungA = DDRA; DDRC = 0x00; RW_High(); RS_Low(); while(PINC & (1<<PINC7)) // warten solange busy DDRC = richtungC; DDRA = richtungA; } void enable(void) { PORTA |= (1<<E); _delay_us(1); PORTA &= ~(1<<E); } void lcd_init(void) { _delay_ms(30); RS_Low(); RW_Low(); DDRC = 0xFF; PORTC = 0b00111100; // Function set: 2 Line Mode / Display on enable(); _delay_us(500); PORTC = 0b00001111; // Display on / Cursor on / Blink on enable(); _delay_us(500); PORTC = 0b00000001; // Display Clear enable(); _delay_ms(3); PORTC = 0b00000110; // Entry Mode Set: auto inkrement busy(); } void Return_Home(void) { RS_Low(); RW_Low(); DDRC = 0xFF; PORTC = 0b00000010; // Return Home enable(); busy(); } void set_adr(char adr) { RS_Low(); RW_Low(); DDRC = 0xFF; PORTC = adr; PORTC |= (1<<PC7); enable(); busy(); } void put_c_adr(char adr, char c) { set_adr(adr); RS_High(); RW_Low(); DDRC = 0xFF; PORTC = c; enable(); busy(); }
Gruß







Zitieren

Lesezeichen