Вот сам код. Помогите хотя бы инициализацию сделать.
- Код: Выделить всё • Развернуть
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
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);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////