Ich habe mir vor ca. 2 Wochen ein Starterset gekauft, mit einem Atmega8 Kontroller. Bisher hab ich noch nicht geschafft einen String auf diesem Display auszugeben. Wenn ich Spannung auf das Board geben leuchtet auf dem Display nur die 1.te Zeile. Wenn ich den Kontrast verändere, kommt die 2.te nicht zum Vorschein. Hab auch schon mehrere Programme versucht, aber es ändert sich nicht. So langsam weiss ich nicht mehr weiter, für kleine Tipps oder Ideen wäre ich sehr dankbar.
>Hab auch schon mehrere Programme versucht,
Dann ist das Ding vermutlich falsch angeschlossen.
Na das, was Falk angegeben hat ist doch in C geschrieben?! (Staun, Kopf kratz) Paul
Ja auf die Idee bin ich auch schon gekommen, nur leider mit einem negativem Ergebnis!! Sonst würde ich ja auch nicht fragen
display kaputt? mal dein "Liquid Crystal Display Display" getauscht? mal simuliert? proteus (kostenlose demo bei www.gidf.de) hat das disp und atmels in bibs. mal mit nem oszi an die signalleitungen geschaut, ob das rauskommt, was rauskommen soll?
Nen Oszi hab ich leider nicht. hab nur die versorgungsspannung überprüft. und die stimmt.
Hallo, das mit der ersten Zeile schwarz ist erstmal ok, das Display hat seinen Reset erledigt und ist nicht initialisiert. Wenn die Software es erfolgreich initialisiert hat, ist es komplett aus oder beide Zeilen grau/schwarz, wenn die Kontrastspannung zu hoch eingestellt ist. Da Du sonst nichts weiter über Deine Hard- und Software verraten hast und meine Glaskugel auch nur einen schwarzen Balken anzeigt... Gruß aus Berlin Michael
>hab nur die versorgungsspannung überprüft.
Hast du auch mal die anderen Anschlüsse überprüft ?
1. Wo hast du was angeschlossen ?
2. Welchen C Code hast du verwendet ?
3. ein Starterset gekauft. Welches ?
Muss man dir alles einzeln aus der Nase ziehen ?
2) Ich habe den Code aus dem AVR-GCC-Tutorial(diese Seite) benutzt. Hab die Defines für die Ports geändert. Aber geändert hat sich nix. 3) Hab mir das Set ( http://www.myavr.de/shop/article.php?artDataID=41 ) gekauft 1) Habs an die Anschlussports gesteckt, die dafür vorher gesehen sind
Sören J. wrote:
> Tauschen geht nicht. Hab nur das eine da.
simuliern? ja, simulieren!
Mit simulieren hab ich mich noch nicht so recht beschäftigt. Hab bisher immer nur WINAVR und nicht AVR-Studio benuzt, lade es aber gerade runter.
Dein Display ist mit DB4..7 an PD4..7 auf dem Board angeschlossen. Im Tutorial werden aber PD0..3 an DB4..7 angeschlossen. Das ist dein Problem !
nimm gleich proteus, da siehst mehr als die port-zustände. da kannst du einfach dein display und deinen µC als bauteile einfügen und zusammenschalten. da gibts auch ein virtuelles oszi und diverse lustige sachen. lieder kann die demo nicht speichern. aber zum bestimmen der problemquelle software/hardware tuts die demo.
Ne das hab ich ja auch gemerkt und die Belegung der Pins geändert. Aber es tut sich halt einfach nix
Ist das richtig, dass das Programm Proteus 7 Demonstration heisst?? So durchsichtig sieht das Programm aber auf den ersten Blick nicht aus.
ja, ist richtig ist ein bisschen gewöhnungsbedürftig, aber doch noch recht intuitiv. library -> pick... da fügst du bauteile zu deiner device-liste hinzu. wenn du das bauteil dann links in der device list angeklickt hast, kannst du es platzieren. wenn kein bauteil im schematic markiert ist, kannst du verbindungen ziehen. quellen: rechtsklick im schematic -> place -> generator. auf die gleich weise kannst du auch dmm's oder oszis einbaun. mit debug -> start... und debug -> execute kannst die simulation starten.
>mit debug -> start... und debug -> execute kannst die simulation >starten. Fein, dann simulieren wir das Display einfach. Zeigt damit in der Realität aber auch nichts an. Man könnte die falsche Pinbelegung im Programm ändern. Aber das wäre ja zu einfach ;)
Sören J. wrote: > Ne das hab ich ja auch gemerkt und die Belegung der Pins geändert. Aber > es tut sich halt einfach nix .
Das ist meine PIN- Belegung von meinem Display: 1 = Port D.2 LCD PIN 4 RS = Enable 2 = Port D.3 LCD PIN 6 E = Enable 3 = Port D.4 LCD PIN 11 DB4 = Datenbit 4 4 = Port D.5 LCD PIN 12 DB5 = Datenbit 5 5 = Port D.6 LCD PIN 13 DB6 = Datenbit 6 6 = Port D.7 LCD PIN 14 DB7 = Datenbit 7 7 = Port B.0 (Jumper R/W) LCD PIN 5 R/W =Read/Write (oder fest auf Low) 8 = Port B.1 (Jumper PWM) LCD PIN 15 Hintergrundbeleuchtung (Anode) Kontrastreglung LCD PIN 3 Vo 13 = 5V LCD PIN 1 Vss 14 = Masse LCD PIN 2 Vdd LCD PIN 7 DB0 = Datenbit 0 LCD PIN 8 DB1 = Datenbit 1 LCD PIN 9 DB2 = Datenbit 2 LCD PIN 10 DB3 = Datenbit 3 LCD PIN 10 DB3 = Datenbit 3 LCD PIN 15 Hintergrundbeleuchtung (Kathode) Das ist der Auszug aus der Header von einem fertigem Programm, hab die Definitionen so geändert wie ich es für richtig gehalten habe. Läuft trotzdem nicht. #define LCD_PORT PORTB /**< port for the LCD lines */ #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ #define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */ #define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */ #define LCD_DATA0_PIN 7 /**< pin for 4bit data bit 0 */ #define LCD_DATA1_PIN 8 /**< pin for 4bit data bit 1 */ #define LCD_DATA2_PIN 9 /**< pin for 4bit data bit 2 */ #define LCD_DATA3_PIN 10 /**< pin for 4bit data bit 3 */ #define LCD_RS_PORT LCD_PORT /**< port for RS line */ #define LCD_RS_PIN 4 /**< pin for RS line */ #define LCD_RW_PORT LCD_PORT /**< port for RW line */ #define LCD_RW_PIN 5 /**< pin for RW line */ #define LCD_E_PORT LCD_PORT /**< port for Enable line */ #define LCD_E_PIN 6 /**< pin for Enable line */
Oh Mann, versuchs mal so: #define LCD_PORT PORTD /**< port for the LCD lines */ #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ #define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */ #define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */ #define LCD_DATA0_PIN 4 /**< pin for 4bit data bit 0 */ #define LCD_DATA1_PIN 5 /**< pin for 4bit data bit 1 */ #define LCD_DATA2_PIN 6 /**< pin for 4bit data bit 2 */ #define LCD_DATA3_PIN 7 /**< pin for 4bit data bit 3 */ #define LCD_RS_PORT LCD_PORT /**< port for RS line */ #define LCD_RS_PIN 2 /**< pin for RS line */ #define LCD_RW_PORT PORTB /**< port for RW line */ #define LCD_RW_PIN 0 /**< pin for RW line */ #define LCD_E_PORT LCD_PORT /**< port for Enable line */ #define LCD_E_PIN 3 /**< pin for Enable line */
Hm ne klappt immer nocht nicht. Ich verstehe auch nicht warum Data_bit0 - Data_bit3 nicht vom Display auf Pin 7-10 liegen. Oder lese ich das Datenblatt falsch??
JP2 auf R/W gesteckt ? >Ich verstehe auch nicht warum Data_bit0 >- Data_bit3 nicht vom Display auf Pin 7-10 liegen. Weil es keinen PORTD10 gibt ;)
LCD PIN 7 DB0 = Datenbit 0 LCD PIN 8 DB1 = Datenbit 1 LCD PIN 9 DB2 = Datenbit 2 LCD PIN 10 DB3 = Datenbit 3 das sind doch die Ports über die die Daten geschickt werden an dem LCD-Modul?? DB0 is doch das Kontrollermodul und LCD PIN7 das Display. Jumper sind auch gesetzt.
>LCD PIN 7 DB0 = Datenbit 0 >LCD PIN 8 DB1 = Datenbit 1 >LCD PIN 9 DB2 = Datenbit 2 >LCD PIN 10 DB3 = Datenbit 3 >das sind doch die Ports über die die Daten geschickt werden an dem >LCD-Modul?? Falsch, DB0..3 liegen an Masse. Die Daten werden über DB4..7 geschickt. Sieh in den Schaltplan deines LCD Moduls. Das sind die Pins 11 bis 14 am LCD. Aber auch PORTD11..14 gibt es nicht beim uC ;) Der kennt nur PORTD0 bis PORTD7. Was sagt dir das ?
Ich hab immer falsch gedacht, aus der Sicht des Displays. Werde es noch mal versuche. Danke
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.