Hallo Habe ein Problem mit der Ansteuerung dieses Displays. MEGA 128 16Mhz #define sport PORTA #define dport PORTC #define RS PA6 #define RW PA4 #define E PA2 #define D0 PC1 #define D1 PC0 #define D2 PC3 #define D3 PC2 #define D4 PC5 #define D5 PC4 #define D6 PC7 #define D7 PC6 #define DELAY1 asm volatile ("nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n"); void main() { DDRC=0xff; DDRA=0xff; //init Display PORTA &=~(1<<PA2); //Function Set PORTA &=~ (1<<PA4) | (1<<PA6); PORTC &=~(1<<PC1) | (1<<PC0) | (1<<PC3); PORTC |=(1<<PC2) | (1<<PC5) | (1<<PC4); PORTC &=~(1<<PC7) | (1<<PC6); PORTA |=(1<<PA2); PORTA &=~(1<<PA2); DELAY1 //Display on PORTA &=~ (1<<PA4) | (1<<PA6); PORTC |=(1<<PC1) | (1<<PC0) | (1<<PC3) | (1<<2); PORTC &=~ (1<<PC5) | (1<<PC4) | (1<<PC7) | (1<<PC6); PORTA |=(1<<PA2); PORTA &=~(1<<PA2); //clear display PORTA &=~ (1<<PA4) | (1<<PA6); PORTC |=(1<<PC1); PORTC &=~(1<<PC0) |(1<<PC2) | (1<<PC3) | (1<<PC5) | (1<<PC4) |(1<<PC7)|(1<<PC6) ; PORTA |=(1<<PA2); PORTA &=~(1<<PA2); DELAY1 //entry mode PORTA &=~ (1<<PA4) | (1<<PA6); PORTC &=~(1<<PC1); PORTC |=(1<<PC0) | (1<<PC3); PORTC &=~(1<<PC2) | (1<<PC5) | (1<<PC4) | (1<<PC7)|(1<<PC6); PORTA |=(1<<PA2); PORTA &=~(1<<PA2); } es tut sich nichts. ist das Display nicht HD44780 kompatible??? Ist meine Ansteuerung richtig habe diese aus folgendem Datenbaltt http://www.lcd-module.de/deu/pdf/doma/dip162-d.pdf Danke
Hallo Habe die Lib von Fleury gefunden und angepasst an meine Ports und alles geht wunderbar. Mein fehler erst suchen und lesen dann Schreiben. Trotzdem Vielen Dank Das Dispaly gibts bei Pollin für 4,95 hat Backlight und ist super. Gibt es auch in Blau /weiss aber dann für 7,95 trotzdem ein super preis. Danke
hab genau das gleiche display (zumindest vom Typ), bekomm die lib aber net angepasst, bzw erscheint aufm display nichts (hab nen atmega32 mit 16MHz) hab erst mal nur das angepasst: ... #define XTAL 16000000 ... #define LCD_LINES 2 #define LCD_DISP_LENGTH 16 ... #define LCD_PORT PORTA #define LCD_DATA0_PORT LCD_PORT #define LCD_DATA1_PORT LCD_PORT #define LCD_DATA2_PORT LCD_PORT #define LCD_DATA3_PORT LCD_PORT #define LCD_DATA0_PIN 4 #define LCD_DATA1_PIN 5 #define LCD_DATA2_PIN 6 #define LCD_DATA3_PIN 7 #define LCD_RS_PORT LCD_PORT #define LCD_RS_PIN 0 #define LCD_RW_PORT LCD_PORT //der hängt bei mir eigentlich auf masse #define LCD_RW_PIN 2 #define LCD_E_PORT LCD_PORT #define LCD_E_PIN 1 ich hab die Datenleitungen DB4-DB7 and den ports A4-A7 mal ne dumme frage: dieses LCD_DATA0_PIN soll das DB0 beim Display sein (bin leider nicht @home, sonst würd ichs ausprobieren), kann ja sein ich muss die Datenleitungen DB0-DB3 nehmen?!?
Nee, du musst DB4 bis DB7 nehmen... Da einzige, was mich an dem Display stört ist, dass VCC und GND gegnüber der Standardbelegung vertauscht ist. Gruß Elektrikser
mein ja nur weil da z.b LCD_DATA0_PIN steht, kann ja sein, dass dieses DATA0 sich irgendwie auf DB0 bezieht und ich dann die zahlen abändern müsste?!?
Also noch mal langsam zum Mitdenken: 4-Bit-Ansteuerung (nach deinem Listing): 1 -> +5V 2 -> GND 3 -> Kontrast (Schleifer 10k-Poti) 4 -> RS -> PA0 5 -> R/W -> PA2 6 -> E -> PA1 7 -> DB0 -> GND 8 -> DB1 -> GND 9 -> DB2 -> GND 10-> DB3 -> GND 11-> DB4 -> PA4 12-> DB5 -> PA5 13-> DB6 -> PA6 14-> DB7 -> PA7 Die Fleury-Lib funktioniert mit diesem Display sehr gut. Habe erst diese Woche welche in Betrieb genommen. Schließ mal R/W an.
hab auch dieses LCD mit blauer beleuchtung als belegung ist wie folgt 1 -> GND 2 -> +5V 3 -> Kontrast 4 -> RS -> PC5 5 -> R/W -> PC4 6 -> E -> PC3 7 -> DB0 -> GND 8 -> DB1 -> GND 9 -> DB2 -> GND 10-> DB3 -> GND 11-> DB4 -> PC2 12-> DB5 -> PC1 13-> DB6 -> PC0 14-> DB7 -> PB1 15-> LED + 16-> LED - die LCD.h dazu sieht SO aus #define LCD_PORT PORTC /**< 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 PORTB /**< port for 4bit data bit 3 */ #define LCD_DATA0_PIN 2 /**< pin for 4bit data bit 0 */ #define LCD_DATA1_PIN 1 /**< pin for 4bit data bit 1 */ #define LCD_DATA2_PIN 0 /**< pin for 4bit data bit 2 */ #define LCD_DATA3_PIN 1 /**< pin for 4bit data bit 3 */ #define LCD_RS_PORT LCD_PORT /**< port for RS line */ #define LCD_RS_PIN 5 /**< pin for RS line */ #define LCD_RW_PORT LCD_PORT /**< port for RW line */ #define LCD_RW_PIN 4 /**< pin for RW line */ #define LCD_E_PORT LCD_PORT /**< port for Enable line */ #define LCD_E_PIN 3 /**< pin for Enable line */ data3 port auf PB1 weil ich was vermurkst hatte im plan
wobei ich seh das du eines mit einem 2x7 connector hast hast auch daran gedacht die pins richtig anzugehen ? 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ich habe da mal die seiten vertauscht aus dummdusel...
da es unter BASCOM funktioniert, bin ich mir da ziemlich sicher, dass es richtig angeschlossen ist (da muss ich ja auch in der init alle pins erst mal BASCOM sagen) ist es eigentlich wichtig welche 4 Datenleitungen ich vom Display nehme???
ich habe auch das 1602E-01 aber bei mir zieht es 0,5 A und zeigt nur die hintergrundbeleutung an... wie sieht das nun mit der Versorgungsspannung dabei aus; 1 -> +5V 2 -> GND oder andersherum?
lt. Datenblatt sollte es doch eigentl. so sein: 1 -> +5V 2 -> GND Bin aber auch gerade dran ein Layout zu erstellen und frage mich ob es wirklich so ist. Da im Schaltplan vom POLLIN-RFID-Bausatz am Pin 1: GND ist und am Pin 2 +5V ?? (dort wird das selbe LCD genutzt) Weiß jemand etwas genaueres?? Gruß
MaXX wrote: > Weiß jemand etwas genaueres?? > 1 -> +5V > 2 -> GND Passt bei diesem LCD (TC1602E-01). Keine Ahnung warum sich der Hersteller solch eine bescheuerte Abweichung gegenüber dem Standard hat einfallen lassen.
Es gibt auch noch andere Merkwürdigkeiten bei diesem Display: Ich betreibe meine Displays immer so, dass ich die Kontrasteinstellung im EEPROM des Microcontrollers speichere und dann über einen PWM-Ausgang am Microcontroller den Kontrast-Pin V0 ansteuere. So kann man sich einen extra Poti sparen. Der PWM-Ausgang taktet mit etwa 17 kHz und eine Glättung über ein RC-Glied war bisher nie nötig. Bei diesem LC-Display ist es aber nötig! Wenn man es nämlich nicht tut, merkt man zwar zuerst nichts weiter, aber wundert sich, dass Störungen auf dem Display auftreten, d.h. es werden Zeichen falsch dargestellt oder auch verschluckt. Auch Zeilenwechsel-Kommandos werden dann gerne nicht korrekt ausgeführt. Ein 17 kHz Takt am V0-Pin stört also das ganze Modul. Ich kenne kein anderes Modul, bei dem es solche Probleme gibt. Aber ich kenne auch kein anderes, bei dem die Stromversorgung so dumm vertauscht ist... Nunja, wenigstens ist es richtig schön billig :-). Gruß, Volker
Hallo, ich habe ein ähnliches Problem mit dem gleichen Display (TC1602E-01 von Pollin), wollte deswegen aber auch keinen neuen Beitrag auf machen. Ich habe alles korrekt angeschlossen (mehrfach überprüft). Die Portbelegung ist wie folgt: PA.0 => RS PA.1 => E PA.2 bis PA.5 => DB4 bis DB7 Vdd auf 5V Vss und RW auf GND Mein BASCOM code sieht wie folgt aus:
1 | $regfile = "m16adef.dat" |
2 | $crystal = 16000000 |
3 | |
4 | Config Portd.6 = Output |
5 | |
6 | Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , _ |
7 | Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 |
8 | Config Lcd = 16 * 2 |
9 | |
10 | Cls
|
11 | Locate 1 , 1 |
12 | Lcd "Hallo Welt" |
13 | |
14 | Do
|
15 | Toggle Portd.6 |
16 | Waitms 500 |
17 | Loop
|
18 | End
|
An PD.6 hängt nur eine LED, damit ich sehe, dass der µC überhaupt was macht - und das tut er auch... die LED blinkt. Das LCD zeigt allerdings nur eine Reihe schwarze Balken an. Hat jemand vielleicht eine Idee, was noch helfen könnte?
gitarero schrieb: > Ich habe alles korrekt angeschlossen (mehrfach überprüft). > > Die Portbelegung ist wie folgt: > PA.0 => RS > PA.1 => E > PA.2 bis PA.5 => DB4 bis DB7 > > Vdd auf 5V > Vss und RW auf GND Und wo liegt bei dir V0? Auf Masse? Das könnte die schwarzen Balken erklären. V0 (Kontrast) muss über einen Spannungsteiler (oder besser Poti) auf ca. 0,5-1V gelegt werden. Und darüber hinaus das Wichtigste: Initialisierst du dein Display überhaupt? Ich kann in deinem Code nichts entsprechendes finden!? Aber ich kenne mich mit Bascom auch wenig bis gar nicht aus.
Hi, ja Danke erstmal mit dem Tipp von V0. Der hing tatsächlich auf Masse... Da hab ich mir erstmal ordentlich an den Kopf gehaun ;) Habe das dann natürlich nochmal mit einem 10k Poti und V0 auf ca 1V probiert. Zu meiner Ernüchterung bleibt das Display dunkel, bzw zeigt nichts an. Dann habe ich mir mal ein Programm geschrieben, was alle 200ms einen neuen Befehl an das LCD sendet. Mit einer LED gegen Masse kann man an DB4 bis DB7 auch einen "Datenstrom" sehen, sprich die LED blinkt. E und RS scheinen aber auf Dauerfeuer 5V zu sein. Ist das richtig so? Habe zum Initialisieren des Displays jetzt auch mal den Befehl "initlcd" dazu genommen. Hilft aber nix :( Noch Ideen? Grüße, Ingo
Also die Initialisierung des Displays ist zwingend notwendig, sonst tut sich gar nichts! Bei der Initialisierung ist das Timing extrem wichtig. D.h. die Befehle müssen im richtigen Zeitabstand an das Display gesendet werden. Darüber hinaus ist bei einer Ansteuerung über 4 statt 8 Datenleitungen eine spezielle Initialisierung nötig. Normalerweise läuft das Display nämlich mit 8 Datenleitungen. Bitte schau dir dieses Dokument hier an und überprüfe, ob der Vorgang wie beschrieben stattfindet (insbesondere die Seiten 5+6, "Initializing by Instruction"): http://www.afug.uni-goettingen.de/~dk1rm/datasheet/lcd_162c.pdf Ich würde in jedem Falle immer die "Initialization by Instruction" durchführen. Bei 4 Datenleitungen (4-bit Interface Data) ist es ohnehin Pflicht. Im Schritt "Function Set" wird das Display dann auf 4 Bit eingestellt. Die Datenleitungen DB0-DB3 müssen dabei fest verdrahtet auf 0 oder 5 Volt sein (je nach gewünschter Zeilenzahl und Character Font). Bleiben die Datenleitungen unverbunden, liegen sie allerdings automatisch auf High. Wenn es vom Platz her möglich ist, würde ich sie aber sicherheitshalber lieber trotzdem fest auf 0 oder 5 Volt legen. Gruß, Volker
Was ich vergessen habe zu sagen: Ab dem Zeitpunkt der Umstellung auf 4 Bit müssen natürlich alle Bytes mit zwei(!) Sendevorgängen übertragen werden: Zuerst wird jeweils das höherwertige Nibble an DB4-DB7 übertragen und sofort danach das niederwertige Nibble ebenfalls an DB4-DB7. Der Controller im Display baut das Byte aus den beiden Nibbles danach wieder zusammen.
>Die Datenleitungen DB0-DB3 müssen dabei fest verdrahtet auf >0 oder 5 Volt sein (je nach gewünschter Zeilenzahl und Character Font). Bullshit. >Bleiben die Datenleitungen unverbunden, liegen sie allerdings >automatisch auf High. Das ist jetzt mal richtig. >Wenn es vom Platz her möglich ist, würde ich sie >aber sicherheitshalber lieber trotzdem fest auf 0 oder 5 Volt legen. Das ist aber ziemlich blöd wenn mal jemand auf die Idee kommt die RW Leitung auf lesen zu setzen. Zum Beispiel für den Busy Check. Dann werden DB0-DB3 Ausgänge und machen einen netten Kurzschluss gegen GND oder 5V.
holger schrieb: >>Die Datenleitungen DB0-DB3 müssen dabei fest verdrahtet auf >>0 oder 5 Volt sein (je nach gewünschter Zeilenzahl und Character Font). > > Bullshit. Benimm dich mal! > Das ist aber ziemlich blöd wenn mal jemand auf die Idee > kommt die RW Leitung auf lesen zu setzen. Zum Beispiel für > den Busy Check. Dann werden DB0-DB3 Ausgänge und machen einen > netten Kurzschluss gegen GND oder 5V. Falls du den Beitrag von gitarero gelesen haben solltest, hast du vielleicht übersehen, dass er die Leitung RW dauerhaft auf GND gelegt hat, weshalb DB0-DB7 grundsätzlich hochohmige Eingänge sind. Das Lesen des Displays ist damit unmöglich! Und jetzt erkläre uns bitte einmal, wie du ohne feste Verdrahtung von DB0-DB3, die deiner Meinung nach ja "Bullenscheiße" ist, im 4-Bit Betrieb dem Display bei der Initialisierung mitteilen möchtest, dass du nur 1 Zeile haben willst, bzw. 5x7 Dots als Character Font!
Eine bisher unbeantwortete Frage ist auch, ob die Leitungen DB0-DB3 im 4-Bit-Betrieb beim Lesen des Displays überhaupt als Ausgänge geschaltet werden. Denn im 4-Bit-Betrieb werden sie ja überhaupt nicht mehr benötigt! Ich würde mal vermuten, dass DB0-DB3 im 4-Bit-Betrieb einfach abgeschaltet werden, also in einen hochohmigen Dauerzustand versetzt werden. Ist aber nur eine Vermutung. Das Datenblatt sagt darüber gar nichts. Man müsste es wohl testen. Oder weiß jemand etwas genaueres darüber?
>Eine bisher unbeantwortete Frage ist auch, ob die Leitungen DB0-DB3 im >4-Bit-Betrieb beim Lesen des Displays überhaupt als Ausgänge geschaltet >werden. Das Display ist nach einem Power On Reset immer im 8Bit Mode. Warum muss man das wohl sonst per Software erst in den 4Bit Mode bringen? Deine Annahmen sind alle falsch. Und deine Ratschläge auch. Wieso willst du DB0-DB3 fest an 5V hängen? Da sind doch die Pullups im Display. Die Leitungen sind bereits auf 5V. Macht also keinen Sinn. DB0-DB3 auf 0V zu legen macht auch keinen Sinn. Alleine die Tatsache das diese Pins Ausgänge werden können verbietet es geradezu diese per Drahtbrücke auf feste Pegel zu legen. Wenn da jemand an seinem Steckbrett rumfummelt und R/W mal rausnimmt werden diese Pins zu Ausgängen weil auch R/W einen internen Pullup hat. Du magst ja Sonderfälle: Nehmen wir mal den Noop der sein Display mit falschen Timings betreibt. Busycheck wird per R/W gemacht. Initialisierung auf 4Bit hat nicht geklappt. Display ist immer noch im 8Bit Mode. DB0-DB3 liegen an GND oder 5V und werden beim Busy Check zu Ausgängen. Na herzlichen Glückwunsch. Mal sehen wie lange der LCD Controller das aushält.
holger schrieb: >>Eine bisher unbeantwortete Frage ist auch, ob die Leitungen DB0-DB3 im >>4-Bit-Betrieb beim Lesen des Displays überhaupt als Ausgänge geschaltet >>werden. > > Das Display ist nach einem Power On Reset immer im 8Bit Mode. > Warum muss man das wohl sonst per Software erst in den 4Bit Mode > bringen? Habe ich irgendwas gesagt, was die Annahme rechtfertigt, dass ich hier anderer Meinung wäre? > Deine Annahmen sind alle falsch. Und deine Ratschläge auch. Bitte erstmal LESEN und GEHIRN EINSCHALTEN vor dem Antworten! > Wieso willst du DB0-DB3 fest an 5V hängen? 5 Volt nur, um Störungen bei der Initialisierung zu vermeiden. Wie wir wissen, ist ein hochohmiger Eingang, der offen rumliegt, sehr störanfällig. Es sei denn, er hat Pullups. Es geht auch nicht um 5 Volt, sondern um 0 Volt. Bevor du hier umfangreiche Erklärungen lieferst, solltest du erstmal meine Frage beantworten. Ich wiederhole sie gerne: "Und jetzt erkläre uns bitte einmal, wie du ohne feste Verdrahtung von DB0-DB3, im 4-Bit Betrieb dem Display bei der Initialisierung mitteilen möchtest, dass du nur 1 Zeile haben willst!" 4-Bit-Betrieb heißt, dass ich grundsätzlich nur 4 Datenleitungen zur Verfügung habe, die ich auf L oder H setzen kann und mehr nicht! Nur so zur Klarstellung. Es geht hier auch nicht nur um ein Steckbrett, sondern auch um eine fest aufgebaute Schaltung. > Nehmen wir mal den Noop der sein Display mit falschen Timings betreibt. > Busycheck wird per R/W gemacht. Wer Busycheck machen will, kann sein Display ohnehin nicht mit 4 Bit betreiben, sofern er es folgendermaßen konfigurieren will: 1-Zeilen-Modus oder 5x7 Font. Es sei denn, die Leitungen DB0-DB3 werden im 4-Bit-Betrieb beim Lesen des Displays nicht als Ausgänge geschaltet und bleiben hochohmig. Aber diese Frage kannst du vermutlich auch nicht beantworten. Wer immer zwei Zeilen benutzt und einen 5x10 Zeichensatz (falls das Display den überhaupt bietet), kann Busycheck machen und DB0-DB3 im 4-Bit-Betrieb gerne offen hängen lassen. Das würde ich dann auch so machen. Aber mir ging es ja um den allgemeinen Fall, bei dem man im 4-Bit-Betrieb evtl. die Konfiguration des Displays ändern will. Da gibts kein Busycheck. Da wird R/W fest auf 0 V gelegt und bleibt auch dort! Und DB0-DB3 werden fest verdrahtet. Sonst geht das nämlich nicht.
Ich mag den Thread so nicht stehen lassen. Wieder zu viele falsche Annahmen. Also eine letzte Antwort. >Und jetzt erkläre uns bitte einmal, wie du ohne feste Verdrahtung von >DB0-DB3, die deiner Meinung nach ja "Bullenscheiße" ist, im 4-Bit >Betrieb dem Display bei der Initialisierung mitteilen möchtest, dass du >nur 1 Zeile haben willst, bzw. 5x7 Dots als Character Font! Ganz einfach: DB0-DB3 sind beim 4Bit Mode scheissegal. Es ist Wurst wie die Pegel an den Pins aussehen. DB0-DB3 sind NICHT daran beteiligt auf eine Zeile und 5x7 umzuschalten. Das geht alles über DB4-DB7. Eben halt in zwei Nibbeln nacheinander. Im Anhang mal ein Bild was dir das hoffentlich deutlich macht. Die Initialisierungssequenz eines HD44780 in den 4 Bit Mode. Siehst du da irgendwo DB0-DB3? DB0-DB3 beim 4 Bit Mode fest auf 0 zu legen hat nur einen Effekt: Unnötig Strom über die Pullups zu verbrauchen.
Endlich ein konstruktiver Beitrag! Hättest du dieses Datenblatt gleich gepostet, wäre die ganze Diskussion überflüssig gewesen. Das Datenblatt zum hier besprochenen Display sieht diese Form der Initialisierung nämlich nicht vor. Das war das Problem. Ich habe weiter oben einen Link zu dem Datenblatt gepostet, auf das ich mich die ganze Zeit bezog. Den hattest du dir wohl nicht angeschaut. Von dem Datenblatt ausgehend, war eine Konfiguration des Displays nur im 8-Bit-Modus möglich, nicht aber in 4 Bit. Siehe beiliegenden Auszug. Unter Berücksichtigung dieses Datenblatts war keine meiner Annahmen falsch. Hoffen wir mal, dass dieses Display so kompatibel ist, dass die Konfigurationsänderung auch NACH dem Umschalten auf 4 Bit noch möglich ist. P.S.: Ist aber auch ne Macke hier im Forum, dass man beim Bearbeiten eines Beitrags die beigefügten Bilder nicht mehr bearbeiten (= löschen) kann. Oder hab ich was übersehen?
Hallo, ich hatte zwei Tage extreme Probleme dieses Display an meinem ATmega328 zum laufen zu bringen. Anfänglich half mir dieser Thread, wurde dann doch aber sehr verwirrend. Ich habe jetzt nicht die Ahnung wie die anderen hier, jedoch nun ein laufendes Display am uC. Mein Ausgangspunkt war: Display stellte nur die Balken dar, oder nichts. Programmausführung hing bei:
1 | lcd_init(LCD_DISP_ON); |
Also genau der Threadbeitrag. ich habe viel am Board hin und her gelötet, viel am Code geschraubt und Stundenlang debgged. Erfolge hatte ich erst, als ich R/W an einen Pin angeschlossen hatte, der PWM kann. Ich wieß wirklich nicht, ob dies woodoo ist, oder ich sonst ein Zauber gemacht habe, aber jetzt funktioniert es. Anbei meine Belegung. (und ja, die offenen Datenleitungen auf GND hängen!) Hier die Defines;
1 | #define LCD_PORT PORTC
|
2 | #define LCD_DATA0_PORT LCD_PORT
|
3 | #define LCD_DATA1_PORT LCD_PORT
|
4 | #define LCD_DATA2_PORT LCD_PORT
|
5 | #define LCD_DATA3_PORT LCD_PORT
|
6 | #define LCD_DATA0_PIN 0
|
7 | #define LCD_DATA1_PIN 1
|
8 | #define LCD_DATA2_PIN 2
|
9 | #define LCD_DATA3_PIN 3
|
10 | #define LCD_RS_PORT PORTD
|
11 | #define LCD_RS_PIN 4
|
12 | #define LCD_RW_PORT PORTD
|
13 | #define LCD_RW_PIN 6
|
14 | #define LCD_E_PORT PORTD
|
15 | #define LCD_E_PIN 5
|
Hoffe dieser Beitrag auf den alten Post und die Belegung hilft andere. Neben dem angehängten Bild der Belegung noch ein Erfolgsphoto.
Peter Shaw schrieb: > Programmausführung hing bei: >
1 | > lcd_init(LCD_DISP_ON); |
2 | >
|
Die meisten benutzen ja die Routinen von Fleury. Ich habe ursprünglich einen anderen Zugang gewählt: Ich hatte damit angefangen, das Display im 3-Wire Betrieb zu nutzen und über ein Schieberegister 74HCT164 anzusteuern. Dann kann man es sogar problemlos an einem ATtiny85 betreiben, weil es nur 3 Leitungen belegt. Später, als die ATmega328 erschienen und alles preiswerter wurde, habe ich dann die Routinen auf 4-Bit-Betrieb umgestellt. Auf jeden Fall ist das Konzept mit dem Schieberegister aber sehr interessant und erwähnenswert. Auch weil man dabei einiges lernen kann: http://www.micahcarrick.com/avr-3-wire-hd44780-lcd-interface-avr-gcc.html > Erfolge hatte ich erst, als ich R/W an einen Pin > angeschlossen hatte, der PWM kann. Ich wieß wirklich nicht, ob dies > woodoo ist, oder ich sonst ein Zauber gemacht habe, aber jetzt > funktioniert es. Das hört sich wirklich nach Woodoo an ;-). Ich kann mir nicht vorstellen, dass es etwas mit der PWM zu tun hat, die du an dem Port ja gar nicht nutzt :).
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.