Keine Anzeige auf dem LC Display AVR

Gast #2753076
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
}

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