
/*************************************************************************
* Title:    C include file for eDIP128
* Author:   Achim Seeger h.j.seeger@web.de
* File:     eDIP128.c
* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3
* Target:   any AVR device
**************************************************************************/

#include <stdbool.h>
#include <avr/pgmspace.h>
#include "main.h"
#include "i2clcd.h"
#include "i2cmaster.h"
#include "util/delay.h"
#include "string.h"

///////////////////////////////////////////////////
void Graphik_Bargraph_L(int8_t n, int8_t x1, int8_t y1, int8_t x2, int8_t y2, int8_t aw, int8_t ew, int8_t typ, int8_t mst)
  {		
	int8_t bcc;
	bcc = 0x11 + 0x0c + 0x1b + 'B' + 'L' + n + x1 + y1 + x2 + y2 + ew + aw + typ + mst;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1	0x11
	i2c_write(0x0c);	// len  0c
	i2c_write(0x1b);	// ESC  0x1b
	i2c_write('B');		// B
	i2c_write('L');		// L-links - nach links
	i2c_write(n);		// R-rechts - nach rechts
	i2c_write(x1);		// O-oben - nach oben
	i2c_write(y1);		// U-unten - nach unten
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(aw);
	i2c_write(ew);
	i2c_write(typ);
	i2c_write(mst);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////////////////
void Graphik_Bargraph_R(int8_t n, int8_t x1, int8_t y1, int8_t x2, int8_t y2, int8_t aw, int8_t ew, int8_t typ, int8_t mst)
  {		
	int8_t bcc;
	bcc = 0x11 + 0x0c + 0x1b + 'B' + 'R' + n + x1 + y1 + x2 + y2 + ew + aw + typ + mst;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1	0x11
	i2c_write(0x0c);	// len  0c
	i2c_write(0x1b);	// ESC  0x1b
	i2c_write('B');		// B
	i2c_write('R');		// R
	i2c_write(n);		
	i2c_write(x1);		
	i2c_write(y1);		
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(aw);
	i2c_write(ew);
	i2c_write(typ);
	i2c_write(mst);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////
void Graphik_Bargraph_O(int8_t n, int8_t x1, int8_t y1, int8_t x2, int8_t y2, int8_t aw, int8_t ew, int8_t typ, int8_t mst)
  {		
	int8_t bcc;
	bcc = 0x11 + 0x0c + 0x1b + 'B' + 'O' + n + x1 + y1 + x2 + y2 + ew + aw + typ + mst;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1	0x11
	i2c_write(0x0c);	// len  0c
	i2c_write(0x1b);	// ESC  0x1b
	i2c_write('B');		// B
	i2c_write('O');		// O
	i2c_write(n);		
	i2c_write(x1);		
	i2c_write(y1);		
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(aw);
	i2c_write(ew);
	i2c_write(typ);
	i2c_write(mst);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////
void Graphik_Bargraph_U(int8_t n, int8_t x1, int8_t y1, int8_t x2, int8_t y2, int8_t aw, int8_t ew, int8_t typ, int8_t mst)
  {		
	int8_t bcc;
	bcc = 0x11 + 0x0c + 0x1b + 'B' + 'U' + n + x1 + y1 + x2 + y2 + ew + aw + typ + mst;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1	0x11
	i2c_write(0x0c);	// len  0c
	i2c_write(0x1b);	// ESC  0x1b
	i2c_write('B');		// B
	i2c_write('U');		// U
	i2c_write(n);		
	i2c_write(x1);		
	i2c_write(y1);		
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(aw);
	i2c_write(ew);
	i2c_write(typ);
	i2c_write(mst);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////////////////////////
void Graphik_Bargraph_aktuell(int8_t a1, int8_t a2)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x05 + 0x1b + 'B' + 'A' + a1 + a2;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x05);		// len 05
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('B');		    // B
	i2c_write('A');		    // A
	i2c_write(a1);
	i2c_write(a2);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////////////////
void Graphik_Rechteck(int8_t a1, int8_t b1, int8_t x2, int8_t y2)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x07 + 0x1b + 'G' + 'R' + a1 + b1 + x2 + y2;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x07);	// len 07 
	i2c_write(0x1B);	// ESC   0x1b
	i2c_write('G');		// G
	i2c_write('R');		// R
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////////
void Graphik_Cursor(int8_t a)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x04 + 0x1b + 'T' + 'C' + a;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x04);	// len 04
	i2c_write(0x1B);	// ESC 0x1b
	i2c_write('T');		// T
	i2c_write('C');		// C
	i2c_write(a);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////////
void Graphik_Cursor_Position(int8_t a, int8_t b)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x05 + 0x1b + 'T' + 'P' + a + b;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x05);	// len 05
	i2c_write(0x1B);	// ESC 0x1b
	i2c_write('T');		// T
	i2c_write('P');		// P
	i2c_write(a);
	i2c_write(b);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////////////////
void Graphik_Gerade(int8_t x1, int8_t y1, int8_t x2, int8_t y2)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x07 + 0x1b + 'G' + 'D' + x1 + y1 + x2 + y2;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x07);	// len 07
	i2c_write(0x1B);	// ESC 0x1b
	i2c_write('G');		// G
	i2c_write('D');		// D
	i2c_write(x1);
	i2c_write(y1);
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////////////////////////
void Graphik_Gerade_weiter(int8_t x1, int8_t y1)	
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x05 + 0x1b + 'G' + 'W' + x1 + y1;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x05);	// len 05
	i2c_write(0x1B);	// ESC 0x1b
	i2c_write('G');		// G
	i2c_write('W');		// W
	i2c_write(x1);
	i2c_write(y1);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////////////
void Graphik_Punkt_Groesse(int8_t x1, int8_t y1)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x05 + 0x1b + 'G' + 'Z' + x1 + y1;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x05);	// len 05
	i2c_write(0x1B);	// ESC 0x1b
	i2c_write('G');		// G
	i2c_write('Z');		// Z
	i2c_write(x1);
	i2c_write(y1);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////////////
void Graphik_Punkt(int8_t x1, int8_t y1)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x05 + 0x1b + 'G' + 'P' + x1 + y1;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x05);	// len 05
	i2c_write(0x1B);	// ESC 0x1b
	i2c_write('G');		// G
	i2c_write('P');		// P
	i2c_write(x1);
	i2c_write(y1);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////////////////
void Graphik_Blinken(int8_t a)	
  {		
	int bcc;
	bcc = 0x11 + 0x04 + 0x1b + 'G' + 'B' + a;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x04);	// len 04
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('G');		// G
	i2c_write('B');		// B
	i2c_write(a);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////////
void Graphik_Beleuchtung(int8_t a)
  {		
	int bcc;
	bcc = 0x11 + 0x04 + 0x1b + 'Y' + 'L' + a;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x04);	// len 04
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('Y');
	i2c_write('L');
	i2c_write(a);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////////
void Graphik_Helligkeit(int8_t a)	
  {		
	int bcc;
	bcc = 0x11 + 0x04 + 0x1b + 'Y' + 'H' + a;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x04);	// len 04
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('Y');		// Y
	i2c_write('H');		// H
	i2c_write(a);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////////////
void Graphik_loeschen(void)		
  {		
	int bcc;
	bcc = 0x11 + 0x03 + 0x1b + 'D' + 'L' ;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x03);	// len 03
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('D');		// D
	i2c_write('L');		// L
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
///////////////////////////////////////////////////////////
void Graphik_invertieren(void)	
  {		
	int bcc;
	bcc = 0x11 + 0x03 + 0x1b + 'D' + 'I' ;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x03);	// len 03
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('D');		// D
	i2c_write('I');		// I
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
//////////////////////////////////////////////////////////
void Graphik_Bereich_invertieren(int8_t a1, int8_t b1, int8_t x2, int8_t y2)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x07 + 0x1b + 'R' + 'I' + a1 + b1 + x2 + y2;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x07);		// len 07 
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('R');			// R
	i2c_write('I');			// I
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
//////////////////////////////////////////////////////////
void Graphik_Bereich_fuellen(int8_t a1, int8_t b1, int8_t x2, int8_t y2)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x07 + 0x1b + 'R' + 'S' + a1 + b1 + x2 + y2;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x07);		// len 07 
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('R');			// G
	i2c_write('S');			// R
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////////
void Graphik_Bereich_loeschen(int8_t a1, int8_t b1, int8_t x2, int8_t y2)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x07 + 0x1b + 'R' + 'L' + a1 + b1 + x2 + y2;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x07);		// len 07
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('R');			// R
	i2c_write('L');			// L
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(x2);
	i2c_write(y2);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
//////////////////////////////////////////////////////
void Graphik_Bereich_Muster(int8_t a1, int8_t b1, int8_t a2, int8_t b2, int8_t m)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x08 + 0x1b + 'R' + 'M' + a1 + b1 + a2 + b2 + m;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x08);		// len 08 
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('R');			// R
	i2c_write('M');			// M
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(a2);
	i2c_write(b2);
	i2c_write(m);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////
void Graphik_Box_zeichnen(int8_t a1, int8_t b1, int8_t a2, int8_t b2, int8_t m)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x08 + 0x1b + 'R' + 'O' + a1 + b1 + a2 + b2 + m;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x08);		// len 08 
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('R');			// R
	i2c_write('O');			// O
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(a2);
	i2c_write(b2);
	i2c_write(m);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////////////
void Graphik_Rahmen_zeichnen(int8_t a1, int8_t b1, int8_t a2, int8_t b2, int8_t m)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x08 + 0x1b + 'R' + 'R' + a1 + b1 + a2 + b2 + m;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x08);		// len 08
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('R');			// R
	i2c_write('R');			// R
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(a2);
	i2c_write(b2);
	i2c_write(m);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////////////
void Graphik_Rahmenbox_zeichnen(int8_t a1, int8_t b1, int8_t a2, int8_t b2, int8_t m)
  {		
	uint8_t bcc;
	bcc = 0x11 + 0x08 + 0x1b + 'R' + 'T' + a1 + b1 + a2 + b2 + m;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11
	i2c_write(0x08);		// len 08 
	i2c_write(0x1B);		// ESC 0x1b
	i2c_write('R');			// R
	i2c_write('T');			// T
	i2c_write(a1);
	i2c_write(b1);
	i2c_write(a2);
	i2c_write(b2);
	i2c_write(m);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////////
void Graphik_Info(void)		
  {		
	int bcc;
	bcc = 0x11 + 0x03 + 0x1b + 'T' + 'I' ;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);		// DC1 0x11 
	i2c_write(0x03);		// len 03
	i2c_write(0x1b);		// ESC 0x1b
	i2c_write('T');			// T
	i2c_write('I');			// I
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////////
void Graphik_Version(void)		
  {		
	int bcc;
	bcc = 0x11 + 0x03 + 0x1b + 'T' + 'V' ;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x03);	// len 03
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('T');		// T
	i2c_write('V');		// V
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
////////////////////////////////////////////////////////////
void Graphik_Auswahl_Font(int8_t f)		
  {		
	int bcc;
	bcc = 0x11 + 0x04 + 0x1b + 'Z' + 'F' + f;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x04);	// len 04
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('Z');		// Z
	i2c_write('F');		// F
	i2c_write(f);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
//////////////////////////////////////////////////////////
void Graphik_Font_Winkel(int8_t w)		
  {		
	  int bcc;
	  bcc = 0x11 + 0x04 + 0x1b + 'Z' + 'W' + w;
	  i2c_start(slave_adresse_1);
	  i2c_write(0x11);		// DC1 0x11 
	  i2c_write(0x04);		// len 04
	  i2c_write(0x1b);		// ESC 0x1b
	  i2c_write('Z');		// Z
	  i2c_write('W');		// W
	  i2c_write(w);
	  i2c_write(bcc);
	  i2c_start(slave_adresse_2);
	  e = i2c_readAck();
	  i2c_stop();
	  _delay_us(10);
  }
////////////////////////////////////////////////////////
void Graphik_Font_Zoom(int8_t z1, int8_t z2)	
  {		
	  int bcc;
	  bcc = 0x11 + 0x05 + 0x1b + 'Z' + 'Z' + z1 + z2;
	  i2c_start(slave_adresse_1);
	  i2c_write(0x11);		// DC1 0x11 
	  i2c_write(0x05);		// len 05
	  i2c_write(0x1b);		// ESC 0x1b
	  i2c_write('Z');		// Z
	  i2c_write('Z');		// Z
	  i2c_write(z1);
	  i2c_write(z2);
	  i2c_write(bcc);
	  i2c_start(slave_adresse_2);
	  e = i2c_readAck();
	  i2c_stop();
	  _delay_us(10);
  }
/////////////////////////////////////////////////////
void Graphik_Text_ausgabe_L(int8_t x1, int8_t y1, char * Text)
    {		
	  int bcc,i;
	  bcc = 0x11 + 0x06 + 0x1b + 'Z' + 'L' + x1 + y1 + strlen(Text);
	  for (i=0; i<=strlen(Text); i++)
	  bcc += Text[i];
	  i2c_start(slave_adresse_1);
	  i2c_write(0x11);		// DC1 0x11
	  i2c_write(0x06 + strlen(Text));	// len 0x06+Text 
	  i2c_write(0x1b);		// ESC 0x1b
	  i2c_write('Z');		// Z
	  i2c_write('L');		// L
	  i2c_write(x1);
	  i2c_write(y1);
	  for (i=0; i<=strlen(Text); i++)
	  i2c_write(Text[i]);
	  i2c_write(bcc);
	  i2c_start(slave_adresse_2);
	  e = i2c_readAck();
	  i2c_stop();
	  _delay_us(10);
    }
///////////////////////////////////////////////////////////
void Graphik_Text_ausgabe_R(int8_t x1, int8_t y1, char * Text)
  {		
	  int bcc,i;
	  bcc = 0x11 + 0x06 + 0x1b + 'Z' + 'R' + x1 + y1 + strlen(Text);
	  for (i=0; i<=strlen(Text); i++)
	  bcc += Text[i];
	  i2c_start(slave_adresse_1);
	  i2c_write(0x11);
	  i2c_write(0x06 + strlen(Text));
	  i2c_write(0x1b);
	  i2c_write('Z');		// Z
	  i2c_write('R');		// R
	  i2c_write(x1);
	  i2c_write(y1);
	  for (i=0; i<=strlen(Text); i++)
	  i2c_write(Text[i]);
	  i2c_write(bcc);
	  i2c_start(slave_adresse_2);
	  e = i2c_readAck();
	  i2c_stop();
	  _delay_us(10);
  }
///////////////////////////////////////////////////////////
void Graphik_Text_ausgabe_Z(int8_t x1, int8_t y1, char * Text)
  {		
	  int bcc,i;
	  bcc = 0x11 + 0x06 + 0x1b + 'Z' + 'C' + x1 + y1 + strlen(Text);
	  for (i=0; i<=strlen(Text); i++)
	  bcc += Text[i];
	  i2c_start(slave_adresse_1);
	  i2c_write(0x11);
	  i2c_write(0x06 + strlen(Text));
	  i2c_write(0x1b);
	  i2c_write('Z');		// Z
	  i2c_write('C');		// C
	  i2c_write(x1);
	  i2c_write(y1);
	  for (i=0; i<=strlen(Text); i++)
	  i2c_write(Text[i]);
	  i2c_write(bcc);
	  i2c_start(slave_adresse_2);
	  e = i2c_readAck();
	  i2c_stop();
	  _delay_us(10);
  }
///////////////////////////////////////////////////////////
void Graphik_Menue_zeichnen(int8_t x1, int8_t y1, int8_t a1, char * Text)
  {		
	int bcc,i;
	bcc = 0x11 + 0x07 + 0x1b + 'N' + 'D' + x1 + y1 +a1 + strlen(Text);
	for (i=0; i<=strlen(Text); i++)
	bcc += Text[i];
	i2c_start(slave_adresse_1);
	i2c_write(0x11);
	i2c_write(0x07 + strlen(Text));
	i2c_write(0x1b);
	i2c_write('N');		// N
	i2c_write('D');		// D
	i2c_write(x1);
	i2c_write(y1);
	i2c_write(a1);
	for (i=0; i<=strlen(Text); i++)
	i2c_write(Text[i]);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////
void Graphik_Menue_weiter(void)		
  {		
	int bcc;
	bcc = 0x11 + 0x03 + 0x1b + 'N' + 'N' ;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x03);	// len 0x03
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('N');		// N
	i2c_write('N');		// N
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////
void Graphik_Menue_zurueck(void)		
  {		
	int bcc;
	bcc = 0x11 + 0x03 + 0x1b + 'N' + 'P' ;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x03);	// len 0x03
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('N');		// N
	i2c_write('P');		// P
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
//////////////////////////////////////////////////////
void Graphik_Menue_Font(int8_t f)		
  {		
	int bcc;
	bcc = 0x11 + 0x04 + 0x1b + 'N' + 'F' + f;
	i2c_start(slave_adresse_1);
	i2c_write(0x11);	// DC1 0x11
	i2c_write(0x04);	// len 0x04
	i2c_write(0x1b);	// ESC 0x1b
	i2c_write('N');		// N
	i2c_write('F');		// F
	i2c_write(f);
	i2c_write(bcc);
	i2c_start(slave_adresse_2);
	e = i2c_readAck();
	i2c_stop();
	_delay_us(10);
  }
/////////////////////////////////////////////////