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 !!!
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
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
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.
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?
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.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.