Keine Anzeige auf dem LC Display AVR

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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.