Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
12.10.2013, 13:47
|
|
Прохожий
Регистрация: 12.10.2013
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Помогите запустить дисплей от сотового LG B1300. На шлейфе надпись G112064-26.
Нашёл даташиты на телефон и контроллер (предполагаемый), разные исходники.
Проштудировал, вдоль и поперек, но запустить дисплей не могу, на экране пусто.
Сам телефон не включался, поэтому сигналы на шине посмотреть не получилось.
Подключаю дисплей к MSP430, все сигналы управления и шины протестировал, до дисплея доходят.
Есть подозрения, что все исходники, являются модификациями одного и того-же, и ориентированы на другой контроллер дисплея.
Так-что, кто пробовал, у кого получилось его запустить, подскажите, помогите.
|
|
|
|
12.10.2013, 16:16
|
|
Прохожий
Регистрация: 12.10.2013
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Спасибо, но обе эти ветки я читал и пробовал применить.
Но пока без результатно... ;(
|
|
|
|
12.10.2013, 16:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от SergKT
|
Спасибо, но обе эти ветки я читал и пробовал применить.
Но пока без результатно... ;(
|
Мысли о дохлости дисплея не посещали?
|
|
|
|
12.10.2013, 16:58
|
|
Прохожий
Регистрация: 12.10.2013
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от Saadov
|
Мысли о дохлости дисплея не посещали?
|
Такая вероятность конечно есть, но контроллер вроде-бы отвечает, данные я с него считываю. При разных вариантах алгоритма инициализации и опроса, разные но стабильные данные. Только понять, что эти данные означают не получается.
Кстати в даташите на контроллер написано, что младшие биты "состояния" фиксированы для идентификации, но у меня они тоже другие (иногда меняются).
Поэтому и зародилась мысль, что контроллер другой, не тот о котором говорилось в тех ветках.
|
|
|
|
12.10.2013, 18:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Ну даже если контроллер чутка другой, телефон один и тот же, соответственно код инициализации и простого вывода симола(текста) должны вам подходить. Контроллер должен отреагировать на минимальную инициализацию указанную в даташите и простейшую команду посланную вами
|
|
|
|
12.10.2013, 18:27
|
|
Прохожий
Регистрация: 12.10.2013
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от Saadov
|
Ну даже если контроллер чутка другой, телефон один и тот же, соответственно код инициализации и простого вывода симола(текста) должны вам подходить...
|
Что-то мне подсказывает, что это не совсем так...
Я уже имел опыт использования в своих поделках дисплея от Симменс S65.
Там в одном телефоне могли стоять дисплеи с тремя разными контроллерами (если память не изменяет), инициализация у них принципиально разная, на счет работы не знаю, подключал только один.
Я так понял, с этим B1300, видимо толку не будет, и долго возиться смысла нет, чтобы в результате получить маленький монохромный дисплей...
Был-бы рабочий телефон, можно было-бы попробовать отсканировать шину, и повозиться, а так...
Спасибо, вопрос снимаю.
|
|
|
|
18.10.2013, 09:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Тема избитая (ну да, нашим местным монстрам подавай уже FullHD. Скромнее надо быть, товарищи ![Весело](images/smilies/icon_laugh.gif) ), но мож кому еще надо?
Давеча мастерил одну поделку с дисплейчиком от Nokia 5110. Под это дело переделал библиотеку с CCS-форума.
PHP код:
|
///////////////////////////////////////////////////////////////////////////////////
/*
Graphic LCD Nokia 3310 (LPH7779) routines v5
CCS compiler
by Michel Bavin 2004 --- bavin@skynet.be --- http://users.skynet.be/bk317494/ ---
august 29, 2004
by Denis Kuznetsov 2011-2013
added:
- Chars 6x8 (for compability with pseudographic)
- Russian chars Table6, Table7
- Pseudographic characters (from Extended ASCII) Table4, Table5
Character '0x80' same as '0x80' from CP1252
Character '0x81' same as '0xA9' from CP1252
Character '0x82' same as '0xAB' from CP1252
Character '0x83' same as '0xBB' from CP1252
Character '0x84' same as '0xB0' from CP1252
Character '0x85' same as '0xB1' from CP1252
Character '0x86' same as '0xB5' from CP1252
Character '0x87' same as '0xB6' from CP1252
Character '0x88' same as '0xB9' from CP1251
Character '0x89' same as '0x24' from CP1252
Character '0x8A' uparrow
Character '0x8B' downarrow
Character '0x8C' leftarrow
Character '0x8D' rightarrow
Character '0x8E' degree
Character '0x8F' lowbat degree
Character '0x90' same as '0xB0' from Extended ASCII
Character '0x91' same as '0xB1' from Extended ASCII
Character '0x92' same as '0xB2' from Extended ASCII
Character '0x93' same as '0xB3' from Extended ASCII
Character '0x94' same as '0xB4' from Extended ASCII
Character '0x95' same as '0xB5' from Extended ASCII
Character '0x96' same as '0xB6' from Extended ASCII
Character '0x97' same as '0xB7' from Extended ASCII
Character '0x98' same as '0xB8' from Extended ASCII
Character '0x99' same as '0xB9' from Extended ASCII
Character '0x9A' same as '0xBA' from Extended ASCII
Character '0x9B' same as '0xBB' from Extended ASCII
Character '0x9C' same as '0xBC' from Extended ASCII
Character '0x9D' same as '0xBD' from Extended ASCII
Character '0x9E' same as '0xBE' from Extended ASCII
Character '0x9F' same as '0xBF' from Extended ASCII
Character '0xA0' same as '0xC0' from Extended ASCII
Character '0xA1' same as '0xC1' from Extended ASCII
Character '0xA2' same as '0xC2' from Extended ASCII
Character '0xA3' same as '0xC3' from Extended ASCII
Character '0xA4' same as '0xC4' from Extended ASCII
Character '0xA5' same as '0xC5' from Extended ASCII
Character '0xA6' same as '0xC6' from Extended ASCII
Character '0xA7' same as '0xC7' from Extended ASCII
Character '0xA8' same as '0xC8' from Extended ASCII
Character '0xA9' same as '0xC9' from Extended ASCII
Character '0xAA' same as '0xCA' from Extended ASCII
Character '0xAB' same as '0xCB' from Extended ASCII
Character '0xAC' same as '0xCC' from Extended ASCII
Character '0xAD' same as '0xCD' from Extended ASCII
Character '0xAE' same as '0xCE' from Extended ASCII
Character '0xAF' same as '0xCF' from Extended ASCII
Character '0xB0' same as '0xD0' from Extended ASCII
Character '0xB1' same as '0xD1' from Extended ASCII
Character '0xB2' same as '0xD2' from Extended ASCII
Character '0xB3' same as '0xD3' from Extended ASCII
Character '0xB4' same as '0xD4' from Extended ASCII
Character '0xB5' same as '0xD5' from Extended ASCII
Character '0xB6' same as '0xD6' from Extended ASCII
Character '0xB7' same as '0xD7' from Extended ASCII
Character '0xB8' same as '0xD8' from Extended ASCII
Character '0xB9' same as '0xD9' from Extended ASCII
Character '0xBA' same as '0xDA' from Extended ASCII
Character '0xBB' same as '0xDB' from Extended ASCII
Character '0xBC' same as '0xDC' from Extended ASCII
Character '0xBD' same as '0xDD' from Extended ASCII
Character '0xBE' same as '0xDE' from Extended ASCII
Character '0xBF' same as '0xDF' from Extended ASCII
- Print inverted chars LCD_printchar_inv
- Print big size chars
LCD_print2char(int8 cvar) - print double size chars
LCD_print2char_inv(int8 cvar) - print inverted double size chars
LCD_print4char(int8 cvar) - print quadruple size chars
LCD_print4char_inv(int8 cvar) - print inverted quadruple size chars
Height and width of char can be set in the parameters of the function
table_to_nokialcd:
table_to_nokialcd(char scale,char wide, int1 inv, char charsel)
Where:
scale - height of char (from 1 to 4)
wide - width of char (from 1 to 14)
inv - bit of inverted image (0 - not inverted)
For example:
Print inverted char height 3 and width 5
void LCD_printMYchar(int8 cvar)
{
table_to_nokialcd(3,5,1,cvar);
}
List of functions:
void LCD_init(void);
void LCD_write_command(char byteforLCD_command);
void LCD_write_data(char byteforLCD_data);
void LCD_write_dorc(char bytefornokia);
void LCD_gotoxy(int8 xnokia, int8 ynokia);
void LCD_erase_y(int8 ynokia);
void LCD_erase_x(int8 xnokia);
void LCD_printchar(int8 cvar);
void LCD_printchar_inv(int8 cvar);
void LCD_print2char(int8 cvar);
void LCD_print2char_inv(int8 cvar);
void LCD_print4char(int8 cvar);
void LCD_print4char_inv(int8 cvar);
void LCD_clean_ddram(void);
void table_to_nokialcd(char scale,int1 inv,char charsel);
void LCD_write_data_inv(char bytefornokia_data_inv);
void LCD_plot(int8 xnokia,int8 plot_value8);
void LCD_clear_screen(void);
void LCD_clear_xy(int8 xnokia, int8 ynokia);
void LCD_print_uparrow(void);
void LCD_print_downarrow(void);
void LCD_print_leftarrow(void);
void LCD_print_rightarrow(void);
void LCD_print_degree(void);
void LCD_print_lowbatdegree(void);
*/
// ex:
//
// ...
// LCD_init();
// ...
// LCD_gotoxy(0,0);
// printf(LCD_printchar,"test???");
// ...
/////////////////////////////////////////////////////////////////////////////////
char plot_value;
int32 plot_value32;
int32 plot_umsb,plot_lmsb,plot_ulsb,plot_llsb;
char col,row;
BYTE const TABLE1[192]=
{
0x00,0x00,0x00,0x00,0x00,0x00, // 20 space
0x00,0x00,0x5f,0x00,0x00,0x00, // 21 !
0x00,0x07,0x00,0x07,0x00,0x00, // 22 "
0x14,0x7f,0x14,0x7f,0x14,0x00, // 23 #
0x24,0x2a,0x7f,0x2a,0x12,0x00, // 24 $
0x23,0x13,0x08,0x64,0x62,0x00, // 25 %
0x36,0x49,0x55,0x22,0x50,0x00, // 26 &
0x00,0x05,0x03,0x00,0x00,0x00, // 27 '
0x00,0x1c,0x22,0x41,0x00,0x00, // 28 (
0x00,0x41,0x22,0x1c,0x00,0x00, // 29)
0x14,0x08,0x3e,0x08,0x14,0x00, // 2a *
0x08,0x08,0x3e,0x08,0x08,0x00, // 2b +
0x00,0x50,0x30,0x00,0x00,0x00, // 2c ,
0x08,0x08,0x08,0x08,0x08,0x00, // 2d -
0x00,0x60,0x60,0x00,0x00,0x00, // 2e .
0x20,0x10,0x08,0x04,0x02,0x00, // 2f /
0x3e,0x51,0x49,0x45,0x3e,0x00, // 30 0
0x00,0x42,0x7f,0x40,0x00,0x00, // 31 1
0x42,0x61,0x51,0x49,0x46,0x00, // 32 2
0x21,0x41,0x45,0x4b,0x31,0x00, // 33 3
0x18,0x14,0x12,0x7f,0x10,0x00, // 34 4
0x27,0x45,0x45,0x45,0x39,0x00, // 35 5
0x3c,0x4a,0x49,0x49,0x30,0x00, // 36 6
0x01,0x71,0x09,0x05,0x03,0x00, // 37 7
0x36,0x49,0x49,0x49,0x36,0x00, // 38 8
0x06,0x49,0x49,0x29,0x1e,0x00, // 39 9
0x00,0x36,0x36,0x00,0x00,0x00, // 3a :
0x00,0x56,0x36,0x00,0x00,0x00, // 3b ;
0x08,0x14,0x22,0x41,0x00,0x00, // 3c ‹
0x14,0x14,0x14,0x14,0x14,0x00, // 3d =
0x00,0x41,0x22,0x14,0x08,0x00, // 3e ›
0x02,0x01,0x51,0x09,0x06,0x00 // 3f ?
};
BYTE const TABLE2[192]=
{
0x32,0x49,0x79,0x41,0x3e,0x00, // 40 @
0x7e,0x11,0x11,0x11,0x7e,0x00, // 41 A
0x7f,0x49,0x49,0x49,0x36,0x00, // 42 B
0x3e,0x41,0x41,0x41,0x22,0x00, // 43 C
0x7f,0x41,0x41,0x22,0x1c,0x00, // 44 D
0x7f,0x49,0x49,0x49,0x41,0x00, // 45 E
0x7f,0x09,0x09,0x09,0x01,0x00, // 46 F
0x3e,0x41,0x49,0x49,0x7a,0x00, // 47 G
0x7f,0x08,0x08,0x08,0x7f,0x00, // 48 H
0x00,0x41,0x7f,0x41,0x00,0x00, // 49 I
0x20,0x40,0x41,0x3f,0x01,0x00, // 4a J
0x7f,0x08,0x14,0x22,0x41,0x00, // 4b K
0x7f,0x40,0x40,0x40,0x40,0x00, // 4c L
0x7f,0x02,0x0c,0x02,0x7f,0x00, // 4d M
0x7f,0x04,0x08,0x10,0x7f,0x00, // 4e N
0x3e,0x41,0x41,0x41,0x3e,0x00, // 4f O
0x7f,0x09,0x09,0x09,0x06,0x00, // 50 P
0x3e,0x41,0x51,0x21,0x5e,0x00, // 51 Q
0x7f,0x09,0x19,0x29,0x46,0x00, // 52 R
0x46,0x49,0x49,0x49,0x31,0x00, // 53 S
0x01,0x01,0x7f,0x01,0x01,0x00, // 54 T
0x3f,0x40,0x40,0x40,0x3f,0x00, // 55 U
0x1f,0x20,0x40,0x20,0x1f,0x00, // 56 V
0x3f,0x40,0x38,0x40,0x3f,0x00, // 57 W
0x63,0x14,0x08,0x14,0x63,0x00, // 58 X
0x07,0x08,0x70,0x08,0x07,0x00, // 59 Y
0x61,0x51,0x49,0x45,0x43,0x00, // 5a Z
0x00,0x7f,0x41,0x41,0x00,0x00, // 5b [
0x02,0x04,0x08,0x10,0x20,0x00, // 5c
0x00,0x41,0x41,0x7f,0x00,0x00, // 5d
0x06,0x09,0x09,0x06,0x00,0x00, // 5e
0x40,0x40,0x40,0x40,0x40,0x00 // 5f
};
BYTE const TABLE3[192]=
{
0x00,0x01,0x02,0x04,0x00,0x00, // 60
0x20,0x54,0x54,0x54,0x78,0x00, // 61 a
0x7f,0x48,0x44,0x44,0x38,0x00, // 62 b
0x38,0x44,0x44,0x44,0x20,0x00, // 63 c
0x38,0x44,0x44,0x48,0x7f,0x00, // 64 d
0x38,0x54,0x54,0x54,0x18,0x00, // 65 e
0x08,0x7e,0x09,0x01,0x02,0x00, // 66 f
0x0c,0x52,0x52,0x52,0x3e,0x00, // 67 g
0x7f,0x08,0x04,0x04,0x78,0x00, // 68 h
0x00,0x44,0x7d,0x40,0x00,0x00, // 69 i
0x20,0x40,0x44,0x3d,0x00,0x00, // 6a j
0x7f,0x10,0x28,0x44,0x00,0x00, // 6b k
0x00,0x41,0x7f,0x40,0x00,0x00, // 6c l
0x7c,0x04,0x18,0x04,0x78,0x00, // 6d m
0x7c,0x08,0x04,0x04,0x78,0x00, // 6e n
0x38,0x44,0x44,0x44,0x38,0x00 // 6f o
0x7c,0x14,0x14,0x14,0x08,0x00, // 70 p
0x08,0x14,0x14,0x18,0x7c,0x00, // 71 q
0x7c,0x08,0x04,0x04,0x08,0x00, // 72 r
0x48,0x54,0x54,0x54,0x20,0x00, // 73 s
0x04,0x3f,0x44,0x40,0x20,0x00, // 74 t
0x3c,0x40,0x40,0x20,0x7c,0x00, // 75 u
0x1c,0x20,0x40,0x20,0x1c,0x00, // 76 v
0x3c,0x40,0x30,0x40,0x3c,0x00, // 77 w
0x44,0x28,0x10,0x28,0x44,0x00, // 78 x
0x0c,0x50,0x50,0x50,0x3c,0x00, // 79 y
0x44,0x64,0x54,0x4c,0x44,0x00, // 7a z
0x00,0x08,0x36,0x41,0x00,0x00, // 7b
0x00,0x00,0x7f,0x00,0x00,0x00, // 7c
0x00,0x41,0x36,0x08,0x00,0x00, // 7d
0x10,0x08,0x08,0x10,0x08,0x00, // 7e
0x78,0x46,0x41,0x46,0x78,0x00 // 7f
};
BYTE const TABLE4[192]= //!!!!!!!!!!!!
{
0x28,0x7E,0xA9,0x89,0x42,0x00,
0x1E,0x21,0x2D,0x33,0x21,0x1E,
0x10,0x28,0x54,0x28,0x44,0x00,
0x44,0x28,0x54,0x28,0x10,0x00,
0x00,0x04,0x0A,0x04,0x00,0x00,
0x88,0x88,0xBE,0x88,0x88,0x00,
0xFE,0x20,0x20,0x1E,0x20,0x00,
0x0C,0x1E,0xFE,0x02,0xFE,0x00,
0xFE,0x18,0x30,0xFE,0x00,0x06,
0x00,0x48,0xD4,0x56,0x24,0x00,
0x04,0x02,0x7f,0x02,0x04,0x00,
0x10,0x20,0x7f,0x20,0x10,0x00,
0x08,0x1c,0x2a,0x08,0x08,0xf8,
0x08,0x08,0x2a,0x1c,0x08,0x00,
0x00,0x06,0x09,0x09,0x06,0x00,
0x00,0x06,0x0f,0x0f,0x06,0x00,
0x49,0x00,0x24,0x00,0x92,0x00,
0x49,0x92,0x49,0x92,0x49,0x92,
0x55,0xAA,0x55,0xAA,0x55,0xAA,
0x00,0x00,0xFF,0xFF,0x00,0x00,
0x24,0x24,0xFF,0xFF,0x00,0x00,
0x24,0x24,0xFF,0xFF,0x00,0x00,
0x18,0xFF,0x00,0x00,0xFF,0x00,
0x18,0xF8,0x18,0x18,0xF8,0x00,
0x24,0x24,0xFC,0xFC,0x00,0x00,
0x24,0xE7,0x00,0x00,0xFF,0x00,
0x00,0xFF,0x00,0x00,0xFF,0x00,
0x24,0xE4,0x04,0x04,0xFC,0x00,
0x24,0x27,0x20,0x20,0x3F,0x00,
0x18,0x1F,0x18,0x18,0x1F,0x00,
0x24,0x24,0x3F,0x3F,0x00,0x00,
0x18,0x18,0xF8,0xF8,0x00,0x00
};
BYTE const TABLE5[192]= //!!!!!!!!!!!!
{
0x00,0x00,0x1F,0x1F,0x18,0x18,
0x18,0x18,0x1F,0x1F,0x18,0x18,
0x18,0x18,0xF8,0xF8,0x18,0x18,
0x00,0x00,0xFF,0xFF,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0xFF,0xFF,0x18,0x18,
0x00,0x00,0xFF,0xFF,0x24,0x24,
0x00,0xFF,0x00,0x00,0xFF,0x18,
0x00,0x3F,0x20,0x20,0x27,0x24,
0x00,0xFC,0x04,0x04,0xE4,0x24,
0x24,0x27,0x24,0x24,0x27,0x24,
0x24,0xE4,0x04,0x04,0xE4,0x24,
0x00,0xFF,0x00,0x00,0xE7,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0xE7,0x00,0x00,0xE7,0x24,
0x24,0x24,0x27,0x27,0x24,0x24,
0x18,0x1F,0x18,0x18,0x1F,0x18,
0x24,0x24,0xE4,0xE4,0x24,0x24,
0x18,0xF8,0x18,0x18,0xF8,0x18,
0x00,0x1F,0x18,0x18,0x1F,0x18,
0x00,0x00,0x3F,0x3F,0x24,0x24,
0x00,0x00,0xFC,0xFC,0x24,0x24,
0x00,0xF8,0x18,0x18,0xF8,0x18,
0x18,0xFF,0x18,0x18,0xFF,0x18,
0x24,0x24,0xFF,0xFF,0x24,0x24,
0x18,0x18,0x1F,0x1F,0x00,0x00,
0x00,0x00,0xF8,0xF8,0x18,0x18,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F
};
BYTE const TABLE6[192]=
{
0x7E,0x11,0x11,0x11,0x7E,0x00, //C0А
0x7F,0x49,0x49,0x49,0x31,0x00, //C1Б
0x7F,0x49,0x49,0x49,0x36,0x00, //C2В
0x7F,0x01,0x01,0x01,0x03,0x00, //C3Г
0x60,0x3E,0x21,0x21,0x7F,0x00, //C4Д
0x7F,0x49,0x49,0x49,0x41,0x00, //C5Е
0x77,0x08,0x7F,0x08,0x77,0x00, //C6Ж
0x22,0x41,0x49,0x49,0x36,0x00, //C7З
0x7F,0x10,0x08,0x04,0x7F,0x00, //C8И
0x7F,0x10,0x09,0x04,0x7F,0x00, //C9И
0x7F,0x08,0x14,0x22,0x41,0x00, //CAК
0x40,0x3E,0x01,0x01,0x7F,0x00, //CBЛ
0x7F,0x02,0x0C,0x02,0x7F,0x00, //CCМ
0x7F,0x08,0x08,0x08,0x7F,0x00, //CDН
0x3E,0x41,0x41,0x41,0x3E,0x00, //CEО
0x7F,0x01,0x01,0x01,0x7F,0x00, //CFП
0x7F,0x09,0x09,0x09,0x06,0x00, //D0Р
0x3E,0x41,0x41,0x41,0x22,0x00, //D1С
0x01,0x01,0x7F,0x01,0x01,0x00, //D2Т
0x27,0x48,0x48,0x48,0x3F,0x00, //D3У
0x1E,0x21,0x7F,0x21,0x1E,0x00, //D4Ф
0x63,0x14,0x08,0x14,0x63,0x00, //D5Х
0x3F,0x20,0x20,0x3F,0x60,0x00, //D6Ц
0x07,0x08,0x08,0x08,0x7F,0x00, //D7Ч
0x7F,0x40,0x7F,0x40,0x7F,0x00, //D8Ш
0x3F,0x20,0x3F,0x20,0x7F,0x00, //D9Щ
0x01,0x7F,0x48,0x48,0x30,0x00, //DAЪ
0x7F,0x48,0x30,0x00,0x7F,0x00, //DBЫ
0x00,0x7F,0x48,0x48,0x30,0x00, //DCЬ
0x22,0x41,0x49,0x49,0x3E,0x00, //DDЭ
0x7F,0x08,0x3E,0x41,0x3E,0x00, //DEЮ
0x46,0x29,0x19,0x09,0x7F,0x00 //DFЯ
};
BYTE const TABLE7[192]=
{
0x20,0x54,0x54,0x54,0x78,0x00, //E0а
0x3C,0x4A,0x4A,0x4A,0x30,0x00, //E1б
0x7C,0x54,0x54,0x28,0x00,0x00, //E2в
0x7C,0x04,0x04,0x04,0x04,0x00, //E3г
0x60,0x38,0x24,0x24,0x7C,0x00, //E4д
0x38,0x54,0x54,0x54,0x18,0x00, //E5е
0x6C,0x10,0x7C,0x10,0x6C,0x00, //E6ж
0x00,0x44,0x54,0x54,0x28,0x00, //E7з
0x7C,0x20,0x10,0x08,0x7C,0x00, //E8и
0x7C,0x21,0x12,0x09,0x7C,0x00, //E9й
0x7C,0x10,0x28,0x44,0x00,0x00, //EAк
0x40,0x38,0x04,0x04,0x7C,0x00, //EBл
0x7C,0x08,0x10,0x08,0x7C,0x00, //ECм
0x7C,0x10,0x10,0x10,0x7C,0x00, //EDн
0x38,0x44,0x44,0x44,0x38,0x00, //EEо
0x7C,0x04,0x04,0x04,0x7C,0x00, //EFп
0x7C,0x14,0x14,0x14,0x08,0x00, //F0р
0x38,0x44,0x44,0x44,0x00,0x00, //F1с
0x04,0x04,0x7C,0x04,0x04,0x00, //F2т
0x0C,0x50,0x50,0x50,0x3C,0x00, //F3у
0x08,0x14,0x7C,0x14,0x08,0x00, //F4ф
0x44,0x28,0x10,0x28,0x44,0x00, //F5х
0x3C,0x20,0x20,0x3C,0x60,0x00, //F6ц
0x0C,0x10,0x10,0x10,0x7C,0x00, //F7ч
0x7C,0x40,0x7C,0x40,0x7C,0x00, //F8ш
0x3C,0x20,0x3C,0x20,0x7C,0x00, //F9щ
0x04,0x7C,0x50,0x50,0x20,0x00, //FAъ
0x7C,0x50,0x20,0x00,0x7C,0x00, //FBы
0x00,0x7C,0x50,0x50,0x20,0x00, //FCь
0x28,0x44,0x54,0x54,0x38,0x00, //FDэ
0x7C,0x10,0x38,0x44,0x38,0x00, //FEю
0x48,0x54,0x34,0x14,0x7C,0x00 //FFя
};
//
void nokia_init(void);
void nokia_write_command(char bytefornokia_command);
void nokia_write_data(char bytefornokia_data);
void nokia_write_dorc(char bytefornokia);
void nokia_gotoxy(int8 xnokia, int8 ynokia);
void nokia_erase_y(int8 ynokia);
void nokia_erase_x(int8 xnokia);
void nokia_printchar(int8 cvar);
void nokia_printchar_inv(int8 cvar);
void nokia_clean_ddram(void);
void table_to_nokialcd(void);
void table_to_nokialcd_inv(void);
void nokia_plot(int8 xnokia,int8 plot_value8);
void nokia_write_data_inv(char bytefornokia_data_inv);
void nokia_clear_screen(void);
void nokia_clear_xy(int8 xnokia, int8 ynokia);
void nokia_print_uparrow(void);
void nokia_print_downarrow(void);
void nokia_print_leftarrow(void);
void nokia_print_rightarrow(void);
void nokia_print_degree(void);
void nokia_print_lowbatdegree(void);
//////////////////////////////////////////////////////////////////////////////////////
void LCD_init(void)
{
output_high(DC); // bytes are stored in the display data ram,
//address counter, incremented automatically
output_high(CS); // chip disabled
output_low(RST); // reset chip during 250ms
delay_ms(10); // works with less.....
output_high(RST);
LCD_write_command(0x21); // set extins extended instruction set
LCD_write_command(0xba); // Vop v1: 0xc8 (for 3V)
// v2: 0xa0 (for 3V)
// v3: 0xc2 (2v6-5v)
LCD_write_command(0x04); // bias
LCD_write_command(0x14);
LCD_write_command(0x0c); // mod control normal change
LCD_write_command(0x20); // horizontal mode from left to right, X
//axe are incremented automatically ,
// 0x22 for vertical addressing ,back on
// normal instruction set too
// LCD_clean_ddram(); // reset DDRAM, otherwise the lcd is
// blurred with random pixels
LCD_write_command(0x0c); // mod control normal change
}
//////////////////////////////////////////////////////////////////////////////////////
void LCD_clean_ddram(void)
{
LCD_gotoxy(0,0); // 84*6=504 clear LCD
for (unsigned int16 ddram=900;ddram›0;ddram--)
LCD_write_data(0x00);
}
void LCD_write_command(char byteforLCD_command)
{
output_low(DC); // byte is a command it is read with the eight
// SCLK pulse
output_low(CS); // chip enabled
LCD_write_dorc(byteforLCD_command);
output_high(CS); // chip disabled
}
void LCD_write_data(char byteforLCD_data)
{
output_high(DC);
output_low(CS); // chip enabled
LCD_write_dorc(byteforLCD_data);
output_high(CS); // chip disabled
}
void LCD_write_dorc(char bytefornokia) // serial write data or
// command subroutine
{
char caa;
for (caa=8;caa›0;caa--)
{
output_low(SCLK);
output_bit(SDA,shift_left(&bytefornokia,1,0));
output_high(SCLK);
}
}
void LCD_gotoxy(int8 xnokia, int8 ynokia) // Nokia LCD 3310 Position cursor
{
col = xnokia;
row = ynokia;
LCD_write_command(0x40|((ynokia)&0x07)); // Y axe initialisation: 0100 0yyy
LCD_write_command(0x80|(xnokia&0x7f)); // X axe initialisation: 1xxx xxxx
}
void LCD_erase_y(int8 ynokia)
{
LCD_gotoxy(0,ynokia);
for(char i=0;i‹14;i++)
LCD_printchar(" ");
}
void LCD_erase_x(int8 xnokia)
{
char column;
for (column=0;column!=6;column++)
{
LCD_gotoxy(xnokia,column);
LCD_write_data(0x00);
LCD_write_data(0x00);
LCD_write_data(0x00);
LCD_write_data(0x00);
LCD_write_data(0x00);
LCD_write_data(0x00);
}
}
void LCD_printchar(int8 cvar) // Write 1 character to LCD
{
table_to_nokialcd(1,1,0,cvar);
}
void LCD_printchar_inv(int8 cvar) // Write 1 character to LCD
{
table_to_nokialcd(1,1,1,cvar);
}
void LCD_print2char(int8 cvar) // Write 1 big size character to LCD
{
table_to_nokialcd(2,2,0,cvar);
}
void LCD_print2char_inv(int8 cvar) // Write 1 big size character to LCD
{
table_to_nokialcd(2,2,1,cvar);
}
void LCD_print3char(int8 cvar) // Write 1 big size character to LCD
{
table_to_nokialcd(3,3,0,cvar);
}
void LCD_print3char_inv(int8 cvar) // Write 1 big size character to LCD
{
table_to_nokialcd(3,3,1,cvar);
}
void LCD_print4char(int8 cvar) // Write 1 very big size character to LCD
{
table_to_nokialcd(4,4,0,cvar);
}
void LCD_print4char_inv(int8 cvar) // Write 1 very big size character to LCD
{
table_to_nokialcd(4,4,1,cvar);
}
void LCD_print42char(int8 cvar) // Write 1 very big size character to LCD
{
table_to_nokialcd(4,2,0,cvar);
}
void table_to_nokialcd(char scale,char wide, int1 inv, char charsel)
// extract ascii from tables & write to LCD
{
char charpos, chardata,char_row;
if (charsel‹0x20)
return;
for (char_row=0;char_row‹6;char_row++)
{
if (charsel‹0x40)
{
charpos=(((charsel&0xff)-0x20)*6);
chardata=TABLE1[(charpos+char_row)];
} // use TABLE1
else if ((charsel›0x3f) && (charsel‹0x60))
{
charpos=(((charsel&0xff)-0x40)*6);
chardata=TABLE2[(charpos+char_row)];
} // use TABLE2
else if ((charsel›0x5f) && (charsel‹0x80))
{
charpos=(((charsel&0xff)-0x60)*6);
chardata=TABLE3[(charpos+char_row)];
} // use TABLE3
else if ((charsel›0x7f) && (charsel‹0xA0))
{
charpos=(((charsel&0xff)-0x80)*6);
chardata=TABLE4[(charpos+char_row)];
} // use TABLE4
else if ((charsel›0x9f) && (charsel‹0xC0))
{
charpos=(((charsel&0xff)-0xA0)*6);
chardata=TABLE5[(charpos+char_row)];
} // use TABLE5
else if ((charsel›0xbf) && (charsel‹0xE0))
{
charpos=(((charsel&0xff)-0xC0)*6);
chardata=TABLE6[(charpos+char_row)];
} // use TABLE6
else if (charsel›0xdf)
{
charpos=(((charsel&0xff)-0xE0)*6);
chardata=TABLE7[(charpos+char_row)];
} // use TABLE7
if(inv)
chardata ^= 0xFF;
if(scale › 1)
{
uint32_t mask = 0;
if(scale == 2)
mask = 0x03;
if(scale == 3)
mask = 0x07;
if(scale == 4)
mask = 0x0F;
uint32_t data2disp = 0;
for(char k=0;k‹8;k++)
data2disp += ((chardata ›› k) & 1) * (mask ‹‹ (k * scale));
data2disp ‹‹= (scale / 2);
if(inv)
data2disp |= (scale / 2);
for(char i=0;i‹scale;i++)
{
LCD_write_command(0x40|((row+i)&0x07));
LCD_write_command(0x80|(col+char_row*wide&0x7f));
for(char j=0;j‹wide;j++)
LCD_write_data(data2disp ›› (i * 8));
}
}
else
LCD_write_data(chardata); // send data to nokia
}
col += 6 * wide;
}
void LCD_plot(int8 xnokia,int8 plot_value8)
{
char i;
plot_value32=0;
// plot_value32|=1; // unremark this if you want dotgraph
// instead of bargraph
for (i=0;i!=plot_value8;i++)
{
plot_value32|=1; // remark this if you want dotgraph
//instead of bargraph
plot_value32‹‹=1;
}
plot_value32|=2; // bottom line is always filled
plot_llsb=(plot_value32&0xff);
plot_ulsb=((plot_value32››8)&0xff);
plot_lmsb=((plot_value32››16)&0xff);
plot_umsb=((plot_value32››24)&0xff);
LCD_gotoxy(xnokia,1);
LCD_write_data_inv(plot_umsb);
LCD_gotoxy(xnokia,2);
LCD_write_data_inv(plot_lmsb);
LCD_gotoxy(xnokia,3);
LCD_write_data_inv(plot_ulsb);
LCD_gotoxy(xnokia,4);
LCD_write_data_inv(plot_llsb);
}
void LCD_write_data_inv(char byteforLCD_data_inv)
{
char caa;
output_high(DC);
output_low(CS); // chip enabled
for (caa=8;caa›0;caa--)
{
output_low(SCLK);
delay_us(2);
if ((byteforLCD_data_inv&0x01)==0)
output_low(SDA);
else
output_high(SDA);
output_high(SCLK);
byteforLCD_data_inv=byteforLCD_data_inv››1;
}
output_high(CS); // chip disabled
}
void LCD_clear_screen(void)
{
LCD_erase_y(0);
LCD_erase_y(1);
LCD_erase_y(2);
LCD_erase_y(3);
LCD_erase_y(4);
LCD_erase_y(5);
}
void LCD_clear_xy(int8 xnokia, int8 ynokia)
{
LCD_gotoxy(xnokia,ynokia);
LCD_printchar(" ");
}
void LCD_print_uparrow(void)
{
LCD_printchar(0x8A);
}
void LCD_print_downarrow(void)
{
LCD_printchar(0x8B);
}
void LCD_print_leftarrow(void)
{
LCD_printchar(0x8C);
}
void LCD_print_rightarrow(void)
{
LCD_printchar(0x8D);
}
void LCD_print_degree(void)
{
LCD_printchar(0x8E);
}
void LCD_print_lowbatdegree(void)
{
LCD_printchar(0x8F);
}
|
Для упрощения жизни - знакогенератор (или как там его обозвать). Простенький. Кто боится макросов в экселе, можно отключить ![Весело](images/smilies/icon_laugh.gif) Не смертельно. Он просто красивости добавляет :-P
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
Последний раз редактировалось DK; 18.10.2013 в 10:23.
Причина: Упс... мелкий косяк :-) Косяк поправил, добавил знакогенератор
|
|
|
Эти 4 пользователя(ей) сказали Спасибо DK за это сообщение:
|
|
|
31.01.2014, 16:59
|
|
Временная регистрация
Регистрация: 18.04.2011
Адрес: Russia
Сообщений: 51
Сказал спасибо: 7
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Библиотека не полностью, нет функций output_high, output_low, output_bit и объявлений некоторых define port(CS,DC....)
Последний раз редактировалось BigallS; 31.01.2014 в 17:14.
|
|
|
|
01.02.2014, 22:36
|
|
Прописка
Регистрация: 16.01.2007
Адрес: Astana KZ
Сообщений: 243
Сказал спасибо: 48
Сказали Спасибо 38 раз(а) в 32 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Для дисплея от 1616 нокии есть код для пика с софтовым SPI ?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:16.
|
|