Forum: Mikrocontroller und Digitale Elektronik LCD Display Initalisieren


von Franzi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebe Gemeinde (:

ich möchte gerne ein Display Initalisieren.
Doch leider haut das nicht hin :(
Mit Bascom funktioniert das wunderbar...

ich habe mal .rar Datei mit den Daten gemacht...

kann mir jemand helfen ?


16 * 2 Zeichen...
Winstar : MSH 1602...
in C

von Hubert G. (hubertg)


Lesenswert?

Die Fleury Datei funktioniert sehr gut. Im Gegensatz zu BASCOM muss R/W 
auch angeschlossen werden, nicht auf GND.

von Franzi (Gast)


Lesenswert?

das ist aber auf der Platine so hinterlegt... das muss doch auch so 
gehen ?!

von Eumel (Gast)


Lesenswert?

Franzi schrieb:
> das ist aber auf der Platine so hinterlegt... das muss doch auch so
> gehen ?!

Ja, wenn du selber programmieren kannst und den Code änderst dann geht 
es. Wenn du das nicht kannst geht es halt nicht.

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Das ist eine geänderte Datei. In der lcd_new.h sind deine Einstellungen 
zu machen.

von Franzi (Gast)


Lesenswert?

würde das damit gehen ?

von Hubert G. (hubertg)


Lesenswert?

Bei mir geht es mit R/W auf GND, wenn du in der *.h die entsprechende 
Einstellung machst.

von Franzi (Gast)


Lesenswert?

Was muss ich denn da für R/W einstellen???

von Hubert G. (hubertg)


Lesenswert?

In dieser Zeile:
#define LCD_READ_REQUIRED  1  /* 1: R/W aktiv, 0: R/W nicht aktiv,

anstelle der 1 eine 0.
Weiter unten dann die Porteinstellung.

von Paul B. (paul_baumann)


Lesenswert?

Gestern, als Du noch "Robert" hießt:
Beitrag "LCD Programmieren"

habe ich schon gefragt, warum Du nicht bei Bascom bleibst, wenn das
tadellos funktioniert.
;-)
MfG Paul

von Franzi (Gast)


Lesenswert?

Hubert G. schrieb:
> In dieser Zeile:
> #define LCD_READ_REQUIRED  1  /* 1: R/W aktiv, 0: R/W nicht aktiv,
>
> anstelle der 1 eine 0.
> Weiter unten dann die Porteinstellung.


leider klappt das nicht... ich verstehe es einfach nicht :(

von Franzi (Gast)


Lesenswert?

da müsste doch normaler weise... wenn alles i.o ist ein H auf dem 
Display stehen oder ?

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{

  lcd_init();


    while(1)
    {
  lcd_data('H');
    }
}

von Franzi (Gast)


Lesenswert?

da müsste doch normaler weise... wenn alles i.o ist ein H auf dem
Display stehen oder ?

#include <avr/io.h>
#include <util/delay.h>
#include "lcd_new.h"

int main(void)
{

  lcd_init();


    while(1)
    {
  lcd_data('H');
    }
}

von Hubert G. (hubertg)


Lesenswert?

Wenn es nicht initialisiert ist, dann ist in der ersten Zeile ein 
schwarzer Balken. Nach der Initialisierung verschwindet dieser Balken 
und in der ersten Zeile sollte dein H auftauchen.
Kontrast richtig eingestellt?

von Franzi (Gast)


Lesenswert?

ja habe ich !
wie gesagt mit einem anderen Programm funktioniert es doch :(
ich verstehe es nicht! wenn es bei dir auch geht ?

von Hubert G. (hubertg)


Lesenswert?

Verstehe ich auch nicht.
Die lcd_new.c und lcd_new.h eingebunden und im main richtig angegeben?

von Franzi (Gast)


Lesenswert?

kann ich dir mal mein Projekt schicken ?

von NurEinGast (Gast)


Lesenswert?

Bei Peter steht da aber :

void lcd_init   (uint8_t  dispAttr)

Initialize display and select type of cursor.

Parameters:
      dispAttr
    LCD_DISP_OFF display off
    LCD_DISP_ON display on, cursor off
    LCD_DISP_ON_CURSOR display on, cursor on
    LCD_DISP_ON_CURSOR_BLINK display on, cursor on flashing

Returns:
    none



Probiere es doch mal mit

    lcd_init(LCD_DISP_ON);

von Franzi (Gast)


Lesenswert?

habe ich ja auch schon versucht... bringt auch nichts...
muss ich in meinem Hauptprogramm unbedingt die Frequenz angeben?

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Hab dir mal die *.hex angehängt. Gerade auf dem Testboard probiert.

von Franzi (Gast)


Lesenswert?

mit meiner Pin Belegung ?

von Hubert G. (hubertg)


Lesenswert?

Ja mit deiner Belegung, wie im BASCOM-Bild.
Allerdings mit 8MHz Takt.
Wenn du sonst keinen Takt angegeben hast, dann nimmt er den von der *.h 
Datei. Da ist 4MHz drinnen. Wenn du dann 16MHz hast, gibt es ein 
Timigproblem.

: Bearbeitet durch User
von Franzi (Gast)


Lesenswert?

ich habe nun den internen RC auf 8 MHZ gestellt!

geht immer noch nichts...

von Hubert G. (hubertg)


Lesenswert?

Irgendwas ist bei dir noch falsch.
Ich habe natürlich nicht dein Display.
In der lcd_new.h gibt es noch den Punkt am Anfang:
#define LCD_CONTROLLER_KS0073 1  /**< Use 0 for HD44780 controller, 1 
for KS0073 controller */

Schreib wie hier die 1 hinein, die Initialisierung ist hier geringfügig 
anders.
Mach mal ein Bild von deinem Board und zeig die Schaltung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.