Forum: Mikrocontroller und Digitale Elektronik Unbekanntes lcd Display


von Sam (Gast)


Lesenswert?

Ich hab hier ein LCd Display mal an den Mega32 angeschlossen.

Mit folgendem Code lässt es sich initialisieren aber zeigt nichts an:

[code]
$regfile "m32def.dat"
$crystal = 8000000

Config Portc = Output
Config Portd.6 = Output
Config Portd.7 = Output

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

Lcd_en = 0 : Waitms 50

Lcd_rs = 0
Lcd_data = 56 : Lcd_en = 1 : Lcd_en = 0 : Waitms 2
Lcd_data = 12 : Lcd_en = 1 : Lcd_en = 0 : Waitms 2
Lcd_data = 1 : Lcd_en = 1 : Lcd_en = 0 : Waitms 2
Lcd_data = 2 : Lcd_en = 1 : Lcd_en = 0 : Waitms 2

Lcd_rs = 1
Lcd_data = 65 : Lcd_en = 1 : Lcd_en = 0 : Waitus 40

Stop
[code]

Weiß jemand wie das in dem Bascom Displaybefehlssatz mit lcd und so 
aussehen würde. ICh habs schon mehrmals probiert und nicht hingekriegt.

Ich habs in 8bit angeschlossen 4bit geht aber auch (aufjedenfall die 
init).
Mit dem 4bit Code auf http://www.dieelektronikerseite.de/

Komischerweise schreibt der nie was.
Das Display bleibt nur leer.

Noch was zum LCD: Es halt 5 solche schwarzen Kappen. Keine Ahnung für 
was so viele Chips.

von Sam (Gast)


Lesenswert?

sorry, ich hab gedacht die Display Daten stehen noch im Code:

Es ist ein 4*20 Zeichen Display.

von Floh (Gast)


Lesenswert?

Sam schrieb:
> Mit folgendem Code lässt es sich initialisieren aber zeigt nichts an:

Wie stellst du die erfolgreiche Initialisation fest?

Sam schrieb:
> Noch was zum LCD: Es halt 5 solche schwarzen Kappen. Keine Ahnung für
> was so viele Chips.

Das hilft viel -.-
Bild vom Display her. Vorder- und Rückseite.

von Sam (Gast)


Lesenswert?

Hab jetzt zufällig noch den Typ klein am Rand gefunden: YM2004A.

von Sam (Gast)


Angehängte Dateien:

Lesenswert?

Floh schrieb:
> Wie stellst du die erfolgreiche Initialisation fest?

Ganz einfach: Es zeigt nicht mehr die Balken in der 1. und 3. Zeile an. 
Sondern nichts. Der Bildschirm leutet einfach leer.

Chipsatz ist KS0065(X4).

von spess53 (Gast)


Lesenswert?

Hi

In deiner Initialisierung fehlt er Befehl 'Entry Mode Set'.

MfG Spess

von bix (Gast)


Lesenswert?

Sam schrieb:
> Config Portc = Output
> Config Portd.6 = Output
> Config Portd.7 = Output

Vermutung (1):
Portc = Datenleitungen
Portd = Steuerleitungen

> Lcd_data Alias Portd (* ??? *)
> Lcd_rs Alias Portd.7
> Lcd_en Alias Portd.6

Vermutung (2):
Lcd_data sollte als "Alias Portc" definiert werden

von Sam (Gast)


Lesenswert?

spess53 schrieb:
> In deiner Initialisierung fehlt er Befehl 'Entry Mode Set'.

Kannst du mir vielleicht sagen wie das geht?

bix schrieb:
> Vermutung (2):
> Lcd_data sollte als "Alias Portc" definiert werden

Danke; hatte ich nicht beachtet (kommt davon wenn man Code nicht selber 
schreibt), aber ändert leider nichts.

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

>>spess53 schrieb:
>> In deiner Initialisierung fehlt er Befehl 'Entry Mode Set'.

>Kannst du mir vielleicht sagen wie das geht?

Anhang S.18 und S.26.

>Danke; hatte ich nicht beachtet (kommt davon wenn man Code nicht selber
>schreibt), aber ändert leider nichts.

Als James Dean kann man zwar Filmkarriere machen, aber zum Programmieren 
taugt die Einstellung nicht.

MfG Spess

von Sam (Gast)


Lesenswert?

spess53 schrieb:
> Anhang S.18 und S.26.

Hab ich gemacht, danke.

Allerdings.. funktioniert es trotzdem nicht. Wie voher, display ist 
inited und zeigt weder Cursor noch Zeichen an.

Mein neuer Code (ich hab jetzt nicht alles umgerechnet in eine Zahl, 
sondern manches in Bits gelassen):
1
$regfile "m32def.dat"
2
$crystal = 8000000
3
4
Config Portc = Output
5
Config Portd.6 = Output
6
Config Portd.7 = Output
7
8
Lcd_data Alias Portc
9
Lcd_rs Alias Portd.7
10
Lcd_en Alias Portd.6
11
12
Waitms 50
13
14
Lcd_en = 0
15
16
'Function Set
17
Lcd_rs = 0
18
Lcd_data.7 = 0
19
Lcd_data.6 = 0
20
Lcd_data.5 = 1
21
Lcd_data.4 = 1
22
Lcd_data.3 = 1
23
Lcd_data.2 = 1
24
Gosub Writetolcd
25
Waitus 40
26
27
'Display ON/OFF Control
28
Lcd_rs = 0
29
Lcd_data.7 = 0
30
Lcd_data.6 = 0
31
Lcd_data.5 = 0
32
Lcd_data.4 = 0
33
Lcd_data.3 = 1
34
Lcd_data.2 = 1
35
Lcd_data.1 = 1
36
Lcd_data.0 = 1
37
Gosub Writetolcd
38
Waitus 40
39
40
'Display Clear
41
Lcd_rs = 0
42
Lcd_data = 1
43
Gosub Writetolcd
44
Waitms 2
45
46
'Entry Mode Set
47
Lcd_rs = 0
48
Lcd_data = 7
49
Gosub Writetolcd
50
Waitms 50
51
52
'Write Char
53
Lcd_rs = 1
54
Lcd_data = 60
55
Gosub Writetolcd
56
57
'Main Loop
58
59
Do
60
61
Loop
62
63
'Functions
64
Writetolcd:
65
Lcd_en = 1
66
Lcd_en = 0
67
Return

Ich weiß, dass es unnötig ist jedesmal Lcd_rs auf 0 zu setzen, aber 
solche Optimierungen kann ich auch später durchführen.

von The_Ride (Gast)


Lesenswert?


von frühaufsteher (Gast)


Lesenswert?

Hallo!

JTAG abgeschaltet?

MfG

von Sam (Gast)


Lesenswert?

Ich hab JTAG nicht aktiviert, aber wenn das standardmäßig an ist, ist es 
immernoch an.

PS: Ich kann grad nicht nachkucken, bin in der Schule.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Ist standardmäßig an.....

muss entweder im initialisierungsprozess (Resetroutine Kaltstart) 
deaktivirert werden.  Achtung Das Register muss 2mal unmittelbar 
aufeinanderfolgend beschrieben werden sonst wird das datum nicht 
geändert!

oder man deaktiviertes mittels Jtagfusebit !!! Achtung umgekehrte Logik 
ALLER Fusebits beachten sonst gefahr den Aussperrens!!!

von Sam (Gast)


Lesenswert?

Danke es klappt.

Ich hab noch nie was mit JTAG gemacht, aber es war doch so, dass der 
Controller die Ports nicht freigegeben hat (oder so ähnlich), und 
deswegen hat es nicht funktioniert?

Funktioniert jetzt auch in Bascom.

von Sam (Gast)


Lesenswert?

Sam schrieb:
> Funktioniert jetzt auch in Bascom.

ähh ich meine mit Config Lcd

von Sam (Gast)


Lesenswert?

Winfried J. schrieb:
> Achtung umgekehrte Logik
> ALLER Fusebits beachten sonst gefahr den Aussperrens!!!

Darauf hab ich nicht geachtet, muss man in Avr burn o mat meines Wissens 
nicht.

Eine Frage noch:

Warum flakert das Lcd bei dem Code:
1
$regfile "m32def.dat"
2
$crystal = 8000000
3
4
Config Lcd = 20 * 4
5
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portd.6 , Rs = Portd.7
6
Config Lcdbus = 4
7
8
Cls
9
Locate 1 , 1
10
Lcd "Hallo Welt"

Bascom muss irgendetwas noch über die Datenleitungen senden, denn wenn 
man den 10pol Datenstecker zieht hört es auf; beim einstecken flackert 
es weiter. Liegt das daran, dass das Programm kein Ende hat?

von Karl H. (kbuchegg)


Lesenswert?

Sam schrieb:

> Warum flakert das Lcd bei dem Code:

Vielleicht deshalb, weil sich dein Programm in keiner obligaten 
Endlosschleife letztendlich fängt und daher von den BASCOM 
Basisfunktionen immer wieder neu gestartet wird und im Zuge dessen das 
LCD ständig löscht und neu beschreibt, was man, wenn es moderat schnell 
geschieht, als Flackern wahrnimmt?

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.