LCD initialisieren

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 31 10 2024  10:33:45      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
LCD initialisieren
Suche nach: lcd (4683)

    







BID = 454168

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich
 

  


Hi @ all

Ich habe ein Problem ( wer nicht? ).

Ich versuche ein LCD Modul zu initialisieren und komme schon am Anfang damit nicht klar.

Ich möcht das unbedingt lernen.

Ich habe ein myAVR-Board mit dem Zusatz myAVRLCD V2.3

Datenblatt des LCD:
http://www.myavr.de/download/techb_lcd_22.pdf

Was muss ich am Anfang machen?

Ich denke am Anfang werde ich die Struktur auf Seite 7 abklappern.
Stimmt das?
Wenn ja wie kann ich das Register sichern?

Danke für eure Antworten.

Mfg
Rambodischien

BID = 454187

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

 

  

Hallo,

Das ist ja ein Wald- und Wiesen-Display.

Da hättest du per Suchfunktion komplette Kodes finden können, habe hier mal ein Archiv mit Kode in C hochgeladen.

Ich hänge dennoch, weil heute ein schöner Tag ist, ein Dokument an, wo exakt beschrieben ist, wie initialisiert werden muss.
Da ich nicht weiß, in welcher Sprache du schreibst, kann ich dir nicht groß weiterhelfen.

Es lässt sich aber sehr gut in allen Sprachen machen, ich habe es bisher in Basic (gaaa...nz am Anfang), in AVR-Assembler und C geschrieben.

P.S.: Quelle des Dokuments ist pollin.de.


PDF anzeigen



_________________

BID = 454223

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Hi

Danke für die Antwort.

Ich schreibe mit AVR-Studio also C

Die Daten was du mir zugeschickt hast sind super aber geht das auch für mein LCD?
Nach dem Datenblatt das ich habe müsste ich es anderst machen oder?

Was meint man mit 3?hins Steuerregister schreiben?

Mfg
Rambodischien

[ Diese Nachricht wurde geändert von: Rambodischien am 30 Aug 2007 14:49 ]

BID = 454227

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Hi

Ich bin ein _ das ich nicht die Suche verwendet habe

Ich habe gerade ein Tutorial gefunden:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

Ich lasse das Thema trotzdem noch offen falls ich wieder einmal mist baue

Danke an alle die sich den Kopf zerbrochen haben.

Mfg
Rambodischien

BID = 454231

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

3?h soll bedeuten, dass es egal ist, welchen Wert die Bits 0 bis 3 haben (von 0x0 bis 0xF).

Du kannst also alles von 30h bis 3Fh reinschreiben, das spielt keine Rolle. Es kommt auf die oberen Bits an, ist ja der Vierbitmodus

_________________

BID = 454235

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Noch einmal Danke

Mfg
Rambodischien

BID = 454471

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Hi @ all

Habe von meinem Lehrer eine Datei gekriegt das auch für ein LCD im 4-Bit Modus ausgelegt ist. Nu funktiuoniert das Programm nicht bei meinem Display. Ich habe auch den PortD zum konfigurieren.

Ich glaube ich habe einen Fehler gefunden bin mir aber dabei nicht sicher:

Anstatt bei lcd_zToLCD sollte doch anstatt PORTD=0b01000000; PORTD=0b00000010; stehen oder?

Und noch eine Frage habe ich unter lcd_init: Was bedeutet diese Kommandos (könnte auch ein Fehler sein)

lcd_zToLCD(0b00000010); // Funktion Set High Byte
_delay_us(200); //Wartezeit 200us
lcd_zToLCD(0b00001000); // Funktion Set Low Byte
_delay_us(200); //Wartezeit 200us

Mfg
Rambodischien

BID = 454485

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Ich mag solche Sachen ala 0b10010 nicht.
Das ist zu kompliziert, keiner weiß, was damit gemeint ist.
Aber gut, jeder kann programmieren, wie er will.
Der Kode schränkt nur soweit ein, dass man schlecht die Hardware ändern kann. Zudem wird, soweit ich das beim Überfliegen richtig gesehen habe, das Busyflag nicht benutzt sondern eine fixe Zeit gewartet.

Ich verzichte mal, meinen Kode neu hochzuladen, er liegt ja bereits auf dem Server. Der funktioniert definitiv, und ich habe die Auswertung des Busyflags drin. Man kann die Hardware auch ziemlich schnell ändern, einzige Einschränkung: die Datenbits müssen am gleichen Port und in der richtigen Reihenfolge sein. Der Rest ist egal.
Definiert wird über den Präprozessor.

Link:
https://forum.electronicwerkstatt.d.....47695

_________________

BID = 454565

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

WOW

Was ist denn das? Das ist mir viel zu kompliziert da kenn ich mich überhaupt nicht aus.

Kann mir keiner den von mir angeführten Code erklären?

Mfg
Rambodischien

BID = 454566

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Doch, könnte ich, aber warum machst du das nicht selbst?
Du hast den Kode, Kenntnisse von C und du hast das Dokument, was ich oben hochlud.

Kommentiert wurde im Kode ja.

P.S.:
Mein Treiber sieht zwar kompliziert aus, aber der Header besteht nur aus Präprozessor...
Da kannst du einmal die Hardwareseitige Beschaltung einstellen (da helfe ich dir gerne, wenn du möchtest) und dort stehen alle Befehle und Befehlseinstellungen (Bitmasken).
Mit lcd_open(); wird alles initialisiert, mit lcd_char kannst du ein Zeichen, mit lcd_data eine Zeichenkette und mit lcd_command ein Kommando senden.


Edit:
bist du dri denn überhaupt sicher, dass du alles Pins korrekt verbunden hast?
Sind sie richtig initialisiert (DDRx-Register richtig beschrieben?)

_________________




[ Diese Nachricht wurde geändert von: DonComi am 31 Aug 2007 22:32 ]

BID = 454620

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich


Zitat :
DonComi hat am 31 Aug 2007 22:27 geschrieben :

Doch, könnte ich, aber warum machst du das nicht selbst?
Du hast den Kode, Kenntnisse von C und du hast das Dokument, was ich oben hochlud.
[ Diese Nachricht wurde geändert von: DonComi am 31 Aug 2007 22:32 ]


Leider ist das Problem das ich meine Kentnisse auf C-Basis nicht aussreichen das einzige was ich bisher gamacht habe ist LED´s ein ausschalten mit Tastern und in der Schule Text auf einem LCD ausgegeben habe. Und wir konnten immer diese LCD-Initialisierung des Lehrers benutzen und das möchte ich beibehalten.

Aber leider habe ich überhaupt keinen Plan von der intialisierung.

Mfg
Rambodischien

BID = 454664

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

* Kannst du mir bitte dann sagen, an welchen Anschlüssen du E, RS, D4-7 hast?

Dann kann ich mal den Kode genauer anschauen.

Weiterhin:
* DDRx richtig initialisiert? Im Programm deines Lehrers wird dies nach einmaligem Überfliegen nicht erledigt.
* Bist du dir sicher, dass alle Anschlüsse des LCD mit den richtigen des µCs verbunden sind?
(es ist keine blöde Frage, sowas passiert nunmal. Ich hatte schon stundenlange Fehlersuchen etc. und habe gemerkt, dass ich zwei Pins vertauscht hatte... )



_________________

BID = 454709

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hier mal eine Referenz, da steht der genaue Vorgang (nochmal..)

https://forum.electronicwerkstatt.d.....html# 454708

Das blöde ist, dass ich vorhin Zeit hatte. Das wird die nächsten Wochen nicht so sein.

_________________

BID = 454760

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

LCD intialisieren ist gar nicht so einfach

Ich habe den Code, den ich von dem Lehrer gekriegt habe, so gut es geht kontrolliert.

Den Port initialisiere ich im Programm mit DDRD=0x00;

Ich glaube das der Fehler hier liegt:

void lcd_zToLCD(char dataD)
/*************************************************************
Mit Void lcd_home(char dataD) wird EN auf 1 gesetzt, dann erfolt
die Datenausgabe. Mit 0 werden die Daten in das DD-Ram uebernommen.
Zuerst wird das High Byte, dann das Low Byte übertragen.
/-------------------\
/ Daten D7 D6 D5 D4 \
EN---------/ \--------
*************************************************************/
{
PORTD=0b01000000; //EN = 0
_delay_us(200);
PORTD|=dataD; //EN = 1
_delay_us(200); //Wartezeit 100us
PORTD&=0b10111111; //EN = 0
}

Bei mir ist E = PortD 3

Aber ich weiß nicht wie ich das ändern muss.

RS ist immer auf LOW (laut Datenblatt)
Port D4-D7 sind Datenbit 4-7.

Mfg
Rambodischien


BID = 454793

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

DDRD=0x00; schaltet alle 8 Pins auf Eingang!

Ich habe doch gesagt, eine 1 schaltet auf Ausgang.
Da bei dir das Busyflag nicht getestet wird musst du nicht einmal die Datenrichtung auf Eingang stellen.

Im Datenblatt stehen solche "unwichtigen" Details auch.

_________________


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 24 Beiträge im Durchschnitt pro Tag       heute wurden bisher 3 Beiträge verfasst
© x sparkkelsputz        Besucher : 182261236   Heute : 1129    Gestern : 4669    Online : 503        31.10.2024    10:33
5 Besucher in den letzten 60 Sekunden        alle 12.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0901551246643