lcd.c-Dateireferenz

Funktionen zur Ansteurung eines LCD Moduls ueber die I2C Schnittstelle. Diese Bibliothek unterstützt HD44870 kompatible LCD Module mit einem I2C Port Expander Chip PCF8574P
Die Pinbelegung des I2C Portexpanders ist folgende:
P0-P3 - BD4-DB7
P4 - RS
P4 - R/W
P6 - Backlight (optional)
P7 - EN
Es wird zudem die I2C Emulations Bibliothek benötigt.
. Mehr ...

#include "asuro.h"
#include "lcd.h"
#include "i2c.h"

gehe zum Quellcode dieser Datei

Funktionen

void InitLCD (void)
 LCD Initialisierung.
void BacklightLCD (unsigned char state)
 LCD Backlight an oder ausschalten.
void SetDataLCD (unsigned char data)
 LCD Daten schreiben.
void SetIOLCD (unsigned char setCommand, unsigned char bits)
 LCD IO Ports schreiben.
unsigned char GetIOLCD (void)
 LCD IO Ports lesen.
void SetCursorLCD (unsigned char cursor, unsigned char line)
 LCD Cursor setzen.
void CommandLCD (unsigned char command)
 LCD Kommando ausgeben.
void ClearLCD (void)
 LCD loeschen und Cursor auf 1 Postion der ersten Zeile.
void WriteLCD (unsigned char data)
 LCD Daten schreiben.
void PrintLCD (char *string, unsigned char wrap)
 LCD String ausgeben optional mit Zeilenumbruch.
void PrintSetLCD (unsigned char cursor, unsigned char line, char *string)
 LCD String ausgeben an bestimmter Position.
void PrintIntLCD (int value)
 LCD Integer Wert ausgeben.
void PrintAlignLCD (unsigned char alignment, unsigned char line, char *string)
 LCD Stringausgabe mit Ausrichtung (links, mitte, rechts).


Ausführliche Beschreibung

Funktionen zur Ansteurung eines LCD Moduls ueber die I2C Schnittstelle. Diese Bibliothek unterstützt HD44870 kompatible LCD Module mit einem I2C Port Expander Chip PCF8574P
Die Pinbelegung des I2C Portexpanders ist folgende:
P0-P3 - BD4-DB7
P4 - RS
P4 - R/W
P6 - Backlight (optional)
P7 - EN
Es wird zudem die I2C Emulations Bibliothek benötigt.
.

Autor:
Rizqi Ahmad (raid_ox)
Version:
V001 - 17-02-2007 - Rizqi Ahmad (raid_ox) Erste Version V002 - 08.04.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)

Definiert in Datei lcd.c.


Dokumentation der Funktionen

void BacklightLCD ( unsigned char  state  ) 

LCD Backlight an oder ausschalten.

Parameter:
state Backlight an oder aus
Rückgabe:
nichts

Definiert in Zeile 97 der Datei lcd.c.

00098 {
00099   SetIOLCD(state, LCD_BL);
00100 }

void ClearLCD ( void   ) 

LCD loeschen und Cursor auf 1 Postion der ersten Zeile.

Definiert in Zeile 225 der Datei lcd.c.

00226 {
00227   CommandLCD(LCD_CLEAR);
00228   CommandLCD(LCD_HOME);
00229 }

void CommandLCD ( unsigned char  command  ) 

LCD Kommando ausgeben.

Parameter:
command auszugebendes Kommando

Definiert in Zeile 212 der Datei lcd.c.

00213 {
00214   if (command == LCD_HOME)
00215     lineLCD = cursorLCD = 0x00;
00216   SetIOLCD(OFF, LCD_RS);
00217   SetDataLCD(command);
00218 }

unsigned char GetIOLCD ( void   ) 

LCD IO Ports lesen.

Rückgabe:
LCD IO Port

Definiert in Zeile 165 der Datei lcd.c.

00166 {
00167   unsigned char data = 0x00;
00168   StartI2C(LCD_DEV+1);
00169   data = ReadI2C(0);
00170   StopI2C();
00171   return data;
00172 }

void InitLCD ( void   ) 

LCD Initialisierung.

Definiert in Zeile 62 der Datei lcd.c.

00063 {
00064   unsigned char init[] = LCD_INIT;
00065   unsigned char i = 0;
00066 
00067   SetIOLCD(OFF, LCD_EN);              // Start LCD Control, EN=0
00068   Msleep(1);                          // Wait LCD Ready
00069 
00070   // Initialize LCD
00071   CommandLCD( LCD_8BIT | (LCD_8BIT >> 4) );
00072   CommandLCD( LCD_8BIT | (LCD_4BIT >> 4) );
00073 
00074   while (init[i] != 0x00)
00075   {
00076     CommandLCD(init[i]);
00077     i++;
00078   }
00079 
00080   CommandLCD( LCD_DISPLAYON );        // Display on/off Control (Entry Display,Cursor off,Cursor not Blink)
00081   CommandLCD( LCD_INCREASE );         // Entry Mode Set (I/D=1 Increment,S=0 Cursor Shift)
00082   CommandLCD( LCD_CLEAR );            // Clear Display
00083   CommandLCD( LCD_HOME );             // Home Cursor
00084   Msleep(1);                          // Wait Initial Complete
00085 }

void PrintAlignLCD ( unsigned char  alignment,
unsigned char  line,
char *  string 
)

LCD Stringausgabe mit Ausrichtung (links, mitte, rechts).

Parameter:
alignment Ausrichtung (links, mitte, rechts)
line Zeilennummer
string auszugebender String
Rückgabe:
nichts

Definiert in Zeile 307 der Datei lcd.c.

00308 {
00309   unsigned char i = 0;
00310   while (string[i] != 0x00)
00311     i++;
00312   if (alignment == RIGHT)
00313     PrintSetLCD(LCD_CHARS-i, line, string);
00314   else if (alignment == CENTER)
00315     PrintSetLCD((LCD_CHARS-i)/2, line, string);
00316   else
00317     PrintSetLCD(0, line, string);
00318 }

void PrintIntLCD ( int  value  ) 

LCD Integer Wert ausgeben.

Parameter:
value auszugebender Integer Wert

Definiert in Zeile 289 der Datei lcd.c.

00290 {
00291   char text[6];
00292   itoa(value,text,10);
00293   PrintLCD(text, OFF);
00294 }

void PrintLCD ( char *  string,
unsigned char  wrap 
)

LCD String ausgeben optional mit Zeilenumbruch.

Parameter:
string auszugebender String
wrap Zeilenumbruch ja oder nein

Definiert in Zeile 252 der Datei lcd.c.

00253 {
00254   unsigned char i = 0;
00255   while (string[i] != 0x00)
00256   {
00257     if (cursorLCD >= LCD_CHARS)
00258     {
00259       if (wrap)
00260         SetCursorLCD(0, lineLCD+1);
00261       else
00262         break;
00263     }
00264     WriteLCD(string[i]);
00265     i++;
00266   }
00267 }

void PrintSetLCD ( unsigned char  cursor,
unsigned char  line,
char *  string 
)

LCD String ausgeben an bestimmter Position.

Parameter:
cursor Cursor Position
line Zeilen Nummer
string auszugebender String

Definiert in Zeile 277 der Datei lcd.c.

00278 {
00279   SetCursorLCD(cursor, line);
00280   PrintLCD(string, OFF);
00281 }

void SetCursorLCD ( unsigned char  cursor,
unsigned char  line 
)

LCD Cursor setzen.

Parameter:
cursor Cursor Position
line Zeilen Nummer

Definiert in Zeile 181 der Datei lcd.c.

00182 {
00183   cursorLCD   = cursor;
00184   lineLCD   = line;
00185 
00186   if (line == 0)
00187     line = LCD_LINE1;
00188 #if LCD_LINES>=2
00189   else if (line == 1)
00190     line = LCD_LINE2;
00191 #endif
00192 #if LCD_LINES>=3
00193   else if (line == 2)
00194     line = LCD_LINE3;
00195 #endif
00196 #if LCD_LINES>=4
00197   else if (line == 3)
00198     line = LCD_LINE4;
00199 #endif
00200   else
00201     line = LCD_LINE1;
00202 
00203   CommandLCD(LCD_DDRAM | (line+cursor));
00204 }

void SetDataLCD ( unsigned char  data  ) 

LCD Daten schreiben.

Parameter:
data auszugebende Date

Definiert in Zeile 108 der Datei lcd.c.

00109 {
00110   unsigned char dataPins;             // Pin Compatibility
00111 
00112   // Set First Nibble Data to DataPins on PCF8574
00113   dataPins &= 0x00;
00114   dataPins |= ((data & 0x80) >> 7) << LD7;
00115   dataPins |= ((data & 0x40) >> 6) << LD6;
00116   dataPins |= ((data & 0x20) >> 5) << LD5;
00117   dataPins |= ((data & 0x10) >> 4) << LD4;
00118 
00119   SetIOLCD(OFF, LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7);     // Clear old LCD Data (Bit[7..4])
00120   SetIOLCD(ON, dataPins);             // Strobe High Nibble Command
00121   SetIOLCD(ON, LCD_EN);               // Enable ON
00122   Msleep(1);
00123   SetIOLCD(OFF, LCD_EN);              // Enable OFF
00124 
00125   // Set Second Nibble Data to DataPins on PCF8574
00126   dataPins &= 0x00;
00127   dataPins |= ((data & 0x08) >> 3) << LD7;
00128   dataPins |= ((data & 0x04) >> 2) << LD6;
00129   dataPins |= ((data & 0x02) >> 1) << LD5;
00130   dataPins |= ((data & 0x01) >> 0) << LD4;
00131 
00132   SetIOLCD(OFF, LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7);     // Clear old LCD Data (Bit[7..4])
00133   SetIOLCD(ON, dataPins);             // Strobe Low Nibble Command
00134   SetIOLCD(ON, LCD_EN);               // Enable ON
00135   Msleep(1);
00136   SetIOLCD(OFF, LCD_EN);              // Enable OFF
00137 
00138   Msleep(1);                          // Wait LCD Busy
00139 }

void SetIOLCD ( unsigned char  setCommand,
unsigned char  bits 
)

LCD IO Ports schreiben.

Parameter:
setCommand an - oder auschalten
bits zu setzende bits

Definiert in Zeile 148 der Datei lcd.c.

00149 {
00150   if (setCommand == ON)
00151     portLCD |= bits;
00152   else
00153     portLCD &= ~bits;
00154   StartI2C(LCD_DEV);
00155   WriteI2C(portLCD);
00156   StopI2C();
00157 }

void WriteLCD ( unsigned char  data  ) 

LCD Daten schreiben.

Parameter:
data auszugebende Date

Definiert in Zeile 238 der Datei lcd.c.

00239 {
00240   SetIOLCD(ON, LCD_RS);
00241   SetDataLCD(data);
00242   cursorLCD++;
00243 }


Erzeugt am Sun Nov 18 18:24:53 2007 für ASURO Library von  doxygen 1.5.1-p1