PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lcd zeilen vertauscht



elektropro
22.04.2007, 16:18
nachdem ich nach großer mühe mein lcd display zum laufen bekommen habe,stellte ich fest, dass die 2. und die 3. zeile vertauscht sind.
die pinbelegung vom mega 32 zum lcd habe ich in bascom eingestellt.
der text erscheint auch also denke ich mal das die pinbelegung richtig eingestellt ist und.

meine befehle waren :
sub 1()
cls
locate 1,1
lcd "Gutentag"
locate 2,1
lcd "Herr "
locate 3,1
lcd "Schleicher"

do
loop until pinb.3(taster)=0

if pinb.3=0 then
cls
locate 1,1
lcd "Um die Spannung zu "
locate 2,1
lcd "messen druecken sie"
locate 3,1
lcd "Eingabe"
do
loop until pinb.2(taster)=0

die anzeige auf dem display sieht so aus:
erster befehl:
Gutentag
Schleicher
Herr

zweiter befehl:
um die spannung zu
ung zu sie eingabe
messen druecken
ken

bitte um hilfe
mfg
david
http://www.david-schleicher.de/

Dnerb
22.04.2007, 16:43
Hallo,

meine Glaskugel ist gerade ausgebrannt. Deshalb wären angaben zum Displaytyp nicht schlecht.

Aufbau (wieviel Zeichen auf wieviele Zeilen) und am besten noch den genauen Typ, ansonsten ist es schwer etwas zu sagen was Dir weiterhelfen könnte.

Es könnte aber sein das Dein Display einen Speziellen Aufbau hat. Ich nehme an Du hast ein 4x20.

Such mal in den Compiler Einstellungen, da gibt es sowas wie 4x20a, vielleicht ist es so eines.

Da ich sehr an verschiedenen Displays interessiert bin, würde mich dann auch der Typ interessieren und woher Du es hast.

Ich bin da ein bissel Sammlermässig veranlagt. :-)

Gruß Dnerb

elektropro
22.04.2007, 17:01
hallo
danke für die schnelle antwort
das display ist von conrad :
http://www1.conrad.de/scripts/wgate/zcop_b2c/~flN0YXRlPTE5NzQ0MzA5NDQ=?direkt_aufriss_area=SHOP _AREA_14733&~template=PCAT_AREA_S_browse&p_page_to_display=&catalogs_sub_id=sub13&aktiv=13&navi=oben_2
die bezeichnung ist:
ea dip204-4nled
mfg
david
http://www.david-schleicher.de/

Dnerb
22.04.2007, 17:32
Mit dem sollte es keine Probleme geben, der Controller ist wohl ein KS0066, das wäre so weit in Ordnung.

Den Displaytyp hast Du ja richitg angegeben, oder?

Hm, muß mal nachdenken ob mir noch was einfällt.

magic33
22.04.2007, 18:12
mal ne andere zwischenfrage an die ASSE kann man ein LCD eigentlich auch auf dem kopfbetreiben

@elektropro

code einstellen das hilft hier am meisten

Config Lcdpin = Pin , Db4 = Porta.7 , Db5 = Porta.5 , Db6 = Porta.3 , Db7 = Porta.1 , E = Porta.4 , Rs = Porta.6
Config Lcd = 16 * 4

elektropro
23.04.2007, 16:58
wenn ich configlcd= 20*4a eingebe, dann vertauschen sich die 2. und die 4. zeile des lcds.
auch wenn ich das config lcdpin=pin und so eingebe verbessert sich nix.

mfg
david
http://www.david-schleicher.de/

Dnerb
23.04.2007, 17:52
Außerst merkwürdig.

Leider muß ich da passen.

@ magic33: Auf´m Kopf betreiben? Dann kannst Dus ja gar nicht sehen! ;-) Wenn Du damit aber meinst ob man den Text auf den Kopf stellen kann, nein, das ist bei diesen Displays nicht möglich.

Ich hatte so was auch mal. Das Problem ist, das es keine Normierung gibt wo und mit welcher Ausrichtung die Pins liegen sollten.

Ich hatte sogar mal ein Display das die Pins oben und unten hatte, jeweils alle 14 Symetrisch. Das Display konnte man auf den Kopf stellen ohne das Platinenlayout zu ändern.

Dani-Bruchflieger
01.05.2007, 22:14
Hi,
habe das gleiche Display auch. Hab hier im Forum mal einen Code zum Korrekten initialisieren gefunden gehabt, und mir daraus eine Vorlage gemacht. Ist zwar gerade für den Mega 16 aber das kann man ja ändern...
Die Pinbelegung des Displays bitte nur in den Alias-Zeilen anpassen!




' *** Vorlage für LCD-DIP 204-6 (20*4a) ***

$regfile = "m16def.dat" 'Mega16
$crystal = 8000000 '8Mhz interner Takt

Declare Sub Lcdinit
Declare Sub Lcdwrite(byval Zeichen As Byte)

'*** in diesen 6 Zeilen an eigene Pinbelegung anpassen.
_d4 Alias Porta.0
_d5 Alias Porta.1
_d6 Alias Porta.2
_d7 Alias Porta.3
_e Alias Portd.5
_rs Alias Portd.4

Config Lcdpin = Pin , Db4 = _d4 , Db5 = _d5 , Db6 = _d6 , Db7 = _d7 , E = _e , Rs = _rs
Config Lcd = 20 * 4a
Call Lcdinit



'***Hier kommt nun dein Programm rein***



' *** LCD-Routinen am Ende des Programmes***
Sub Lcdinit
Call Lcdwrite(&B00101100)
Call Lcdwrite(&B00001001)
Call Lcdwrite(&B00101000)
Call Lcdwrite(&B00000110)
Call Lcdwrite(&B00001100)
End Sub


Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then _d4 = 1 Else _d4 = 0
If Zeichen.5 = 1 Then _d5 = 1 Else _d5 = 0
If Zeichen.6 = 1 Then _d6 = 1 Else _d6 = 0
If Zeichen.7 = 1 Then _d7 = 1 Else _d7 = 0
' Höherwertiges Nibble übertragen
_e = 1
Waitms 1
_e = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then _d4 = 1 Else _d4 = 0
If Zeichen.1 = 1 Then _d5 = 1 Else _d5 = 0
If Zeichen.2 = 1 Then _d6 = 1 Else _d6 = 0
If Zeichen.3 = 1 Then _d7 = 1 Else _d7 = 0
' Niederwertiges Nibble übertragen
_e = 1
Waitms 1
_e = 0
Waitms 1
End Sub

elektropro
04.05.2007, 18:36
hey danke!!

ich werde das gleich mal ausprobieren wenn ich mein usb programmer habe.
http://www.david-schleicher.de/