LCD Problem

Gast #182497
Lesenswert?
• ▲
▼
Hi Leute

sorry das ich nun schon wieder mit dem lcd anfange, aber ich bekomm es
einfach nicht hin.

Ausgangssituation:
ATMEL STK 500
AT MEGA 32
44780 Kompatiebles LCD

Pinbelegung:

PortB stk500        44780 LCD Controller

     PB4 ------------- PIN4  (RS)
     PB6 ------------- PIN5  (R/W)
     PB5 ------------- PIN6  (E)
     NC  ------------- PIN7  (DB0)
     NC  ------------- PIN8  (DB1)
     NC  ------------- PIN9  (DB2)
     NC  ------------- PIN10 (DB3)
     PB0 ------------- PIN11 (DB4)
     PB1 ------------- PIN12 (DB5)
     PB2 ------------- PIN13 (DB6)
     PB3 ------------- PIN14 (DB6)

das LCD soll im 4 Bit Modus betrieben werden
der Compiler compiliert alles schön keine Probleme wenn ich auf
programm gehe, flackert das lcd kurz auf, aber sonst passiert nix.

ich habe in der lcd.h den atmega 32 folgender maßen ergänzt:

#elif defined(_AVR_AT90S4414_) || defined(_AVR_AT90S8515_) ||
defined(_AVR_ATmega64_) || \
      defined(_AVR_ATmega8515_)|| defined(_AVR_ATmega103_) ||
defined(_AVR_ATmega128_) || \
      defined(_AVR_ATmega161_) || defined(_AVR_ATmega162_) ||
defined(_AVR_ATmega32_)

das ist doch inordnung oder ?

mein PIN Definitionen in der lcd.h sehen so aus:

#define LCD_PORT         PORTB       /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    4            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    5            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    6            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    7            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       0           /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       1            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        2            /**< pin  for Enable line     */

ist das richtig ?

was habe ich falsch gemacht ?
habe mehr mals Beispiele aus dem Forum ausprobiert und weiß absolut
nicht mehr weiter.
Gast #182498
Lesenswert?
• ▲
▼
Kein Busy?  Großer Fehler.  Dann musst du exorbitant lange warten
(viel länger als normalerweise nötig) um sicher zu gehen, dass du
auch wirklich das nächste Kommando rausschicken darfst.
Gast #182500
Lesenswert?
• ▲
▼
@Gizmo

Du musst nicht einfach ATmega32 irgendwo in lcd.h einflicken.
Für was diese #elif Abfrage ist, steht im Kommentar drunter.

Die LCD_xxx_PIN nummern müssen natürlich mit den effektiven Pins vom
STK500 übereinstimmen:

Also wenn du oben schreibt:
>  PB4 ------------- PIN4  (RS)

muss die entsprechende Definition lauten:
#define LCD_RS_PIN       4
Gast #182504
Lesenswert?
• ▲
▼
Wenn
    PB0 ------------- PIN11 (DB4)
dann nicht
    #define LCD_DATA0_PIN    4
und nicht
    #define LCD_DATA0_PIN    11
sondern
    #define LCD_DATA0_PIN    PB0
weil: Fleury's Bit 0 ist des LCDs DB4.

Den Rest darfst Du selber rauskriegen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.