mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pollin Evaluation Addon-board v1.0 LCD Ansteuerung mit Arduino Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jojo1220 (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,
was gibt es schöneres im Zeiten der Ausgangssperre sich mit 
Mikrokontroller zu beschäftigen :D

Nur problematisch ist, wenn das Ding einfach nicht das macht was es 
machen soll...

Ich habe mir das Addon Board von Pollin angeschafft für mein 
Evaluationboard und möchte das LCD Display zum laufen bringen.
Ich bin schon durch geschätzte 100000 Foreneinträge gescrollt, hab 
verschiedene Libarys ausprobiert, verschiedene Ports und und und....

Als ich dann gemerkt habe, dass ich mit dem Originalen Pollin 
Evaluationboard nicht wirklich weiter komme bin ich jetzt auf einen 
Arduino UNO umgestiegen, hab das ganze verkabelt und wollte dies jetzt 
nochmal versuchen, aber auch da scheitere ich!
Das Display zeigt mir immer den schwarzen Balken an, ganz egal was ich 
mache.
Beim verwendeten Display handelt es sich um das Original Display von 
Pollin (LCD TC1602E-01) die Pinbelegung habe ich dem nachstehenden 
Programmbeispiel entsprechend angeschlossen.
Auch ein vertauschen der Datenleitungen, rs/en Pins, die verbleibenden 
Datenbits (DB0-DB3) auf Masse hängen bringt hier absolut nichts.

Hat jemand noch eine Idee was ich hier noch machen könnte bevor ich das 
display rausfetze und im hohen Bogen vom Balkon schmeiße?
#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // Turn off the display:
  lcd.noDisplay();
  delay(500);
  // Turn on the display:
  lcd.display();
  delay(500);
}

mfg,
Jojo

von A. B. (Firma: uc++) (mitschreiberin)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schema beachten !
Alle erforderlichen Verbindungen herstellen !

Zu beachten:
***********
Die Port-Verbinder auf dem Pollin-Addon-Board sind mit PX1..PX8 
beschriftet. Bei Atmel-Datenblättern ist PX0..PX7 üblich.

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Bewertung
0 lesenswert
nicht lesenswert
> was gibt es schöneres im Zeiten der Ausgangssperre


Achtung! Wir haben keine Ausgangssperre, da hast Du wohl etwas falsch 
verstanden. Wir sind im Bereich von "Beschränkungen".

> lcd.print("hello, world!");
Deine Ausgabe aus der Arduino-Welt darf jedenfalls nicht schneller 
erfolgen, als es das Display verschaffen kann. In seinem Dabla stehen 
die Grenzen zum Nachlesen. Wurde die Initialisierung korrekt 
durchgeführt?

Du kannst auch mal vom Programm aus bei ausgestecktem Display testen, ob 
das Programm jeden Pin an der erwarteten stelle ansteuert, z.B. durch 
Toggeln des Pins.

mfG

von Thomas W. (diddl)


Bewertung
0 lesenswert
nicht lesenswert
Schwarzer Balken heißt gar nichts.

Möglicherweise funktioniert alles korrekt.
Es kann einfach die Kontrasteinstellung sein.

Du hast sicher irgendwo ein Potentiometer für den Display Kontrast.

Benutze das mal ...

von A. B. (Firma: uc++) (mitschreiberin)


Bewertung
0 lesenswert
nicht lesenswert
Auf dem Pin-Header LCD_Fixed sind alle Brücken gesteckt.
HD44780 kompatible LCD's kann man auch im 4Bit-Mode ansteuern mit
RS,RW,EN,DB4,DB5,DB6,DB7

Mode kontrollieren und Einspeisung an J4 kontrollieren

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Thomas W. schrieb:
> Schwarzer Balken heißt gar nichts.
> Möglicherweise funktioniert alles korrekt.
> Es kann einfach die Kontrasteinstellung sein.

Nein, das gezeigte Bild ist typisch für ein Display, welches nocht nicht 
initialisiert wurde.

Das heißt auch: Das eigentliche Problem liegt vor printf() bei 
lcd.begin() oder in der Hardware.

Man könnte zur Probe mal den Clock Prescaler (Register CLKPR) benutzen, 
damit der µC schön langsam läuft. Wenn es dann geht, ist es wirklich nur 
eine simple Frage des Timings.

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Bewertung
0 lesenswert
nicht lesenswert
Stelle sicher, dass die Initialisierung im 4-Bit-Modus geschieht.


MfG

von diensthabender quotendepp (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christian S. schrieb:
>> was gibt es schöneres im Zeiten der Ausgangssperre
>
> Achtung! Wir haben keine Ausgangssperre, da hast Du wohl etwas falsch
> verstanden. Wir sind im Bereich von "Beschränkungen".

ach wie gut, dass die welt nur aus deutschland besteht...

von Jojo1220 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
erstmal vielen Dank für eure Beiträge.
Die sind wirklich sehr Hilfreich und ich bin sehr erfreut darüber, dass 
ich nicht gleich wieder auf irgendein Forum verwiesen werde wo das schon 
Behandelt wurde :D

@  A. B. (Firma: uc++):
Auch wenn ich mir mit diesem Schema etwas schwer tue, was du gepostet 
hast und welches dem Artikel mitgeliefert wurde, gehe ich schon davon 
aus, dass ich dies Richtig verdrahtet habe. Ich gehe von J4 vom LCD 
kommend auf den den Arduino. Damit das funktionieren kann, habe ich an 
der Stifleitste "LCD" alle Jumper gesetzt! Auch ein durchpiepsen auf 
mein Pollin Evaluation Board mit ATMEGA1284p Chip darauf hat mir 
bestätigt dass ich die die Jumper stecken muss!

Christian S. schrieb:
> Du kannst auch mal vom Programm aus bei ausgestecktem Display testen, ob
> das Programm jeden Pin an der erwarteten stelle ansteuert, z.B. durch
> Toggeln des Pins.
Das ist ein guter HInweise! Das werde ich mal probieren!
Naja, zum Thema schneller, das könnte ich mir durchaus vorstellen, dass 
das Möglich ist, da sonst keinerlei Code auf den Arduino läuft! Ich 
werde da mal ein Delay vorschalten und nochmal probieren!

Thomas W. schrieb:
> Möglicherweise funktioniert alles korrekt.
> Es kann einfach die Kontrasteinstellung sein.
Danke für den Tipp :D Wenn es das gewesen wäre, würde ich jetzt schon 
meinen Schulaufsatz auf dem Display ausgeben...

Christian S. schrieb:
> die Initialisierung im 4-Bit-Modus
Da tue ich mir etwas schwer, zum einen ist im Datenblatt nichts über 
eine Initialisierung vorhanden. Es steht da nur was vom 
"Industriestandard"...
Hat hier jemand eventuell ein Datenblatt oder eine Init sequence für ein 
TC1620E-01 welches funktioniert?
Aber dass könnte schon eine tatsächliche Fehlerquelle sein, dass sich 
dieses Display vom Timing her anderst verhält als es sonstige Displays 
tun, denn mit der Arduino Lösung --> Kein Erfolg; mit den Libarys von 
microctontroller.net --> Kein Erfolg; Mit Peter Fleury Lösung --> Kein 
Erfolg..

Mfg Jojo

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas W. schrieb:

> Schwarzer Balken heißt gar nichts.

Natürlich heißt das was, nämlich: die Initialisierung des Displays ist 
gescheitert. Also wiring oder timing stimmt nicht.

> Es kann einfach die Kontrasteinstellung sein.

Nein, wenn es daran läge, dann gäbe es bei einem zweizeiligen Display 
natürlich ZWEI schwarze Balken (oder halt garnichts) zu sehen.

Genau, um auf derart einfache Weise diese beiden Fehlermöglichkeiten 
unterscheiden zu können, gibt's diesen default für die Zeit vor einer 
gelungenen Initialisierung beim HD44780.

von A. B. (Firma: uc++) (mitschreiberin)


Bewertung
0 lesenswert
nicht lesenswert
Ich mache nix mit Arduino aber vielleicht hilft ja dieser Link:

https://www.makerguides.com/character-lcd-arduino-tutorial/

Auf dem Pin-Header [LCD - free config by wires] sind alle Datenleitungen 
zum LCD verfügbar.

Schema:
******
https://www.mikrocontroller.net/attachment/450137/Pollin-Addon_LCD.PNG

von Karl B. (gustav)


Bewertung
0 lesenswert
nicht lesenswert
Jojo1220 schrieb:
> Als ich dann gemerkt habe, dass ich mit dem Originalen Pollin
> Evaluationboard nicht wirklich weiter komme bin ich jetzt auf einen
> Arduino UNO umgestiegen,

Hi,
warum funktionierte es mit dem Pollin EVA board nicht. Bevor Du die 
Ursache nicht aufgespürt hast, kann es jetzt mit dem Arduino auch nicht 
unbedingt besser gehen. Was durchaus möglich ist, und das war bei meinem 
STK500 Board so, Haarriss in der Platine.
Der erste Schritt wäre also, sämtliche Leiterbahnen, Kontaktierungen 
etc. pp. nachprüfen. Dann die Verbindungen zum Display.
Dass + und - vertauscht sind, kann man ja schon einmal ausschließen, da 
ja Balken erscheinen. Und wenn sich was am Kontrast verändern lässt, 
dann ist das Pinout dafür auch richtig. Auf dem Foto sehe ich keine 
guten Verbindungen von den Ports. Das HD44780 muss im Vierbitmodus mit 
D4 bis D7 angesteuert werden. Das will der Controller so.
D0 bis D3 bleiben erst einmal frei. Auch nicht jumpern an GND. Ich sehe 
da jede Menge Jumper. Was soll das?

Dann sehen wir weiter.

ciao
gustav

von c-hater (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Karl B. schrieb:

> Das HD44780 muss im Vierbitmodus mit
> D4 bis D7 angesteuert werden. Das will der Controller so.

Welcher Controller will das so? Der HD44780 jedenfalls nicht, der kann 
natürlich auch 8Bit. Genau deswegen existieren D0..D7, weil eben beides 
geht.

Welche Variante tatsächlich verwendet werden soll, wird eben im Zuge der 
Initialisierung festgelegt (neben einigen anderen Sachen).
Diese Sequenz (und auch die HD44780-Hardware) ist natürlich so 
gestrickt, dass sie auch funktioniert, wenn D0..D3 überhaupt nicht 
angeschlossen sind.

Tatsache ist aber, dass der initiale Zustand des HD44780 der 8Bit-Modus 
ist. Erst im Zuge der Initialisierung wechselt man tatsächlich auf den 
4Bit-Modus (wenn man ihn denn haben will).

von Karl B. (gustav)


Bewertung
0 lesenswert
nicht lesenswert
Jojo1220 schrieb:
> LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Das setzte ich voraus.
Wenn 4 Bit dann erwartet Controller immer in der Reihenfolge zuerst D4 
bis D7 und dann gefolgt von D0 bis D3. Mit jeweils einem Enableimpuls.
So war das zu verstehen.
Hätte aber auch als Fehlerquelle ein abweichendes Pinout annehmen 
können.
Je nachdem wie in Initsequenz "geswappt" wird, gibt es da noch 
Fehlerquellen.

c-hater schrieb:
> Tatsache ist aber, dass der initiale Zustand des HD44780 der 8Bit-Modus
> ist. Erst im Zuge der Initialisierung wechselt man tatsächlich auf den
> 4Bit-Modus (wenn man ihn denn haben will).

Das Display macht einen POS und der funktioniert nur, wenn
1) Versorgungsspannung nicht zu langsam ansteigt.
(Ergo: zu dicke Elkos direkt vor dem LCD vermeiden.)

2) Immer 8 Bit Busbreite, und Display schaltet Anzeige ab.
Also Wiedererwecken notwendig.

Zitat:
"...
Initializing by Internal Reset Circuit
An internal reset circuit automatically initializes the HD44780U when 
the power is turned on. The
following instructions are executed during the initialization. The busy 
flag (BF) is kept in the busy state
until the initialization ends (BF = 1). The busy state lasts for 10 ms 
after VCC rises to 4.5 V.
1. Display clear
2. Function set:
DL = 1; 8-bit interface data
N = 0; 1-line display
F = 0; 5 ´ 8 dot character font
3. Display on/off control:
D = 0; Display off
C = 0; Cursor off
B = 0; Blinking off
4. Entry mode set:
I/D = 1; Increment by 1
S = 0; No shift
Note: If the electrical characteristics conditions listed under the 
table Power Supply Conditions Using Internal Reset Circuit are not met, 
the internal reset circuit will not operate normally and will fail to
initialize the HD44780U. For such a case, initial-ization must be 
performed by the MPU..."
/Zitat

ciao
gustav

D = 0; Display off
Fehlt folgender oder ähnlicher String in der µC-Initialisierungsroutine, 
wird Pufferinhalt nicht auf Anzeige durchgereicht. Leider nur ASM :-(
Ist zwar alles da, man sieht nur nichts.
lcd_entrymode:  ;Entry/Shift Mode Set:
ldi  temp, 0x0C    ;Anzeige wieder einschalten

: Bearbeitet durch User
von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Karl B. schrieb:

> Das Display macht einen POS und der funktioniert nur, wenn
> 1) Versorgungsspannung nicht zu langsam ansteigt.
> (Ergo: zu dicke Elkos direkt vor dem LCD vermeiden.)
>
> 2) Immer 8 Bit Busbreite, und Display schaltet Anzeige ab.
> Also Wiedererwecken notwendig.

Falsch. Du unterschätzt massiv die Intelligenz der HD44780-Entwickler. 
Die haben die Sache wirklich unter allen Aspekten durchdacht.

Die Standard-Initsequenz ist nämlich so gestrickt, dass sie auch dann 
funktioniert, wenn das Display bereits im 4Bit-Modus ist (also z.B. 
einen Reset nicht mitbekommen hat).

Probleme kriegen immer nur die, die vom Standard abweichen...

Das allerdings hat sich im Laufe der Jahre rumgesprochen, was dazu 
führte, dass die Hardware fast niemals das Problem ist, auch wenn es 
sich nur um "kompatible" Controller handelt und nicht um das Original.

Allerdings ist ein Haufen Vollschrott an Software im Umlauf, deren 
Programmierer das nicht begriffen haben. Sprich: wenn man will, dass es 
funktioniert, schreibt man's entweder gleich selber oder schafft die 
Eigenkompetenz, um die C&P'te Lib daraufhin zu überprüfen, ob sie was 
taugt...

Ich persönlich ziehe es vor, den Kram gleich selber zu schreiben (bzw. 
hab' das im Falle von HD44780 vor vielen Jahren getan).

von Karl B. (gustav)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Ich persönlich ziehe es vor, den Kram gleich selber zu schreiben (bzw.
> hab' das im Falle von HD44780 vor vielen Jahren getan).

Hi,
Also, Display wird das allererstemal an Versorgungsspannung angelegt:
Im Daba steht:
DL = 1; 8-bit interface data
und das ist kein Vierbit-Modus.

Wie kommst Du darauf, dass beim ersten Einschalten der 
Versorgungsspannung (+5V Vcc meistens) automatisch auf Vierbit-Modus 
gesprungen wird?

Die Standard-Init-Sequenzen in der Software nach Abwarten des Power on 
Self Resets können durchaus abweichen. Da gebe ich Dir Recht.

Die Angaben im Datenblatt sind Deiner Meinung nach wie zu 
interpretieren?
Ich sehe da "no display", bevor nicht irgendetwas an Befehlen bezüglich 
der Operationsweise noch nachgeschoben worden ist.

ciao
gustav

: Bearbeitet durch User
von der nixwois (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@von Jojo1220
Datenblatt vom deinem LCD-Display bitte!

von Hubert G. (hubertg)


Bewertung
0 lesenswert
nicht lesenswert
Also bevor du dein Display wegschmeisst, schau dir mal den Plan des 
Boards an. Du hast die Leitungen vom Uno auf J4 gesteckt. Du hast von 
dort aber keine Verbindung zum LCD-Port. Einfach mal durchklingeln wenn 
du es nicht glaubst. Wenn du die Leitungen vom Uno direkt zum LCD-Port 
steckst, wird es auf Anhieb funktionieren.
Der UNO Sketch funktioniert richtig gesteckt sofort.

Das mit der Verbindung von J4 zum LCD-Port muss ich zurücknehmen, hatte 
da die Brücken nur einseitig gesteckt.
Die Leitungen von J4 zum LCD solltest du trotzdem durchklingeln, denn 
das das Display defekt ist, glaube ich nicht ganz.

: Bearbeitet durch User
von Karl B. (gustav)


Bewertung
0 lesenswert
nicht lesenswert
Karl B. schrieb:
> Der erste Schritt wäre also, sämtliche Leiterbahnen, Kontaktierungen
> etc. pp. nachprüfen.

Jojo1220 schrieb:
> Hat hier jemand eventuell ein Datenblatt oder eine Init sequence für ein
> TC1620E-01 welches funktioniert?

Hi,
Merke:
Die Befehlslisten spiegeln nicht die Reihenfolge, die Abfolge der 
Initialisierungssequenzen wieder.
Das wird immer 'mal wieder verwechselt.
Die sind nach aufsteigender "Wertigkeit" gegliedert. Immer ein Bit mehr 
nach links.
Initialisierung braucht andere und Extra-Reihenfolge.
Also:
Grobe Einteilung:
Erst einbmal Pinout/Port dokumentieren:
LCD 2x16, Vierbitmodus
; Vcc +5V
; PortB LCD Ausgabe:
; R/W=GND
; PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
; n/a LED ena rs  D7  D6  D5  D4
kann abweichen, ist für die tatsächlich verwendete "Swap"-Sequenz dann 
wichtig.
LED steht hier für Hintergrundbeleuchtung ein/aus. Kann leer bleiben.

Die µC-Initialisierungsprogrammsequenz könnte (in ASM) so aussehen.
(Die wait-Zeitschleifen werden als bekannt vorausgesetzt.)

rcall wait    ; LCD Power On Self Reset abwarten
push temp    ; Sicherung Temporaer- und
push temp1    ; Statusregister auf Stapel
in temp1,SREG
push temp1
rcall lcd_reset    ; LCD-Bus-Reset, 3 x $03 (Portbelegung!)
rcall lcd_achtbit  ; LCD-Init: acht Bit
rcall lcd_acht_vier  ; LCD-Init: acht zu vier Bit
rcall lcd_vier_zwei  ; LCD-Init: vier Bit, zwei Zeilen
rcall lcd_on_off  ; LCD-Init: Displaypuffer aus
rcall lcd_clear    ; LCD-Init: Anzeige löschen
rcall lcd_entrymode  ; LCD-Init: Entry Mode Set
pop temp1    ; Wiederherstellung Temporaer-
out SREG,temp1    ; und Statusregister
pop temp1
pop temp
ret

Wer will, kann es so machen. Leider nur ASM -:(
Dass es auch anders geht, braucht nicht extra betont zu werden.

ciao
gustav

: Bearbeitet durch User
von der nixwois (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@von Jojo1220

Anbei zwei Dateien und damit ein neues Projekt mit deinem Controller 
erzeugen.

Das hier entsprechend deinem Quarz anpassen sonst stimmt das Timing 
nicht.
#define F_CPU 16000000UL    // Verwendeter Quarz

Eventuell die Optimierung auf -OS einstellen.

Verwendeter Port frei wählbar.
Hier wird der PORTB verwendet.

In der LCD-Defintion.h
#define LCD_PORT       PORTB
#define LCD_DDR         DDRB
#define LCD_PIN          PINB

Wichtig ist, das die Verbindungen vom LCD - Display DB4 - DB7 ( 11 - 14 
)
am Port des Controllers am gewählten Port z.b. PORTD   an den Pins PD3- 
PD6 werden.

von der nixwois (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gerade aufgefallen!

Bitte folgende zeile änder in Definition.h
#define Zeilen_Offset1  0x20    // 20h EADIP204-4 ; 0x14 HD44780

Die 0x20 in 0x14 ändern bitte!

von Hubert G. (hubertg)


Bewertung
0 lesenswert
nicht lesenswert
Am Programm liegt es sicher nicht. Das Arduino Prog hat bei mir auf 
Anhieb funktioniert.

von der nixwois (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nochwas LCD_Short_ini(LCD_Function + LCD_SetRE + LCD_2Line );

LCD_SetRE  entferfnen da du KS0073 hast.

Sorry!

Ich hoffe es funktioniert.

von der nixwois (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Am Programm liegt es sicher nicht. Das Arduino Prog hat bei mir
> auf
> Anhieb funktioniert.

Also ich hoffe auch der TO hat sein Display richtig angeschlossen
 und hat es nicht ausversehen getötet.

Ich hoffer der TO kann ein bischen Nachvolziehen
was alles erledigt werden muss damit so ein Display funktioniert.

von Jojo1220 (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Neuer Tag - naja nicht umbedingt neues Glück...

der nixwois schrieb:
> Anbei zwei Dateien und damit ein neues Projekt mit deinem Controller
> erzeugen.

Danke dir vielmals, habe das auch gleich mal versucht in die Tat 
umzusetzen mit nem ATMEGA1284P und komplett neuer Verdrahtung (siehe 
angehängtes Bild). Die Datenpins D0-D3 liegen jetzt erstmal frei --> 
Jumper entfernt! Die Änderungen habe ich vorgenommen wie du sie mir 
geschildert hast.
Hab das ganze auch nochmal mit dem Fluke durchgepiepst un dkann 
versichern dass der Kontrast 100x hoch und runter geschraubt wurde...
Am Pin 5 und Pin 6 des PortD sind die 2 LED's (LED 1 und LED 2) mittels 
Jumper am ATMEL Evaluationboard angeschlossen. Ich kann daran erkennen, 
dass definitiv etwas passiert und sie flackern kurzzeitig auf, also der 
Chip hängt sich nicht irgendwo auf.

Ein Austauschen der Datenleitungen von DB3-DB7 auf DB7-DB3 hat keinen 
ERfolg gebracht.

Ich bin auch dem nachgegangen indem ich mal die Clkdiv fuse 
ein/ausschalte, keine veränderung...

Im Anhang hab ich nochmal die Datenblätter angefügt, diese sagen mir 
aber aber im übertragenden Sinne nichts aus, ob es sich beim angenommen 
LCD Controller überhaupt um einen HD44780 handelt.


Mfg,
Jojo

von A. B. (Firma: uc++) (mitschreiberin)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das LCD von Pollin ist zu 99.9% kompatibel mit HD44780

Ich habe aber den Eindruck, dass du die Belegung der Pin-Header J4 nicht 
nicht richtig verstanden hast. Mit einem 40Pin Flachbandkabel lassen 
sich J4-EVAL und J4-ADDON verbinden - muss aber nicht sein.

Die Signale für die LCD könntest du auch direkt einspeisen - ohne 
J4-ADDON: siehe Bild.

Die Brücken auf J4-EVAL machen für mich keinen Sinn.

Schema für EVAL ist beigefügt. Da musst du dich einarbeiten - sonst wird 
das nix. Nicht jeder ATmega hat alle Ports.

Ein Blink-Led wäre sinnvoll, zeigt dass uC arbeitet.

Damit das einfacher und konkreter wird, wäre das oben verlinkte 
Arduino-Tutorial ein Weg. Dort sind die Signale gut dokumentiert und die 
Software sollte zur Hardware passen ...

: Bearbeitet durch User
von der nixwois (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
von Jojo1220

Hallo!

Ich habe nochmal die Dateien überarbeitet und es an einem
LCD Display mit 16x2 Zeichen getestet.

Wenn du die Verdrahtung richtig und den Port
LCD_Defintion.h geändert hast.

Sollte als Ergebnis wie die Demo.gif Zeigt zu sehen sein.

von Karl B. (gustav)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jojo1220 schrieb:
> Im Anhang hab ich nochmal die Datenblätter angefügt, diese sagen mir
> aber aber im übertragenden Sinne nichts aus, ob es sich beim angenommen
> LCD Controller überhaupt um einen HD44780 handelt.

Hi,
definitiv HD44780 kompatibel.
Bei mir läuft's. (Die tatsächlich hier verwendete Initialisierung im 
Dateianhang. Kann noch verbessert werden, das steht außer Frage. Einige 
Strings sind völlig unnötig. Es ging aber darum, was tatsächlich in der 
Praxis verwendet wird und ob es dann damit funktioniert.)
Wenn es nicht anders geht,
bau das LCD aus und betreibe es solo. Irgendetwas an Deiner Verdrahtung 
ist da faul.

ciao
gustav

P.S.: Fehlt noch:
;Variablendefinitionen:
.equ daten = portb

: Bearbeitet durch User
von der nixwois (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Jojo1220

Im Anhang ein PDF!

So sollte die Verdrahtung Arduino UNO und deinem ADD ON Board aussehen!

Damit sollte es eigentlich klappen!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.