Die Zeilen sind nicht vertauscht, das ist schon richtig so.
Du siehst ja bei den Start-Adressen das die der Zeile 2 höher ist als von Zeile 3.
Code:
#define LCD_START_LINE1  0x00     /**< DDRAM address of first char of line 1 */
#define LCD_START_LINE2  0x28     /**< 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  0x3c    /**< DDRAM address of first char of line 4 */
Probier es mal mit diesen Adressen.
Sonst positioniere den Text mal mit lcd_gotxy(0,0) usw.