PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD 4*27 Zeichen also > 80 Zeichen - 2 Controller



TobiasBlome
21.10.2008, 17:11
Hallo,
ich habe ein LCD mit 2 Controllern.
Wie bekomme ich das LCD angesteuert? Im Netz habe ich einen Code gefunden, aber ich weiß nicht, wie ich den als Schleife einbinden kann:

Der Code läuft einmal durch und das Ergebnis ist auf dem LCD.

Was muss ich machen damit die Variable auf dem LCD hochgezählt wird?
mit einem "GoTo" Verweis hab ich es noch nicht geschafft...

Vielen Dank, Tobias



$regfile = "m32def.dat" 'AT-Mega32
$crystal = 1000000 'Quarz: 1 MHz

Dim X As Single 'Variable zum hochzählen

Dim ___lcdno As Bit

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 , E2 = Portb.6

Config Lcd = 40 * 4



___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "1estesttesttesttesttesttest"
Locate 2 , 1
Lcd "2estesttesttesttesttesttest"


___lcdno = 1 'Dies ist nur notwendig wenn das Display zwei LCD-Controller besitzt
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "3estesttesttesttesttesttest"
Locate 2 , 1
Lcd X '"4estesttesttesttesttesttest"


Do

Incr X
wait 1

'goto Anzeige 'funktioniert aber bei mir nicht....

Loop

End

TobiasBlome
21.10.2008, 18:03
noch eine andere Frage: wo bekommt man .LBX Dateien her? ich habe einige bei meiner BASCOM Installation aber mir fehlt z.B. die Servo.LBX. gibt es da eine download seite?

Danke, Tobias

Michael
21.10.2008, 18:03
Hallo TobiasBlome,

es spricht nichts dagegen, die Auswahl der Displayhälfte, also
___lcdno = 1
und die Position und den Inhalt, also
Locate und Lcd X
innerhalb der Do-Loop Schleife zu schreiben.

Gruß, Michael

TobiasBlome
21.10.2008, 18:08
oh - das hatte ich noch gar nicht getestet...aber

ich wollte den µC nicht ständig belasten und hatte es deshalb mit einer goto schleife versuch und das geht nicht...


'LCD mit 2 Controllern

$regfile = "m32def.dat" 'AT-Mega32
$crystal = 1000000 'Quarz: 1 MHz

Dim X As Word 'Variable zum hochzählen

Dim ___lcdno As Bit

'Config Lcdpin = Pin , E = Portc.4 , E2 = Portc.5 , Rs = Portb.5 , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 , E2 = Portb.6

Config Lcd = 40 * 4
'_________________________________________________ ______________
Do


Incr X
Goto Anzeige

Wait 1


Loop

'_________________________________________________ ______________

End





Anzeige:

___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "1estesttesttesttesttesttest"
Locate 2 , 1
Lcd "2estesttesttesttesttesttest"


___lcdno = 1 'Dies ist nur notwendig wenn das Display zwei LCD-Controller besitzt
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "3estesttesttesttesttesttest"
Locate 2 , 1
Lcd X

TobiasBlome
21.10.2008, 18:11
DANKE!!!! DENKFEHLER

das muss natürlich GOSUB sein!!! :oops:

Tobias

TobiasBlome
21.10.2008, 18:13
es funktioniert, obwohl das return auch fehlte.... Also:



'LCD mit 2 Controllern

$regfile = "m32def.dat" 'AT-Mega32
$crystal = 1000000 'Quarz: 1 MHz

Dim X As Word 'Variable zum hochzählen

Dim ___lcdno As Bit

'Config Lcdpin = Pin , E = Portc.4 , E2 = Portc.5 , Rs = Portb.5 , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 , E2 = Portb.6

Config Lcd = 40 * 4
'_________________________________________________ ______________
Do


Incr X
Gosub Anzeige

Wait 1


Loop

'_________________________________________________ ______________

End





Anzeige:

___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "1estesttesttesttesttesttest"
Locate 2 , 1
Lcd "2estesttesttesttesttesttest"


___lcdno = 1 'Dies ist nur notwendig wenn das Display zwei LCD-Controller besitzt
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "3estesttesttesttesttesttest"
Locate 2 , 1
Lcd X '"4estesttesttesttesttesttest"

return

Michael
21.10.2008, 19:51
Hallo TobiasBlome,

es reicht, das "Initlcd" einmalig vor der Hauptschleife auszuführen.

Gruß, Michael

TobiasBlome
21.10.2008, 20:42
so funktioniert es bei mir nicht:


Anzeige:
Initlcd

___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt
'Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "1estesttesttesttesttesttest"
Locate 2 , 1
Lcd "2estesttesttesttesttesttest"


___lcdno = 1 'Dies ist nur notwendig wenn das Display zwei LCD-Controller besitzt
'Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "3estesttesttesttesttesttest"
Locate 2 , 1
Lcd X '"4estesttesttesttesttesttest"

return

TobiasBlome
21.10.2008, 20:45
also es geht aber es tauchen manchmal falsche Zeichen in verschiedenen Zeilen auf.

TobiasBlome
21.10.2008, 20:53
Hallo,
ich habe nun das "wait 1" rausgenommen und einen 14,7456MHz Quarz angelötet (mit Kondensatoren). Im Programm und in den Fusebits hab ich die Einstellungen geändert: warum schafft der µC nur ca. 1ne Zahl pro Sekunde zu addieren / hochzuzählen?

Tobias

Michael
21.10.2008, 21:57
Hallo TobiasBlome,

es reicht, das "Initlcd" einmalig und vor der Hauptschleife für jede Displayhälfte auszuführen.

Gruß, Michael

TobiasBlome
21.10.2008, 22:10
also so oder?



Anzeige:
Initlcd
'Cursor Off

___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt
'Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "1estesttesttesttesttesttest"
Locate 2 , 1
Lcd "2estesttesttesttesttesttest"


___lcdno = 1 'Dies ist nur notwendig wenn das Display zwei LCD-Controller besitzt
'Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "3estesttesttesttesttesttest"
Locate 2 , 1
Lcd X '"4estesttesttesttesttesttest"

return

Michael
22.10.2008, 15:54
Hallo TobiasBlome,

es reicht, das "Initlcd" einmalig und vor der Hauptschleife für jede Displayhälfte auszuführen.
Vielleicht sollte ich gleich den ganzen Text rot einfärben, liest du ihn dann? ;)


Programmstart

___lcdno = 0
Initlcd
___lcdno = 1
Initlcd

Do
Programmtext
Gosub Anzeige
Loop
End

Anzeige:
___lcdno = 0
Lcd "erste Hälfte"
___lcdno = 1
Lcd "zweite Hälfte"
Return

Gruß, Michael

TobiasBlome
22.10.2008, 16:53
Hallo Michael,
vielen dank für den Programmcode - jetzt habe sogar ich den code verstanden \:D/

ich werde ihn gleich mal umsetzen.

Danke - Tobias :-)

TobiasBlome
23.10.2008, 16:05
Hallo Michael,
konnte das Programm leider erst heute testen....

funktioniert bestens - noch mal vielen Dank ;-)

Tobias

Gento
24.10.2008, 01:13
http://www.Gento.de/affesagtnein.gif

Voll Interesse verfolgte ich das biologische sparmonkel zum zigten male.

Gento

thewulf00
24.10.2008, 09:41
@Gento: Die Message Deines Posts entzieht sich mir irgendwie...