hi ho...
falls dein LCD immer noch net will ist hier mal ein ausschnitt aus meinem quelltext. das display wird über einen 4 bit bus betrieben.
die sendefunktionen:
Code:
void sendb(unsigned char datenh, unsigned char datenl) // Befehle senden
{
PORTC = datenh; // High - Nibble
PORTB |= 1 << E; // Enable 1
_delay_us(40);
PORTB &= ~1 << E; // Enable 0
PORTC = datenl; // Low - Nibble
PORTB |= 1 << E; // Enable 1
_delay_us(40);
PORTB &= ~1 << E; // Enable 0
}
void sendd(unsigned char datenh, unsigned char datenl) // Daten senden
{
PORTC = datenh + 16; // High - Nibble
PORTB |= 1 << E; // Enable 1
_delay_us(40);
PORTB &= ~1 << E; // Enable 0
PORTC = datenl + 16; // Low - Nibble
PORTB |= 1 << E; // Enable 1
_delay_us(40);
PORTB &= ~1 << E; // Enable 0
}
initialisierung des displays:
Code:
PORT C:
7 6 5 4 3 2 1 0
- - RW RS D7 D6 D5 D4 */
// 4 bit 2 zeilen 5x7 dots -> 00101000
sendb(0b0010, 0b1000);
// display on, cursor off, blink off -> 00001100
sendb(0b0000, 0b1100);
// Clear Display & Cursor Home
sendb(0b0000, 0b0001);
das "+ 16" beim daten senden bedeutet, daß die RS leitung auf "high" gezogen wird. (daten -> RS=1, befehle -> RS=0)
mfg
Lesezeichen