Hallo Freunde !

Nun ist es wieder an der Zeit bei mir etwas "Programmiertechnisches" zu machen, doch wieder komme ich nicht weiter.

Ich habe versucht an meinen "EasyPIC-40 v.2" Entwicklerboard ein GLCD 128x64 anzuschliessen. Die Buchenleiste ist dafür schon auf dem Board.
Wie auch bei dem mitgeliefertem Beispiel für das LCD 1602 funzt auch das Beispile für diese LCd nicht.
Nun habe ich mich im Web "belesen" recherchiert und Datenblätter durchstöbert. Auch einige Beispiele aus dem Web versucht, aber leider kein Ergebnis.
Vielleicht gehe ich auch total falsch an die Sache ran, aber vielleicht weis ja wer einen Rat ?
Ich merke das was passiert, wenn ich den MCU-Chip beschreibe, habe auch die entsprechende PortPins aus der Schaltung vom Board rausgesucht und das im Code entsprechend geändert.
Nur ein sichtbares Ergebnis , irgendwelche Zeichen auf dem Display erreiche ich nicht
Hier mal mein Code :
Code:
/*
 * File:   lcd_128x64_test1.c
 * Author: gerhard
 *
 * Created on 28. Januar 2019, 17:23
 */


// Config für "Easy-PIC 40" mit PIC16F877A
#include <xc.h>
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000 // aktuelle Oszillatorfrequenz(für delay )
//#define _XTAL_FREQ 3686400
//#define _XTAL_FREQ 8000000
#endif
// CONFIG
#pragma config FOSC = HS        
#pragma config WDTE = OFF       
#pragma config PWRTE = ON       
#pragma config BOREN = OFF      
#pragma config LVP = OFF       
#pragma config CPD = OFF       
#pragma config WRT = OFF       
#pragma config CP = OFF         
#pragma config DEBUG = OFF      
// End config

// Display :
// 128x64 GLCD
// Controller ST7920

// LCD Pin Connection in 8-bit mode
#define LCD_RS      RA0        
#define LCD_RW      RA1
#define    LCD_EN      RA2
#define LCD_PSB     RA3
#define    LCD_RST     RA4    
#define    LCD_DB      PORTD   //Datenbus/-port

// LCD Functions
void LCD_Init(void);
void LCD_TextDisplayString(unsigned char line, char* string);
void LCD_WriteData(unsigned char data);
void LCD_WriteCommand(unsigned char command);

/* ================================================================== */
/*                                                                    */
/*              I/O  initalisieren                                    */
/*                                                                    */
/* ================================================================== */

void init()
{
    ADCON1 = 0x07;                  // Port A digital I/O
    TRISA  = 0x00;                  // Port A Output
    TRISD  = 0x00;                  // PORT D Output
    __delay_ms(200);                // etwas warten
    
}

/* ================================================================== */
/*                                                                    */
/*               LCD initialisieren                                   */
/*                                                                    */
/* ================================================================== */

void LCD_Init(void)
{
 __delay_ms(150); 
 LCD_RST= 0; 
 __delay_us(2);
 LCD_RST= 1;  
 LCD_PSB = 1;  // Parallelmodus Datenbus
 __delay_ms(50);

 LCD_WriteCommand(0x30);   // 
 __delay_ms(5);

 LCD_WriteCommand(0x30); 
 __delay_ms(1);

 LCD_WriteCommand(0x30);
 __delay_ms(10);

 LCD_WriteCommand(0x38); 
 __delay_ms(1);

 LCD_WriteCommand(0x0C); 
 __delay_ms(1); 

 LCD_WriteCommand(0x06);
__delay_ms(1);

 LCD_WriteCommand(0x01);   // clear display
 __delay_ms(10);
}

/* ================================================================== */
/*                                                                    */
/*            ein Byte über den Datenbus schreiben                    */
/*                                                                    */
/* ================================================================== */
// 8 Bit


void LCD_WriteByte(unsigned char command)
{
    LCD_DB = command;
    LCD_EN = 1;      //Daten übernemen
    __delay_us(2);
    LCD_EN = 0;
   __delay_us(20);     //Wert variiert nach oben
}

/* ================================================================== */
/*                                                                    */
/*           ein Byte Daten schreiben                                 */
/*                                                                    */
/* ================================================================== */



void LCD_WriteData(unsigned char data) //write data
{  
    LCD_RS=1; 
    LCD_WriteByte(data);
} 
/* ================================================================== */
/*                                                                    */
/*             ein Byte Commando schreiben                            */
/*                                                                    */
/* ================================================================== */

void LCD_WriteCommand(unsigned char command) //write command
{ 
    LCD_RS=0; 
    LCD_WriteByte(command);
}
/* ================================================================== */
/*                                                                    */
/*              eine Textzeile schreiben                              */
/*                                                                    */
/* ================================================================== */

void LCD_TextDisplayString(unsigned char line, char* string)
{  
    unsigned char addr,i; 
    if(line==1) 
        addr=0x80;  // Adresse 1.Zeile
    else if(line==2) 
        addr=0x90;  // Adresse 2.Zeile
    else if(line==3) 
        addr=0x88;  // Adresse 3.Zeile
    else if(line==4) 
        addr=0x98;  // Adresse 4.Zeile

    LCD_WriteCommand(addr); 

    for(i=0;i<16;i++) 
        LCD_WriteData(*string++); 
}

/* ================================================================== */
/*                                                                    */
/*              Main Routine                                          */
/*                                                                    */
/* ================================================================== */
void main(void)
{
    init();
    LCD_Init();
    // Schreibe in die 1. Zeile
    LCD_TextDisplayString( 1, "LCD-TEST");
    while(1);
}
Über eine kleine Hilfestellung wäre ich sehr dankbar!!!

Gerhard