PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD-Display Problem



Soeni
31.10.2009, 07:46
Ich habe ein altes Display (von 1994) in einem alten Karton gefunden und wollte es für mein Bot benutzen. Ich möchte es mit meinem RN-Control (Atmega 32) betreiben. Habe das Display wie im Wiki beschrieben angeschlossen (4-Bit Modus). Nun das Display zeigt nicht das an was es soll. Display sollte ordnungsgemäß funktionieren, da es schon beim zusammenlöten einige male schwarze Kästen angezeigt hat. An allen Anschlüssen die vom AVR kommen liegt ein HIGH Pegel an...was es nicht soll. Kann jemand mein Programm überprüfen? Programm geht ansonsten da Töne ausgegeben werden.


'################################################# #########
'Initalisierung
'################################################# #########

'Declare

Declare Function Tastenabfrage() As Byte


'Initalisiere ATMEGA16

$regfile = "m32def.dat"
$crystal = 16000000


'Config

'Für Tastenabfrage
Config Adc = Single , Prescaler = Auto

'Für Tastenabfrage, Pullup Widerstand ein
Config Pina.7 = Input
Porta.7 = 1

'Display
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.5 , Db7 = Portc.4 , E = Portd.1 , Rs = Portd.0
Config Lcd = 20 * 4
Config Lcdbus = 4


'Dim

Dim Taste As Byte


'################################################# #########
'Tastenabfrage
'################################################# #########

Cursor Off
Cls
Lcd "Willkommen"
Sound Portd.7 , 400 , 450
Lowerline
Lcd "Test OK"
Sound Portd.7 , 400 , 450
Wait 2
Cls
Lcd "Programm Wählen"
Sound Portd.7 , 400 , 450
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1

Case 2

Case 3

Case 4

Case 5

End Select
End If

Waitms 100
Loop
End


Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Start Adc
Ws = Getadc(7)
If Ws < 420 Then
Select Case Ws
Case 373 To 413
Tastenabfrage = 1
Lcd "Taste 1 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 303 To 343
Tastenabfrage = 2
Lcd "Taste 2 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 230 To 270
Tastenabfrage = 3
Lcd "Taste 3 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 153 To 193
Tastenabfrage = 4
Lcd "Taste 4 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 70 To 110
Tastenabfrage = 5
Lcd "Taste 5 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
End Select
End If
End Function

Michael
31.10.2009, 08:51
Hallo Soeni,


da es schon beim zusammenlöten einige male schwarze Kästen angezeigt hat.

Wenn ein elektrisches Bauteil schon bei der Verarbeitung Leben zeigt, dann ist das sehr gefährlich.
Vermutlich hast du unter Spannung gelötet und damit das Display zerstört.

Vielleicht hast du aber auch Glück gehabt.

Als erstes sollte bei Anschluß von Vcc, GND und richtiger Kontrastspannung eine Reihe schwarzer Balken sichtbar werden.
Bei älteren Displays ist die Kontrastspannung auch negativ.

Gruß, Michael

Hubert.G
31.10.2009, 08:55
R/W liegt auf GND?

Soeni
31.10.2009, 10:00
alles so angeschlossen wie im Wiki beschrieben also auch alle nicht benötigte Anschlüsse (da 4-Bit modus) auf GND.

@Michael: habe mich etwas ungeschickt ausgedrückt. Natürlich hat beim direkten Löten nichts geleuchtet oder ähnliches. Das was ich meinte war die von dir angesprochene Kontrastspannung. Also Schwarze Balken, aber nicht immer. Kontrast Funktioniert aber lässt sich nicht wirklich Regelen, aber das liegt warscheinlich an der falschen Spannung werde mal ein anderen Poti nehmen wenn die Ansteuerung funktioniert. http://www.rn-wissen.de/index.php/Bascom_und_LCD%27s hier wird ein 15k Widerstand genommen ich denke der ist zu groß.

Aber das ist erstmal nicht ganz so wichtig. Viel wichtiger finde ich warum der AVR das Display nicht ansteuert...Alle Pins verändern sich nicht. Habe zwar nur mit einem Voltmeter gemessen aber ich messe es gleich mal mit eine Oszi. Ihrgendetwas muss mit dem Programm, vermutlich mit der Config nicht stimmen...

Michael
31.10.2009, 10:11
Hallo Soeni,

die Kontrastspannung sollte schon stabil sein, wenn beim Einschalten keine schwarzen Blöcke in der ersten Zeile zu sehen sind, stimmt die nicht.


Viel wichtiger finde ich warum der AVR das Display nicht ansteuert.
möglicherweise hast du das Jtag-Interface noch eingeschaltet, das benutzt nämlich einige Pins von PortC.
Ausschalten kann man das per Fuse-Bit.
Die Belegung der einzelnen Pins ist paarweise verdreht, aber ich kenne deine Schaltung ja nicht.

Huberts Rat bezüglich RW hast du sicher schon befolgt.

Gruß, Michael

Neutro
31.10.2009, 10:39
Vielleicht liegt es daran das du das display am C und D Port betreibst. Ich habe schon mal davon gelesen das man ein Display nur über ein Port ansteuern sollte. Vielleicht bezieht sich diese Aussage aber auch nur auf die Datenleitungen, die ja bei dir alle auf einem Port sind.
Was passiert denn wenn du den Pin für die Kontrastspannung über einen 100R auf auf GND legst, dann solltest du die Kästchen aber schon sehen können.

Gruß

Neutro

Soeni
31.10.2009, 10:56
Fuse-Bit kann vllt sein. Habe bis jetzt nur an den Fuse-Bits die Taktquelle geändert...werde ich gleich überprüfen.

Nach der Kontrastspannung werde ich jetzt dann mal schaun vllt hat es doch etwas damit zu tun.

Soeni
01.11.2009, 16:31
Habe das Jtag-Interface deaktiviert, nochmal alle Anschlüsse kontrolliert. Habe die ausgänge mal gemessen, er ändert sein zustand. Aber anzeigen tut er nur manchmal sporadisch was. Kann es vllt sein das der AVR zuschnell für mein altes Display ist? Kann man das ihrgendwie langsamer machen?

Michael
02.11.2009, 13:46
Hallo Soeni,


Also Schwarze Balken, aber nicht immer. Kontrast Funktioniert aber lässt sich nicht wirklich Regelen,
Aber anzeigen tut er nur manchmal sporadisch was.
ich tippe auf kalte Lötstellen oder Kabelbruch. Zeig doch mal ein Foto von den Lötverbindungen?


Kann es vllt sein das der AVR zuschnell für mein altes Display ist?
das halte ich für sehr unwahrscheinlich.

@neutro:

Vielleicht liegt es daran das du das display am C und D Port betreibst.
nein, daran liegt es sicher nicht.


Ich habe schon mal davon gelesen das man ein Display nur über ein Port ansteuern sollte.
das ist eine andere Programmiersprache ;)

Gruß, Michael