Loading...
Pages: [1]   Go Down
Author Topic: LCD mit Schieberegister funktioniert nicht richtig  (Read 278 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

Ich habe da so ein Problem mit meinem neuen LCD (16x2 Zeichen).
Das ganze läuft über den Schaltplan: http://code.google.com/p/arduinoshiftreglcd/#Bill%27s_version

Das hat mit einem anderen LCD und einer anderen Platine auch geklappt.

Jetzt habe ich hier ein etwas merkwürdiges Bild. Der Cursor funktioniert, das was geschrieben werden soll teilweise:
Wenn ich bspw. Hello World ausgebe kommt HVloWπl raus. Mir ist aufgefallen, dass jedes zweite Zeichen auf dem LCD jedem 3. Zeichen des Ausgabetextes entspricht: Hello World HVloWπl

Habt ihr vielleicht eine Idee, woran das liegen könnte?

Viele Grüße,
Alex
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In der Zwischenzeit habe ich mal mein altes Display für meine neue Platine fertig gemacht und das funktioniert!

D.h. es liegt am Display. Das neue Display habe ich bei einem Wettbewerb geschenkt bekommen und deshalb kann ich keine genaue Angaben darüber machen. Bin mir aber ziemlich sicher, dass es das ist: http://www.datavision.com.tw/en/lcm_01_1.php?P_Id=6

Hinten sind noch 2 relativ große Chips drauf. Auf dem einen steht 1J3 HD44780A00. Also ist es auf jeden Fall der richtige Zeichensatz.

Gruß, Alex
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 69
Posts: 3310
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kannst Du den Sketch posten, mit dem Du das Display ansprichst?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ist einfach nur ein Standardsketch. Hab ihn schon wieder verworfen, aber ich kann ja kurz einen neuen schreiben:

Code:
#include <LiquidCrystal_SR2W.h>

LiquidCrystal_SR2W lcd(11, 12);   //Schema der Pinbelegung: Data, Clock

void setup(){
  pinMode(10, OUTPUT);              // Hintergrundbeleuchtung
  digitalWrite(10, HIGH);
  lcd.begin(16,2);
  lcd.home();
  lcd.print("Hello World");
}

void loop(){
}

Es kann wie gesagt auch nur noch an dem neuen Display liegen... Vielleicht tatsächlich ein anderer Zeichensatz? Kann ich mir nicht vorstellen, weil das erste Zeichen immer richtig erkannt wird.

Gruß, Alex

Edit: Hier noch ein paar Bilder. Also ich empfehle jedem so eine kleine Platine zu basteln mit einem Schieberegister. Das erspart viel Kabelwirrwar smiley
« Last Edit: March 20, 2013, 01:46:07 pm by Ixal » Logged

Germany
Offline Offline
Edison Member
*
Karma: 27
Posts: 1508
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ob das Display "richtig kaputt" ist, oder ob es evtl an Timing Problemen mit deiner Schieberegister-Platine liegt, kannst du ja leicht mit der Standard LiquidCrystal Library und einem direkten Anschluss des Displays probieren.

Kann man in LiquidCrystal_SR2W die Taktgeschwindigkeit einstellen ?
Logged

Germany S-H
Offline Offline
God Member
*****
Karma: 29
Posts: 796
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Habt ihr vielleicht eine Idee, woran das liegen könnte?

Eventuell irgendwo Lötbrücken mit Kurzschluß zwischen den LCD-Anschlüssen?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Eventuell irgendwo Lötbrücken mit Kurzschluß zwischen den LCD-Anschlüssen?

Nein, alles sorgfältig verlötet, aber danke für den Hinweis smiley-wink

Ob das Display "richtig kaputt" ist, oder ob es evtl an Timing Problemen mit deiner Schieberegister-Platine liegt, kannst du ja leicht mit der Standard LiquidCrystal Library und einem direkten Anschluss des Displays probieren.

Kann man in LiquidCrystal_SR2W die Taktgeschwindigkeit einstellen ?

Das ist der entscheidene Punkt! Vielen Dank für den Hinweis. Habe jetzt einmal alle Buchstaben einzeln hintereinander ausgeben lassen mit einem sehr kleinem delay dazwischen und dann funktioniert es.
Ich konnte etwa bis 20 MIKROsekunden runtergehen. Also dem fehlt wirklich nur so ein ganz kleines bisschen die Zeit.
Leider kann man das nicht der Lib via Variable beibringen. Ich hab grad mal in den C-Code geguckt und hab die betreffende Stelle gefunden. Ich denke, dass ich dem dort einfach ein paar Mikrosekunden mehr Zeit geben werde.

Gruß,
Alex
Logged

Pages: [1]   Go Up
Print
 
Jump to: