В процессе приобретения новых навыков и расширения сферы своих интересов, новоявленный специалист по встраиваемым системам, а попросту — разработчик схем на микроконтроллерах, сталкивается с необходимостью отображения большого количества разноплановой информации. Первые радостные впечатления при освоении алфавитно-символьных индикаторов на основе HD44780 и графических индикаторов WG12864A постепенно угасают, т.к. первые обладают лишь минимумом возможностей, а вторые, несмотря на их «продвинутость», обладают излишней громоздкостью и являются монохромными, да и цена на них тоже немаленькая.
Также и меня когда-то посетили такие мысли, и я стал искать альтернативу, пока не попался на глаза форум, где такие же радиолюбители рассматривали вопросы по использованию различных дисплеев от мобильных телефонов.
Когда-то, самым первым моим телефоном был Siemens A50, вторым — Siemens A60, и если первый ещё в здравом уме и доброй памяти, от второго остался лишь корпус и дисплей, который было решено приобщить к делу. Анализ данной проблемы показал, что в многочисленных любительских конструкциях хит-парад держат экраны от Nokia и от телефона Siemens S65, другим же дисплеям, которые ещё несложно найти (по сравнению с тем же Siemens S65) и применить для своих целей, уделено недостаточно внимания.
Являясь одно время владельцем 2-х телефонов Siemens, решил уделить внимание дисплеям этой некогда популярной фирмы. Основным критерием выбора типа дисплея стали: 1) дисплей должен быть цветным; 2) простота применения в электронных конструкциях; 3) доступность и относительная низкая стоимость.
После поиска и изучения информации о типе применяемого дисплея, способа его управления и анализа разных кодов была написана библиотека на С, полностью удовлетворяющая мои скромные запросы.
Итак, целью данной статьи является рассмотрение вопроса применения дисплея LPH8731-3C (контроллер EPSON S1D15G14), который применялся в телефонах Siemens A60, C60, М55, MC60, S55, и которые ещё не сложно найти на барахолках или в центрах ремонта мобильной связи. Контроллер, применяемый в данном дисплее, присутствует также в дисплее LPH 9116-1 (телефоны Siemens A75), из чего следует, что команды для работы с данным индикатором идентичны.
Вообще, в телефонах Siemens A60, C60, М55, MC60, S55 применялись три типа дисплея — LPH8731—3C, LM15SGFNZ07 (контроллер Hynix HM17CM4101) и реже — LM15SGFNZ04. Разрешение всех данных дисплеев составляет 101х80 пикселей, что, при использовании библиотеки символов разрешением 5х8 пикселей, даёт возможность выводить текстовую информацию на 10 строк по 16 символов.
Дисплеи LPH8731—3C и LM15SGFNZ07:
У всех дисплеев разные контроллеры, поэтому и библиотека для работы с ними будет отличаться.
Распиновка дисплея LPH8731—3C:
1 — CS – Chip Select. При установке в «0» контроллер дисплея принимает информацию;
2 — RESET – вывод для сброса контроллера;
3 — RS – вывод для определения типа передаваемых данных («0» — команда, «1» — данные);
4 — CLK – вывод тактового сигнала для передачи данных;
5 — DAT – вывод передачи данных;
6 — VDD – к источнику питания от +1.6V до +3.6V;
7 — GND – общий провод (земля);
8 — LED_1A – вывод питания подсветки;
9 — LED_К – вывод катодов светодиодов подсветки (к GND);
10 — LED_2A – вывод питания подсветки.
Сопряжение дисплея с микроконтроллером можно сделать следующим образом:
Для универсальности, свои дисплеи я оформляю в виде модулей, которые легко подключить напрямую к портам микроконтроллера. Немного громоздко, но, на мой взгляд, удобно.
Кому пришлась по душе такая конструкция, в архиве может найти чертёж печатной платы в формате PCB Layout.
Библиотека работы с LPH8731—3C разрабатывалась для работы с компилятором CVAVR и содержит следующие пользовательские функции:
1. void LCD_init ()
Инициализация дисплея.
2. void Put_Pixel (char x, char y, unsigned int color)
Функция вывода точки (пикселя). x и y – координаты экрана, где будет отображён пиксель цветом color.
3. void LCD_Putchar (char symbol, char x, char y, int t_color, int b_color, char zoom_width, char zoom_height, int rot)
Функция вывода одного символа ASCII-кода. Данная функция рассчитана на вывод символов размером 5х8 пикселей, библиотека которых находится в файле Symbols.h. symbol – выводимый на экран символ в ASCII-кодировке; x и y – начальная координата вывода символа; t_color – цвет пикселя; b_color – цвет фона; переменные zoom_width и zoom_height увеличивают символ на экране в указанное число раз; rot – угол поворота текста (0º , 90º, 180º, 270º).
4. void LCD_Putchar_Shadow (char symbol, char x, char y, int t_color, char zoom_width, char zoom_height, int rot)
То же, что и 3, лишь без цвета фона.
5. void LCD_Puts(char *str, int x, int y, int t_color, int b_color, char zoom_width, char zoom_height, int rot)
Функция вывода строки, расположенной в ram-памяти микроконтроллера. x и y — координаты пикселя начала вывода строки. .
6. void LCD_Puts_Shadow (char *str, int x, int y, int t_color, char zoom_width, char zoom_height, int rot)
То же, что и 5, лишь без цвета фона.
7. void LCD_Putsf(flash char *str, int x, int y, int t_color, int b_color, char zoom_width, char zoom_height, int rot)
Функция вывода строки, расположенной во flash-памяти микроконтроллера.
8. void LCD_Putsf_Shadow (flash char *str, int x, int y, int t_color, char zoom_width, char zoom_height, int rot)
То же, что и 7, лишь без цвета фона.
9. void LCD_FillScreen (unsigned int color)
Функция заливки экрана цветом color.
10. void LCD_Output_image (char x, char y, char width, char height, flash char *img, int rot)
Функция вывода картинки. x и y начальная позиция выводимого на экран изображения; width и height – ширина и высота изображения (в пикселях); *img – указатель на массив данных, составляющих изображение; rot – угол поворота изображения (0º , 90º, 180º, 270º). Данная функция предполагает, что массив данных изображения расположен во flash-памяти микроконтроллера. Для преобразования необходимого вам изображения в массив, содержащий цвет пикселей, можно воспользоваться программами Image2Lcd или Nokia Image Creator, которые несложно найти на просторах интернета. Единственное требование – направление вывода массива изображения должно выполняться слева-направо, сверху-вниз! При использовании 12-ти битной палитры, при преобразовании изображения в массив типа char, обязательно старший байт должен идти первым!
11. void LCD_DrawLine (char x1, char y1, char x2, char y2, int color)
Нарисовать линию. x1 и y1 – начальная позиция линии; x2 и y2 – конечная позиция линии.
12. void LCD_DrawRect (char x1, char y1, char width, char height, char size, int color)
Нарисовать рамку. size — толщина рамки.
13. void LCD_FillRect (char x1, char y1, char width, char height, int color);
Нарисовать прямоугольник.
14. void LCD_DrawCircle (char xcenter, char ycenter, char rad, int color);
Нарисовать окружность. rad – радиус окружности в пикселях.
15. void LCD_FillCircle (char xcenter, char ycenter, char rad, int color);
Нарисовать круг, заполненный цветом color.
16. void LCD_DrawTriangle (char x1, char y1, char x2, char y2, char x3, char y3, int color)
Нарисовать контуры треугольника.
17. void LCD_FillTriangle (char x1, char y1, char x2, char y2, char x3, char y3, int color)
Нарисовать треугольник, заполненный цветом color.
Дисплей LPH8731—3C даёт возможность работать с двумя цветовыми палитрами – 256 цветов и 4096 цветов. В первом случае цвет одного пикселя задаётся 8 битами, во втором — 12 битами.
В самом начале библиотеки, если объявлен макрос _8_BIT_COLOR, то цветовая палитра дисплея будет составлять 256 цветов, иначе — 4096 цветов. Макрос _GEOMETRICAL позволяет использовать функции вывода линии, рамки, прямоугольника и окружности.
Дисплей в составе работы COM-терминала:
Для тех, кто хочет выжать «все соки» из данного дисплея, для скачивания прилагается Datasheet на контроллер.
Почитать про азы управления данным индикатором можно в статье «Простенькие часики на MSP430«.
Версия библиотеки для LPH8731—3C обновлена до версии v 1.1.
Просьба обновить скачанные Вами файлы библиотеки для LPH8731—3C, т.к. в новой версии исправлены ошибки в функциях работы с 12-битной палитрой и расширен функционал, аналогично библиотеке для LPH9157-2.
Прикрепленные файлы:
- S1D15G14.pdf (732 Кб)
- Плата под ЛУТ.rar (20 Кб)
- LPH8731-3C (LPH9116) — v 1_1.rar (8 Кб)