www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD-MODULE DEM16217-SYH Beispiel code


Autor: Fabian Hoemcke (Firma: Technische Universität Berlin) (brein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade mit dem Evaluation board von Atmel STK500 das 
Display DEM16217-SYH (ohne Backlight) anzusteuern und ich versage 
kläglich.

Ich betreibe es im 8-bit Mode.

Das Datenblatt ist hier zu finden:
www.display-elektronik.de/DEM16217SYH-LY.PDF
(Es handelt sich hier zwar um das LCD-Modul mit Backlight, aber es deckt 
sich mit meinem, soweit ich das sagen kann.)

Ich weis nicht ob das an meiner Verdrahtung oder an meinem Code liegt.

Meine Verdrahtung:
L+ -> open
L- -> open
01 -> GND (ground vom STK500)
02 -> VTG (5V vom STK500)
03 -> Mittelabgriff von einem 50M Poti
04 -> per Hand von GND und VTG
05 -> GND
06 -> VTG
07 -> PORTA PIN0
08 -> PORTA PIN1
09 -> PORTA PIN2
10 -> PORTA PIN3
11 -> PORTA PIN4
12 -> PORTA PIN5
13 -> PORTA PIN6
14 -> PORTA PIN7

Mein C-Code:
/*
 * LCD_TestProgram.c
 *
 *  Created on: Oct 16, 2010
 *      Author: fabian
 */

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

int main (void)
{
  DDRA = 0xFF;  // for LCD
  DDRB = 0xFF;  // for LEDs

  PORTA = 0x00;
  PORTB = 0xFF;

  _delay_ms(1000);
  // Function set | 1-Line Mode | 5x7 Dots
  PORTA = 0x30;  //  0011|0000
  PORTB = ~0x30;
  _delay_ms(1000);
  // Display on | Curser on | Blink on
  PORTA = 0x0F;  //  0000|1111
  PORTB = ~0x0F;
  _delay_ms(1000);
  // Clear Display
  PORTA = 0x01;  //  0000|0001
  PORTB = ~0x01;
  _delay_ms(1000);
  // Entry Mode | Increment Mode on | Entire Shift off
  PORTA = 0x06;  //  0000|0110
  PORTB = ~0x06;
  _delay_ms(3000);  // change RS from GND to 5V per hand
  // character 'A'
  PORTA = 0x14;  //  0001|0100
  PORTB = ~0x14;

  while(1);
}
Es macht im wesentlichen nichts anderes als in dem Datenblatt Kapitel 
11.8 INITIALIZING BY INSTRUCTION beschrieben. Statt dem Busy-Bitflag 
warte ich einfach eine Sekunde. Kann ja später noch ergänzt werden.
Was ich aber nur feststelle, ist, wenn ich an dem Poti drehe und die 
Spannung und damit den Kontrast relativ niedrig einstelle, sehe ich in 
der oberen Reihe Blöcke, aber in der unteren nicht. Das ändert sich auch 
nicht wenn das Programm durchläuft.
Den letzt Punkt habe ich ergänzt um zu sehen ob sich etwas ändert, wenn 
ich etwas schreibe. Aber auch das änderte nichts. Ich sehe keinen 
Curser, er blinkt natürlich auch nicht, und das 'A' sehe ich auch nicht.
Ich denke der Fehler ist schon bevor ich das Display anschalte, denn 
dann müsste es sich ja verändern, denke ich mir.

Ich kann mir einfach nicht erklären, woran das liegen könnte.
Ich habe ja schon Beispielanwendungen gesehen, es scheint ja zu 
funktionieren. Aber ich habe keinen Beispielcode gefunden. Ich frage 
mich langsam ob das wirklich ein so gut gehütetes Geheimnis ist.

Wenn mir jemand Links zu einem Forum (Thread) schicken könnte, in dem 
das schon ausreichen diskutiert wurde oder einen Link zu einem Beispiel 
hätte oder natürlich den/die Fehler in meiner Anwendung findet, wäre ich 
außerordentlich dankbar.


Gruß und Danke
BrEin

Autor: Fabian Hoemcke (Firma: Technische Universität Berlin) (brein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, der Kontrast ist so gewählt, dass die Blöcke nur noch leicht zu 
sehen ist. Und auch sonst habe ich ihn verändert um zu vermeiden, dass 
ich die Lebenszeichen übersehe, wenn ich eine falsche Einstellung habe.

Daran wird es wohl nicht liegen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber ich habe keinen Beispielcode gefunden.

Wenn man nicht sucht findet man auch nicht.

>Wenn mir jemand Links zu einem Forum (Thread) schicken könnte, in dem
>das schon ausreichen diskutiert wurde oder einen Link zu einem Beispiel
>hätte oder natürlich den/die Fehler in meiner Anwendung findet, wäre ich
>außerordentlich dankbar.

Du musst eigentlich nur LCD hier in der Suche eingeben.
Dann findest du 1Mio Posts. Und schliess deine Steuerleitungen
an. Sonst wird das nix.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>04 -> per Hand von GND und VTG

Was soll das heissen?

>05 -> GND
>06 -> VTG

Das sind normalerweise R/W und E. R/W kann fest auf GND gelegt werden. E 
dient der Übernahme der Datenleitungen durch das Display und muss zu 
bestimmten Zeiten den Pegel wechseln. Also grob gesagt weder deine 
Hardware noch die Software sind geeignet ein Display anzusteuern. Sieh 
dich hier mal um:

www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

MfG Spess

Autor: Fabian Hoemcke (Firma: Technische Universität Berlin) (brein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal vielen Dank für eure schnelle Hilfe!

Werde es gleich durcharbeiten! Danke!

Autor: Name (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
R/S muss auch an das MCU angeschlossen sein...

Autor: Fabian Hoemcke (Firma: Technische Universität Berlin) (brein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
>>04 -> per Hand von GND und VTG
>
> Was soll das heissen?

Name schrieb:
> R/S muss auch an das MCU angeschlossen sein...

R/S setzte ich mit Hand.
Da ich einige Monate zuvor schon versuche das LCD anzusteuern und im 
4bit-Mode scheiterte, wollte ich es jetzt erstmal mit dem 8bit-Mode 
versuchen und die eine Steuerleitung per Hand setzen.

Als ich das LCD-Tutorial sah, ließ ich es bleiben und versuchte es 
wieder mit der 4bit-Variante.
Und vielen Dank für den Tipp mit dem Enable-Pin. Ich dachte der Würde 
das Display halt eben nur enablen und nicht dass er für die Übernahme 
verantwortlich sei.

Leider scheiterte auch das.
Auch hier wieder nur der obere Balken und keine Reaktion.

Ich nutze die lcd-routines library und probierte das Beispiel 1 aus.
Ich habe die Verdrahtung so durchgeführt wie beschrieben und auch 2x 
geprüft.

Leider war alles bisher vergebens. Auch die Werte für die Zeitenmacros 
habe ich angehoben. Hat auch nichts geholfen.

Hat noch jemand eine zündende Idee?

Autor: Fabian Hoemcke (Firma: Technische Universität Berlin) (brein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es sein, dass ich mit meinen früheren Versuchen das LCD zerstört 
habe???

Autor: Fabian Hoemcke (Firma: Technische Universität Berlin) (brein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super Leute. Es funktioniert!

Ich konnte das Basteln heute nicht sein lassen und habe es einfach 
nochmal ausprobiert. Und et voilà es funktioniert. Ich habe keine 
Ahnung, warum das nicht schon gestern Abend so funktionierte, ich hab ja 
schließlich nichts verändert. Vielleicht habe ich beim Basteln einen 
Fehler gemacht, dass der Controller nicht so gut verkraftet hat und nun 
hat er sich über Nacht erholt.

holger schrieb:
>>Aber ich habe keinen Beispielcode gefunden.
>
> Wenn man nicht sucht findet man auch nicht.
>
>>Wenn mir jemand Links zu einem Forum (Thread) schicken könnte, in dem
>>das schon ausreichen diskutiert wurde oder einen Link zu einem Beispiel
>>hätte oder natürlich den/die Fehler in meiner Anwendung findet, wäre ich
>>außerordentlich dankbar.
>
> Du musst eigentlich nur LCD hier in der Suche eingeben.
> Dann findest du 1Mio Posts. Und schliess deine Steuerleitungen
> an. Sonst wird das nix.

Naja, wenn man nach "DEM 16217 beispiel code" oder ähnliches sucht, 
findet man wirklich nichts was mir geholfen hätte. Jetzt aber schon, da 
dieser Thread (momentan) nun der oberste Eintrag ist. :D

Vielen Dank Leute!

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.