mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tutorial macht sich das zu einfach: Display


Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

In einem im Tutorial zur Ansteuerung eines Displays angegebenen 
Quellcode finden sich folgende Zeilen:

//////////////////////////////////////////////////////////////////////// 
////////
// Pinbelegung für das LCD, an verwendete Pins anpassen
// Alle LCD Pins müssen an einem Port angeschlossen sein und die 4
// Datenleitungen müssen auf aufeinanderfolgenden Pins liegen

//  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3
#define LCD_PORT      PORTD
#define LCD_DDR       DDRD
#define LCD_DB        PD0

//  LCD RS      <-->  PORTD Bit PD4     (RS: 0=Data, 1=Command)
#define LCD_RS        PD4

//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
#define LCD_EN        PD5

//////////////////////////////////////////////////////////////////////// 
/////

Tatsächlich sieht meine Pinbelegung so aus:

RS = D2
E  = D3
D4-D7 = D4-D7

Wie schreibe ich (gemäß Weisung des Tutorial) den Code um?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan R. schrieb:

> Tatsächlich sieht meine Pinbelegung so aus:
>
> RS = D2
> E  = D3
> D4-D7 = D4-D7
>
> Wie schreibe ich (gemäß Weisung des Tutorial) den Code um?

Den Code schreibst du gar nicht um, aber die #define :-)

Deine Datenbits fangen bei DB4 an
#define LCD_DB        PD4
#define LCD_RS        PD2
#define LCD_E         PD3

Autor: Schüler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Coooool...

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
//  LCD RS      <-->  PORTD Bit PD2     (RS: 0=Data, 1=Command)
#define LCD_RS        PD2

//  LCD EN      <-->  PORTD Bit PD3     (EN: 1-Impuls für Daten)
#define LCD_EN        PD3



Dafür sindja die #define Einstellungen.
Somit kann man C-Code auch einfach portieren.

sieht auf einem anderen Controller vielleicht so aus:

#define LCD_RS        GPIO.PORTXY.PIN99

Damit wird LCD_RS erstzt, mit was auch immer.

Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun habe ich die #defines entsprechend meinem avr-board angepasst und 
das Tutorial-Programm gebrannt. Dennoch schwarzer Balken.
Das kann doch gar nicht sein!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan R. schrieb:
> Nun habe ich die #defines entsprechend meinem avr-board angepasst und
> das Tutorial-Programm gebrannt. Dennoch schwarzer Balken.
> Das kann doch gar nicht sein!!

Doch das kann sein.
Das Forum ist voll mit immer gleichen Fragen, so wie deine. Das Thema 
"LCD funktioniert nicht" taucht jeden Tag mindestens 2 mal auf.


Welches LCD hast du genau? Vielleicht ist es ja gar kein Kompatibles!
Welcher Controller ist da drauf?
Stimmt die Taktfrequenz, die du im Programm angegeben hast?
Hast du die Verkabelung kontrolliert? Ja? 3 mal?

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der schwarze Balken kann schon sein, es gibt noch weitere Ursachen:

Kontrastspannung richtig eingestellt? -> Datenblatt LCD-Kontroller, 
Display

Ist der im Display verwendete Kontroller auch der im Tutorial 
verwendete?
"fast 100% kompatibel" heißt auch nur "fast" -> Init-Routinen des 
Displays prüfen. Wartezeiten prüfen, ggf. auch Busy-Signal verwenden.

Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es handelt sich um das myavr-Standard-Ansteck-LCD des myavr- Boards:

http://shop.myavr.de/Add-Ons%20und%20Module/myAVR%...

Daher halte ich Kompatiblitäts- und Verkabelungsprobleme für wenig 
wahrscheinlich.
Und da ich den fast unveränderten Code aus dem Tutorial nehme, sollt 
dieser doch auch stimmen :(

Die Frequenz ist auch korrekt eingestellt, wobei ich mich frage, wozu 
das so wichtig ist. Einzige Annahme: die Frequenz bestimmt die 
Pausenzeiten, die angeblich so wichtig für das Display sind...?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan R. schrieb:
> Es handelt sich um das myavr-Standard-Ansteck-LCD des myavr- Boards:
>
> 
http://shop.myavr.de/Add-Ons%20und%20Module/myAVR%...
>

Gibts da kein Demoprogramm dazu? (Kenn das MyAvr System nur dem Namen 
nach und weiß nicht wie da der Lieferumfang ist)

> Daher halte ich Kompatiblitäts- und Verkabelungsprobleme für wenig
> wahrscheinlich.

Kardinalfehler #1 bei der Fehlersuche: Nimm nichts als gegeben an.

> Und da ich den fast unveränderten Code aus dem Tutorial nehme, sollt
> dieser doch auch stimmen :(

Nö.

> Die Frequenz ist auch korrekt eingestellt, wobei ich mich frage, wozu
> das so wichtig ist. Einzige Annahme: die Frequenz bestimmt die
> Pausenzeiten, die angeblich so wichtig für das Display sind...?

Ganz genau das ist der Grund.

Hast du die Taktfrequenz kontrolliert? Oder nimmst du nur an, dass du 
sie im Programm so angegeben hast, wie sie wirklich ist.

Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan R. schrieb:
> Daher halte ich Kompatiblitäts- und Verkabelungsprobleme für wenig
>
> wahrscheinlich.

Anders gesagt: mit Bascom programmiert lief die Kiste schon mal.


Es gibt ein Demo-file, das liegt allerdings nur als Hex-file vor. Wie 
oder von wo aus kann das brennen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan R. schrieb:
> Stephan R. schrieb:
>> Daher halte ich Kompatiblitäts- und Verkabelungsprobleme für wenig
>>
>> wahrscheinlich.
>
> Anders gesagt: mit Bascom programmiert lief die Kiste schon mal.

Na das ist ja schon mal was.
D.h. dann tatsächlich, dass du nicht soweit daneben sein kannst. 
Irgendeine Kleinigkeit.

(Was heißt: schon mal? Vor 1 Tag, vor 1 Woche, 1 Monat?
 Sicher, dass du die Verkabelung in der Zwischenzeit nicht geändert 
hast?)

> Es gibt ein Demo-file, das liegt allerdings nur als Hex-file vor. Wie
> oder von wo aus kann das brennen?

Wie brennst du denn sonst?
Kannst du dort kein HEX-File auswählen?

Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Heizung ist im Sommer auf Sommermodus. Da brennt nix.

Meinen Mikrocontroller jedenfalls flashe ich mit WinAVR-Programm Taste.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan R. schrieb:
> Meine Heizung ist im Sommer auf Sommermodus. Da brennt nix.
>
> Meinen Mikrocontroller jedenfalls flashe ich mit WinAVR-Programm Taste.

Aha.
Dann hol dir doch das MyAVR-Brennprogramm vom Hersteller (wozu bietet er 
es denn zum Download an).  Damit kann man dann auch HEX-Files direkt 
flashen.

Im übrigen:
Wenn wir mal davon ausgehen, dass deine Hardware immer noch korrekt 
funktioniert: Programm zeigen.

Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt im Jahr 2010 ungewöhnlich, aber ich bekomme mein Programm weder 
AUS dem Programmierlaptop ins Internet noch Internet IN selbigen. Ich 
werds heut abend von daheim aus machen.
Danke erstmal!

Autor: Stephan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICH FASS ES NICHT!

Problem gelöst: eine defekt Lötstelle auf dem made-in-germany- 
Originalboard! Das grenzt an Sabotage!!

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.