- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: LCD am I2C Bus ohne Erweiterungsplatine

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    12.01.2006
    Beiträge
    18
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Dirk,

    In der Anleitung konnte ich ja leider nichts finden. Aber ich habe ein LCD-Modul (Artikel Nummer bei www.conrad.de: 198330). Ich weiß auch das ein IC (PCF8574T) als Steuereinheit für das LCD fungiert. Ansonsten habe ich eigentlich keine Informationen bzw. sonst habe ich keine entdeckt.

    Viele Grüße Markus

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    ... ah, verstehe, das ist das LCD des C-Control-Systems.

    Da kann ich nicht helfen! Da gibt es, soweit ich weiss, Treiber für die micro und Unit 1 2.0. Die sollen auf der CD sein. Bei der Micro lese ich, dass das Betriebssystem das I2C-LCD unterstützt.

    Ich habe keine Ahnung, wie und ob man die Treiber für den CCRP5 nutzen könnte. Ich habe die CD auch nicht.
    Vielleicht hat das hier jemand schon versucht.

    Wird schwierig! Sorry ...

    Gruß Dirk

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    ... Moment, habe da noch was gefunden, ist zwar in OCBASIC und nutzt Assembler-Routinen als I2C, aber das müßte an den CCRP5 mit E-I2C anzupassen sein.

    Viel Erfolg!

    Code:
    ' ---------------------------------------------------------------------------
    ' --- LCD-Display Ansteuerung über den I2C-Bus - für OCBASIC ----------------
    ' --- erstellt am 11.09.2005 von Jens Gürtler -------------------------------
    ' ---------------------------------------------------------------------------
    
    ' Hardware:
    ' I2C-Bus SCL an Port 5
    ' I2C_Bus SDA an Port 6
    ' 2 Zeilen LCD-Display mit I2C-Ansteuerung
    
    ' Software:
    ' Das Programm steuert ein 2 Zeilen LCD-Display über einen PCF8574 an. Wenn
    ' ein 1-Zeiliges oder 4-Zeiliges LCD-Display verwendet werden, dann muss die
    ' Display-Initialisierung dem Display entsprechend angepasst werden. Die
    ' I2C-Bus Routine arbeitet mit Assambler und ist damit sehr schnell. Es
    ' werden 40 Zeichen in ca. 0,1 Sekunden auf dem Display wiedergegeben. Der
    ' ACK vom "Slave" wird im Programm nicht ausgewertet. Wenn der PCF8574 nicht
    ' wie beschrieben mit dem Display verdrahtet ist, muss Bit1 bis Bit8
    ' entsprechend angepasst werden.
    
    '--- PCF8574 Port Belegung an LCD-Display -----------------------------------
    ' Port1 = RS LCD-Display
    ' Port2 = R/W LCD-Display
    ' Port3 = Enabel LCD-Display
    ' Port4 = Hintergrundbeleuchtung LCD-Display
    ' Port5 = D4 LCD-Display
    ' Port6 = D5 LCD-Display
    ' Port7 = D6 LCD-Display
    ' Port8 = D7 LCD-Display
    
    '--- ASSCII Zeichensatz - (in Dezimalzahlen) --------------------------------
    ' Sonderzeichen
    '  =32  !=33  "=34  #=35  $=36  %=37  &=38  '=39  (=40  )=41  *=42  +=43  ,=44
    ' -=45  .=46  :=58  ;=59  <=60  ==61  >=62  ?=63  @=64  [=91  ]=93  ^=94  _=95
    ' ä=225 ß=226 ö=239 ü=245
    ' Zahlen
    ' 0=48  1=49  2=50  3=51  4=52  5=53  6=54  7=55  8=56  9=57  /=47
    ' Großbuchstaben
    ' A=65  B=66  C=67  D=68  E=69  F=70  G=71  H=72  I=73  J=74  K=75  L=76  M=77
    ' N=78  O=79  P=80  Q=81  R=82  S=83  T=84  U=85  V=86  W=87  X=88  Y=89  Z=90
    ' Kleinbuchstaben
    ' a=97  b=98  c=99  d=100 e=101 f=102 g=103 h=104 i=105 j=106 k=107 l=108 m=109
    ' n=110 o=111 p=112 q=113 r=114 s=115 t=116 u=117 v=118 w=119 x=120 y=121 z=122
    
    '--- LCD-Display Befehlssatz - (in Dezimalzahlen) ---------------------------
    ' Befehle
    '  1 = CLS - Display löschen
    ' 12 = Cursor aus und blinken aus
    ' 13 = Cursor aus und blinken ein
    ' 14 = Cursor ein und blinken aus
    ' 15 = Cursor ein und blinken ein
    ' Cursor Position im Display
    ' 128 = Zeile 1, Position 1   >>>   147 = Zeile 1, Position 20
    ' 192 = Zeile 2, Position 1   >>>   211 = Zeile 2, Position 20
    ' ---------------------------------------------------------------------------
    
    ' --- Betriebssystem konfigurieren ------------------------------------------
    include "om06.inc"          ' Betriebssystem Daten laden
    pullupa = &b00110000        ' Schaltet die internen Pull-Up-Widerstaende an
                                ' Port 5 & 6 ein. Dadurch müssen keine Externen
                                ' Widerstände an SDA und SCL angeschlossen werden.
    ' ---------------------------------------------------------------------------
    
    ' --- definition der Ports --------------------------------------------------
    define SCL        port[5]   ' externe Pull-Up-Widerstaende sind nicht unbedingt
    define SDA        port[6]   ' notwendig, wenn interne Pull-Ups aktiviert sind
    ' --- definition der Variablen ----------------------------------------------
    define PCF_Daten  byte[1]   ' Datensatz der zum PCF8574 übertragen wird
    define LCD_RS      bit[1]   ' PCF8574 Port1
    define LCD_R_W     bit[2]   ' PCF8574 Port2
    define LCD_Enabel  bit[3]   ' PCF8574 Port3
    define LCD_Licht   bit[4]   ' PCF8574 Port4
    define LCD_D4      bit[5]   ' PCF8574 Port5
    define LCD_D5      bit[6]   ' PCF8574 Port6
    define LCD_D6      bit[7]   ' PCF8574 Port7
    define LCD_D7      bit[8]   ' PCF8574 Port8
    ' ---------------------------------------------------------------------------
    define Daten      byte[2]   ' LCD-Display Zeichensatz und Cursor Position
    define D_bit1      bit[9]   ' Zeichensatz Bit1
    define D_bit2      bit[10]  ' Zeichensatz Bit2
    define D_bit3      bit[11]  ' Zeichensatz Bit3
    define D_bit4      bit[12]  ' Zeichensatz Bit4
    define D_bit5      bit[13]  ' Zeichensatz Bit5
    define D_bit6      bit[14]  ' Zeichensatz Bit6
    define D_bit7      bit[15]  ' Zeichensatz Bit7
    define D_bit8      bit[16]  ' Zeichensatz Bit8
    ' ---------------------------------------------------------------------------
    define Adresse    byte[3]   ' I2C-Bus Adresse
    define ACK        byte[4]   ' I2C-Bus "ACK" vom Slave
    ' --- Voreinstellung und Initialisierung ------------------------------------
    gosub i2c_init              ' Initialisirung I2C-Bus
    Adresse = 64                ' I2C Adresse vom PCF8574
    gosub Display_init          ' LCD-Display Initialisieren
    LCD_Licht = on              ' Hintergrundbeleuchtung ein
    Display_Befehl 12           ' Cursor aus und blinken aus
    ' ---------------------------------------------------------------------------
    
    
    ' ---------------------------------------------------------------------------
    ' --- Hauptprogramm ---------------------------------------------------------
    ' ---------------------------------------------------------------------------
    #programm_anfang
    Display_Befehl 1            ' CLS - Display löschen
    pause 50                    ' 1 Sekunde Pause
    Display_Zeichen "I"         ' Zeichen I auf das Display schreiben
    Display_Zeichen "2"         ' Zeichen 2 auf das Display schreiben
    Display_Zeichen "C"         ' Zeichen C auf das Display schreiben
    Display_Zeichen "-"         ' Zeichen - auf das Display schreiben
    Display_Zeichen "B"         ' Zeichen B auf das Display schreiben
    Display_Zeichen "u"         ' Zeichen u auf das Display schreiben
    Display_Zeichen "s"         ' Zeichen s auf das Display schreiben
    Display_Zeichen " "         ' Zeichen   auf das Display schreiben
    Display_Zeichen "L"         ' Zeichen L auf das Display schreiben
    Display_Zeichen "C"         ' Zeichen C auf das Display schreiben
    Display_Zeichen "D"         ' Zeichen D auf das Display schreiben
    Display_Zeichen "-"         ' Zeichen - auf das Display schreiben
    Display_Zeichen "D"         ' Zeichen D auf das Display schreiben
    Display_Zeichen "i"         ' Zeichen i auf das Display schreiben
    Display_Zeichen "s"         ' Zeichen s auf das Display schreiben
    Display_Zeichen "p"         ' Zeichen p auf das Display schreiben
    Display_Zeichen "l"         ' Zeichen l auf das Display schreiben
    Display_Zeichen "a"         ' Zeichen a auf das Display schreiben
    Display_Zeichen "y"         ' Zeichen y auf das Display schreiben
    ' ---------------------------------------------------------------------------
    Display_Befehl 192          ' Display auf Zeile 2 Position 0
    Display_Zeichen "m"         ' Zeichen m auf das Display schreiben
    Display_Zeichen "i"         ' Zeichen i auf das Display schreiben
    Display_Zeichen "t"         ' Zeichen t auf das Display schreiben
    Display_Zeichen " "         ' Zeichen   auf das Display schreiben
    Display_Zeichen "d"         ' Zeichen d auf das Display schreiben
    Display_Zeichen "e"         ' Zeichen e auf das Display schreiben
    Display_Zeichen "r"         ' Zeichen r auf das Display schreiben
    Display_Zeichen " "         ' Zeichen   auf das Display schreiben
    Display_Zeichen "O"         ' Zeichen O auf das Display schreiben
    Display_Zeichen "p"         ' Zeichen p auf das Display schreiben
    Display_Zeichen "e"         ' Zeichen e auf das Display schreiben
    Display_Zeichen "n"         ' Zeichen n auf das Display schreiben
    Display_Zeichen "-"         ' Zeichen - auf das Display schreiben
    Display_Zeichen "M"         ' Zeichen M auf das Display schreiben
    Display_Zeichen "i"         ' Zeichen i auf das Display schreiben
    Display_Zeichen "c"         ' Zeichen c auf das Display schreiben
    Display_Zeichen "r"         ' Zeichen r auf das Display schreiben
    Display_Zeichen "o"         ' Zeichen o auf das Display schreiben
    pause 200                   ' 4 Sekunden Pause
    goto programm_anfang
    ' ---------------------------------------------------------------------------
    
    end
    ' ---------------------------------------------------------------------------
    
    
    ' ---------------------------------------------------------------------------
    ' --- LCD-Display Routine ---------------------------------------------------
    ' ---------------------------------------------------------------------------
    #Display_init
    ' --- Initialisierung für den 4-Bit Modus - 2 Zeilen, 5x7 Font --------------
    ' ---------------------------------------------------------------------------
    ' Befehl   | RS  | R/W | DB7 | DB6 | DB5 | DB4 | Bemerkung
    ' ---------------------------------------------------------------------------
    ' Fun. Set |  0  |  0  |  0  |  0  |  1  |  0  | 4-Bit Datenlänge einschalten
    ' ---------------------------------------------------------------------------
    ' Fun. Set |  0  |  0  |  0  |  0  |  1  |  0  | 4_Bit - 2-Zeiliges Display,
    '          |  0  |  0  |  1  |  0  |  0  |  0  | 5x7 Font
    ' ---------------------------------------------------------------------------
    ' Display  |  0  |  0  |  0  |  0  |  0  |  0  | Display ein, Cursor ein,
    ' on/off   |  0  |  0  |  1  |  1  |  1  |  1  | Cursor blinken
    ' ---------------------------------------------------------------------------
    ' Clear    |  0  |  0  |  0  |  0  |  0  |  0  | Display löschen, Cursor auf
    ' Display  |  0  |  0  |  0  |  0  |  0  |  1  | 1.Spalte von 1.Zeile
    ' ---------------------------------------------------------------------------
    ' Entry    |  0  |  0  |  0  |  0  |  0  |  0  | Cursor Auto-Increment
    ' Mode Set |  0  |  0  |  0  |  1  |  1  |  0  |
    ' ---------------------------------------------------------------------------
    Display_Befehl &b00000010   ' Enabel off und 4-Bit Datenlänge einschalten
    Display_Befehl &b00101000   ' 4-Bit 2-Zeiliges Display
    Display_Befehl &b00001111   ' Display ein, Cursor ein, blinken ein
    Display_Befehl &b00000001   ' CLS - Display löschen
    Display_Befehl &b00000110   ' Cursor Auto-Increment
    return
    ' ---------------------------------------------------------------------------
    #Display_Befehl             ' Befehlsebene - Curser setzen
    Daten = Pop                 ' Datenzuweisung vom Rechenstack
    LCD_RS = off : LCD_R_W = off ' Register auf Befehlsebene setzen
    goto Display_loop           ' interner Sprungpunkt
    ' ---------------------------------------------------------------------------
    #Display_Zeichen            ' Zeichenebene - Daten anzeigen
    Daten = Pop                 ' Datenzuweisung vom Rechenstack
    LCD_RS = on : LCD_R_W = off ' Register auf Daten Anzeige setzen
    ' ---------------------------------------------------------------------------
    #Display_loop               ' Aufteilung von "Daten" in den 4-Bit Modus
    gosub i2c_start             ' I2C-Bus starten
    ACK = i2c_write(adresse)    ' Adresse senden, ACK empfangen
    LCD_D4 = D_bit5 : LCD_D5 = D_bit6 : LCD_D6 = D_bit7 : LCD_D7 = D_bit8 ' Daten Zuweisung
    gosub Display_Pulse         ' I2C Pulse und Daten übertragen
    LCD_D4 = D_bit1 : LCD_D5 = D_bit2 : LCD_D6 = D_bit3 : LCD_D7 = D_bit4 ' Daten Zuweisung
    gosub Display_Pulse         ' I2C Pulse und Daten übertragen
    gosub i2c_stop              ' I2C-Bus stoppen
    return
    ' ---------------------------------------------------------------------------
    #Display_Pulse              ' I2C Pulse und Daten übertragen
    LCD_Enabel = on             ' Enable = High
    ACK = i2c_write(PCF_Daten)  ' PCF8574 Einstellung zum Display senden, ACK empfangen
    LCD_Enabel = off            ' Enable = Low
    ACK = i2c_write(PCF_Daten)  ' PCF8574 Eindtellung zum Display senden, ACK empfangen
    return
    ' ---------------------------------------------------------------------------
    
    
    ' ---------------------------------------------------------------------------
    ' --- I2C-Routinen fuer 100 kHz Bustakt einbinden ---------------------------
    ' ---------------------------------------------------------------------------
    include "om_i2c.inc"
    Gruß Dirk

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen