Forum: Mikrocontroller und Digitale Elektronik Problem mit 2x16 LCD - 1. Zeile nur schwarzer Balken


von David Polch (Gast)


Lesenswert?

Hallo zusammen,
ich habe mir nun ein günstiges LCD Display von ELV beschafft.
Link:
http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=8921&flv=&bereich=&marke=

Als Einstieg benutze ich:
www.dieelektronikerseite.de -> uC -Ecke -> Lehrgänge -> Bascom/Hardware 
-> LCD-Displays

Ich habe mir das Datenblatt zu dem Display von der ELV Seite 
heruntergeladen.
Danach habe ich auf die Bezeichnungen geachtet 
(R/W,E,RS,VSS,VDD,VLCD,DB0-DB7) und dementsprechend verbunden.

Nachdem ich die Spannungsversorgung einschalte, erscheint bei mir auf 
dem Display nur ein schwarzer Balken in der kompletten ersten Zeile (und 
das, obwohl der Atmega8 gelöscht wurde). Nach dem Übertragen des 
Testprogramms wo "Es funktioniert" angezeigt werden soll, bleibt der 
Strich immer noch da. Ich hab schon an der Kontrastspannung gedreht. 
(also kontrast lässt sich einstellen aber man kann nichts lesen).

Was mache ich falsch?

So hab ich die Pins verbunden:
Pin 1 an GND
Pin 2 an +5V
Pin 3 wird mit einem 10k Poti geregelt
Pin 4 geht an Pin 10 vom Atmega8
Pin 5 geht an GND (wie im Schaltplan auf der Seite)
Pin 6 an Pin 9 vom Atmega 8
Pin 7 - 14 jeweils an die Pins 2,3,4,5,6,11,12,13,14 vom Atmega8
Pin 15 und 16 sind offen

Ich bedanke mich schonmal im vorraus und ich hoffe ihr könnt mir helfen.
Es ist wirklich wichtig!
MFG David Polch

von Werner (Gast)


Lesenswert?

Programm und Schaltbild des Aufbaus wären hilfreich.

von David Polch (Gast)


Angehängte Dateien:

Lesenswert?

Schaltung befindet sich im Anhang.

von David Polch (Gast)


Lesenswert?

Hupps und hier der Code (von der Elektronikerseite):
$regfile "m8def.dat"
$crystal = 1000000

Dim Dat As Byte
Dim Cnt As Byte
Dim Txt As String * 16
Dim Strarr(16) As Byte At Txt Overlay

Config Portd = Output
Config Portb.6 = Output
Config Portb.7 = Output

Lcd_data Alias Portd
Lcd_rs Alias Portb.6
Lcd_en Alias Portb.7

Lcd_en = 0 : Waitms 50




' ### Hauptprogramm


Dat = 56 : Gosub Write_ctrl : Dat = 12 : Gosub Write_ctrl
Dat = 1 : Gosub Write_ctrl : Dat = 2 : Gosub Write_ctrl

Txt = "Es funktioniert!" : Gosub Write_string

Stop




' ### Hilfsroutinen zur Ansteuerung des LCD-Moduls


Write_ctrl:
  Lcd_rs = 0 : Lcd_data = Dat : Lcd_en = 1 : Lcd_en = 0 : Waitms 2
Return

Write_data:
  Lcd_rs = 1 : Lcd_data = Dat : Lcd_en = 1 : Lcd_en = 0 : Waitus 40
Return

Write_string:
  For Cnt = 1 To Len(txt)
    Dat = Strarr(cnt) : Gosub Write_data
  Next
Return

von MaWin (Gast)


Lesenswert?

Deine Initialisierung ist nicht erfolgreich.

Meiner Meinung nach fehlt hinter Dat=56; gosub write_Ctrl; ein wait 
10ms,
denn hier steht drin daß danach MINDESTENS 4.1msec zu warten ist
http://www.apollodisplays.com/pdf/dmcman.pdf
und dein Programm wartet nur 2 (wobei nicht jedes Display gleich schnell 
ist, es gibt auch welche die langsamer sind als das "Original", daher 
10msec)

Unglaublich was es für Schrottseiten im Web gibt.

von David Polch (Gast)


Lesenswert?

David Polch schrieb:
> Nachdem ich die Spannungsversorgung einschalte, erscheint bei mir auf
> dem Display nur ein schwarzer Balken in der kompletten ersten Zeile (und
> das, obwohl der Atmega8 gelöscht wurde). Nach dem Übertragen des
> Testprogramms wo "Es funktioniert" angezeigt werden soll, bleibt der
> Strich immer noch da.

Das ist mein erstes Problem.

Danach kann ich erst probieren ob was auf dem Display erscheint.
Muss das Display eigentlich nichts anzeigen wenn man Spannung drauf 
gibt?

von Ralle (Gast)


Lesenswert?

Dat = 56 : Gosub Write_ctrl : Dat = 12 : Gosub Write_ctrl
Dat = 1 : Gosub Write_ctrl : Dat = 2 : Gosub Write_ctrl

letzte Init Zeile im Datenblatt sagt 6

Ralle

von David Polch (Gast)


Lesenswert?

Ich bekomme diesen schwarzen Balken nicht weg...
warum leuchtet der wenn ich den Strom einschalte? Ist das normal?

Ralle schrieb:
> Dat = 56 : Gosub Write_ctrl : Dat = 12 : Gosub Write_ctrl
> Dat = 1 : Gosub Write_ctrl : Dat = 2 : Gosub Write_ctrl
>
> letzte Init Zeile im Datenblatt sagt 6

wie jetzt? Kannst du mir das vielleicht nochmal genauer erklären? ;-)

von Uwe (Gast)


Lesenswert?

Kontrast zu hoch eingestellt deshalb ist die Zeile Schwarz. Weiter 
runterdrehen bis leicht grau. Die Zweite Zeile Leuchtet nicht weil Sie 
standartmäßig deaktiviert ist und erst in der Initialisierung aktiviert 
werden muß.

von Uwe (Gast)


Lesenswert?

Datenblatt lesen. Fertiger Code hat zuviele Fehler da ist es einfacher 
neu zu schreiben.

von Ralle (Gast)


Lesenswert?

Datenblatt Seite 9 ist die Init für 8 bit beschrieben

und die letzte Zeile ist "Entry mode set" Bit 2 gesetzt und Bit 1 für 
Increment

Ralle

von David Polch (Gast)


Angehängte Dateien:

Lesenswert?

Hier nochmal ein Foto von meinem Aufbau und der Schwarze Balken.
Ist die Verdrahtung so richtig?

MFG
David Polch

von David Polch (Gast)


Lesenswert?

Uwe schrieb:
> Kontrast zu hoch eingestellt deshalb ist die Zeile Schwarz. Weiter
> runterdrehen bis leicht grau. Die Zweite Zeile Leuchtet nicht weil Sie
> standartmäßig deaktiviert ist und erst in der Initialisierung aktiviert
> werden muß.

Hilft nix. Der schwarze Balken lässt sich damit nur heller dunkler 
machen aber ich kann keine Buchstaben auf dem Display lesen.

Uwe schrieb:
> Datenblatt lesen. Fertiger Code hat zuviele Fehler da ist es einfacher
> neu zu schreiben.

Ich bin grade mal dabei meine ersten Versuche mit LCD Displays 
nachzubauen. Einen Code für LCD Displays kann ich noch nicht 
programmieren. ;-)

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

So ein LCD zeigt in jeder zweiten Zeile (also 1. und evtl. 3.) einen 
Schwarzen Balken an, um zu signalisieren, dass es in Ordnung ist und auf 
die Initialisierung wartet. Wenn du schon BASCOM nutzt, warum machst du 
das alles dann zu Fuß?
1
$regfile = "M8Def.dat"
2
$crystal = 1000000
3
4
Config LCD = 16 * 2
5
Config LCDBus = 4
6
Config LCDPin = Pin, Db4 = PORTD.4, DB5 = PORTD.5, DB6 = PORTD.6, DB7 = PORTD.7, RS = PORTB.6, E = PORTB.7
7
8
LCDInit
9
Cls
10
Home upper
11
LCD "Es funktioniert!"
12
13
Do
14
Loop


Gruß
Jonathan

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
Noch kein Account? Hier anmelden.