roboforum.ru

Технический форум по робототехнике.

T191 Motorola LCD

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

T191 Motorola LCD

Сообщение big-vl » 20 май 2014, 20:35

Подскажите как мне инициализировать дисплей, есть код но он на кодевижн, в процессенги я только 1-2 дня кодю.

Вот сам код. Помогите хотя бы инициализацию сделать.
Код: Выделить всёРазвернуть
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
/*
Graphic LCD Motorola t191   
With Windows-1215 codepage (Russian) (hardware i2c mode)
*/
// ex:
//
// ...
// lph_init();
// ...
// lph_gotoxy(0,0);
// printf(lph_printchar,"Hello, World!");
// ...
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


#define res   PIN_C5
#define Device_SDA PIN_C4
#define Device_SLC PIN_C3
#use i2c(master, sda=Device_SDA, scl=Device_SLC)
char char_row,charsel,charpos,chardata;       // for lph_7906 lcd
int16 ddram;

//#use delay ( clock=4000000 )

BYTE const TABLE5[240]=           
{0x00,0x00,0x00,0x00,0x00,   // 20 space           
  0x00,0x00,0x5f,0x00,0x00,   // 21 !
  0x00,0x07,0x00,0x07,0x00,   // 22 "
  0x14,0x7f,0x14,0x7f,0x14,   // 23 #
  0x24,0x2a,0x7f,0x2a,0x12,   // 24 $
  0x23,0x13,0x08,0x64,0x62,   // 25 %
  0x36,0x49,0x55,0x22,0x50,   // 26 &
  0x00,0x05,0x03,0x00,0x00,   // 27 '
  0x00,0x1c,0x22,0x41,0x00,   // 28 (
  0x00,0x41,0x22,0x1c,0x00,   // 29 )
  0x14,0x08,0x3e,0x08,0x14,   // 2a *
  0x08,0x08,0x3e,0x08,0x08,   // 2b +
  0x00,0x50,0x30,0x00,0x00,   // 2c ,
  0x08,0x08,0x08,0x08,0x08,   // 2d -
  0x00,0x60,0x60,0x00,0x00,   // 2e .
  0x20,0x10,0x08,0x04,0x02,   // 2f /
  0x3e,0x51,0x49,0x45,0x3e,   // 30 0
  0x00,0x42,0x7f,0x40,0x00,   // 31 1
  0x42,0x61,0x51,0x49,0x46,   // 32 2
  0x21,0x41,0x45,0x4b,0x31,   // 33 3
  0x18,0x14,0x12,0x7f,0x10,   // 34 4
  0x27,0x45,0x45,0x45,0x39,   // 35 5
  0x3c,0x4a,0x49,0x49,0x30,   // 36 6
  0x01,0x71,0x09,0x05,0x03,   // 37 7
  0x36,0x49,0x49,0x49,0x36,   // 38 8
  0x06,0x49,0x49,0x29,0x1e,   // 39 9
  0x00,0x36,0x36,0x00,0x00,   // 3a :
  0x00,0x56,0x36,0x00,0x00,   // 3b ;
  0x08,0x14,0x22,0x41,0x00,   // 3c <
  0x14,0x14,0x14,0x14,0x14,   // 3d =
  0x00,0x41,0x22,0x14,0x08,   // 3e >
  0x02,0x01,0x51,0x09,0x06,   // 3f ?
  0x32,0x49,0x79,0x41,0x3e,   // 40 @
  0x7e,0x11,0x11,0x11,0x7e,   // 41 A
  0x7f,0x49,0x49,0x49,0x36,   // 42 B
  0x3e,0x41,0x41,0x41,0x22,   // 43 C
  0x7f,0x41,0x41,0x22,0x1c,   // 44 D
  0x7f,0x49,0x49,0x49,0x41,   // 45 E
  0x7f,0x09,0x09,0x09,0x01,   // 46 F
  0x3e,0x41,0x49,0x49,0x7a,   // 47 G
  0x7f,0x08,0x08,0x08,0x7f,   // 48 H
  0x00,0x41,0x7f,0x41,0x00,   // 49 I
  0x20,0x40,0x41,0x3f,0x01,   // 4a J
  0x7f,0x08,0x14,0x22,0x41,   // 4b K
  0x7f,0x40,0x40,0x40,0x40,   // 4c L
  0x7f,0x02,0x0c,0x02,0x7f,   // 4d M
  0x7f,0x04,0x08,0x10,0x7f,   // 4e N
  0x3e,0x41,0x41,0x41,0x3e    // 4f O
};   


BYTE const TABLE6[240]=            {0x7f,0x09,0x09,0x09,0x06,   // 50 P
  0x3e,0x41,0x51,0x21,0x5e,   // 51 Q
  0x7f,0x09,0x19,0x29,0x46,   // 52 R
  0x46,0x49,0x49,0x49,0x31,   // 53 S
  0x01,0x01,0x7f,0x01,0x01,   // 54 T
  0x3f,0x40,0x40,0x40,0x3f,   // 55 U
  0x1f,0x20,0x40,0x20,0x1f,   // 56 V
  0x3f,0x40,0x38,0x40,0x3f,   // 57 W
  0x63,0x14,0x08,0x14,0x63,   // 58 X
  0x07,0x08,0x70,0x08,0x07,   // 59 Y
  0x61,0x51,0x49,0x45,0x43,   // 5a Z
  0x00,0x7f,0x41,0x41,0x00,   // 5b [
  0x02,0x04,0x08,0x10,0x20,   // 5c
  0x00,0x41,0x41,0x7f,0x00,   // 5d
  0x04,0x02,0x01,0x02,0x04,   // 5e
  0x40,0x40,0x40,0x40,0x40,   // 5f
  0x00,0x01,0x02,0x04,0x00,   // 60
  0x20,0x54,0x54,0x54,0x78,   // 61 a
  0x7f,0x48,0x44,0x44,0x38,   // 62 b
  0x38,0x44,0x44,0x44,0x20,   // 63 c
  0x38,0x44,0x44,0x48,0x7f,   // 64 d
  0x38,0x54,0x54,0x54,0x18,   // 65 e
  0x08,0x7e,0x09,0x01,0x02,   // 66 f
  0x0c,0x52,0x52,0x52,0x3e,   // 67 g
  0x7f,0x08,0x04,0x04,0x78,   // 68 h
  0x00,0x44,0x7d,0x40,0x00,   // 69 i
  0x20,0x40,0x44,0x3d,0x00,   // 6a j
  0x7f,0x10,0x28,0x44,0x00,   // 6b k
  0x00,0x41,0x7f,0x40,0x00,   // 6c l
  0x7c,0x04,0x18,0x04,0x78,   // 6d m
  0x7c,0x08,0x04,0x04,0x78,   // 6e n
  0x38,0x44,0x44,0x44,0x38,   // 6f o
  0x7c,0x14,0x14,0x14,0x08,   // 70 p
  0x08,0x14,0x14,0x18,0x7c,   // 71 q
  0x7c,0x08,0x04,0x04,0x08,   // 72 r
  0x48,0x54,0x54,0x54,0x20,   // 73 s
  0x04,0x3f,0x44,0x40,0x20,   // 74 t
  0x3c,0x40,0x40,0x20,0x7c,   // 75 u
  0x1c,0x20,0x40,0x20,0x1c,   // 76 v
  0x3c,0x40,0x30,0x40,0x3c,   // 77 w
  0x44,0x28,0x10,0x28,0x44,   // 78 x
  0x0c,0x50,0x50,0x50,0x3c,   // 79 y
  0x44,0x64,0x54,0x4c,0x44,   // 7a z
  0x00,0x08,0x36,0x41,0x00,   // 7b
  0x00,0x00,0x7f,0x00,0x00,   // 7c
  0x00,0x41,0x36,0x08,0x00,   // 7d
  0x10,0x08,0x08,0x10,0x08,   // 7e
  0x78,0x46,0x41,0x46,0x78    // 7f
}; 

BYTE const TABLE7[240]=           
{
0x7E, 0x11, 0x11, 0x11, 0x7E,//c0 A  0x80
0x7F, 0x49, 0x49, 0x49, 0x30,//c1 Б
0x7F, 0x49, 0x49, 0x49, 0x36,//c2 B
0x7F, 0x01, 0x01, 0x01, 0x01,//c3 Г
0x60, 0x3E, 0x21, 0x3F, 0x60,//c4 Д
0x7F, 0x49, 0x49, 0x49, 0x41,//c5 Е
0x67, 0x18, 0x7F, 0x18, 0x67,//c6 Ж
0x22, 0x41, 0x49, 0x49, 0x36,//c7 З
0x7F, 0x10, 0x08, 0x04, 0x7F,//c8 И
0x7F, 0x10, 0x09, 0x04, 0x7F,//c9 Й
0x7F, 0x08, 0x14, 0x22, 0x41,//ca К
0x40, 0x3E, 0x01, 0x01, 0x7E,//cb Л
0x7F, 0x02, 0x04, 0x02, 0x7F,//cc М
0x7F, 0x08, 0x08, 0x08, 0x7F,//cd Н
0x3E, 0x41, 0x41, 0x41, 0x3E,//ce О
0x7F, 0x01, 0x01, 0x01, 0x7F,//cf П
0x7F, 0x09, 0x09, 0x09, 0x06,//d0 Р
0x3E, 0x41, 0x41, 0x41, 0x22,//d1 С
0x01, 0x01, 0x7F, 0x01, 0x01,//d2 Т
0x27, 0x48, 0x48, 0x48, 0x3F,//d3 У
0x1E, 0x21, 0x7F, 0x21, 0x1E,//d4 Ф
0x63, 0x14, 0x08, 0x14, 0x63,//d5 Х
0x3F, 0x20, 0x20, 0x3F, 0x40,//d6 Ц
0x1F, 0x10, 0x10, 0x10, 0x7F,//d7 Ч
0x7F, 0x40, 0x7F, 0x40, 0x7F,//d8 Ш
0x3F, 0x20, 0x3F, 0x20, 0x7F,//d9 Щ
0x01, 0x7F, 0x44, 0x44, 0x38,//da Ъ
0x7F, 0x44, 0x7C, 0x00, 0x7F,//db Ы
0x7F, 0x44, 0x44, 0x44, 0x38,//dc Ь
0x22, 0x41, 0x49, 0x49, 0x3E,//dd Э
0x7F, 0x08, 0x7F, 0x41, 0x7F,//de Ю
0x46, 0x29, 0x19, 0x09, 0x7F,//df Я
0x20, 0x54, 0x54, 0x54, 0x78,//e0 а
0x3C, 0x4A, 0x4A, 0x4B, 0x30,//e1 б
0x7C, 0x54, 0x54, 0x58, 0x20,//e2 в
0x7C, 0x04, 0x04, 0x04, 0x04,//e3 г
0x60, 0x38, 0x24, 0x3C, 0x60,//e4 д
0x38, 0x54, 0x54, 0x54, 0x18,//e5 е
0x74, 0x08, 0x7C, 0x08, 0x74,//e6 ж
0x28, 0x44, 0x54, 0x54, 0x28,//e7 з
0x7C, 0x20, 0x10, 0x08, 0x7C,//e8 и
0x7C, 0x21, 0x12, 0x09, 0x7C,//e9 й
0x7C, 0x10, 0x10, 0x28, 0x44,//ea к
0x40, 0x78, 0x04, 0x04, 0x7C,//eb л
0x7C, 0x08, 0x10, 0x08, 0x7C,//ec м
0x7C, 0x10, 0x10, 0x10, 0x7C,//ed н
0x38, 0x44, 0x44, 0x44, 0x38,//ee о
0x7C, 0x04, 0x04, 0x04, 0x7C//ef п
}; 
BYTE const TABLE8[80]=           
{
0x7C, 0x14, 0x14, 0x14, 0x08,//f0 р
0x38, 0x44, 0x44, 0x44, 0x28,//f1 с
0x04, 0x04, 0x7C, 0x04, 0x04,//f2 т
0x0C, 0x50, 0x50, 0x50, 0x3C,//f3 у
0x18, 0x24, 0x7C, 0x24, 0x18,//f4 ф
0x44, 0x28, 0x10, 0x28, 0x44,//f5 х
0x3C, 0x20, 0x20, 0x3C, 0x40,//f6 ц
0x1C, 0x20, 0x20, 0x20, 0x7C,//f7 ч
0x7C, 0x40, 0x7C, 0x40, 0x7C,//f8 ш
0x3C, 0x20, 0x3C, 0x20, 0x7C,//f9 щ
0x04, 0x7C, 0x48, 0x48, 0x30,//fa ъ
0x7C, 0x48, 0x48, 0x30, 0x7C,//fb ы
0x7C, 0x48, 0x48, 0x48, 0x30,//fc ь
0x28, 0x44, 0x54, 0x54, 0x38,//fd э
0x7C, 0x38, 0x44, 0x44, 0x38,//fe ю
0x48, 0x34, 0x14, 0x14, 0x7C,//ff я

}; 


void    lph_init(void);
void    video_mode(unsigned char mode);
void    lph_write_data(char byteforlph_data);
void    lph_gotoxy(int8 xlph, int8 ylph);
void    lph_erase_y(int8 ylph);
void    lph_erase_x(int8 xlph);
void    lph_printchar(int8 cvar);
void    table_to_lphlcd(void);
void    lph_clear_screen(void);
void    lph_clear_xy(int8 xlph, int8 ylph);
void    lph_print_uparrow(void);
void    lph_print_downarrow(void);
void    lph_print_leftarrow(void);
void    lph_print_rightarrow(void);
void    lph_print_degree(void);
void    lph_print_lowbatdegree(void);


  void video_mode(unsigned char mode)
   {
                                //1 -invert //0 -normal
   i2c_start();                             
   if(mode > 0)               
   {
    //78;00;20;0c
   i2c_write(0x78);i2c_write(0x00);i2c_write(0x20);i2c_write(0x0C);
   }
   else
   {
    //78;00;20;0c
   i2c_write(0x78);i2c_write(0x00);i2c_write(0x20);i2c_write(0x0D);
  }
   i2c_stop();
  }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void lph_init(void)
{
  output_low(res);
  delay_ms(500);
  output_high(res);
  output_float(PIN_C3);
  output_float(PIN_C4);
  i2c_start();
  i2c_write(0x78);
  i2c_write(0x00);
  i2c_write(0x31);
  i2c_write(0x14);
  i2c_write(0x06);
  i2c_write(0x30);
  i2c_write(0x11);
  i2c_write(0x05);
  i2c_write(0x31);
  i2c_write(0x80); //контраст
  i2c_write(0x0C);
  i2c_write(0x30);
  i2c_write(0x0C);
  i2c_write(0x40);
  i2c_write(0x80);
  i2c_stop();
  lph_clear_screen();
}

/////////////////////////////////////////////////////////////////////////////////
void lph_write_data(char byteforlph_data)
{
  i2c_start();
  i2c_write(0x78);
  i2c_write(0x40);
  i2c_write(byteforlph_data);
  i2c_stop();

//////////////////////////////////////////////////////////////////////////////////
void lph_gotoxy(int8 xlph, int8 ylph)      // Siemens LCD A50 Position cursor
{
   i2c_start();
   i2c_write(0x78);i2c_write(0x00);i2c_write(0x30);i2c_write(0x40|(ylph&0x07));i2c_write(0x80|(xlph&0x7f));
   i2c_stop();
}
//////////////////////////////////////////////////////////////////////////////////
void lph_erase_y(int8 ylph)
{
     int i;
  lph_gotoxy(0,ylph);
  i2c_start();
  i2c_write(0x78);
  i2c_write(0x40);
  for(i = 0; i < 98; i++)
  {
   i2c_write(0x00);
  } 
  i2c_stop();
}
//////////////////////////////////////////////////////////////////////////////////
void lph_erase_x(int8 xlph)
{

char column;

  for (column=0;column!=8;column++){
    lph_gotoxy(xlph,column);
    lph_write_data(0x00);
    lph_write_data(0x00);
    lph_write_data(0x00);
    lph_write_data(0x00);
    lph_write_data(0x00);
    lph_write_data(0x00);

  }
}
//////////////////////////////////////////////////////////////////////////////////

void lph_printchar(int8 cvar)               // Write 1 character to LCD
{
  charsel=cvar;
  table_to_lphlcd();
}
//////////////////////////////////////////////////////////////////////////////////
void table_to_lphlcd(void)   // extract ascii from tables & write to LCD
{
  if (charsel<0x20)return;
  if ((charsel<0xc0)&(charsel>0x7f))return;

  for (char_row=0;char_row<5;char_row++) {      // 5 bytes

    if (charsel<0x50){charpos=(((charsel&0xff)-0x20)*5);chardata=TABLE5[(charpos+char_row)];}            // use TABLE5
    else if (charsel<0x80){charpos=(((charsel&0xff)-0x50)*5);chardata=TABLE6[(charpos+char_row)];}            // use TABLE6
    else if (charsel<0xf0){charpos=(((charsel&0xff)-0xc0)*5);chardata=TABLE7[(charpos+char_row)];}            // use TABLE6
    else /*if (charsel<=0xff)*/{charpos=(((charsel&0xff)-0xf0)*5);chardata=TABLE8[(charpos+char_row)];}            // use TABLE6


    lph_write_data(chardata);      // send data to lph
  }

  lph_write_data(0x00);      //    1 byte (always blank)

}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void lph_clear_screen(void)
{
  lph_erase_y(0);
  lph_erase_y(1);
  lph_erase_y(2);
  lph_erase_y(3);
  lph_erase_y(4);
  lph_erase_y(5);
  lph_erase_y(6);
  lph_erase_y(7);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void lph_clear_xy(int8 xlph, int8 ylph)
{

  lph_gotoxy(xlph,ylph);
  lph_printchar(" ");


}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void lph_print_uparrow(void)
{
  lph_write_data(0x04);
  lph_write_data(0x02);
  lph_write_data(0x7f);
  lph_write_data(0x02);
  lph_write_data(0x04);
  lph_write_data(0x00);
}
//
void lph_print_downarrow(void)
{
  lph_write_data(0x10);
  lph_write_data(0x20);
  lph_write_data(0x7f);
  lph_write_data(0x20);
  lph_write_data(0x10);
  lph_write_data(0x00);
}
//
void lph_print_leftarrow(void)
{
  lph_write_data(0x08);
  lph_write_data(0x1c);
  lph_write_data(0x2a);
  lph_write_data(0x08);
  lph_write_data(0x08);
  lph_write_data(0xf8);
}
//
void lph_print_rightarrow(void)
{
  lph_write_data(0x08);
  lph_write_data(0x08);
  lph_write_data(0x2a);
  lph_write_data(0x1c);
  lph_write_data(0x08);
  lph_write_data(0x00);
}
//
void lph_print_degree(void)
{
  lph_write_data(0x00);
  lph_write_data(0x06);
  lph_write_data(0x09);
  lph_write_data(0x09);
  lph_write_data(0x06);
  lph_write_data(0x00);


}
//
void lph_print_lowbatdegree(void)
{
  lph_write_data(0x00);
  lph_write_data(0x06);
  lph_write_data(0x0f);
  lph_write_data(0x0f);
  lph_write_data(0x06);
  lph_write_data(0x00);

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
big-vl
 
Сообщения: 2
Зарегистрирован: 20 май 2014, 16:59

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron