Forum: Mikrocontroller und Digitale Elektronik Keine Anzeige auf dem LC Display AVR


von Nils (Gast)


Lesenswert?

Moin.
Ich habe ein Probem mit einem LC-Display (ANAG VISION AV0820) der einen 
KS0066 Controller besitzt. Da ich jetzt seit fast zwei Tagen kein 
Vortschritt mache bitte ich euch um hilfe.
Ich habe die Datenleitungen an den PORTC angeschlossen, die 
Steuerleitungen an den PORTD. (E=PD0, R/W=PD1, RS=PD2). Kontrast und 
Beleuchtung sind passend eingestellt, sodass ich bei anlegen der 
Spannung die erste Zeile sehe. Nachdem ich den µController starte, 
verschwindet diese wie gewollt. Mein Problem ist, dass ich gar nichts 
sehe. Weder Zeichen noch den Cursor den ich vorher eingestellt habe.
Ich habe schon den Anschluss des LCD gerüft und die Zeiten variiert. Ich 
würde ich freuen, wenn ihr mir helfen könntet das folgende Programm zu 
verbessern.
Ich verwende einen Board von Pollin, einen Atmega16 und AVR Studio 5 
falls das von Bedeutung ist.

PS:Ich habe die Funktion lcdwort irgendwo rauskopiert. Könnte mir jemand 
kurz erklären was man da eigentlich macht?
MfG Nils
1
/*
2
 */
3
#ifndef F_CPU
4
#define F_CPU 16000000
5
#endif
6
7
#include <avr/io.h>
8
#include <util/delay.h>
9
10
11
lcdenable()
12
{
13
    _delay_ms(1);
14
  PORTD |= 0x01;
15
    _delay_ms(1);
16
  PORTD = 0x00;
17
  _delay_ms(1);
18
}
19
20
21
lcdinit ()
22
{
23
  
24
  PORTC = 0x00;
25
  PORTD = 0x00;
26
  
27
  _delay_ms(40);
28
    PORTC = 0x30;       //8bit
29
    lcdenable();
30
  
31
    PORTC = 0x30;       //8bit
32
    lcdenable();
33
  
34
    PORTC = 0x30;       //8bit
35
    lcdenable();
36
  
37
    PORTC = 0x38;       //Funktion 8bit,number of lines,character front
38
    lcdenable();
39
  
40
    PORTC = 0x08;       //Display off
41
    lcdenable();
42
  
43
    PORTC = 0x01;       //clr
44
    lcdenable();
45
  
46
    PORTC = 0x06;       //ENTRY MODE SET
47
    lcdenable();
48
  
49
    PORTC = 0x0F;       //Display on
50
    lcdenable();
51
  
52
  PORTC = 0x01;       //Display clr
53
    lcdenable();
54
  
55
  PORTC = 0x02;    //home
56
  lcdenable();
57
  
58
  _delay_ms(20);
59
  
60
61
}
62
63
lcdout (char x)
64
{
65
    PORTD = 0x04;
66
    _delay_ms(10);
67
    PORTC = x;
68
  _delay_ms(10);
69
  PORTD = 0x05;
70
  _delay_ms(10);
71
    PORTD = 0x00;
72
}
73
74
75
lcdwort( const char *data )
76
{
77
    while( *data != '\0' )
78
        lcdout( *data++ );
79
}
80
81
82
int main(void)
83
{
84
    DDRA = 0x00;
85
    DDRB = 0x08;
86
  DDRC = 0xFF;
87
    DDRD = 0xE7;
88
  
89
  PORTB = 0x08;
90
91
    lcdinit();
92
  
93
  lcdout(0x34);
94
  lcdout('s');
95
  lcdwort("Hallo");
96
  
97
  
98
    while (1)
99
    {
100
    lcdout('s');
101
    _delay_ms(1000);
102
                
103
  }
104
105
    return 0;
106
}

von ... (Gast)


Lesenswert?

Bei den eingebauten Verzögerungszeiten kriegt der LCD-Controller 
zwischendurch wahrscheinlich Langeweile.

von spess53 (Gast)


Lesenswert?

Hi

>Ich verwende einen Board von Pollin, einen Atmega16 und AVR Studio 5
>falls das von Bedeutung ist.

JTAG abgeschaltet?

MfG Spess

von holger (Gast)


Lesenswert?


von Nils (Gast)


Lesenswert?

Ja. Besser Langeweile als irgendwas zu Überspringen. Kann man ja wenns 
läuft noch optimieren.

Gute Frage. Programmiere über ISP. Muss ich einfach nur das FUSEBIT 
ändern?

von spess53 (Gast)


Lesenswert?

Hi

>Gute Frage. Programmiere über ISP. Muss ich einfach nur das FUSEBIT
ändern?

Ja. Aber vorher die Fuses einlesen.

MfG Spess

von Nils (Gast)


Lesenswert?

Ok. Hab ich deaktiviert. Jetzt erscheint wieder die Zeile, die vor der 
initialisierung da war. Auch nachdem ich das Programm nochmals 
übertragen habe.

von Nils (Gast)


Lesenswert?

Klappt immer noch nicht. Gibt es noch andere verstekte Funktionen die 
aktiv sein könnten?

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.