4x40 LCD Library

OP #951280
Lesenswert?
• ▲
▼
Hallo zusammen,

ich bin relativ neu in der Szene (hab mir vor kurzem ein STK500 
gekauft).

Mein Problem ist das ich ein 4x40 LCD ansteuern möchte.

Beide Enable PINs sind angeschlossen und funktionieren auch "fast".
Benutz dazu die Library von P.Fleurys.
Da die aber keine zwei Controller ansteuern kann, hab ich ein bisschen 
im Code herumgepfuscht... das will aber nicht so richtig (und ist auch 
ziemlich Quick&Dirty ;-) ) kann zwar beide Controller ansteuern... 
bekomme aber hin und wieder nach einem Reset/Power off/on  komischen 
Datenmüll auf dem 2. Controller ;-)

Gibt es vielleicht schon vorgefertigte LCD librarys die 4x40 LCDs 
beherschen? oder vielleicht eine angepasst lcdlibrary version?

Benutz Avr-Studio sowie den avr-gcc Compiler

Danke.

Grüße,
Frank
Gast #951297
Lesenswert?
• ▲
▼
>Da die aber keine zwei Controller ansteuern kann, hab ich ein bisschen
>im Code herumgepfuscht... das will aber nicht so richtig (und ist auch
>ziemlich Quick&Dirty ;-)

Na dann würde ich doch mal alles sauber aufsetzen, und dann klappt es 
auch...
#951311
Lesenswert?
• ▲
▼
Hallo Frank.
Ich muss Dennis recht geben.
Nimms erstmal auseinander und schreib es neu.
Hat den vorteil das mehr oder weniger genau weißt was du machst.
Tipp.
Falls du das nicht eh schon gemacht hast dann kontrolliere nochmal alle 
Steuerbefehle.Da gibt es gerne mal Unterschiede.Also muss das richtige 
Datenblatt her.
Wegen dem Verhalten beim Reset, es könnte an der Initialisierung liegen
Viel Erfolg.
OP #951463
Lesenswert?
• ▲
▼
Hi,

also im Code selbst "switch" ich einfach zwischen den beiden 
Controllern.

Da ja alles Parallel angeschlossen ist ( außer die beiden Enable Pins E1 
und E2 ) sollte das doch eigentlich möglich sein?


Habe jeweils die funktionen die die Enable pins high/low setzen 
angepasst:
1
void setController(uint8_t controller) {
2

3
use_controller = controller;
4

5
}
6

7

8
void lcd_e_high() {
9

10
   if (use_controller == 1) {
11
      LCD_E1_PORT  |=  _BV(LCD_E1_PIN);
12
   } else if (use_controller == 2) {
13
      LCD_E2_PORT  |=  _BV(LCD_E2_PIN);
14
   }
15

16
}
17

18

19
void lcd_e_low() {
20

21
   if (use_controller == 1) {
22
      LCD_E1_PORT  &= ~_BV(LCD_E1_PIN);
23
   } else if (use_controller == 2) {
24
      LCD_E2_PORT  &= ~_BV(LCD_E2_PIN);
25
   }
26

27
}


Und logischerweise Initialisiere ich dann beide Controller, und schreib 
auf beiden das gleiche:

1
  setController(1);
2
        lcd_init(LCD_DISP_ON);
3
  lcd_clrscr();
4

5

6

7
  setController(2);
8
        lcd_init(LCD_DISP_ON);
9
  lcd_clrscr();
10

11
setController(1);
12
lcd_gotoxy(0,1);
13
lcd_puts("blabla");
14

15

16
setController(2);
17
lcd_gotoxy(0,1);
18
lcd_puts("blabla");


Manchmal kommt Datenmüll ( eher wenn ich dem Strom ganz weg nimm und 
wieder gib ) manchmal nicht.
Hat wohl irgendwas mit den Timings zu tun. Ein Delay zwischen dem 
Controller wechseln bringt irgendwie auch nix :-(

Bin mit meinem unprofessionellen C Kentnissen eigentlich am Ende.
Einer vielleicht noch ne Idee wo ich ansetzen könnt?


Grüsse,
Frank

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.