- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: LCD über I2C C-Bibliothek für AVR

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.01.2006
    Ort
    Aschaffenburg
    Beiträge
    23

    LCD über I2C C-Bibliothek für AVR

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute,

    ich hab mir vor ein paar Tagen das LCD mit Ansteuerung über I2C mittels Portexpander PCF8574
    aus dem Artikelbereich (https://www.roboternetz.de/wissen/in...BCber_I.C2.B2C )
    nachgebastelt.
    Dummerweise habe ich dann keine C-Bibliothek für diese Kombination gefunden und mir deshalb eine selbst erstellt.

    Da evtl. auch bei Anderen Interesse an solch einer Bibliothek besteht, stelle ich sie zum Herunterladen auf meine Webseite.

    i2clcd Bibliothek: http://computerheld.de/i2clcd/
    i2clcd Dokumentation: http://computerheld.de/i2clcd/doc/index.html

    Ich habe ein HD44780 kompatibles 2x16 Display (KS0070B) und einen ATMega32 @ 16 Mhz.
    Als Portexpander nutze ich den PCF8574P und als Compiler avr-gcc (GCC) 4.1.0.
    Andere Konfigurationen konnte ich nicht testen.

    Zum Compilieren wird die I2C-Bibliothek von Peter Fleury http://jump.to/fleury benötigt.

    Viel Spass beim Testen!

    Grüße
    Nico

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    43
    Beiträge
    170
    Wunderbar, genau das was ich gesucht hab
    Werde das demnächst mit einem 40-Zeichen LCD testen und bescheid geben, dann kannst das als "tested" auf die HP aufnehmen... wenn ichs hinbekomme

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.01.2006
    Ort
    Aschaffenburg
    Beiträge
    23
    Super!
    Wenn was nicht geht, dann sag bescheid damit ich es anpassen kann!

    Grüße
    Nico

  4. #4
    Neuer Benutzer
    Registriert seit
    23.11.2009
    Ort
    Saarland
    Alter
    39
    Beiträge
    3
    Hallo,
    erstmal zu meinem Problem: Zeichen der Reihe 3 werden in Reihe 1 angezeigt, nach änderung von Parametern geht das in Reihe 1, jedoch nicht mehr in Reihe 2. Noch maliges Anpassen führt nur zum entgültigen Erlöschen des Display.
    Ich habe das ganze mit einem eigenen ATmega8 Test Board und der I2C Erweiterung versucht, als Umgebung benutze ich "Atmel Studio 6.2".
    Das Display ist ein Displaytech 204A, also ein 20 Zeichen * 4 Zeilen Display .
    Im Code habe ich die Zeilen angepasst:

    #define LCD_I2C_DEVICE 0x40 /**< Change this to the address of your expander */
    #define LCD_LINES 4 /**< Enter the number of lines of your display here */
    #define LCD_ROWS 20 /**< Enter the number of rows of your display here */

    #define LCD_LINE1 0x00 /**< This should be 0x00 on all displays */
    #define LCD_LINE2 0x40 /**< Change this to the address for line 2 on your display */
    #define LCD_LINE3 0x14 /**< Change this to the address for line 3 on your display */
    #define LCD_LINE4 0x54 /**< Change this to the address for line 4 on your display */


    Bei LCD_LINES und LCD_ROWS habe ich auch schon versucht 2 Lines und 40 ROWS, jedoch ohne erfolg.

    Eine "i am alive LED" funktioniert nur bis zur lcd_init. dann ist alles eingefroren.

    ...
    while(1)
    {

    PORTB ^= (1<<PB0);
    i2c_init();

    PORTB ^= (1<<PB0);
    lcd_init();

    PORTB ^= (1<<PB0);
    unsigned char string1[] = "Alles ATMEGA_8 1";
    unsigned char string2[] = "Alles ATMEGA_8 2";
    lcd_gotolr(1,1);
    lcd_print(string1);
    lcd_gotolr(3,1);
    lcd_print(string2);

    ...

    - Was kann ich an der Konfiguration falsch gemacht haben?
    - Was läuft mit der Anzeige schief (dass Zeile 3 die Fortsetzung von Zeile 1 ist ist mir bekannt, jedoch nicht, wieso Zeichen 21 an Stelle von Zeichen 17 erscheint und ab dann weiter gezählt wird...)

    Danke schon mal für die Hilfe.
    Grüße

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Berlin
    Alter
    69
    Beiträge
    348
    Hallo Atlas85
    Dein Fehler sieht nach Speicher aus. Wenn das Zeichen auf Platz 17 erscheint, könnte dort etwas nicht stimmen. Vielleicht stinmmt die Position der Ausgabe nicht. Stell mal den ganzen Code rein. Vielleicht hast du zwei unterschiedliche Positionen angegeben.
    achim

  6. #6
    Neuer Benutzer
    Registriert seit
    23.11.2009
    Ort
    Saarland
    Alter
    39
    Beiträge
    3
    Hallo,

    danke schon mal für den Tipp.
    Ich habe soeben mal nochmal alles aus dem Schrank geholt und beim Messen fiel mir auf, dass weder SDA noch SCL etwas tun.
    Alle Dateien die ich verwende sind als Anhang in einem ZIP Archiv. Wie schon erwähnt verwende ich AtmelStudio 6.2, also habe ich die Projektdatei mit dazu gepackt.

    Grüße
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

Labornetzteil AliExpress