Guten Tag, ich habe ein paar Probleme mit meinem neuen LCD-Modul. Schaut euch bitte mal die Bilder an, passt das, dass nur oben auf dem Display schwarze Quadrate zu sehen sind? Weiter passiert auch nichts ich kann an der Kontrastspannung drehen wie ich will, aber nur der Kontrast der Quadrate ändert sich kein Text zu sehen! Hier mein Programm, dass ich aus dem Forum habe: $regfile = "m32def.dat" $crystal = 16000000 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 20 * 4 Initlcd Cls Cursor Off Locate 1 , 1 Lcd "Hello World" Do nop Loop End Ich besitze einen ATmega32 die Fuses sind richtig eingestellt! Bitte helft mir! Mit freundlichen Grüßen Robin
> $crystal = 16000000 Hast du 16Mhz? Hast du das kontrolliert? > Config Lcd = 20 * 4 Das kann ich von hier sehen, dass das kein 20*4 ist
Ok Vielen Dank mit dem 16*2 werde ich es gleich noch einmal Testen! Die Fuses sind auf 16 MHz eingestellt! Und ich habe das Pollin Evaluationsboard mit 16MHz Schwingquarz.
Leider hat sich trotzdem nicht geändert, immer noch die schwarzen Quadrate wie auf dem Bild zu sehen! Ist es kaputt :(((
Hast Du auch wirklich die Leitungen DATA 4-7 vom Display benutzt? Ich frage das nur, weil Du ja alle 16 Leitungen des Displays belegt hast. Hast Du einen Schaltplan gezeichnet, dann sende ihn bitte mit. MfG Paul
Tippe auch auf Anschlussfehler. Einfach mal zeigen, was wo angeschlossen ist. Die Pinbelegung stimmt beim Pollin-Board manchmal nicht und/oder wird leicht verwechselt. Was könnte man machen? ATmega32 Pinbelegung heraussuchen. Spannungsversorgung aus und alles einmal mit einem Multimeter "durchpiepen".
So ich hab mich mal hier angemeldet, weils einfach ein geniales Forum ist! Ich benutze den Extensionsport J4 des Pollin Evaluationsboardes. Display-Pin Extesionsport-Pin ATmega32-Pin Vss 39 GND Vdd 40 VCC V0 ---Poti----> 39 GND RS 28 PD2 RW 39 GND E 29 PD3 DB0-3 39 GND DB4 30 PD4 DB5 31 PD5 DB6 32 PD6 DB7 33 PD7 LED+ 40 Vcc LED- 39 GND
Von GND weglegen hab ich schon getestet das bringt auch nichts! Die Jumper braucht man ja nicht, wenn doch für was? Aber passt das mit dem Display überhaupt (nur die obere Reihe schwarze Quadrate?)
Robin Wenert schrieb: > Die Jumper braucht man ja nicht, wenn doch für was? Die sind zur Verbindung mit den LEDs, den Tastern und dem Summer gedacht. Hätte ja sein können, dass da noch eine Verbindung besteht. Robin Wenert schrieb: > Aber passt das mit dem Display überhaupt (nur die obere Reihe schwarze > Quadrate?) Wenn Dein Display korrekt angesteuert wird, verschwinden die Quadrate.
Robin Wenert schrieb: > Aber passt das mit dem Display überhaupt (nur die obere Reihe schwarze > Quadrate?) Das ist völlig normal, solange das Display nicht ordentlich initialisiert wurde.
Achso OK! Vielen Dank Die Jumper hab ich noch aufgesteckt aber an denen sollte es doch nicht liegen, die verändern ja nichts am Ausgang.
Meine Messergebnisse von ATmega32 nach J4 sind auch anlog zu der Pinbelegung des Extesionsport J4! Was kann ich noch probieren?
So, jetzt hab ich ein paar Softwareänderungen gemacht!
1 | $regfile = "m32def.dat" |
2 | $crystal = 16000000 |
3 | |
4 | Config Portd = Output |
5 | Config Portc.0 = Output |
6 | |
7 | Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 |
8 | Config Lcd = 16 * 2 |
9 | |
10 | Portc.0 = 0 |
11 | Initlcd |
12 | Cls |
13 | Cursor Off |
14 | |
15 | Locate 1 , 1 |
16 | Lcd "Hello World" |
17 | |
18 | Do |
19 | nop |
20 | Loop |
21 | |
22 | End |
Wenn ich jetzt das Display mit externer Stromversorgung betreibe, sind die Quadrate da, wenn ich allerdings das Pollin Board anschalten, verschwinden sie einfach. Was ist jetzt los, ich hab auch die Kontrasteinstellung mehrmals verändert, aber es ist kein Text zu sehen.
OK ich hab zwar nichts gemacht aber die Quadrate sind wieder dauerhaft da! Bitte helft mir!
Hast du schon mal vom LCD-Pin zum Mega32-Pin jeden einzelnen durch gemessen?
Ich würd eventuell sogar soweit gehen, dass ich mir ein Testprogramm mache, mit dem ich einen einzelnen Pin vom PortD auf 1 setze und alle anderen auf 0. Dann messe ich mit dem Voltmeter, ob am LCD auch wirklich nur dieser eine Pin auf 1 ist und alle anderen auf 0. Hab ich das für einen Pin nachgewiesen, dann kommt der nächste drann. Damit hätte ich dann (auch zur eigenen Beruhigung) nachgewiesen, dass die komplette Kette vom Programm bis zu den LCD Pins korrekt verdrahtet ist, nirgends Leiterbahnunterbrechungen existieren und auch keine Kurzschlüsse vorliegen. Und zwar am konkreten Aufbau, und ich teste das, was ich tatsächlich verdrahtet habe und nicht das, was ich glaube verdrahtet zu haben. Der allererste Schritt ist nun mal die Sicherstellung der korrekten Verdrahtung. Wenn da ein Fehler drinn ist (und ja, ich hab mich selbst dabei auch schon vertan; das geht schneller als einem lieb ist), dann KANN sich die Software abmühen soviel sie will, es wird nicht funktionieren. Leider gilt die Umkehrung nicht. Wennd dann immer noch nicht geht, dann ist entweder das Timing falsch oder dieses LCD benötigt eine etwas andere Initialisierungssequenz.
als ich diese Displays angesteuert hatte stand bei mir teilweise garkein lcdinit drin.... (was jetzt nicht heißen soll das man es nicht benötigt!!!) aber config lcdbus = 4 sollteset du mal mit dazuschreiben! Gruß
bei mir funktioniert das Display mit folgender initialisierung, die Pausen sind auch wichtig. Gruß Roman ;RS an pd6 ;RW an gnd ;E an pb4 ;Data0-3 an PB0-Pb3 lcdinit: ldi r16,0 out portb,r16 cbi portd,6 ;RS =0 ldi r16,2 ;4 bit modus an (noch im 8 bit modus bit5) out portb,r16 rcall enable ldi r18,5 rcall warten2 ;etwas warten ca.5 ms ldi r16,0b00101000 ;Function set N 1=2 zeilen Display, F 0=5x7 zeichensatz rcall byteout rcall delay5 ;warten 80 us ldi r16,0b00001100 ;Display ON/OFF rcall byteout rcall delay5 ldi r16,0b00000001 ;CLS rcall byteout rcall delay5 ldi r16,0b00000110 ;Mode set rcall byteout rcall delay5 sbi portd,6 ldi r16,0 sts $0068,r16 ret enable: sbi portb,4 nop nop nop nop nop nop nop nop cbi portb,4 nop nop nop nop nop nop nop nop ret sendbyte: byteout: ;zahl in r16 push r17 push r16 mov r17,r16 ;zahl in r16 swap r16 andi r16,0x0f out portb,r16 rcall enable mov r16,r17 andi r16,0x0f out portb,r16 rcall enable pop r16 pop r17 ret adresse: ;adresse in r16 0-7 LCD 1x16 0x40-0x47 push r17 push r16 cbi portd,6 ldi r17,128 or r16,r17 rcall byteout sbi portd,6 pop r16 pop r17 ret zeichen: ;zeichen in r16 sbi portd,6 rcall byteout ret
Roman K. schrieb: > die Pausen sind auch wichtig. Genau -Selbst, wenn sie 4 1/2 Jahre lang sind. :) Kundendienst: "Was steht auf dem Display?" Anrufer: "Eine Blumenvase!" MfG Paul
Das LCD TC1602 ist ein stinknormales HD44780 kompatibles und unterscheidet sich durch nichts von allen anderen. Die Bezeichnung '1602' sollte schon klarmachen, das es ein 16 Zeichen Display mit 2 Zeilen ist. Roman K. schrieb: > bei mir funktioniert das Display mit folgender initialisierung, > die Pausen sind auch wichtig. Spassvogel. Du kodierst mit NOPs, sagst aber nicht, mit welcher Taktfrequenz dein MC läuft.
Hi > Du kodierst mit NOPs, sagst aber nicht, mit welcher >Taktfrequenz dein MC läuft. Die NOPs sollten für 40MHz reichen. MfG Spess
Da stimmen noch andere Sachen nicht:
> ;Data0-3 an PB0-Pb3
glaube ich nicht und die Initialisierung ist nicht konform mit dem
Datenblatt von Hitachi, das eindeutig sagt, das der 4-Bit Modus dreimal
aufgerufen werden muss, bevor man sicher sein kann - siehe Anhang.
Ausserdem löscht der Poster unnötigerweise den gesamten Port B statt nur
der benutzten Pins.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.