www.mikrocontroller.net

Forum: Projekte & Code lib für Pollin LCD (WINTEK2704)


Autor: Stefan Seegel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hier ist mal meine Implementierung für das berühmte 27x4 Zeichen LCD
von www.pollin.de (4,95 EUR). Die Lib ist nach dem Vorbild von der
mittlerweile "kultverdächtigen" Lib von Peter Fleury aufgebaut.

Die Lib entscheidet größtenteils selber welcher der beiden Controller
angesprochen werden muss.

Einschränkungen:
-Die 4 Datenleitungen müssen am selben Port hängen.
-Die 4 Steuerleitungen (E1, E2, RS, RW) müssen zusammen am gleichen
Port wie die Datenleitungen oder zusammen an einem anderen Port hängen

Viel Spaß beim testen,

Stefan

Autor: Peter Kruse (klaus77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Good Job !

Funktioniert bei mir sehr gut, allerdings wäre etwas mehr Dokumentation
nicht schlecht. Insbesondere was die Funktionen so machen.

Ich habe bei mir noch #define F_CPU mit aufgenommen, das fehlte im
Zip-File.

Gotxy funktioniert nicht so richtig, teilweise bekomme ich die Worte
rückwärts in der dritten Zeile :-)

Danke für die Lib,
Peter

Autor: Stefan Seegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das define (F_CPU) steht bei mir immer im makefile, damit ich's gleich
in allen Modulen habe. Ein Fehler in der gotoxy-Funktion ist mir noch
nicht aufgefallen, vielleicht kannst du näheres dazu sagen.
Was näher Dokumentiert werden sollte weiß ich nicht genau, ist immer
etwas problematisch wenn man das Zeug selber verbrochen hat ;-)

Stefan

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich benutze auch diese Routine für mein Pollin 4x27.
Wie kann man mit dem Befehl lcd_puts einen wert auf dem LCD anzigen
lassen?
Also lcd_puts("wert: %i", ADCWERT); gibt immer die Fehlermeldung
to many arguments for function lcd_puts
Wieso???(Anfänger)
Frank

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lcd_puts ist nicht printf...

char buffer[24];
printf( buffer, "wert: %i", ADCWERT);
lcd_puts(buffer);

So ungefähr müsste es gehen, aber ich weiss nicht wie es mit printf
beim AVR aussieht, das nimmt bestimmt ORDENTLICH Platz weg, es gibt
aber alternative printf funktionen.

Oder du machst es mit itoa:

char buffer[] = "wert: XXXX";
itoa(buffer+6,ADCWERT);
lcd_puts(buffer);

Ich weiss nicht ob lcd_puts einen absatz macht oder so, wenn nicht wäre
es so wohl besser:

char buffer[4];
lcd_puts("wert: ");
itoa(buffer,ADCWERT);
lcd_puts(buffer);

Ich hab jetzt mal angenommen ADCWERT ist im 4 stelligen bereich (bei 10
bit genauigkeit ist das ja so). Hab jetzt auch nicht so die super ahnung
(nicht nachgeschaut). Alle Angaben ohne Gewehr ;)

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Danke für die Antwort, aber er meckert jetzt bei itoa!
to few arguments to function itoa
Bei allen ítoa Vorschlägen. Und printf gibt mir nichts auf dem LCD
aus.
Wahrscheinlich nur auf die serielle.
Frank

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
itoa() hat normalerweise noch einen dritten Parameter radix, um das
Zahlensystem festzulegen (Dezimal 10, Hexadezimal 16, ...)

Und benutze statt printf() sprintf(), um in einen Puffer zu schreiben.

Autor: Frank Je (frank5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Aber er meckert ja das zu viele Arguments sind????
Sprintf schreibt er wert: 1.Er zeigt nicht den adcwert?
Frank

Autor: Wesserbisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"too few"

heißt zu wenig, nicht zu viele!

Falls zu WinAVR installiert hast befindet sich auf deinem Rechner eine
Doku, in der u.a. itoa dokumentiert ist. Ansonsten -> google, da finden
sich unendlich viele Suchergebnisse zu itoa!

Ich

Autor: Enor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jungs,
bin gerade in die Welt des Mikrocontroller eingestiegen -so viel zur
meiner geschichte-.

Das Problem was ich habe ist, wenn ich make all mache gibt er mir
folgende Fehler Meldung aus:C:\Dokumente und
Einstellungen\Administrator.WINDOWSPC.002\Eigene Dateien\C
atmel\Display/main.c:12: undefined reference to `lcd_init'

welchen  Fehler mache. Das Einziege was ich verändert habe ist die PIN
Konfiguration sonst nichts. Also müsste es Funktionieren

Autor: Enor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat sich schon erledigt

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alter Thread, neu genutzt...

Ich frage mich, wie jetzt das Display an welchen Port muss...

Bin noch bei den erten Schritten und kann nicht ersehen an welchen Port 
- Pinn welcher Displayanschluss kommt.

Kann mir da einer helfen???

Gruß
Rudi

Autor: Pete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal in die Lib von Stefan Seegel (siehe oben). Die 
Anschlussbelegung an den AVR ist in der Header-Datei *.h erklärt.

Du brauchst zwei Ports (z.B. C und D).

Die Anschlussbelegung am Display steht in der Doku unter pollin.de

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, Danke.

DA habe ich nicht gekuckt.

Gruß

Rudi

Autor: Stefan M. (interceptor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Ich hänge mich hier mal dran.

Ich habe auch so ein Display von Pollin.

Leider funktioniert das Beispiel von Stefan bei mir nicht.

Ich habe das Display komplett am Port C angeschlossen.

Erst hatte ich mich mit den Anschlüssen vertan.

C0 -> D0
C1 -> D1
C2 -> D2
C3 -> D3
C4 -> RW
C5 -> RS
C6 -> E1
C7 -> E2

Mittlerweile habe ich dann die Datenanschlüsse auf die oberen Bits am 
Display umgelegt.

Bei der ersten Konfiguration zeigte es nur in Zeile 1 und 3 einen 
Balken.

Jetzt, nach dem Umlegen der Datenbits zeigt es in Zeile 1 einen Balken 
und in Zeile 3 + 4 auch, allerdings die unteren beiden in halber 
Intensität.

Ich habe die Vermutung das es an dem STK 500 liegt.

Kann mir jemend helfen ?

Ich komme da einfach nicht weiter.

Danke im voraus

Stefan

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Lib funktioniert. Schaltplan ? Code ?
Gib mal mehr Infos.

P.S.: Das hier ist die Codesammlung ...

Autor: Stefan M. (interceptor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pete K. wrote:
> Also die Lib funktioniert. Schaltplan ? Code ?
> Gib mal mehr Infos.
>
> P.S.: Das hier ist die Codesammlung ...

Hallo Pete

Du hast Recht. Ich hatte nach dem Display gesucht und nicht darauf 
geachtet wo ich bin.

Ich mache ein neues Thema auf in µC ...

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<Glaskugelmode>
Port C? -> JTAG Fuse
</Glaskugelmode>

Autor: Stefan M. (interceptor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten wrote:
> <Glaskugelmode>
> Port C? -> JTAG Fuse
> </Glaskugelmode>

Nein haben wir schon geklärt.

Auch wenn die JTAG Fuse nicht gesetzt ist, funktioniert es nicht.

Alles weitere dazu siehe 
[[Beitrag "Re: Probleme mit Wintek 2704 am STK500"]]

Autor: Dieter Engelhardt (netdieter) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das LCD von Pollin und folgende Konfiguration:


#define LCD_DATA_PORT    PORTA  //Port on which the 4 LCD datapins are 
connected to
#define LCD_DATA_OFFSET    0  //Offset for data pins (e.g. 0 = 
PIN0..PIN3, 2 = PIN2..PIN5)
#define LCD_CTRL_PORT    PORTA  //PORT on which E1, E2, RS and RW are 
connected to
#define LCD_PIN_RS      4
#define LCD_PIN_RW      5
#define LCD_PIN_E1      6
#define LCD_PIN_E2      7


Aber ich kriege nur in Zeile 3 den Text:
4. Zeile Mitte
Die erste Zeile zeigt nur den Initialbalken.

Ich hab bereits alle Leitungen geprüft und finde den Fehler nicht.

Das Teil läuft auf einem ATMega32.

Hat jemand nen Tip?

Gruß
Dieter

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leitung E1 (und E2) prüfen.

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte Schaltplan und Code komplett posten.

Autor: Dieter Engelhardt (netdieter) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das Problem gelöst.
Es war wohl ein Kontaktproblem beim Flachbandpfosten.
Einmal mit der Zange drauf gedrückt und plötzlich gings.

Leider ist der im Topic überstellte Source relativ wenig dokumentiert.
Unter anderem zeigt das Testprogramm noch eine Schwäche.

Die Funktion  lcd_gotoxy(3, 6) scheint noch nicht ausgereift zu sein, 
denn der Text, der offensichtlich in Zeile 4 erscheinen sollte, 
erscheint in Zeile 3.
Eine Korrektur auf lcd_gotoxy(3, 7) löst das Problem.
Allerdings ist mir nicht klar was die y Koordinate soll, das das Display 
nur 4 Zeilen hat.

Wenn ich mal etwas Muse habe werde ich die Lib überarbeiten und 
Dokumentieren.

Falls noch jemand an der Lib interessiert ist, dann könnte man das z.B. 
via Sourceforge CVS als Mini-Projekt realisieren.

Gruß
Dieter

Autor: Dieter Engelhardt (netdieter) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal den Code etwas überarbeitet und kommentiert.(Nur das was ich 
gemacht habe)
Dir Funktion lcd_gotoxy wurde ersetz und jetzt läufts reibungslos.

Meine Tests wurden mit einem ATMga32 durch geführt.

Ich hoffe ich kann jemanden mit ähnlichen Problemen helfen.

Gruß
Dieter

Autor: Andreas L. (andreasl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe diese lib auf einem ATMega 32 installieren wollen. 
Benutze dazu WinAVR20080610 / AVRStudio 4.13. Ich bekomme folgende 
Fehlermeldung: ../../../../../Desktop/AVR/wintek/wintek2704.c: In 
function 'lcd_waitbusy':
und: ../../../../../Desktop/AVR/wintek/wintek2704.c:116: error: 'F_CPU' 
undeclared (first use in this function)
und: ../../../../../Desktop/AVR/wintek/wintek2704.c:116: error: (Each 
undeclared identifier is reported only once
und: ../../../../../Desktop/AVR/wintek/wintek2704.c:116: error: for each 
function it appears in.) und: 
../../../../../Desktop/AVR/wintek/wintek2704.c: In function 
'init_controller': und: 
../../../../../Desktop/AVR/wintek/wintek2704.c:281: error: 'F_CPU' 
undeclared (first use in this function) und: 
../../../../../Desktop/AVR/wintek/wintek2704.c: In function 'lcd_init': 
und: ../../../../../Desktop/AVR/wintek/wintek2704.c:319: error: 'F_CPU' 
undeclared (first use in this function)


Was kann ich tun? Ich kann dafür keinen Grund entdecken.

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.) Englisch lernen, um die Fehlermeldungen lesen zu können.
2.) F_CPU definieren. Das ist der Takt, mit dem der µC läuft. Wird 
meistens im Makefile deklariert. Bei AVRStudio in den Project Settings. 
Oder im Programm mit #define F_CPU 16000000  (hier z.B. 16Mhz)

Autor: Andreas L. (andreasl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pete K. wrote:
> 1.) Englisch lernen, um die Fehlermeldungen lesen zu können.
> 2.) F_CPU definieren. Das ist der Takt, mit dem der µC läuft. Wird
> meistens im Makefile deklariert. Bei AVRStudio in den Project Settings.
> Oder im Programm mit #define F_CPU 16000000  (hier z.B. 16Mhz)


zu 1 da lerne ich gerne noch dazu

zu 2 ausschnitt aus der Main.c
#ifndef F_CPU
/* In neueren Version der WinAVR/Mfile Makefile-Vorlage kann
   F_CPU im Makefile definiert werden, eine nochmalige Definition
   hier wuerde zu einer Compilerwarnung fuehren. Daher "Schutz" durch
   #ifndef/#endif

   Dieser "Schutz" kann zu Debugsessions führen, wenn AVRStudio
   verwendet wird und dort eine andere, nicht zur Hardware passende
   Taktrate eingestellt ist: Dann wird die folgende Definition
   nicht verwendet, sondern stattdessen der Defaultwert (8 MHz?)
   von AVRStudio - daher Ausgabe einer Warnung falls F_CPU
   noch nicht definiert: */
#warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 16000000"
#define F_CPU 16000000UL    // Systemtakt in Hz - Definition als unsigned long beachten >> Ohne ergeben Fehler in der Berechnung
#endif

#include <stdio.h>
#include <stdint.h>
#include <avr/io.h>
#include <util/delay.h>

#include "wintek2704.h"

Ist doch richtig eingetragen. Bei anderen gehts doch! Das Projekt habe 
ich neu angelegt mit AVRStudio, hat schon etliche male mit anderen Code 
gut geklappt. Ich  denke ich werd F_CPU das mal rausnehmen (//) aus der 
Main.c
Probe mach ich heute abend zu hause
Gruß und Danke
Andreas

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es nur in main.c deklariert ist, dann kann der Precompiler es beim 
Übersetzen der wintek2704.h bzw. wintek2704.c nicht finden. Daher die 
Fehlermeldungen.
Der Compiler übersetzt jedes File separat, daher ist eine Deklaration im 
Makefile sinnvoller.

Wenn Du AVRStudio benutzt, dann kann der ganze Krempel mit F_CPU aus den 
Dateien. In den Properties zu dem Projekt wird dann der Takt global 
eingetragen.

Autor: Andreas L. (andreasl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, nachdem ich die F_CPU herausgenommen habe funzt es. Danke für 
Deine Hilfe. Es gibt noch ein paar Einstellungen für den Mega32 die ich 
noch nicht entdeckt hatte, (ich probiere noch sehr viel aus mit dem 
Gespann AVRStudio / AVRGGC und bin noch ein bischen unsicher im Umgang) 
und bisher mit meine LEDs und schaltern nicht zum tragen kammen.

Gruß
Andreas

Autor: Alexander W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche derzeit das LCD an einem PCF8574 zum Laufen zu bringen, 
wobei ich wegen der zwei Enable-Leitungen gerne diese Library verwenden 
würde.
Da ich in C# bisher nicht sehr viel programmiert habe, frage ich mich 
nun an welchen Stellen ich das ganze vom lokalen MCU-Port auf TWI 
umstricken kann. Wie kann ich verfahren, wenn in der Library einzelne 
Bits geändert werden? Dem PCF8574 kann ich ja immer nur ein ganzes Byte 
senden.

Gruß und Danke im Vorraus,
Alex

Autor: Alexander W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag, als Gast kann ich ja nicht editieren:
Ich verwende die TWI-lib von P.Fleury.

Autor: Alexander W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da ja keine Antworten gekommen sind habe ich selbst eine Library für das 
WDC2704M mit PCF8754 entwickelt.

Die Library benötigt für die I²C-Kommunikation die Lib. von P.Fleury.

www.tischplatte.ws/AVR-Projekte/WDC2704M_TWI.zip

Hier noch ein kleines Beispielvideo:
Youtube-Video "Wintek WDC2704M an I²C-Portexpander PCF8574"

Urteilt bitte nicht zu hart, ich habe Samstag zum ersten mal C# 
verwendet. ;-)

Gruß,
Alex

Autor: Gerd S. (gerd_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Display ist nicht mehr gelistet bei Pollin. Gibt es bei P. 
Alternativen ?

Gruß und Dank
Gerd

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Display ist nicht mehr gelistet bei Pollin. Gibt es bei P.
> Alternativen ?

Uh, oh... das gab es jahrelang. hatte mich schon gewundert wo der riesen 
Restposten wohl her war. Von der Ansteuerung her war es ein "normales" 
HD44780 kompatibles Textdisplay. Mit seinen 4x27 Zeichen ist die Map so 
angeordnet wie bei einem 4x40 nur dass die rechten 17 Zeichen nicht zu 
sehen waren. So dass man es nicht softwarekompatibel durch ein 4x20 
ersetzen kann. Die lib hat das zusammen mit der etwas ungewöhnlichen 
Zeilenlänge von 27 Zeichen berücksichtigt. Aber ansonsten war an diesem 
Display nichts besonderes. Etwas geößere Zeichen als die meißten, dafür 
keine Hintergrundgeleuchtung, und besserer Kontrast wurde bei anderen 
LCDs auch schon gesichtet.

Randy

Autor: Alexander W. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Da sich der Link geändert hat hab ich Datei im Anhang nochmal 
hochgeladen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.