Display mit Atmega8 und Bascom

Gast #3965347
Lesenswert?

Ich hab ein seltsames Problem ,ich schließe mein Display ( Hantronix 
hdm08216l - 3-l3os 2x8 Displa) so an : 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung


Mein Programm;
1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
$baud = 2400
4
$hwstack = 150
5
$swstack = 150
6
$framesize = 100
7

8

9
'---------------------------------------------------------------------------
10
                               'display
11

12
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
13
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
14
Config Lcd = 16 * 2
15
Cursor Off
16

17
Do
18
 Wait 3
19
 Cls
20
  Locate 1 , 1
21
  Lcd "hallo"
22
  Wait 3
23
 Cls
24
  Locate 1 , 1
25
  Lcd "hallo1"
26
Loop
27
End

Schön, das geht auch Wunderbar. Nur nicht lange, wenn ich das Programm 
über Nacht laufen lasse ist immer am nächsten Tag nichts oder nur 
Schwarze Balken zu sehen .

Config Lcd = 16 * 2 hab ich auch schon durch Config Lcd = 16 * 1 ersetzt 
geht auch nicht besser. Auch ein anderes Display hab ich erfolglos 
getestet .

der Atmega läuft auf einem Pollin board.

Bitte um Ratschläge
Gast #3965369
Lesenswert?

#3965598
Lesenswert?

Spendier dem ganzen mal grosszügig ein paar Blockkondensatoren.

Das sind nichts anderes als 100nF Kondensatoren, die möglichst nahe beim 
Verbraucher an der Versorungsspannung sitzen (also Vcc mit GND über 
einen 100nF Kondensator 'blocken').
Dein LCD stürzt irgendwann ab, das können kleine Unsauberkeiten in der 
Versorungsspannung sein, kurzfristige Einbrüche in der Spannung, die bei 
Digitalschaltungen nichts ungewöhnliches sind. Wenn in den ICs viele 
Transistoren gleichzeitig schalten, kann es schon mal sein, dass 
kurzzeitig für ein paar Mykrosekunden der Stromverbrauch der Schaltung 
in die Höhe schnellt und das Netzteil nicht schnell genug 'nachliefern' 
kann. Dann helfen die Blockkondensatoren aus, in dem sie kurfristig 
genau diese Spannungseinbrüche 'auffüllen'.

Das kann die Ursache sein, muss es aber nicht sein. Allerdings: oft ist 
es genau dieses und ein paar zusätzliche Kondensatoren (durchaus auch am 
LCD direkt an der Anschlussleiste angelötet) können das Problem beheben.
Gast #3965599
Lesenswert?

Pascal schrieb:
> ;-) schrieb:
>> @pascal:
>>
>> wie regulierst du den kontrast, welche aufgabe hat der sw kondensator
>> bei dir?
>>
>> ;-)
>
> keine, auf dem Brett ist nur noch der alte Aufbau.
> Kontrast regle ich im mom beim Testaufbau garnicht, der liegt dirket 0
> V.

kannst du das mal mit kontrast
3  Vee  Kontrastspannung (0V bis 5V)  versuchen und die pausen mal auf
von 3 sekunden auf 10 ms stellen und das beobachten?
regle mal so, dass er etwas kontrast am anfang hat,
wird es im lauf immer dunkler? sagen wir mal bei 10ms nach 10 minuten?

>
> Ich hab aber auch eine Schaltung auf Platine , die hat genau den selben
> fehler(anderes Display)

ist der kontrast dort angeschlossen also auf 0?
Gast #3966223
Lesenswert?

Hallo, ich habe jetzt 2 104 100nF Kondensatoren auf mein Steckbrett 
gesteckt,weil ich nicht am Display rumlöten will ohne genauers zu 
wissen....

die Zeit hab ich nun auf 10ms gestellt ,die Schrift wird jetzt etwas 
blasser angezeigt, die 1 nur noch sehr schwer zu erkennen, ich glaube 
10ms ist zu schnell für das Ding, aber ich lass das jetzt mal laufen 
....
#3966242
Lesenswert?

pascal schrieb:

> die Zeit hab ich nun auf 10ms gestellt ,die Schrift wird jetzt etwas
> blasser angezeigt, die 1 nur noch sehr schwer zu erkennen, ich glaube
> 10ms ist zu schnell für das Ding

nicht wirklich.
Das 'Problem' ist, dass man auf derartigen LCD nicht alle paar 
Millisekunden das Display löscht. Denn das löschen dauert seine Zeit. 
Die Abnahme der Helligkeit begründet sich dadurch, dass sich das 
Verhältnis der Zeiten zwischen "Das Display ist leer" und "Auf dem 
Display wird was angezeigt" dann immer mehr in Richtung "Das Display ist 
leer" verschiebt.

Im Grunde ist das wie bei einem Buch, dass ich dir eine zeitlang vor die 
Nase halte und dann wieder weg nehme. Ist diese 'zeitlang' im Bereich 
von Minuten, dann kannst du was lesen. Zeige ich dir das Buch aber nur 
für Sekundenbruchteile, dann kannst du nichts mehr lesen.

Also: merken.
Die Operation CLS willst du eigentlich nicht einsetzen. Wenn aber doch, 
dann so sparsam wie möglich. Lieber überschreibst du nur das Display mit 
den jeweils neuen Informationen, so dass zb fixe Texte die ganze Zeit 
über sichtbar sind.

ABer ok. Das kommt später. Erst mal muss es stabil laufen.
Gast #3966311
Lesenswert?

1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
$baud = 2400
4
$hwstack = 150
5
$swstack = 150
6
$framesize = 100
7
 Dim Test As Word
8

9
'---------------------------------------------------------------------------
10
 Const Timer1_preload = 34286
11

12
Config Timer1 = Timer , Prescale = 256
13
Enable Timer1
14
Timer1 = Timer1_preload
15
On Timer1 Isr_timer1
16
Enable Interrupts                                           'display
17

18
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
19
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
20
Config Lcd = 16 * 2
21
Initlcd
22
Cursor Off
23
 Test = 0
24
Do
25
If Test = 10 Then
26
Test = 0
27
 Initlcd
28
 End If
29
 Waitms 10
30
 Cls
31
  Locate 1 , 1
32
  Lcd "hallo"
33
  Waitms 10
34
 Cls
35
  Locate 1 , 1
36
  Lcd "hallo1"
37
Loop
38
End
39

40

41
 Isr_timer1:
42
  Timer1 = Timer1_preload
43
Incr Test
44
Return

so läuft es bisher, aber kann/soll ich das auf auer so lassen?
#3966320
Lesenswert?

So ein initlcd zwischendurch ist natürlich eine Möglichkeit. Persönlich 
würdeich es fürs erste nicht so lassen, sondern lieber dem Problem auf 
den Grund gehen.

Es kann sich natürlich rausstellen, dass man in 'verseuchten' Umgebungen 
zwischendurch mal ein LCD neu initialisieren muss. Aber das sollte der 
allerletzte Notbehelf sein, wenn man die Störungen von aussen gar nicht 
in den Griff kriegt.
Mein LCD an der Heizungssteuerung läuft seit nunmehr 2 Jahren durch, 
ohne dass ich es ein einziges mal resetten musste.

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