Moin, ich hab da ein Problem, und zwar möchte ich mit einem Atmega 8 eine Lcd Platine (HD44780 ), mit dem integrierten Controller (ST7066) zu steuern. Also vorab die Platine ist korrekt angeschlossen der Kontrast ist auch richtig angeschlossen und funktioniert. Mein Problem ist, dass die LCD Anzeige nicht anzeigt und nur der schwarze Balken blinkt. Hier der Code: $regfile = "m8def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 $sim Config Lcdpin = Pin , Port = Portb , E = Portd.6 , Rs = Portd.5 Dim A As Byte Config Lcd = 20 * 4 , Chipset = Ks077 Cls Lcd "60" Wait 1 Lowerline Wait 1 Lcd "Shift this." Wait 1 For A = 1 To 10 Shiftlcd Right Wait 1 Next For A = 1 To 10 Shiftlcd Left Wait 1 Next Locate 2 , 1 Lcd "*" Wait 1 Shiftcursor Right Lcd "@" Wait 1 Home Upper Lcd "Replaced." Wait 1 Cursor Off Noblink Wait 1 Cursor On Blink Wait 1 Display Off Wait 1 Display On Thirdline Lcd "Line 3" Fourthline Lcd "Line 4" Home Third Home Fourth Home F Locate 4 , 1 : Lcd "Line 4" Wait 1 Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228 ' Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240 Cls Lcd Chr(0) ; Chr(1) _temp1 = 1 !rCall _write_lcd End Also das ist der beispiel Code aus Bascom mit der Umwandlung für meine Schaltung. Kann einer einen Fehler im Code finden. Vorab schon mal danke Gruß Knut
:
Verschoben durch User
Also habe jetzt fest gestellt das die anzeige nicht initialisiert ist. Wie mache ich das denn ? ich weis was im Datenblatt steht weis nur net wie man das umsetzten. Vielleicht einer ne ahnung Gruß knut
Sowas ? Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portb.1 , Db5 = Portb.2 , _ Db4 = Portb.3 , E = Portb.4 , Rs = Portb.5 Config Lcd = 20 * 4 Cls Cursor Off Die Datenleitung soll auch irgendwie zum LCD....oder sehe ich es falsch..?
Hallo Da kommt doch fast jeden Tag eine Anfrage wegen dieses Displays. Gib doch einfach mal oben rechts bei "mikrocontroller.net durchsuchen" als Suchbegriff HD44780 ein. Da erscheint so einiges brauchbares. Gruß Joachim
@ xxx:Auf die Idee kam ich auch schon findet man nix brauch bares @Thomas: also ich wollte die Anzeige eigendlich im 8 bit modus betreiben. die daten kommen ja auch an Zahlen werden angezeigt nur buchstanben nicht da kommen irgendwelche komischen zeichen. irgend wie bekomme ich es nicht hin das busy bit abzufragen und die Anzeige zu initialisieren.
G. Matthias schrieb: > @ xxx:Auf die Idee kam ich auch schon findet man nix brauch bares > > @Thomas: also ich wollte die Anzeige eigendlich im 8 bit modus > betreiben. > die daten kommen ja auch an Zahlen werden angezeigt nur buchstanben > nicht da kommen irgendwelche komischen zeichen. Das deutet auf einen Verdrahtungsfehler hin. Wahrscheinlich hast du 2 Leitungen vertauscht. Wenn du von einem Buchstaben zb 'A' sagen würdest, welches Zeichen stattdessen kommt, könnte man mithilfe des ASCII Codes wahrscheinlich sogar sagen, welche beiden Leitungen vertauscht sind. > > irgend wie bekomme ich es nicht hin das busy bit abzufragen und die > Anzeige zu initialisieren. Was jetzt? Ist das LCD initialisiert (kannst du etwas ausgeben) oder nicht?
Ausgeben kann ich etwas aber nur zahlen der rest wird entweder nicht angegeben oder es sind komische symbole verdrahtungs Fehler hab ich als erstes aus geschlossen hab die Leitungen 8 mal durch geklingelt. weis nicht genau ob si initialisiert ist wie gesagt nur die Zahlen werden aus gegeben. komisch ist nur das zum beispiel 6-3-2 = 1 immer wieder ganz kurz auf leuchtet und sonst = als 1 aus gegeben wird und die Rechnung als ein Zeichen
G. Matthias schrieb: > angegeben oder es sind komische symbole verdrahtungs Fehler hab ich als > erstes aus geschlossen hab die Leitungen 8 mal durch geklingelt. Dein µC gibt aber für ein 'A' nicht den ASCII Code eines anderen Zeichens aus. Wenn du LCD "A" machst, dann gibt dein Programm den ASCII Code für A, nämlich Hex 41 oder eben binär 01000001 auf die Datenleitungen Und dein LCD weiß das auch und aktiviert bei diesem Inhalt der Datenleitungen die Pixel, die für dich ein A ergeben. Hast du allerdings beispielsweise Leitung DB6 mit Leitung DB7 vertauscht, dann gibt zwar der Prozessor nach wie vor das Bitmuster 01000001 aus, aber durch den Leitungsdreher versteht dein LCD 10000001 und malt dann ein ganz anderes Zeichen hin (irgendein japanisches Sonderzeichen) Die Leitungen müssen auch nicht unbedingt vertauscht sein, es könnte auch ein Kurzschluss zwischen den Leitungen sein. Dann versteht dein LCD anstelle des vom µC vorgesehenen 0100001 eben beispielsweise (Leitung DB6 mit DB7 kurz geschlossen) 1100001 und das ist dann wieder irgendein anderes Sonderzeichen. > weis nicht genau ob si initialisiert ist wie gesagt nur die Zahlen > werden aus gegeben. Wenn du ausgeben kannst, dann ist es auch initialisiert. > > komisch ist nur das zum beispiel 6-3-2 = 1 Test abspecken. Ein einzelnes A ausgeben und dann das Programm in eine Endlosschleife schicken. Und dann gibst du bescheid, was am LCD zu lesen ist. Mal das Zeichen ab oder mach ein Photo wenn du es nicht beschreiben kannst. Eine Übersicht über den Standardzeichensatz eines HD44780 findest du bsp hier. http://de.wikipedia.org/wiki/HD44780 Mit der Kenntnis von ein paar ausgegebenen Zeichen und dem was statt dessen angezeigt wird, kann man schon ganz gut einkreisen, wo du dich verlötet hast.
also jetzt gibt die Anzeige nur noch einen schwarzen Balcken aus hier noch mal der code hab ein bisschen was verändert. 'abschluss_projekt_gniza.BAS: Temperaturabhänige Lüftersteuerung '---------------------------------------------------------- $regfile = "m8def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 ' Ddrd = &B01111110 Ddrc = &B00000000 Ddrb = &B11111111 Admux = &B11000000 Adcsra = &B11100010 Portd = &B11111101 Portc = &B11111100 Portb = &B11111111 Mcucr = &B00001110 Gicr = &B11000000 Sreg.7 = 1 'Config Lcdpin = Pin, Db0 = Portb.0 Db1 = Portb.1 Db2 = Portb.2, Db3 = Portb.3, Db4 = Portb.4, Db5 = Portb.5, Db6 = Portb.6, Db7 = Portb.7, E = Portd.6 , Rs = Portd.5 , Config Lcdpin = Pin , Port = Portb , E = Portd.6 , Rs = Portd.5 Dim Lb As Word Dim Hb As Word Dim A As Word Dim B As Byte Config Lcd = 20 * 4 Do Cls Locate 1 , 1 Lcd "" ' Hb = Adch Lb = Adcl Hb = Hb And &B00000011 Hb = Hb * 256 A = Lb + Hb Udr = A Waitms 500 If A > 601 Then Portd.1 = 1 Elseif A < 586 Then Portd.1 = 0 Waitms 1 End If Loop benutze aber auch eine HD44780 mit Ks066 und st 7066 muss ich da irgend was besonderes beachten ??
Weiß auch das jetzt bei LCD "" nichts drine steht war beabsichtigt
Eine Übersicht über den Standardzeichensatz eines HD44780 findest du bsp hier. http://de.wikipedia.org/wiki/HD44780 Mit der Kenntnis von ein paar ausgegebenen Zeichen und dem was statt dessen angezeigt wird, kann man schon ganz gut einkreisen, wo du dich verlötet hast.
G. Matthias schrieb: > Weiß auch das jetzt bei LCD "" nichts drine steht war beabsichtigt Ist das wirklich so schwer zu verstehen? Mach .... LCD "A" Do Loop und dann identifizier hier http://de.wikipedia.org/wiki/HD44780 welches Zeichen anstelle des A auftaucht. Dann machst du dasselbe noch für ein paar andere Buchstaben die in der Codetabelle ein wenig auseinander liegen. Immer was soll sein was ist dann schauen wir uns die Binärcodes an und suchen nach Gemeinsamkeiten wie Vertauschungen oder Kurzschlüsse, die dieses Verhalten erklären.
G. Matthias schrieb: > also jetzt gibt die Anzeige nur noch einen schwarzen Balcken aus Jetzt hast du die Initialisierung zerstört. Lass sie so wie sie war! Du kannst nicht ein LCD so initialisieren, dass es zwar Ziffern aber keine Buchstaben anzeigt! Entweder es ist initialisiert, dann zeigt es an oder es ist nicht initialisiert, dann zeigt es einen Balken. Eine andere Möglichkeit gibt es in Bezug auf die Initialisierung nicht.
wie initialisiere ich das ding den über haupt ?? sry aber ich bin kein entwickler oder so was bin auszubildender im 3 lehrjahr
google mal nach einem Pascom standard Programm. Du möchtest eine LCd Anzeige in 8 Bit modus ansteuern ? Also : $regfile = "m8def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 $lcd = &HC000 'Adresse LCD Daten $lcdrs = &H8000 'Adresse LCD Register select Config Lcdbus = 8 'LCD im 8-Bit Bus Mode Config Lcd = 20 * 4 4 Do Cls 'loesche das LCD Display Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte Lcd "Bla Bla" 'String auf Display anzeigen Locate 2,1 LCD "Test" Loop Wenn es nicht funzt, denke ich hast ein Problem mit der Verdrahtung.. Oder probiere erstmal im einfachen 4 Bit Modus : http://halvar.at/elektronik/kleiner_bascom_avr_kurs/lcd_textanzeige/
also bei diesem programm kommt diese zeichen in der ersten zeie ein mal und in der zweiten ist nur der schwarze balken $regfile = "m8def.dat" ' specify the used micro $crystal = 1000000 ' used crystal frequency $baud = 9600 ' use baud rate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space 'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6 'Config Lcdpin = Pin , D0 = Portb.0 , D1 = Portb.1 , D2 = Portb.2 , D3 = Portb.3 , 'D4 = Portb.4 , D5 = Portb.5 , D6 = Portb.7 , D7 = Portb.6 , E = Portd.6 , Rs = Portd.5 Config Lcdpin = Pin , Port = Portb , E = Portd.6 , Rs = Portd.5 Ddrd = &B01100010 Ddrc = &B00000000 Ddrb = &B11111111 Admux = &B11000000 Adcsra = &B11100010 Portd = &B10011101 Portc = &B11111100 Portb = &B00000000 Mcucr = &B00001110 Gicr = &B11000000 Do Dim A As Byte Config Lcd = 20 * 4 , If Portb.6 = 0 Then Portb = &B00111000 Portb = &B00001111 Portb = &B00000001 Portb = &B00000110 Else Loop End If Locate 1 , 1 Lcd "A" Do Loop End und das heist dann
nöpe wie eben schwarzern balken und der schwarze block verdrahtung ist in ordnung hab alles durch geklingelt passt ist genau so angeschlossen wie es sein soll
sry falsches geht nur zu öffnen mit eagle das jetzt der schalt plan
G. Matthias schrieb: > nöpe wie eben schwarzern balken und der schwarze block IN deinem ersten Programm (ganz oben) hattest du doch eine korrekte Initialisierung mit der du aufs LCD ausgeben konntest und auch was gesehen hast. Ich versteh nicht, warum du die nicht weiter benutzt. > verdrahtung ist > in ordnung hab alles durch geklingelt passt ist genau so angeschlossen > wie es sein soll Kann nicht sein. Denn sonst würde es funktionieren.
Hi
>sry falsches geht nur zu öffnen mit eagle das jetzt der schalt plan
Das auch nur mit Eagle.
MfG Spess
Also es war eine Verdrehung zwischen db6 und db7 aber auf der Hardware war alles okay dort hab ich nicht fest gestellt wird vielleicht ein Fehler beim compilieren oder beim schreiben gewesen sein danke noch mal an alle und vor allen an Karl. Gruß knut
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.