Initialisierung LCD-display 4-bittig?

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: 29 11 2024  05:57:02      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 ( Vorherige Seite 1 | 2 | 3 Nächste Seite )      


Autor
Initialisierung LCD-display 4-bittig?

    







BID = 47688

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen
 

  


Du kannst Dir übrigens eine extra Routine für das 8bit Senden sparen, wenn Du der 4bit Routine im oberen nibble den ersten, und im unteren nibble den zweiten 8bit befehl, den Du ausführen möchtest, mitgibst (natürlich jeweils das high nibble des Befehls).

BID = 47724

QuirinO

Schreibmaschine



Beiträge: 2205
Wohnort: Behringersdorf
Zur Homepage von QuirinO ICQ Status  

 

  

Stimmt bin ich noch gar nicht drauf gekommen,
bin eh grad beim Programmoptimieren...

hab jetzt aber leider folgendes feststellen müssen...

wenn ich dem Pic 16F628 ASCII zeichen übergebe, dan sind die binärcodes "spiegelverkehrt"
d.h. bit1 befindet sich nicht rechts sondern links... diesen Fehler habe ich njur dadurch beheben können, dass ich den Datenbus zum Display umgedreht also die bits Nibbleweise gespiegelt hab

deshalb musste ich dann auch alle Steuerbefehle Nibbleweise spiegeln(softwaremässig)... das is u.u ganzschön nervig, vorallem wenn man etwas kompliziertere Befehle senden will (denken iss anstrengend...)

Kann mir das jemand erklären? ich muss das aber so machen weil ich im programm ja schreiben will:

movlw 'K'
call sendchar

das war auch der grund warum das display am anfang nur "Schrott" anzeigte...

Warum sind die Nibbles bei ASCII's Gespiegelt??
oder mach ich was falsch?

mfg Quirin

BID = 47752

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

Das ist ja Merkwürdig. Wie meinst Du das mit dem PIC die Zeichen übergeben ? meinst DU im Quelltext mit 'K' , oder meinst Du über Uart?
Normalerweise dürften die ASCIIS vom Compiler nicht gespiegelt werden. Kannst ja mal 0x41 anstatt 'A' testweise ausprobieren. Wenn beide das gleiche ergebnis liefern, dann
liegts jedenfalls nicht am Compiler. Hattest Du den Datenbus vieleicht falschrum am Controller , und jetzt ist er richtigrum??

BID = 47764

QuirinO

Schreibmaschine



Beiträge: 2205
Wohnort: Behringersdorf
Zur Homepage von QuirinO ICQ Status  

Hallo...

Wenn ich in Quellcode 0x41 statt "A" schreibe, dann kommt ein A im display an.

Ich übergebe dem Compiler schon den wert A (das was angezeigt werden soll iss schon im Programm gespeichert, kein Uart.)

ich denke die Datenleitung iss jetzt richtigrum, weil er die richtigen Buchstaben anzeigt, wenn ich sie ihm im compiler übergebe...

alle steuerbefehle hingegen muss ich nibbleweise spiegeln
( die übergebe ich dem compiler als binärcode)

woran könnte das liegen?

jetzt muss ich aber noch was fragen:

Ich krieg s nicht hin, dass er wenn er in der mitte des displays angekommen ist auf die richtige DD-Ram adresse springt um die zweite hälfte des displays zu beschreiben...

Liegt da noch ein Speicherbereich dazwischen?
wenn ich ihn einwach die ganze zeit in einem loop was schreiben lasse, dann schreibt er bis zur hälfte, dann dauert das etwas(ausgezählt ungefähr 48 buchstaben lang)
und dann schreibt er auf die 2. Hälfte...
ich experimentier schon ne weile nun rum um die richtige Speicheradresse zu finden...
ich übergeb sie auch im Binärcode (weil ich sie ja nibbleweise spiegeln muss)

das display hat 1 zeile 16 Buchstaben...

as muss ich da nun für ne Adresse ansteuern für buchstabe 8???

bitte hilfe, trial and error iss hier zu zeitaufwändig und irgendwie hab ich das gefühl 0x40h isses nicht, dass iss doch hex oder?

das müsste dann der Adresse 64 entsprechen, oder?

das wäre binär dann '0111 1111' Oder?

IOch komm schon auf ne adresse knapp daneben, aber wenn ich auf 0101 1111 geh, dann fehlen 2 adressen, d.h. er fängt in einem Speicherbereich vor 40h zu schreiben an, was auf dem display unsichtbar bleibt...

vom Wort "Bereit" bleibt dann am display

_ _ _ _ _ _ _ _ r e i t _ _ _ _

wobei ein underline für einen leeren Buchstaben steht...

bitte hilfe... ich komm nich weiter...
mfg Quirin

BID = 47770

Verion

Gelegenheitsposter



Beiträge: 90

Hier sind die adressen aufgelistet:
http://www.sprut.de/electronic/lcd/index.htm#adressen

btw, ich benutz den 16F877, und wenn ich schreib:

movlw 'G'
call OutLcdDaten

dann funzt das ohne irgendwas zu tauschen...

mit steuerzeichen das selbe.

weis nicht in wieweit sich die typen im assembler untschrscheiden, aber die OutLcdDaten funktion macht bei mir nix andres als busy flag abfragen und dann das 'G' auf den LCD anschluss port zu legen..
Ich benutz das ganze zwar 8-bittig, aber das sollte dabei ja wurscht sein.

Chris

BID = 47771

Verion

Gelegenheitsposter



Beiträge: 90

aso, und:

0x40h ist nicht 0111 1111 sondern 0100 0000 ... wenn du ersteres genommen hast, würd ich die probleme damit erklären, dass dein display keine Speicheradresse 127 oder auch 0x7Fh hat (das kommt raus wenn man deins umrechnet)

also versuch mal mit 0100 0000 oder direkt 0x40 (wozu selber umrechnen??) :)

Chris

BID = 47787

QuirinO

Schreibmaschine



Beiträge: 2205
Wohnort: Behringersdorf
Zur Homepage von QuirinO ICQ Status  

Argghl.. ich muss es selber umrchnen , weil ich es nibbleweise spiegeln muss!!!

entweder ich muss meine Buchstaben von hand umrechnen und spiegeln oder ich muss meine Befehle umrechnen und speigeln, beides geht nicht, weil das Programm ja in oben genannter weise spinnt!? ich verstehs ja nicht!!!!

trotzdem danke für die adressliste, werd mir das ma angucken und dann sag ich wieder bescheid!! bis dann
Quirin

BID = 47800

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

Zeig nochmal Deine aktuelle Version des Programms, dann können wir mal schauen.

Nur noch mal zur Info fals Dein Problem da liegt

Binärcodes:
| Byte |
| High Nibble | Low Nibble |
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
128 64 32 16 8 4 2 1

Hex Codes können Nibbleweise in Binär umgerechnet werden.
z.B 0x40 : 4 -> 0100 0 -> 0000
was dann 01000000 gibt.



BID = 47805

QuirinO

Schreibmaschine



Beiträge: 2205
Wohnort: Behringersdorf
Zur Homepage von QuirinO ICQ Status  

Ja... muss ich zugeben... die umrechnerei is eins meiner probleme... hier iss mal mein jetziges Programm...

hab die ganze zeit versucht direkt nach der initialisierung in die 2. zeile mit dem befehl 1 101 1111 umzuschalten... mit diesem befehl komm ich dem ganzen am nächsten... versteh auch nicht warum...

als info:

Alle Steuerbefhle sind Nibbleweise gespiegelt d.h. aus
'1010 1110' wird '0101 0111'

das 'T' im unterprogramm "haupt" wird in 300ms abständen immer in die nächste adresse geschrieben, zu testzwecken.

Ansonsten funktioniert das programm 1A muss nurnoch mehr optimiert werden...


bin ja mal auf deine meinung gespannt

mfg Quirin


Hochgeladene Datei : workinglcd.txt

BID = 47806

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

Ich hab eben mal in meiner DisplayRoutine geschaut, und bei mir klappt das mit dem 0x40 . Man muss dem Display dazu den Befehl 0xC0 senden, also 11000000 .
Das ist auch ein Einzeiliges Display mit 16 Zeichen. Bei Mir ist übrigens ein SED1278 Chip auf dem Display. Der original HD44780 ist das fast nie(Ich hab aber auch ein Display mit HD44780, war sehr erstaunt, denn ich dachte den gibts nur in Sagen und Legenden.)

BID = 47808

QuirinO

Schreibmaschine



Beiträge: 2205
Wohnort: Behringersdorf
Zur Homepage von QuirinO ICQ Status  

Ich send ihm mal schnell den befehl... bin gleich wieder da!

BID = 47810

QuirinO

Schreibmaschine



Beiträge: 2205
Wohnort: Behringersdorf
Zur Homepage von QuirinO ICQ Status  

Toll... jetzt blick ich garnicht mehr durch:

Wenn ich den Befehl 1100 0000

also bei mir mit gespiegelten nibbles

0011 0000
sende, dann zeigt er schwarze ausgefüllte buchstabenfelder (cursorzeichen ascii 1111 1111) i9n der ersten hälfte des displays(zeichen 1-8) an in denen schwächer , also hellgrau(nicht leer) irgenwelche anderen zeichen durchschimmern!!

das ist seeeeeeehr unerklärlich!

was ist das?

ps ich muss ja um ihm klarzumachen, dass jetzt eine DD-Ram adresse kommt immer 1xxx xxxx senden, oder?

mfg quirin

BID = 47814

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

Also, mal schauen...

Bei Init Schritt 4 ist der Befehl garnicht gespiegelt, aber es funktioniert...ist das Display vieleicht doch jetzt richtig angeschlossen?
Mal weiterschauen...wenn das so währe, dann würden die anderen Befehle was machen?
Schritt 7 setzt cgram adresse ->egal
Schritt 8 macht cursor home ohne löschen
Schritt 9 schaltet das Display aus
Schritt 10 schaltet es wieder an mit Cursor der nicht blinkt


Wenn Du ein Cursor im Display siehst, obwohl Du den eigentlich ausgeschaltet haben wolltest, dann wirds wohl daran liegen, dass Du nur glaubtest, die Befehle nibbleweise invertieren zu müssen. Mach das am besten mal rückgängig/neu, und dann wird das schon klappen !
Ich denk ja mal, Das Display ist jetzt so an den Port angeschlossen:

Display Micro
Pin14 -> bit3
Pin13 -> bit2
Pin12 -> bit1
Pin11 -> bit0

Das ist nämlich richtigrum.

BID = 47816

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

Du hast grade gepostet, während ich am schreiben war. Dein Ergebnis stützt nur meine Theorie. Mit dem Befehl 0x30 schmeisste nämlich das Display wieder in den 8bit Modus....

BID = 47817

QuirinO

Schreibmaschine



Beiträge: 2205
Wohnort: Behringersdorf
Zur Homepage von QuirinO ICQ Status  

Ähm ok... da hast du recht...
sowas kommt bei trial and error initialisierung raus...
ich schreib das grad mal alles auf nicht invertierte Nibbles um und dann sag ich dir bescheid...
bis gleich Quirin


Vorherige Seite       Nächste Seite
Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 Nächste Seite )
Zurück zur Seite 0 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 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 3 Beiträge verfasst
© x sparkkelsputz        Besucher : 182421528   Heute : 567    Gestern : 5459    Online : 341        29.11.2024    5:57
1 Besucher in den letzten 60 Sekunden        alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0651140213013