Oooooh je !
Dieses Code-Snippet das du hier gepostet hat, stellt mit seiner
Deklaration eine Funktion zur Verfügung, die ein Register im I2C Slave
beschreiben kann.
Diese Funktion geht davon aus, dass der I2C Bus des Controllers schon
initialisiert ist und betriebsbereit ist.
Die Funktion eines I2C Busses kannst du unter:
https://de.wikipedia.org/wiki/i2c
nachlesen.
Auf einem I2C Bus können mehrere Geräte (Devices) mit nur 2 Leitungen
angesprochen werden. Damit sich die Devices nicht gegenseitig ins Gehege
kommen, besitzt jedes Device eine Adresse.
Eine Kommunikation zu einem I2C Slave kommt dadurch zustande, dass auf
dem Bus eine Start-Condition hergestellt wird, danach erfolgt die
Geräteadresse des Devices das angesprochen werden soll mit dem
niederwertigsten Bit des ersten gesendeten Bytes wird bestimmt, ob auf
dieses Gerät geschrieben oder gelesen werden soll (bei deiner obigen
Funktion wird geschrieben).
Grob gesagt stellt deine Funktion eine Verbindung zu deinem Slave (bei
dir willst du dort ein I2C Display haben) mit angegebener Deviceadresse
her und schreibst genau ein einzelnes unsigned char (byte).
Kurz gesagt bist du damit in der Lage mit einem I2C-Display zu
kommunizieren.
Viele Devices (im besonderen Displays) besitzen mehrere Register (Device
eigene Speicherplätze) die unterschiedliche Bedeutung haben können
(vllt. hat dein Display eine Helligkeitssteuerung, auf jeden Fall hat es
ein Kommandoregister (um bspw. invertierte Darstellung zu generieren)
oder auch ein Register, welches die Displayadresse setzt an die ein Wert
geschrieben werden soll.
Damit also auf einem Display auch nur irgendetwas geschieht (und sei es
nur ein verrauschte Darstellung) sind zuvor viele Datentransfers
notwendig und du mußt erst das Display mit den vom Display benötigten
Daten füttern.
Displays haben in aller Regel eigene Displaycontroller, die ihrerseits
wieder das TFT-LCD steuern und jeder Controller funktioniert anderst.
D. h. du mußt genau wissen WAS für ein Display du hast und welcher im
Controller verbauten Display vorhanden ist.
Hast du ein graphikfähiges Display, kannst du bspw. keinen Buchstaben
darauf setzen, sondern dein Programm benötigt ein Array mit einem
Zeichensatz, der die Bitmaps für jeden einzelnen Buchstaben enthält.
Zu deinem Unglück sind Beispielsprogramme für deinen Controller nicht so
arg viele vorhanden und (deswegen kann man dir hier fast nicht helfen)
du machst keine Angaben über das Display, das du ansteuern möchtest.
Wenn du, was ich annehme, ein so großer Anfänger bist, kann I2C schon
eine Herausforderung sein und du solltest erst einmal grundsätzlich den
Umgang mit diesem Bus an einem sehr einfachen I2C Baustein wie bpsw.
PCF8574 lernen. Dieser I2C Baustein verfügt, wenn man in schreibend
betreibt über ein einziges Register das mit deiner obigen Funktion
beschrieben werden kann. Schreibst du in dieses Register einen Bytewert
hinein kannst du bspw. mittels 8 LED's die einzelnen Bits dieses Bytes
sehen.
Wenn das geklappt hat, kannst du sicher sein, dass dein Bus funktioniert
und du kannst dich daran machen, dich um das Display zu kümmern.