Am LCD solte der Pin RW richtigen Pegel haben (mir fällt gerade nicht ein welcher) , aber der bereitete mir auch einigen Ärger.
ansonsten :
waitms 100
initlcd
und dann klappt die Ausgabe.
Gento
hört sich für mich nach timingproblem an.
stimmt auch deine taktfrequenz sicher?
$crystal = 1000000 1MHz?
oder eventuell doch 2 oder 4 oder 8 MHz?
Bei der initialisierungscheint was nicht recht zu stimmen ...
eine mögliche abhilfe währe "zu Fuß" zu initialisieren.
Schick mal nen Link zum Datenblatt von dem Dings
Vor den Erfolg haben die Götter den Schweiß gesetzt
Am LCD solte der Pin RW richtigen Pegel haben (mir fällt gerade nicht ein welcher) , aber der bereitete mir auch einigen Ärger.
ansonsten :
waitms 100
initlcd
und dann klappt die Ausgabe.
Gento
Ja, aber manche 16*1 LCDs sind so aufgebaut, daß die ersten 8 zeichen als Zeile 1 und die zweiten 8 Zeichen als Zeile 2 behandelt werden.??? das Display hat doch nur eine Zeile ???
Deshalb auch das "16*1" mit dem Zusatz "a" beim Bascom LCD init.
Das ist für die "zweizeiligen Einzeiler"
Beim Einschalten ohne Ansteuerung sollte auf dem "a" Display auch nur eine Hälfte schwarz sein.
Beim "normalen" 16*1 ist dann alles schwarz.
Gruß
Christopher
Hi Leute,
Timingproblem ---- ich benutze den internen Quarz sollte 1000000 sein.
Pegel an RW -------- liegt fest an GND
nun zum "zweizeiligen Einzeiler" --- scheint der Lösung schon sehr nahe zu kommen
habe auch gelernt wie man einen Programmcode einsetzt
Ich habe ein kleines Testprog. geschrieben, wobei ich es einmal mit 16*1a und einmal mit 16*1 getestet habe.
Die ausgaben waren schon recht merkwürdigCode:$regfile = "m16def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 16 $crystal = 1000000 'Die Frequenz des internen Oszilators Config Lcd = 16 * 1 'Display Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Dim A As Single Dim B As Single A = 4.0 B = 12.1 Initlcd Do Cls Locate 1 , 1 Lcd "test1 1234567890" Wait 2 Cls Locate 1 , 1 Lcd "test2 " ; A ; " " ; B Wait 2 Cls Locate 1 , 1 Lcd "test3" Locate 2 , 1 Lcd A ; B Wait 2 Loop
Bei 16*1a
test1_12
test2_4.0_12.100
test3___00003790
bei 16*1
test1_12
test2_4.
test3___4.012.10
was merkwürdig ist , ist das test1 nirgendswo als "test1_1234567890" ausgegeben wurde.
NaJa was soll´s, werden das Ding schon irgendwie schaukeln.
=D> vielen dank für die tollen Tips, wäre sonst bestimmt noch beim Ärgern, jetzt kann ich schon wieder
Gruß
Rolf
Da isser wieder,
es läuft alles. Ich benutze nun 16*1a und habe meine Ausgaben als 2 * 8 Zeichen konfiguriert.
\/ \/ \/ \/ \/
vielen vielen dank euch allen
Gruß
Rolf
hi,
dann kannst du mir vielleicht helfen?
ich habe R/W auf GND, die Kontrastspannung lässt sich prima regeln. betriebsspannung stimmt auch alles.
Ich habe aber sehr wenig programmiererfahrung und habe dein programm von oben genommen. Aber da hab ich nur 8 ausgefüllte kästchen. Ich habe dieses LCD von Pollin für 2,95 mit dem HD44780
Es hat eigentlich 16*1, aber vllt. muss man auch 8*2 machen.
Kannst du bitte mal dein programm schicken, was nun läuft?
vielen Dank
Hi T.J.
das höhrt sich so an als wenn du das gleiche Display hast wie ich.
die esten 8 Zeichen werden mit
Locate 1,1
Lcd "text" (Zeichen 1-8 )
angesprochen
die 2.ten 8 Zeichen mit
Locate 2,1
Lcd "Text" (Zeichen 9-16)
dabei ist dann das erste Zeichen an der 9,ten Stelle.
Ich hoffe Du kannst was damit anfangen.
Gruß
Rolf
ok, aber ich habe vor allem wenn ich anschalte nur 8 kontrastkästchen
ist das Programm von oben soweit richtig?
hier mal meine Variante:
Code:$regfile = "m16def.dat" $crystal = 1000000 Config Lcd = 16 * 1a 'Display Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcdbus = 4 Ddrd = &B11100000 Portd = &B00000000 Portd.5 = 1 Portd.6 = 0 Dim A As Single Dim B As Single A = 4.0 B = 12.1 Initlcd Do Toggle Portd.5 Toggle Portd.6 Cls Locate 1 , 1 Lcd "test1 1234567890" Wait 2 Cls Locate 1 , 1 Lcd "test2 " ; A ; " " ; B Wait 2 Cls Locate 1 , 1 Lcd "test3" Locate 2 , 1 Lcd A ; B Wait 2 Loop
sooo, es läuft nun.
da ich Port d genommen hatte musste JTAG deaktiviert werden.
danke für deine Hilfe \/
Hi T.J.
sorry das ich gestern nicht mehr geantwortet habe, aber ich hatte leider keine Zeit.
Umsobesser finde ich es das Du selbst die Lösung gefunden hast.
Gruß
Rolf
Lesezeichen