- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Probleme mit LCD-Steuerung..

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67

    Probleme mit LCD-Steuerung..

    Hallo,
    ich versuche seit zwei Tage, ein LCD(HD44780 ) durch die P.Fleury library mit einem ATmega16 zu steuren. Es tut sich aber nichts ! ich kriege zwar die schwarze Balken angezeigt, mehr aber auch nicht.
    woran kann es denn liegen? kann jemand bitte helfen?
    Danke !
    MfG

    P.S: ich benutze PORT A als LCD-PORT.

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    also , sie läuft prima , bei mir,

    Fallstricke für den Neuuser könnten sein:

    LCD.H
    dort ist leider zu ändern:

    Zeile 47:
    #define XTAL 4000000
    !!!!! wichtig die richtige CPU eintragen, obwohl ich bei Problemen auch schon mal mit einer 8MHz CPU 12-16 MHz versucht hatte, verlängert theoretisch die Waits, half bei mir aber nix, weil es nicht an den Waits lag.

    Zeile 54:
    #define LCD_CONTROLLER_KS0073 0 /**< Use 0 for HD44780 controller, 1 for KS0073 controller */
    0 oder 1 das weisst nur du

    Zeile 60-67:
    #define LCD_LINES 2 /**< number of visible lines of the display */
    #define LCD_DISP_LENGTH 16 /**< visibles characters per line of the display */
    #define LCD_LINE_LENGTH 0x40 /**< internal line length of the display */
    #define LCD_START_LINE1 0x00 /**< DDRAM address of first char of line 1 */
    #define LCD_START_LINE2 0x40 /**< DDRAM address of first char of line 2 */
    #define LCD_START_LINE3 0x14 /**< DDRAM address of first char of line 3 */
    #define LCD_START_LINE4 0x54 /**< DDRAM address of first char of line 4 */
    #define LCD_WRAP_LINES 0 /**< 0: no wrap, 1: wrap at end of visibile line */
    siehe LCD Datenblatt

    Zeile 60-67:
    #define LCD_IO_MODE 1 /**< 0: memory mapped mode, 1: IO port mode */
    immer I/O Mode 1 und nur mit 4-bit ansteuern, LCD D7-D3

    Zeile 86-100:
    #define LCD_PORT PORTA /**< 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 0 /**< pin for 4bit data bit 0 */
    #define LCD_DATA1_PIN 1 /**< pin for 4bit data bit 1 */
    #define LCD_DATA2_PIN 2 /**< pin for 4bit data bit 2 */
    #define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */
    #define LCD_RS_PORT LCD_PORT /**< port for RS line */
    #define LCD_RS_PIN 4 /**< pin for RS line */
    #define LCD_RW_PORT LCD_PORT /**< port for RW line */
    #define LCD_RW_PIN 5 /**< pin for RW line */
    #define LCD_E_PORT LCD_PORT /**< port for Enable line */
    #define LCD_E_PIN 6 /**< pin for Enable line */

    vom User nutzbare Befehle ?
    lcd_init(uint8_t dispAttr);
    lcd_clrscr(void);
    lcd_home(void);
    lcd_gotoxy(uint8_t x, uint8_t y);
    lcd_putc(char c);
    lcd_puts(const char *s);
    lcd_puts_p(const char *progmem_s);
    lcd_command(uint8_t cmd);
    lcd_data(uint8_t data);
    lcd_puts_P(__s) lcd_puts_p(PSTR(__s))

    von mir bis jetzt erfolgreich benutzt:
    lcd_init(LCD_DISP_ON); // LCD_DISP_ON_CURSOR_BLINK
    lcd_data(pgm_read_byte_near(&copyRightChar[__i]));
    lcd_clrscr();
    lcd_gotoxy(19,0);
    lcd_putc(5);
    lcd_puts(trimm_string('0',itoa(__bi, (char *)s, 10),2));

    lcd_command(_BV(LCD_CGRAM)); // set CG RAM start address 0
    nutze ich auch, bin aber noch unsicher ob der was tut ? wegen IO Mode

    lcd_home(void);
    lcd_puts_p(const char *progmem_s);
    lcd_puts_P(__s) lcd_puts_p(PSTR(__s))
    habe ich noch nie genutzt


    in
    test_lcd.c
    stehen ja die notwendigen includes

    noch Fragen ?

    prüfe deine #defines und Verdrahtung.

    Achtung Falle:
    #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 */

    im 4-bit Mode diese defines nicht ändern auf der LCD Seite, aber
    LCD DATA0 ist LCD_D4
    LCD DATA1 ist LCD_D5
    LCD DATA2 ist LCD_D6
    LCD DATA3 ist LCD_D7

    !!!!!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    ich habe es mit radig ulrich Library versucht aber ich bekomme diese Fehlermeldungen:
    avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -O0 -fsigned-char -MD -MP -MT MyLCD.o -MF dep/MyLCD.o.d -c ../MyLCD.c
    ../MyLCD.c:12:18: error: main.h: No such file or directory
    ../MyLCD.c:13:17: error: lcd.h: No such file or directory
    ../MyLCD.c: In function 'main':
    ../MyLCD.c:36: warning: implicit declaration of function 'LCD_Init'
    ../MyLCD.c:37: warning: implicit declaration of function 'LCD_Print'
    make: *** [MyLCD.o] Error 1
    Build failed with 2 errors and 2 warnings...

    Obwohl ich die main.h und lcd.h in meiner Projekt bzw. unter Projektverzeichnis eingefügt habe!

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    vermutlich stimmen deine Pfade nicht:

    Path=C:\Programme\Atmel\WINAVRgcc\bin;C:\Programme \Atmel\WINAVRgcc\utils\bin;C:\Programme\Atmel Corporation\WINAVRgcc\bin;C:\Programme\Atmel Corporation\WINAVRg
    cc\utils\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WIN DOWS\Sys......

    usw.

    ich setze je nach Compiler in einer batch die Var %PATH% richtig, sonst gibt es Probleme mit den Includes

    Achtung beachte auch meine Edits

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    Danke jar!
    in deiner ersten Antwort habe ich das nicht ganz verstanden:
    Zeile 54:
    #define LCD_CONTROLLER_KS0073 0 /**< Use 0 for HD44780 controller, 1 for KS0073 controller */
    ich benutze einen HDD44780, was muss ich da ändern?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von RIFMAN
    Danke jar!
    in deiner ersten Antwort habe ich das nicht ganz verstanden:
    Zeile 54:
    #define LCD_CONTROLLER_KS0073 0 /**< Use 0 for HD44780 controller, 1 for KS0073 controller */
    ich benutze einen HDD44780, was muss ich da ändern?
    nö, HD44xxx ist und bleibt 0

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    Ich alles geändert, was ich ändern musste hat aber nichts gebracht..

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von RIFMAN
    Ich alles geändert, was ich ändern musste hat aber nichts gebracht..
    schwarze Balken sind erst mal gut, Kontrast und power funktioniert also,
    also läuft dein Init nicht, oder das LCD bekommt keinen richtigen sauberen Saft -> Vcc oder GND,

    alle beteiligten Ports auf Ausgang gestellt ?

    Bascom Demo ist erst mal zum Testen gut

    Achtung Bascom , Enable auf GND ? aber Fleury will einen Port !
    kann auch sein das ich das mit dem RW oder RS verwechsel, wenn du aber alle 3 Pins an Ports hast, bist du schon richtiger für Fleury

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2006
    Alter
    62
    Beiträge
    19
    hi RIFMAN,

    ich hatte die gleichen probleme wie du, bei der memory mapped mode ansteuerung des lcd.
    habe ich nicht zum laufen bekommen.
    habe dann die 4bit ansteuerung probiert, die lief dann auf anhieb.

    gruß orko

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    jar hat folgendes geschrieben:
    Achtung Bascom , Enable auf GND ? aber Fleury will einen Port !
    kann auch sein das ich das mit dem RW oder RS verwechsel, wenn du aber alle 3 Pins an Ports hast, bist du schon richtiger für Fleury
    es wäre super wenn du ein LCD-Test Programm für Bascom hast.

    orko512 hat folgendes geschrieben:
    ich hatte die gleichen probleme wie du, bei der memory mapped mode ansteuerung des lcd.
    habe ich nicht zum laufen bekommen.
    habe dann die 4bit ansteuerung probiert, die lief dann auf anhieb.
    ich benutze aber die 4-bit Steuerung..

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test