Unbekanntes lcd Display

Gast #1761444
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.
Gast #1761660
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
Gast #1762011
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
Angehängte Dateien:
Gast #1762064
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.
(Firma: Nisch-Aufzüge) Persönliche Seite #1762546
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!!!
Gast #1762586
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.
Gast #1762599
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?
#1762625
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren