В процессе приобретения новых навыков и расширения сферы своих интересов, новоявленный специалист по встраиваемым системам, а попросту - разработчик схем на микроконтроллерах, сталкивается с необходимостью отображения большого количества разноплановой информации. Первые радостные впечатления при освоении алфавитно-символьных индикаторов на основе HD44780 и графических индикаторов WG12864A постепенно угасают, т.к. первые обладают лишь минимумом возможностей, а вторые, несмотря на их "продвинутость", обладают излишней громоздкостью и являются монохромными, да и цена на них тоже немаленькая.
Также и меня когда-то посетили такие мысли, и я стал искать альтернативу, пока не попался на глаза форум, где такие же радиолюбители рассматривали вопросы по применению различных дисплеев от мобильных телефонов.
Когда-то, самым первым моим телефоном был Siemens A50, вторым - Siemens A60, и если первый ещё в здравом уме и доброй памяти, от второго остался только корпус и дисплей, который было решено приобщить к делу. Анализ данной проблемы показал, что в многочисленных любительских конструкциях хит-парад держат экраны от Nokia и от телефона Siemens S65, другим же дисплеям, которые ещё несложно найти (по сравнению с тем же Siemens S65) и применить для своих целей, уделено недостаточно внимания.
Являясь одно время владельцем двух телефонов 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 Кб)
Комментарии (44) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
https://www.dropbox.com/s/hd1by2q27dy1w3j/main.c
https://www.dropbox.com/s/i9j9hn13fgsshn6/IMG_20130401_171709.jpg
https://www.dropbox.com/s/v3o5bk51ub7a244/IMG_20130401_213849.jpg
[Автор]
[Автор]
Спасибо за ответ!
[Автор]
[Автор]
Номинальное напряжение стабилизации,В 3.3
Максимальное напряжение стабилизации,В 3.6
Ничего что у него максимальное напряжение немного выше нужного?
Все получилось, собрал на МК атмега8. Хочется заметить, что к МК стоит обязательно подключить внешний кварцевый резонатор на максимальную частоту, так как работа невероятно тормозит, на частоте 4 МГц ждать приходилось секунд 10 пока что-то нарисуется. Указанный мной выше стабилитрон подошел, проблем не возникло. Субъективно мне показалось, что резисторы на подсветку лучше взять поменьше, где нибудь на 200 Ом, так как экран светился слишком тускло.
Большое спасибо за столь масштабную разработку, данный код кажется очень и очень полезен как в отладке, так и в разработке готовых устройств!
[Автор]
SUT0..1 - 01
BODEN - 1
BODLEVEL - 1
BOOTRST - 1
BOOTSZ0..1 - 11
EESAVE - 1
CKOPT - 1
JTAGEN - 1
OCDEN - 1
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
Вот код - https://dl.dropboxusercontent.com/u/49697996/m55/M55_LCD_test.7z
Вот биты - https://dl.dropboxusercontent.com/u/49697996/m55/Screenshot%202014-04-01%2008.34.07.png
Заранее спасибо.
[Автор]
"Смещение влево" - это в комментариях почему-то не сохраняются сами значки!
Вот новый код - https://dl.dropboxusercontent.com/u/49697996/m55/M55_LCD_test_v2.7z
Вот новые версии кода
https://dl.dropboxusercontent.com/u/49697996/m55/M55_LCD_test_v3.7z
https://dl.dropboxusercontent.com/u/49697996/m55/M55_LCD_test_v4.7z
Может с подключением намутил? Вот к примеру RESET ногу я на + через резистор и на - через кондер подкинул.
https://dl.dropboxusercontent.com/u/49697996/m55/my/DSC_1602.JPG
https://dl.dropboxusercontent.com/u/49697996/m55/my/DSC_1603.JPG
https://dl.dropboxusercontent.com/u/49697996/m55/my/DSC_1604.JPG
https://dl.dropboxusercontent.com/u/49697996/m55/my/DSC_1606.JPG
Может здесь где ошибки есть?
[Автор]
Если надо вышлю модель и пример на Bascom, только, как?