PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD mit P. Fleury



chientech
12.10.2006, 08:59
Hi,

ich möchte ein LCD Display 4x20 an meinen Mega32 anschließen und die lcd libs von P.Fleury nutzen, dem ich auf diesem Weg auch gleich für die lcd libs danken möchte.

Ich möchte das LCD an nur einen Port anschließen (4-bit IO mode).
Dazu hab ich folgende Frage:

P.Fleury schreibt in lcd.h
#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 0
#define LCD_DATA1_PIN 1
#define LCD_DATA2_PIN 2
#define LCD_DATA3_PIN 3

laut Interface Plan wird Daten Pin D4-D7 angeschlossen.
Gehe ich richtig in der Annahme dass, LCD_DATA0_PIN 0-3 = D4 bis D7 entspricht?

gruß Christoph

chientech
12.10.2006, 09:20
Ein Plan ist dazu da richtig gelesen zu werden.

Meine Frage hat sich erledigt.

p.s. kann es sein das die Uhr im Forum ne Stunde nachgeht?

m.a.r.v.i.n
12.10.2006, 09:25
Gehe ich richtig in der Annahme dass, LCD_DATA0_PIN 0-3 = D4 bis D7 entspricht?

korrekt. Die Fleury Lib unterstützt nur den 8-Bit Bus Mode und den 4-Pin IO Mode.

Gruß m.a.r.v.i.n

chientech
20.10.2006, 20:02
Hi,

benutzt Irgendwer ein LCd mit 4x20 Zeichen?

was muss hier in P.Fleurys libs eingetragen werden?
abgesehen von Lines 4 und Length 20.

#define LCD_LINES 2
#define LCD_DISP_LENGTH 16
#define LCD_LINE_LENGTH 0x40
#define LCD_START_LINE1 0x00
#define LCD_START_LINE2 0x40
#define LCD_START_LINE3 0x14
#define LCD_START_LINE4 0x54
#define LCD_WRAP_LINES 0
#define LCD_IO_MODE 1

hab mein LCD verkabelt und angeschlossen leider kommen nur die zwei durchgezogene Balken, naja die Versorgung stimmt schon mal.
Leider läuft das testprogramm welches bei Fleurys libs dabei ist nicht.

Hat jemand Code für ein Display mit 4x20 Zeichen welcher sicher funktioniert, würde meine fehlersuche eingrenzen.

Hubert.G
21.10.2006, 13:43
www.roboternetz.de/wissen/index.php/LCD-Modul_am_AVR#AVR-GCC_Programm_2

Hier sollten deine Fragen beantwortet werden.

jar
21.03.2007, 15:33
www.roboternetz.de/wissen/index.php/LCD-Modul_am_AVR#AVR-GCC_Programm_2

Hier sollten deine Fragen beantwortet werden.

absolut nein, ich verzweifel gerade, auch wenn dem Fleury Dank und Ehre gebührt, aber wie schafft er es alle Ports für das LCD auf einem Port zu halten ?

mega8
der PortC fällt vollständig aus wegen ADC
der PortD fällt vollständig aus wegen RxD und TxD
der PortB fällt vollständig aus wegen OC1 und OC2

ergo muss ich die LCD Lines und die Select Lines splitten

dafür hat er in seinen Defs aber keine Möglichkeiten vorgesehen

LCD_Port wirkt vollständig auf Data und RS/E,

die Data Benennung im 4-bit mode ist alles andere als toll, denn es wird nur D4-D7 genutzt, aber er zählt auch im 4-bit Mode 0-3

muss ich nun die komplette LCD.H umschreiben ? ist ja auch nicht Sinn einer Libary mit Funktionen, oder bin ich wieder mal zu ahnungslos ?

jedenfalls Neudefinition vom RS_Pin brachte schon mal gleich Fehlermeldungen in Verbindung mit lcd.h

hat jemand Tipps für mich bitte ?

Hubert.G
21.03.2007, 16:10
Für welchen Kontroller?

m.a.r.v.i.n
21.03.2007, 16:51
Hi,

du kannst doch bei der LCD Lib jeden Pin auf einen anderen Port benutzen, wie es dir gefällt. Natürlich muß man dafür die lcd.h anpassen. Das ist ja der Sinn von dem Ganzen. Das Beispiel im Wiki ist halt nur für Port C geschrieben, aber das kann man beliebig anpassen, z.B.:



#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 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 PORTA /**< port for RS line */
#define LCD_RS_PIN 1 /**< pin for RS line */
#define LCD_RW_PORT PORTB /**< port for RW line */
#define LCD_RW_PIN 2 /**< pin for RW line */
#define LCD_E_PORT PORTD /**< port for Enable line */
#define LCD_E_PIN 3 /**< pin for Enable line */


Ebenso kann man auch jeden einzelnen Datenpin auf einen anderen Datenport legen.

jar
21.03.2007, 17:40
Hi,

du kannst doch bei der LCD Lib jeden Pin auf einen anderen Port benutzen, wie es dir gefällt. Natürlich muß man dafür die lcd.h anpassen.

#define LCD_RW_PORT PORTB /**< port for RW line */
#define LCD_RW_PIN 2 /**< pin for RW line */

Ebenso kann man auch jeden einzelnen Datenpin auf einen anderen Datenport legen.

ich habs ja geschafft, aber ob das so richtig ist ? ich hab gelernt das eine LCD.H die LCD Funktionen bekannt macht, diese wird typisch nie geändert, eigene Portdefinitionen finden im main.c statt

BTW warum besteht er auf einen RW Pin ? in BASCOM funzt das mit GND ganz gut.....


pony zickt auch noch etwas, aber es wird so langsam

warum pony nicht vor dem brennen löschen macht ? obwohl in options eingestellt, brenne ich nur gibt es fehler, lösche ich vorher im pony läuft es....