PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD-Ansteuerung nicht korrekt



EagleStar
14.06.2007, 16:53
Hallo zusammen,

ich bin jetzt langsam am verzweifeln. ich habe mien 4x16 LCD an meinen mega8 angeschloßen und mit 4bit no busy betrieben. Zumindest wollte ich das.

www.mayer-world.de/rnpics/PICT0001.JPG
www.mayer-world.de/rnpics/PICT0001.JPG

Das Bild zeigt das sich die Ausgabe auf 1 1/2 Zeilen beschränkt und keinerlei Zeichen zu sehen sind.

Ich weis jatzt nicht woran das liegt. Könnte das mit dem Internen Takt von 1MHz zusammen hängen (zu langsam oder ungenau?)? Ich weis noch nicht wie ich die Fusebits im PonyProg setzten muss, um den ext. 16MHz Quarz zu nutzen, welcher mit zwei 22pF gegen Masse liegt.

Wenn sich jemand erbarmen könnte, mir einen Tip zu geben wäre ich echt dankbar.

MfG EagleStar

EagleStar
14.06.2007, 16:56
Sorry ich check das mit den Bildern irgendwie garnicht!

Dirk
14.06.2007, 17:25
Ohne Angaben über den Anschluss des LCD und das verwendete Test-Programm kann man da nur raten.
Auf jeden Fall sind Kästchen da, damit hat das LCD Spannung.

Gruß Dirk

EagleStar
14.06.2007, 18:06
OK, dem kann ich abhelfen:

Der verwendete Code:


$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
$lib "lcd4.lbx"

Config Lcdpin = Pin , Rs = Portc.4 , E = Portc.5 , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3

Config Lcd = 16 * 4

Cls

Locate 1 , 1
Lcd "*mayer-world.de*"
Lowerline
Lcd "1234567812345678"

End


Der Anschluss ist wie im RN-Wissenbereich angebracht.
4bit Ansteuerung ohne busy (I/O)

Dirk
14.06.2007, 18:14
Versuch 'mal am Anfang vor dem Cls ein Lcdinit.

Gruß Dirk

EagleStar
14.06.2007, 18:18
Lcdinit zeigt mir BASCOM nicht als Befehl an (blau, fett).
Beim Compilen: Error: Unknown statement!

Dirk
14.06.2007, 18:31
Sorry, lange nicht mehr Bascom geproggt.

Ist natürlich Initlcd.

Gruß Dirk

EagleStar
14.06.2007, 18:36
OK, das ging glatt als Befehl durch! Hatte aber leider auch keine Auswirkung.
Was meinst du zu der Fusebitsache: Weisst du wie ich die setzten muss.
Mir ist aufgefallen, dass mein Display 15 pins hat. Spielt das eine Rolle?
Das Display ist von Pollin: "LCD-Modul HLM8070"
Oder weist du was ich sonst noch ausprobieren kann?

MfG EagleStar

Dirk
14.06.2007, 18:48
Oder weist du was ich sonst noch ausprobieren kann?
1. Funktioniert dein M8 überhaupt? Probier' mal ein Prog, was nur einen Portpin 1x pro Sekunde an und aus schaltet. Da kannst du dann eine LED dran hängen zum Test.
2. Wenn du den M8 neu hast, läuft er auf 1 MHz intern ohne Quarz. Diese Taktfrequenz hast du ja auch in deinem Prog ($crystal) angegeben.
3. Wenn du bis jetzt nicht an den Fusebits etwas geändert hast, dann lass es auch, bis das LCD läuft. Das muss auf jeden Fall auch mit 1 MHz laufen.
Wenn du einen Quarz 16 MHz dran hast und die Fusebits auf extern-crystal umgestellt hast, dürfte er mit 16 MHz laufen. Dann must du das aber im Prog ($crystal) auch so angeben: $crystal = 16000000.
4. Wenn der M8 prinzipiell läuft (LED blinkt), dann geht's ans LCD. Melde dich dann evtl.! Für den Funktionstest lass die lcd4.lbx erst mal weg!

Gruß Dirk

EagleStar
14.06.2007, 18:53
Erstmal Danke für die Mühe vorweg!

1. mega8 tut, und läuft auch auf inter 1MHz, RS232 tut auch (wg Frequenz testen und so)!
2. richtig! passt!
3. gut lass ich die Finger weg. (Hab schon einen damit abgeschossen!)
4. Die Bibliothek weglassen habe ich auch schon versucht, macht aber keinen Unterschied.

Komisch nich?

Danke
MfG EagleStar

Dirk
14.06.2007, 19:07
Komisch nich?

Ja .... :-k

Hardwaremässig stimmt alles?
(Z.B. RW fest auf GND gelegt? Pins nochmal gecheckt, d.h. sind alle wie im Bascom-Prog angegeben angeschlossen? GND mit uc-GND verbunden? ...)

Gruß Dirk

EagleStar
14.06.2007, 19:10
Das müsste alles iO sein! Hab ich zweimal gecheckt.
Kann es sein das der Controller(LCD) nicht kompatibel ist?
Ich denke ich werde mal noch kurz ein zweites anderes Display adaptieren! Vielleicht liegts wirklich daran!

MfG EagleStar

*auf heißen Lötkolben warte...

robocat
14.06.2007, 19:10
ist der M50530 überhaupt ansteuerbar wie ein HD44780? datenblatt und pinbelegung gibts bei pollin. habe ich jetzt aber nicht genauer angeguckt.

gruesse

jar
14.06.2007, 19:19
sieht aus wie vergessenes R/W auf GND ?

EagleStar
14.06.2007, 19:30
@jar:
R/W liegt auf Masse!

So jetzt habe ich noch eine Bequemlichkeitsfrage:
Kann ich an VEE auch einfach +5V legen?

EagleStar
14.06.2007, 19:39
OK die letzte Frage hat sich erübrigt! Ich war fleißig und habe den Poti reingesetzt!
Dieses Display zeigt nun eine leere Zeile eine ausgefüllte Zeile, wieder eine leere und eine ausgefüllte!
Ich versuchs mal mit der anderen lib!

MfG EagleStar

EagleStar
14.06.2007, 19:44
Juhu es tut ohne die lcd4.lbx!
Ich nehme an, dass der andere Controller nicht kompatibel ist!

Megavielen Dank für eure unterstützung!

MfG EagleStar

EagleStar
14.06.2007, 19:49
Ach fast vergessen, kann mir noch jemand sagen wie ich meine Bits im PonyProg setzten muss, damit ich den 16MHz Quarz benutzen kann (wie oben beschrieben)?

MfG EagleStar

zumgwadrad
15.06.2007, 09:45
Moin,
hab hier nen link, da kann man sich die einstellungen der Fusebits für alle Anwendungen und alle Atmega-Controller generieren lassen
http://palmavr.sourceforge.net/cgi-bin/fc.cgi
Viel Spass noch

EagleStar
15.06.2007, 15:18
Vielen Dank für den Link, einen ordendlichen Eindruck.
Da kommen mir jedoch neue Fragen auf:
1. Was ist das Brown-Out-detection-level?
2. Was muss ich denn da für einen Quarz nehmen?
- ext. Crystal/Resonator = müsste ok sein!
- high freq?
- start up time?
- + X ms?
Sorry, aber da bin ich überfragt! Wäre schön wenn du mir das auch noch erklären könntest!

MfG EagleStar

Dirk
15.06.2007, 15:31
Hallo EagleStar,

schon 'mal hier lang gesurft?
https://www.roboternetz.de/wissen/index.php/Avr#Die_Fusebits

Gruß Dirk

EagleStar
15.06.2007, 15:51
Ja da bin ich vor einer Weile mal vorbei gekommen!
Ich muss auch zugeben, dass sich gerade beim zweiten Blick die Brown-out-Frage geklärt hat!
Frage 2 ist aber immer noch nicht beantworten.
Vllt check ichs auch blos nicht?

MfG EagleStar

mikro-VIIV
29.07.2007, 13:08
Hallo EagleStar,

ich hab mir auch ein HLM8070 von Pollin zugelegt und rätsel jetzt an der Pinbelegung der 15 Pins.
Bin aus dem Datenblatt von Pollin nicht so richtig schlau geworden.

Währe echt toll, wenn du mir da weiter helfen könntest.

mikro-VIIV
29.07.2007, 13:51
Sorry, mein Fehler.
Hab übersehen, das in dem zip-file die Pinbelegung in einem Textdokument drin steht:



1 - GND
2 - VDD +5V
3 - Kontrast
4 - I/OC1
5 - R/W
6 - ex
7 - DB0
8 - DB1
9 - DB2
10 - DB3
11 - DB4
12 - DB5
13 - DB6
14 - DB7
15 - I/OC2

mikro-VIIV
29.07.2007, 13:59
hab noch nie zuvor mit LCDs gearbeitet und mir das mal in der wiki angesehen.

da tauchen die anschlüsse I/OC1, I/OC2 und ex aber nirgends auf.
ex ist sicherlich Enable oder?
und was ist mit I/OC1 und I/OC2?

könnt ihr mir das bitte mal erklären

frank090464
02.10.2007, 23:55
Juhu es tut ohne die lcd4.lbx!
Ich nehme an, dass der andere Controller nicht kompatibel ist!

Megavielen Dank für eure unterstützung!

MfG EagleStar

Hi, wie hast Du das Display beschalten? Ich stehe vor dem gleichen Problem, wie Du zum Anfang. Habe auch DB4...DB7 angeschlossen, R/W auf Masse usw; nur an einen Atmega32. Wäre sehr nett, wenn Du mir ein paar Inputs geben könntest. Vielen Dank im Voraus.

tc-maxx
11.10.2007, 15:26
Hallo,

hat schon jemand rausbekommen wie man das Display unter Bascom zum laufen bekommt ?

MfG MaXX

linux_80
11.10.2007, 23:03
Hallo,

hier gibts noch einen dazu:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=34476

Dnerb
11.10.2007, 23:55
Hi Leute,

das Ding hat einen 50530 Controller und den kann man nicht mit den eingebauten Befehlen von Bascom ansprechen.

Also entweder eine eigene Lib Basteln oder sonst irgendwie selber von Hand ansteuern.

Aber die Dinger sind ja zum Glück nicht teuer, also kaum Kohle in den Sand gesetzt.

Mein Tipp: Lieber eines mit einem 44780 Controlles nehmen, die tun in der Regel Problemlos.

Gruß Dnerb

mikro-VIIV
15.10.2007, 13:43
Hallo,

schaut mal hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=34476

mikro-VIIV
20.11.2007, 20:08
Hallo alle zusammen,

ich habs jetzt geschaft, das Display HLM8070 von pollin mit BASCOM anzusteuern.

hier mein Quelltext:


$regfile = "m8def.dat"
$crystal = 16000000
$baud = 57600


Lcddisplay Alias Portc
Config Lcddisplay = Output

Oc1 Alias Portd.4
Config Oc1 = Output
Oc2 Alias Portd.5
Config Oc2 = Output
Ex Alias Portd.6
Config Ex = Output

Dim Parameter As Byte
Dim Xparameter As Byte
Dim Command As Byte
Dim Zeile As Byte
Dim I As Byte
Dim Char As Byte
Dim Xchar As String * 1
Dim Text As String * 16
Dim Xxchar As String * 1
Dim Xxxchar As Byte

Reset Oc1
Reset Oc2
Reset Ex

Declare Sub Init()
Declare Sub Command(command As Byte)
Declare Sub Disp(xchar As Byte)
Declare Sub Zeile(xzeile As Byte)


'------------
'Hautprogramm
'------------

Call Init

Zeile = $00
Call Zeile(zeile)
Text = "0123456789ABCDEF"
Gosub Ausgeben

Zeile = $40
Call Zeile(zeile)
Text = "GHIJKLMNOPQRSTUV"
Gosub Ausgeben

Zeile = $80
Call Zeile(zeile)
Text = "WXYZ!,$%&/()=?`*"
Gosub Ausgeben

Zeile = $c0
Call Zeile(zeile)
Text = "@+#'<>|^{[]};_-."
Gosub Ausgeben

Do
Print "fertig"
Wait 1
Loop

'------------------
'Ende Hauptprogramm
'------------------


'----------
Sub Init()
'----------
Parameter = $d8
Call Command(parameter)
Parameter = $50
Call Command(parameter)
Parameter = $33
Call Command(parameter)
Parameter = $01
Call Command(parameter)
Waitms 2
End Sub

'-----------------------------
Sub Command(command As Byte)
'-----------------------------
Xparameter = Command
Shift Xparameter , Right , 4
Lcddisplay = Xparameter
Set Ex
Waitus 1
Reset Ex
Lcddisplay = Command And $0f
Set Ex
Waitus 1
Reset Ex
Waitus 20
End Sub

'--------------------------
Sub Zeile(xzeile As Byte)
'--------------------------
Parameter = Xzeile
Set Oc1
Set Oc2
Call Command(parameter)
Reset Oc1
Reset Oc2
Waitus 100
End Sub

'------------------------
Sub Disp(xchar As Byte)
'------------------------
Set Oc2
Parameter = Xchar
Call Command(parameter)
Reset Oc2
End Sub

'---------
Ausgeben:
'---------
For I = 1 To 16
Xxchar = Mid(text , I , 1)
Xxxchar = Val(xxchar)
Char = Asc(xxchar)
If Char = 0 Then
Char = $20
End If
Call Disp(char)
Next I
Return


bei mir funktioniert alles einwandfrei

hier noch meine Anschlussbelegung:


1 GND GND
2 +5V +5V
3 Kontrast Kontrast
4 IO C1 PD4
5 R/W GND
6 EX PD6
7 DB0
8 DB1
9 DB2
10 DB3
11 DB4 PC0
12 DB5 PC1
13 DB6 PC2
14 DB7 PC3
15 IO C2 PD5


alles, was das Programm macht, ist 4 Zeilen voll Zeichen auszugeben


für Verbesserungsvorschläge bin ich jederzeit offen


hoffe damit geholfen zu haben