Forum: Compiler & IDEs LCD Ansteuerung


von Alois (Gast)


Lesenswert?

Hallo liebe Leute,

ich habe eine Frage bzgl. der Ansteuerung eines LCD Displays mit
WinAVR.

Mein Problem ist folgendes:
Ich habe vor ca. 3 Monaten eine Schaltung mit ATMega8 und LCD Display
aufgebaut und die ganze Sache mit Bascom programmiert. Da man in Bascom
die Datenleitungen des Displays frei auf die Pins legen konnte habe ich
mit deswegen  auch keine alzu grossen Gedanken gemacht.
Nun bin ich aber auf C umgestiegen und möchte gerne das damalige Basic
Programm in C umschreiben. Da ich aber an der LCD Ansteuerung nichts
mehr ändern kann (habe dafür extra Platinen anfertigen lassen) wollte
ich fragen ob es möglich ist - ähnlich wie in Bascom - die
Datenleitungen und Pins frei zu definieren.
Ich habe die lcd.c aus der AVRlib schon versucht abzuändern aber
irgendwie schaffe ich das nicht.
Das LCD wird im 4 Bit Modus betrieben
DB4 = Pinc.2
DB5 = Pinc.3
DB6 = Pinc.4
DB7 = Pinc.5

RS = Pinb.1
E =  Pinb,2
R/W ist fest verdrahtet

Kann mir jemand helfen oder existiert vielleicht eine Version der lcd.c
bei der man das flexibel einstellen kann ? Ich habe im Forum schon
gesucht aber leider ohne Erfolg.

Vielen Dank für Eure Hilfe !!!

von Loisl (Gast)


Lesenswert?

WELCHES LCD-Display?

von Stefan (Gast)


Lesenswert?

In der LCD Library von Peter Fleury kann man - soweit ich es als
Anfänger überblicke - die Ports und Pins frei einstellen.

Dafür sind dort extra #define Anweisungen vorhanden:
1
#define   LCD_PORT   PORTA
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   LCD_PORT
11
#define   LCD_RS_PIN   4
12
#define   LCD_RW_PORT   LCD_PORT
13
#define   LCD_RW_PIN   5
14
#define   LCD_E_PORT   LCD_PORT
15
#define   LCD_E_PIN   6

Die Initialisierung und die Steuerbefehle sind allerdings auf LCDs mit
HD44780 Controller oder  KS0073 Controller ausgelegt.

http://homepage.hispeed.ch/peterfleury/avr-software.html#libs

von Alois (Gast)


Lesenswert?

Hallo Stefan

danke für die Info - ich versuchs damit

von Superhirn (Gast)


Lesenswert?

Hi,

kann man diese Lib auch für 8bit übertragunsmodus benutzen? und wie
lange dauert es, ein 4*16display mit 4bit voll zuschreiben? ich würd
lieber 8bit nehmen wegen der geschwindigkeit. portprobleme hab ich
keine.

Frohe Ostern
Thomas

von Peter Fleury (Gast)


Lesenswert?

8bit für LCD Ansteuerung ist Unsinn und bring kein
Geschwindigkeits-Vorteil gegenüber 4bit mode, da das LCD viel langsamer
ist als der AVR und deshalb ständig im lcd_waitbusy() warten muss.

von Superhirn (Gast)


Lesenswert?

Dann ists ja ok. Da mein LCD-Board(muss noch bauen) nähmlich über I²C
einmal angesteuert werden soll, und das niucht das einzige I²C Modul
sein wird, will ich nicht, dass der Master ein paar ms auf das
lcd-board warten muss.
Wie Lange dauert es nochmal, alles voll zu schreiben?

von Peter Fleury (Gast)


Lesenswert?

Der Master muss in jedem Fall auf das Display warten, bis das Zeichen
geschrieben ist. Und eben diesen Warten dauert in jedem Fall länger als
zweimal 4bit übertragen.

Das LCD Datenblatt erklärt dir die entsprechenden Wartezyclen.

von Superhirn (Gast)


Lesenswert?

Danke vorerst.

Ich hab jetzt auch dieses uC Tutorial mit asm-lcd-ansteuerung gesehen.
Wie ist das? kann ich diese asm-routinen in C verwenden?

von Karl H. (kbuchegg)


Lesenswert?

Bei Peter Fleury gibts doch fertige Funktionen zur
LCD ansteuerung. Holen, Pinbelegung einstellen, Prozessortakt
einstellen, compilieren, fertig.

http://homepage.hispeed.ch/peterfleury/avr-software.html#libs

von Superhirn (Gast)


Lesenswert?

Danke. Ich werd das dann mal testen. Wollte es eigendlic eh schon aber
jetzt hatte ich probleme men AVR-Board zu ätzen.

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
Noch kein Account? Hier anmelden.