Leider waren die letzten Wochen etwas stressig, so dass ich kaum zeit hatte, an meinem µC etwas weiter zu arbeiten.
Die Pins habe ich wie folgt angepasst:
Code:
#define LCD_PORT PORTC /**< port for the LCD lines */
#define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN 3 /**< pin for 4bit data bit 0 */
#define LCD_DATA1_PIN 2 /**< pin for 4bit data bit 1 */
#define LCD_DATA2_PIN 1 /**< pin for 4bit data bit 2 */
#define LCD_DATA3_PIN 0 /**< pin for 4bit data bit 3 */
#define LCD_RS_PORT LCD_PORT /**< port for RS line */
#define LCD_RS_PIN 7 /**< pin for RS line */
#define LCD_RW_PORT LCD_PORT /**< port for RW line */
#define LCD_RW_PIN 6 /**< pin for RW line */
#define LCD_E_PORT LCD_PORT /**< port for Enable line */
#define LCD_E_PIN 5 /**< pin for Enable line */
Die Definitionen für die Zeilen habe ich so belassen wie sie waren:
Code:
#define LCD_LINES 4 /**< number of visible lines of the display */
#define LCD_DISP_LENGTH 20 /**< visibles characters per line of the display */
#define LCD_LINE_LENGTH 0x40 /**< internal line length of the display */
#define LCD_START_LINE1 0x00 /**< DDRAM address of first char of line 1 */
#define LCD_START_LINE2 0x40 /**< DDRAM address of first char of line 2 */
#define LCD_START_LINE3 0x14 /**< DDRAM address of first char of line 3 */
#define LCD_START_LINE4 0x54 /**< DDRAM address of first char of line 4 */
#define LCD_WRAP_LINES 0 /**< 0: no wrap, 1: wrap at end of visibile line */
Code:
#define LCD_IO_MODE 1
#define LCD_CONTROLLER_KS0073 0
Allerdings funktioniert das Display jetzt nicht wie es soll:
Die erste Zeile funktioniert super
In der zweiten Zeile steht "Zeile3" (und das in der Mitte der Zeile und nicht am Beginn...)
Die dritte Zeile wird wieder richtig dargestellt, nur dass in dieser "Zeile2" steht.
In der letzten Zeile steht korrekt "Zeile4", aber wieder in der Mitte der Zeile, nicht am Beginn...
Hier noch kurz mein Quellcode:
Code:
#include <stdlib.h>
#include <avr/io.h>
#include <header.h>
#include <lcd.h>
int main(void)
{
Init();
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_puts("Zeile1\nZeile2\nZeile3\nZeile4");
return 0;
}
Hat jemand eine Ahnung, was der Fehler sein könnte. Muss ich noch etwas an den Zeilendefinitionen ändern (und wo finde ich diese Konstanten), oder liegt der Fehler wo anders?
Lesezeichen