www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD - Probleme


Autor: Mathias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Halllo Zusammen,

ich schlage mich seit einigen Tagen mit LCD Ansteuerung herum.
Jezt bin ich soweit dass der Code ohne Fehler und ohne Warnungen 
kompeliert wird und auf den uC übertragen werden kann.

Leider passiert immer noch nichts am LCD. :-(


Könnte bitte jemand einen Blick auf den Code werfen?

Habe ich eventuell einen Fehler in der lcd-routines.h bei der 
Pinbelegung gemacht?


Ich wäre sehr dankbar dafür.

Meine Hardware:

- AVR Dragon (JTAG)
- Pollin ATmel Evaluationboard
- Pollin ADDON Board
- ATMega16
- AVR-Studio


------------------------------------------------------------------------

Der Code ist folgender: befindet sich im Anhang.

------------------------------------------------------------------------

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank im Vorraus!

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die lcd-routines.h habe ich auch mal verändert zu (siehe Code) ohne dass 
es irgend etwas gebracht hat.

-----------------------------------------------------



void lcd_data(unsigned char temp1);
void lcd_string(char *data);
void lcd_command(unsigned char temp1);
void lcd_enable(void);
void lcd_init(void);
void lcd_home(void);
void lcd_clear(void);
void set_cursor(uint8_t x, uint8_t y);


#define F_CPU 16000000


#define CLEAR_DISPLAY 0x01
#define CURSOR_HOME   0x02



#define LCD_PORT      PORTA
#define LCD_DDR       DDRA
#define LCD_RS        PB2
#define LCD_EN        PB0

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

welches Display hast du und wie is das verdrahtet?

Ich hatte auch lange probleme und kann evtl. helfen...

gruß
matthias

Autor: Mathias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das Pollin Adon Board origilan aufgebaut.

Da muss nichts verdrahtet werden so weit ich das verstanden habe.

Ich hände mal das Datenblatt des Addon-Boards an.

Als Display kommt ein TC1602A-08 (hehört zum Addon-Board dazu).

Vielen Dank.

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle 11 Jumper sind drin.

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mathias schrieb:


> #define LCD_PORT      PORTA
> #define LCD_DDR       DDRA
> #define LCD_RS        PB2
> #define LCD_EN        PB0

sollte LCD_PORT und LCD_DDR nicht auch auf PORTB / DDRB gesetzt werden ?

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenke LCD_PORT gibt an welche Ports die Daten (4bit bzw. 8bit) 
übertragen.

Bei Pollin Addonboard sind das die Pins am Port A.

Oder täusche ich mich total?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du mal das Testprogramm von Pollin da reingeflasht?
Dann auch mal am Kontrast rumgedreht?

Im Basicprogramm steht folgende Pinbelegung
 #if _chip = 18                                             'Mega16
   Lcd_db4 Alias Portb.2
   Lcd_db5 Alias Portb.3
   Lcd_db6 Alias Portb.4
   Lcd_db7 Alias Portb.5
   Lcd_e Alias Portb.6
   Lcd_rs Alias Portb.7

Also andere Pinbelegung als im Tutorial!

Autor: gadgaet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es eventuell auch an der Kontrastspannung liegen?

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier definierst Du aber PORT A sollte dann doch wohl PORT B sein

> #define LCD_PORT      PORTA
> #define LCD_DDR       DDRA

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ingo

Ich habe deinen Vorschlag gerade ausprobiert.

Es hat nicht geholfen. :-(

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@gadgaet

Kontrastspannung habe ich beachtet.

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm,....

zu diesem Display "TC1602A-08" finde ich leider kein vernüftiges 
Datenblatt in dem die Zeiten und die Befehlcodes für z.B. 4-Bus 
angegeben sind.
Ich habe deine Init-Funktion eben mit meiner verglichen und ich habe 
hinter den lcd_clear() am Ende noch eine Wartezeit von 5ms. Ich glaube, 
das hat mir geholfen.

ansonsten habe ich diese links gefunden, vielleicht sind sie für dich ja 
interessant (sie sind über dein display):

http://home.iae.nl/users/pouweha/lcd/lcd0.shtml#vi...
http://www.rn-wissen.de/index.php/Bascom_und_LCD%2...
http://www.roboternetz.de/phpBB2/printview.php?t=4...

Gruß,
Matze

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@holger

Was bedeutet das konkret für mein Programm?

Ich habe die Pins ja über die lcd-routines.h eingestellt.

Habe ich etwas übersehen?

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
define LCD_PORT      PORTB
#define LCD_DDR       DDRB
#define LCD_RS        PB4
#define LCD_EN        PB5

#define LCD_DB4       PB0
#define LCD_DB5       PB1
#define LCD_DB6       PB2
#define LCD_DB7       PB3



 DB4 bis DB7 des LCD sind mit PB0 bis PB3 des AVR verbunden

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@holger

>Was bedeutet das konkret für mein Programm?

Das es nicht funktionieren kann.

>Ich habe die Pins ja über die lcd-routines.h eingestellt.

Ja, und zwar falsch. Brenn erstmal das Testprogramm von
Pollin da rein um zu sehen ob das Display damit funktioniert.
Dann sehen wir weiter.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Pollin-Addon-Board siehe vor, mit den Jumpern
folgende Verbindungen zu machen:
- AVR Port A Pin 0..7 - LCD DB0..7
- AVR Port B Pin 0    - LCD Enable
- AVR Port B Pin 1    - LCD R/W
- AVR Port B Pin 2    - LCD RS
(ohne Gewähr; vgl. Schaltplan Addon-Board und Evaluation-Board)


Die lcd-routines.c/.h, die hier herumgeistern gibt es in zwei Versionen.
Beide nutzen nur E(nable), DB4..7 und RS.
DB0..3 wird nicht genutzt, R/W muß immer low sein.
Die beiden Varianten unterscheiden sich darin, ob alle genutzten
Pins (DB4-DB7, RS, E) auf einem Port liegen müssen (ursprüngliche
Version, Peter Danegger?), oder ob die genutzten Pins über mehrere
Ports verteilt werden können.

Die erste Version kannst du nicht nehmen mit dem Addon-Board,
wenn nur die Jumper gesteckt werden.
Dem Auszug aus der Headerdatei von Ingo Laabs zufolge hast du diese
Version.
Mit dieser Version musst du die Pinbelegung für DB4..7 und Enable
und RS in der Headerdatei sinnvoll setzen, die Jumper ziehen
und durch Drahtbrücken passend zur Headerdatei ersetzen.

Oder: du nimmst die Version, bei der die Pins frei über Ports
verteilt werden können und kannst dann die Jumper nehmen.
Die Jumper für DB0..3 kannst du weglassen.
R/W kannst als Jumper setzen und musst dann aber in deinem
Programm dafür sorgen, daß es immer low ist, oder du lässt den
Jumper für R/W weg und steckst eine Drahtbrücke von Masse zum
LCD-Pin R/W.

Ich habe eine bei mir mit dem Addon-Board gelaufene Version
gestern erst hier abgestellt:
Beitrag "Atmel Addonboard - LCD ansteuerung"
Da steht im Kommentar auch drin, was verbunden werden muß
(ohne die Jumper).

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder bist du der von gestern?
Hast du das denn mal probiert, oder kommt die Frage jetzt jeden Tag?

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke, er is das von gestern. mal schauen, ob wir morgen wieder von 
ihm lesen werden :)
aber als ich angefangen habe, war ich auch noch so... :)))

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich bin der von Gestern.

Werde mich jetzt anmelden und habe dann auch einen konstanten Namen :-)

Nein, die Frage kommt natürlich nicht jeden Tag.
Die verschiedenen Versionen und die recht komplexe Materie (zumindest am 
Anfang) haben mich dazu bewegt die Frage noch einmal zu stellen.

Ich fange an durchzubliken. Allerdings noch nicht ganz.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem sehe ich gerade, daß bei dir F_CPU auf 8000000 steht.
Der Atmega16 auf dem Pollin-Board läuft aber doch mit 16 MHz, oder 
nicht?
Dann muß F_CPU auf 16000000 stehen.
Wobei sich die Frage stellt, ob du die Fuses überhaupt so gesetzt hast,
daß er mit dem externen Quartz (16MHz) läuft; wenn nicht, müsstest du
das auch nachholen - sonst läuft er mit etwa 1 MHz ab Werk.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann lies dir doch bitte mal meinen Quelltext von gestern durch, da
steht im Kommentar, was wie verdrahtet werden muß.

Wenn du das machst und die lcd-routines.h entsprechend einstellst,
sollte es klappen - und falls Kontrast und F_CPU stimmen und die Fuses
natürlich.

Immerhin läuft das bei mir so auf dem Addon-Board.

Aber nicht darüber stolpern, daß die Anschlüsse auf dem Addon-Board
ziemlich dusselig beschriftet sind:
"PA Pin1" ist beim AVR Port A Pin 0; "PA Pin2" ist Port A Pin 1 usw.;
entsprechend auch für die anderen Ports.

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE @ ALL

und vor allem @ Klaus.

Das LCD gibt Lebenszeichen von sich nachdem ich es verdrahtet habe 
selbst verdrahtet habe (ohne JUMPER).

Jetzt kann ich das Programm von Klaus anfangen zuverstehen und an meine 
Bedürfnisse anpassen.

Nochmals Danke.

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.