Atmega8 und LCD Display

Gast #2484702
Lesenswert?

Hallo,

ich würde gern meinen Atmega8 und mein Display von Pollin zum Laufen 
bekommen. Ich sitze nun schon 2 Tage dran, aber bekomme kein Zeichen, 
geschwiege denn die Uhrzeit wie geplant, auf das Display.

Ich habe die Beschaltung wie in LCD-Ansteuerung beschrieben, 
aufgebaut.

Was kann die Ursache dafür sein ?

Anhänge:
- Datasheed Display http://www.pollin.de/shop/downloads/D120422D.PDF

HW:
- Atmega8
- STK 500
- Display TC1602A-09 
(http://www.pollin.de/shop/dt/Nzc1OTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_TC1602A_09.html)
Gast #2485723
Lesenswert?

abgesehn vom Schaltplan und Code. Hast du mal mit dem Displaykontrast 
gespielt? Ich erinner mich noch an meine ersten Gehversuche mit LCDs als 
der vermeintliche Fehler eine falsche Kontrasteinstellung war
Gast #2485994
Lesenswert?

@DietrichL: hier mal meinen Code:
1
#include <avr/io.h>
2
#include "lcd-routines.h"
3
#include <util/delay.h>
4
 
5
int main(void)
6
{
7
   lcd_init();
8
 
9
  lcd_data( 'T' );
10
  lcd_data( 'e' );
11
  lcd_data( 's' );
12
  lcd_data( 't' );
13
 
14
  lcd_setcursor( 0, 2 );
15
 
16
  lcd_string("Hello World!");
17
 
18
  DDRB = 0x01;
19
  while(1)
20
  {
21
    PORTB = 1;
22
  _delay_loop_2(100000);
23
  PORTB = 0;
24
  _delay_loop_2(100000);
25
  }
26
 
27
  return 0;
28
}
das ist mein Code.
Im Makefile habe ich noch folgendes angepasst:
1
MCU = atmega8
hier dann nochmal der Link AVR-GCC-Tutorial/LCD-Ansteuerung

Schaltplan habe ich angehangen.

@HP: nein, habe ich noch nicht!
Angehängte Dateien:
Gast #2486021
Lesenswert?

1
// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus
2
// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
3
//
4
 
5
#ifndef LCD_ROUTINES_H
6
#define LCD_ROUTINES_H
7
 
8
////////////////////////////////////////////////////////////////////////////////
9
// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
10
 
11
#ifndef F_CPU
12
#define F_CPU 3686400
13
#endif
14
 
15
////////////////////////////////////////////////////////////////////////////////
16
// Pinbelegung für das LCD, an verwendete Pins anpassen
17
// Alle LCD Pins müssen an einem Port angeschlossen sein und die 4
18
// Datenleitungen müssen auf aufeinanderfolgenden Pins liegen
19
 
20
//  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3
21
#define LCD_PORT      PORTD
22
#define LCD_DDR       DDRD
23
#define LCD_DB        PD0
24
 
25
//  LCD RS      <-->  PORTD Bit PD4     (RS: 1=Data, 0=Command)
26
#define LCD_RS        PD4
27
 
28
//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
29
#define LCD_EN        PD5
30
 
31
////////////////////////////////////////////////////////////////////////////////
32
// LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)
33
 
34
#define LCD_BOOTUP_MS           15
35
#define LCD_ENABLE_US           20
36
#define LCD_WRITEDATA_US        46
37
#define LCD_COMMAND_US          42
38
 
39
#define LCD_SOFT_RESET_MS1      5
40
#define LCD_SOFT_RESET_MS2      1
41
#define LCD_SOFT_RESET_MS3      1
42
#define LCD_SET_4BITMODE_MS     5
43
 
44
#define LCD_CLEAR_DISPLAY_MS    2
45
#define LCD_CURSOR_HOME_MS      2
46
 
47
////////////////////////////////////////////////////////////////////////////////
48
// Zeilendefinitionen des verwendeten LCD
49
// Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
50
// Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
51
 
52
#define LCD_DDADR_LINE1         0x00
53
#define LCD_DDADR_LINE2         0x40
54
#define LCD_DDADR_LINE3         0x10
55
#define LCD_DDADR_LINE4         0x50
56
 
57
////////////////////////////////////////////////////////////////////////////////
58
// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden.
59
void lcd_init( void );
60
 
61
////////////////////////////////////////////////////////////////////////////////
62
// LCD löschen
63
void lcd_clear( void );
64
 
65
////////////////////////////////////////////////////////////////////////////////
66
// Cursor in die 1. Zeile, 0-te Spalte
67
void lcd_home( void );
68
 
69
////////////////////////////////////////////////////////////////////////////////
70
// Cursor an eine beliebige Position 
71
void lcd_setcursor( uint8_t spalte, uint8_t zeile );
72
 
73
////////////////////////////////////////////////////////////////////////////////
74
// Ausgabe eines einzelnen Zeichens an der aktuellen Cursorposition 
75
void lcd_data( uint8_t data );
76
 
77
////////////////////////////////////////////////////////////////////////////////
78
// Ausgabe eines Strings an der aktuellen Cursorposition 
79
void lcd_string( const char *data );
80
 
81
////////////////////////////////////////////////////////////////////////////////
82
// Definition eines benutzerdefinierten Sonderzeichens.
83
// data muss auf ein Array[5] mit den Spaltencodes des zu definierenden Zeichens
84
// zeigen
85
void lcd_generatechar( uint8_t code, const uint8_t *data );
86
 
87
////////////////////////////////////////////////////////////////////////////////
88
// Ausgabe eines Kommandos an das LCD.
89
void lcd_command( uint8_t data );
90
 
91
 
92
////////////////////////////////////////////////////////////////////////////////
93
// LCD Befehle und Argumente.
94
// Zur Verwendung in lcd_command
95
 
96
// Clear Display -------------- 0b00000001
97
#define LCD_CLEAR_DISPLAY       0x01
98
 
99
// Cursor Home ---------------- 0b0000001x
100
#define LCD_CURSOR_HOME         0x02
101
 
102
// Set Entry Mode ------------- 0b000001xx
103
#define LCD_SET_ENTRY           0x04
104
 
105
#define LCD_ENTRY_DECREASE      0x00
106
#define LCD_ENTRY_INCREASE      0x02
107
#define LCD_ENTRY_NOSHIFT       0x00
108
#define LCD_ENTRY_SHIFT         0x01
109
 
110
// Set Display ---------------- 0b00001xxx
111
#define LCD_SET_DISPLAY         0x08
112
 
113
#define LCD_DISPLAY_OFF         0x00
114
#define LCD_DISPLAY_ON          0x04
115
#define LCD_CURSOR_OFF          0x00
116
#define LCD_CURSOR_ON           0x02
117
#define LCD_BLINKING_OFF        0x00
118
#define LCD_BLINKING_ON         0x01
119
 
120
// Set Shift ------------------ 0b0001xxxx
121
#define LCD_SET_SHIFT           0x10
122
 
123
#define LCD_CURSOR_MOVE         0x00
124
#define LCD_DISPLAY_SHIFT       0x08
125
#define LCD_SHIFT_LEFT          0x00
126
#define LCD_SHIFT_RIGHT         0x04
127
 
128
// Set Function --------------- 0b001xxxxx
129
#define LCD_SET_FUNCTION        0x20
130
 
131
#define LCD_FUNCTION_4BIT       0x00
132
#define LCD_FUNCTION_8BIT       0x10
133
#define LCD_FUNCTION_1LINE      0x00
134
#define LCD_FUNCTION_2LINE      0x08
135
#define LCD_FUNCTION_5X7        0x00
136
#define LCD_FUNCTION_5X10       0x04
137
 
138
#define LCD_SOFT_RESET          0x30
139
 
140
// Set CG RAM Address --------- 0b01xxxxxx  (Character Generator RAM)
141
#define LCD_SET_CGADR           0x40
142
 
143
#define LCD_GC_CHAR0            0
144
#define LCD_GC_CHAR1            1
145
#define LCD_GC_CHAR2            2
146
#define LCD_GC_CHAR3            3
147
#define LCD_GC_CHAR4            4
148
#define LCD_GC_CHAR5            5
149
#define LCD_GC_CHAR6            6
150
#define LCD_GC_CHAR7            7
151
 
152
// Set DD RAM Address --------- 0b1xxxxxxx  (Display Data RAM)
153
#define LCD_SET_DDADR           0x80
154
 
155
#endif
#2486057
Lesenswert?

Nun, da ich den rest des codes nicht sehen kann, kann ich leider nicht 
nachvollziehen wie der Mega8 den 44780 in den 4-Bit mode schalten soll - 
denn dass muss er machen.
Ich nutze die LCD-Support Routinen von Peter Fleury. ( $Id: lcd.c,v 
1.14.2.1 2006/01/29 12:16:41 peter Exp $) Die funktionieren im 4-Bit 
Mode bei mir sehr gut.

Mein Init sieht so aus:

      lcd_init ( LCD_DISP_ON );
      lcd_clrscr ();
      lcd_gotoxy ( 0, 0 );
      lcd_puts ( " Antennenkoppler Controller " );

     sprintf(cpa, "  Version 
%d.%d.%d%d",version[0],version[1],version[2],version[3]);

      lcd_gotoxy (0, 2);
      lcd_puts (cpa);



Es ist wichtig dass die richtigen 4 Bit's des I/O-Ports der Displays 
benutzt werden.

Ich finde bei deinem Code nicht die Stelle wo der 4/8 Bit Mode 
initialisiert wird.

init(); <--- ??????????
Sehe mal da rein - ob noch was übergeben werden muss.
Kontrolliere die Anschlüsse des Displays an den ATMEGA8.
Gast #2486152
Lesenswert?

>Das kannst du so nicht sagen!
>
>Man kann ein Steckbrett erkennen, ein LCD und einen Quarz auf der
>Flucht.

Zwei Kerkos und ein Widerstand scheinen auch zu flüchten.

Kommt nur mir das so vor oder hat er die Datenleitungen
zum Teil auf die VCC GND Schiene gelegt?
Gast #2487823
Lesenswert?

Benjamin R. schrieb:
> MartinO schrieb:
>> Die Kontrastspannung geht direkt über einen 10kOhm an VCC.
>
> Ich kenne das eher über nen Widerstand an GND.
>
> Im Datenblatt steht auch
> Supply Voltage For LCD:  VDD-V0 typ: 4.7V
> Nach V0 umstellen müsste dann eher 0,3V als Kontrastspannung angelegt
> werden, also kommt 10kOhm gegen GND eher hin als 10kOhm gegen VCC ;)
>
> Gruß Benny

Ne, dass geht nicht!
Gast #2487997
Lesenswert?

genau solche "Sparmaßnahmen" sind echt mist wenn man das erste Mal mit 
nem LCD spielt. Nimm ein Poti dann kannst du den Kontrast vernünftig 
einstellen bzw. weißt dass es nicht am Kontrast liegt das nix angezeigt 
wird.
Glaub mir ich sprech da aus Erfahrung. Du kannst das Poti ja später 
gegen nen Festwiderstand austauschen wenn alles funktioniert.
Gast #2488112
Lesenswert?

Wechselt die Spannung an PortB? Evtl. mit LED kontrollieren, ob der µC 
überhaupt läuft.


> ich würde gern meinen Atmega8 und mein Display von Pollin zum Laufen
bekommen.

Bei Pollin TC1602E kommen sofort die Alarmglocken:
Beitrag "Vorsicht unübliche Pinbelegung beim LCD TC1602E (Pollin 120420): Pin1=VDD=+5V Pin2=VSS=Gnd"
Du hast ja das TC1602A und es hat schonmal die Balken angezeigt, dann 
ist es richtig gepolt.

Ist Dein Steckbrett zuverlässig? Es genügt eine Unterbrechung, dass es 
nicht läuft. Ich löte lieber. Da weiß man, was man hat (na zu 99%).
#2488135
Lesenswert?

> // LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)

> #define LCD_BOOTUP_MS           15
> #define LCD_ENABLE_US           20
> #define LCD_WRITEDATA_US        46
> #define LCD_COMMAND_US          42

> #define LCD_SOFT_RESET_MS1      5
> #define LCD_SOFT_RESET_MS2      1
> #define LCD_SOFT_RESET_MS3      1
> #define LCD_SET_4BITMODE_MS     5

> #define LCD_CLEAR_DISPLAY_MS    2
> #define LCD_CURSOR_HOME_MS      2

Erhöhe die Wartezeiten testweise und zwar um den Faktor 10 bis 100.
Gast #2489661
Lesenswert?

Hallo,

habe heute nochmal alles verlötet! Nun auch mit Poti.
Leider sehe ich nur die Striche auf meinem LCD. :/

Ebenfalls habe ich mein Prog nochmal angepasst um zu sehen, ob der 
Mikrocontroller überhaupt läuft und habe dazu eine LED über einen 1kOhm 
an VCC gehangen. Leider blinkt die nicht auf.. Auf meinem STK500 funzt 
es.

Hier das Programm:
1
#include <avr/io.h>
2
#include "lcd-routines.h"
3
#include <util/delay.h>
4
 
5
int main(void)
6
{
7
  lcd_init();
8
 
9
  lcd_data( 'T' );
10
  lcd_data( 'e' );
11
  lcd_data( 's' );
12
  lcd_data( 't' );
13
 
14
  lcd_setcursor( 0, 2 );
15
 
16
  lcd_string("Hello World!");
17
 
18
   DDRB=0x01;
19
  while(1)
20
  {
21
    PORTB = 0x01;
22
    _delay_loop_2(100000);
23
    PORTB = 0x00;
24
    _delay_loop_2(100000);
25
  }
26
 
27
  return 0;
28
}
habe die LED an PB0 gehangen!

Ich weiß langsam nicht mehr weiter :?
#2490105
Lesenswert?

Haben die unbeschalteten LCD Pins D0...D3 auch definiert Masse. Man kann 
sie ja gewöhnlich offen lassen aber ich selbst hab sie immer mit GND 
verbunden und es noch nie offen probiert.

Hast du die Wartezeiten erhöht?

>DDRB=0x01;    // LCD_Init Einstellungen werden wieder überschrieben!
Schreib das mal lieber so: DDRB |= 0x01;

Gruß
Benny
#2490115
Lesenswert?

Benjamin R. schrieb:
> Haben die unbeschalteten LCD Pins D0...D3 auch definiert Masse. Man kann
> sie ja gewöhnlich offen lassen aber ich selbst hab sie immer mit GND
> verbunden und es noch nie offen probiert.

Sie offen zu lassen, schadet definitiv nicht.

Sie auf Masse zu legen, geht schief, wenn man versehentlich das LCD dazu 
bewegt, etwas auszugeben - dann ziehen zwei an einer Leitung, einer nach 
GND und einer nach VCC.

Nachdem hier nicht klar ist, was eigentlich passiert, würde ich alles 
tun, aber nicht Leitungen unnötig auf Masse legen.
Gast #2490127
Lesenswert?

Hi

>Haben die unbeschalteten LCD Pins D0...D3 auch definiert Masse. Man kann
>sie ja gewöhnlich offen lassen aber ich selbst hab sie immer mit GND
>verbunden und es noch nie offen probiert.

Dieser Irrglaube hält sich sehr hartnäckig.
Hast du eigentlich schon mal das Datenblatt eines Displaycontrollers 
(z.B. HD44780) gelesen? Die Dinger haben interne Pull-Up-Widerstände . 
Also ist GND für unbenutzte Pins bei Displays der falsche Weg. Entweder 
offen lassen oder externe Pull-Ups.

MfG Spess
#2490137
Lesenswert?

spess53 schrieb:
> Dieser Irrglaube hält sich sehr hartnäckig.
> Hast du eigentlich schon mal das Datenblatt eines Displaycontrollers
> (z.B. HD44780) gelesen?

Ja, allerdings nur die Abschnitte mit den Daten zur Ansteuerung. 
"Meinen" typischen Aufbau habe ich damals auch aus einem Tutorial 1:1 
nachgebaut und ihn seitdem nicht mehr verändert, da es auf Anhieb 
funktioniert hatte.

Aber danke für den Tipp, unnötig Strom verschwenden braucht man ja auch 
nicht. Zukünftig werd ich das berücksichtigen.

Wieder Back2Topic:
Ich möchte nochmal explizit auf die Wartezeit hinweisen, da es bei mir 
in der Vergangenheit öfters ein Fehler war und man ließt auch immer 
wieder das die kompatiblem Kontroller sich nicht 1:1 an das 
Timingverhalten des HD44780 halten.

EDIT:
Wie lange braucht denn ein AVR bis der interne Quarz eingeschwungen ist?
Die LCD_init wird ja sofort aufgerufen. Vielleicht ist das Display nach 
dem Spannungseinschalten noch nicht bereit.
Fügt doch mal vor der Init ein _delay_ms ein.


Gruß
Benny
Gast #2490203
Lesenswert?

Habe die Werte erhöht(um Faktor 10 - 100), aber ohne Erfolg!
1
#define LCD_BOOTUP_MS           150
2
#define LCD_ENABLE_US           200
3
#define LCD_WRITEDATA_US        460
4
#define LCD_COMMAND_US          420
5
 
6
#define LCD_SOFT_RESET_MS1      50
7
#define LCD_SOFT_RESET_MS2      10
8
#define LCD_SOFT_RESET_MS3      10
9
#define LCD_SET_4BITMODE_MS     50
10
 
11
#define LCD_CLEAR_DISPLAY_MS    20
12
#define LCD_CURSOR_HOME_MS      20
Gast #2490222
Lesenswert?

Stimmt das denn jetzt zu 100% mit deiner Verkabelung überein?


MartinO schrieb:
> //  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3               <--- !!!!!!!!!!!
> #define LCD_PORT      PORTD
> #define LCD_DDR       DDRD
> #define LCD_DB        PD0
>
> //  LCD RS      <-->  PORTD Bit PD4     (RS: 1=Data, 0=Command)
> #define LCD_RS        PD4
>
> //  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
> #define LCD_EN        PD5


Falls nicht, frag lieber ruhig - sonst kommen wir nie zum Ziel ;-)
Gast #2490302
Lesenswert?

Hier nochmal die Pinbelegung des Atmega8 mit dem LCD 1602A-09 von 
Pollin!

Pinbelegung Atmega8:

Reset --> via 10kOhm zu VCC
PD0   --> DB4 vom LCD
PD1   --> DB5 vom LCD
PD2   --> DB6 vom LCD
PD3   --> DB7 vom LCD
PD4   --> RS vom LCD
VCC   --> VCC
GND   --> GND
PB6   -->
PB7   -->
PD5   --> E vom LCD
PD6   -->
PD7   -->
PB0   --> via 1kOhm und LED zu VCC

PC5   -->
PC4   -->
PC3   -->
PC2   -->
PC1   -->
PC0   -->
GND   --> GND
AREF  -->
AVCC  --> VCC
PB5   -->
PB4   -->
PB3   -->
PB2   -->
PB1   -->

Pinbelegeung LCD:

Vss   --> GND
Vdd   --> VCC
V0    --> Schleifer 10kOhm Poti(Poti zwischen GND und VCC)
RS    --> PD4 vom AVR
R/W   --> GND
E     --> PD5 vom AVR
DB0   -->
DB1   -->
DB2   -->
DB3   -->
DB4   --> PD0 vom AVR
DB5   --> PD1 vom AVR
DB6   --> PD2 vom AVR
DB7   --> PD3 vom AVR
A     --> via 1kOhm an VCC
K     --> GND

Der AVR läuft auch, da die LED blinkt!
Gast #2490395
Lesenswert?

So, noch mal ein Versuch von mir.
Nimm mal die HEX im Anhang. Wurde für 16MHz compiliert,
also bitte ein wenig warten. Kann etwas dauern bevor was kommt.

Dann kannst du noch mal folgendes tun falls noch nicht geschehen:
BODLEVEL und BODEN Fuse aktivieren.
Den Watchdog abschalten falls aktiviert.

Pass auf das du dir dabei den Resetpin nicht wegfused.

Wenn das alles nichts bringt ist entweder dein
Display hinüber oder etwas nicht richtig angeschlossen.
Also auf Kurzschlüsse oder falsche Verbindungen testen:

Dieses Miniprogramm flashen und messen ob nur ein Pin auf High
ist, und kontrollieren ob es der richtige Pin ist.

void main(void)
{
  DDRD = 0xFF;

 // Jeweils immer nur eine dieser Zeilen aktivieren, flashen
 // und dann messen
 PORTD = 0x01; // DB4

//  PORTD = 0x02; //DB5
//  PORTD = 0x04; //DB6
//  PORTD = 0x08; //DB7
//  PORTD = 0x10; //RS
//  PORTD = 0x20; //E

  while(1)
  {
  }
}
Angehängte Dateien:
Gast #2490458
Lesenswert?

hab deine .hex mal geflasht, aber nix zu sehen.
Nun habe ich alle PINs geprüft und es sah gut aus, immer nur der 
entsprechende PIN auf HIGH.

Nun habe ich das LCD mal an mein STK500 via Flachbandkabel an PORTD 
geklemmt, also das gleiche wie vorher, nur über das STK500.

Nun ist die gestrichelte Linie in der Mitte des Displays.. hm..
Aber mehr hats auch nicht gebracht!

Die Fuses hab ich auch mal gesetzt! - keine Auswirkung!
Gast #2503512
Lesenswert?

Gruß,
irgendwie scheinen deine Timings nicht zu stimmen...
ich habe nur #include <util/delay.h> gesehen...
wenn du mal in der delay.h nachschaust wirst du sehen
"delay.h" wird nur richtig ausgeführt, wenn du optimization 
einschaltest...
also setzt die mal auf level3.

du benutzt doch avr studio oder?
Gast #2503779
Lesenswert?

habe jetzt avr studio nicht da aber unter einstellungen müsste da 
irgendwo compiler und debugger stehen da durchklicken und dann müste ein 
dropdownmenue mit optim kommen standart auf none eingestellt... du 
stellst dann da o3 ein....
Gast #2504543
Lesenswert?

@ Mike, pete

>habe auch einen Atmega8 mit einem LCD 1602. Ebenfalls sind bei mir nur
>alle Pixel beider Zeilen auf 1. Komme da auch irgendwie nicht weiter.

Dein Kontrast stimmt nicht. Den musst du mit einem Poti einstellen.

Häng dich hier bitte nicht dran. Mach einen neuen Thread auf.
Dann beschreibst du wo und wie du das Display angeschlossen hast.
Taktrate des AVR angeben, Schaltplan, Foto vom Aufbau, Code
posten. Dann kann dir geholfen werden.

@MartinO
Für dich seh ich irgendwie schwarz. Da hilft ja gar nix.
Das ist wohl der längste erfolgloseste LCD Thread bisher.
Entweder du machst deine Displays beim ersten einschalten kaputt
oder deine Schaltung ist komplett von Arsch.
Gast #2504574
Lesenswert?

Wieso sollte mein Display kaputt sein ? Habe alle Anschlüsse 1000mal 
geprüft. Diese sind zu 100% richtig verkabelt!

Leider halt wie seitdem ich das neue Display habe alle Pixel auf HIGH.

Irgendwie kann das doch nicht sein! ?
Gast #2504604
Lesenswert?

> Miss mal die Spannung an VO wenn du am Poti drehst.

>0 - 4,87V
>bei 0,47V hat das Display den richtigen Kontrast!

Ach was.

>Dann dreh mal mal am Kontrast.
>Hab ich schon, bringt nix!

Ich verabschiede mich jetzt hier einfach mal für immer.
Gast #2505086
Lesenswert?

MartinO schrieb:
> was sollte das bringen ?
> Ich habs gemacht, aber ohne Erfolg!

habe ich oben schon beschrieben, da du ja offensichtlich delay.h 
benutzt, wird jetzt bei_delayms(200) auch 200ms und nicht 2 oder 1 sec 
gewartet.
ich glaube du machst besser einen neuen threat auf....
oder gib mal deinen kompletten code...
#2505575
Lesenswert?

MartinO schrieb:
> die lcd-routines.h habe ich von AVR-GCC-Tutorial/LCD-Ansteuerung und
> nix dran geändert!!!

Wenn Du nichts geändert hast, sollten die LCD-Anschlüsse auch so 
verdrahtet werden wie es in lcd-routines.h (bzw. in der Liste darüber: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung#Anschluss_an_den_Controller) 
angegeben ist.

Wenn der Schaltplan noch so ist:
MartinO schrieb:
> Schaltplan habe ich angehangen.
dann sehe ich bei allen Anschlüssen, die zum ATmega8 gehen, 
Unterschiede!
Woher hast Du Deine Beschaltung?

Gruß Dietrich

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