В данной статье хотелось бы рассмотреть возможность вывода графики на дисплей от Nokia,не совсем стандартным способом без самого телефона.Зрелище ужасное:
картинка Но нам важен функционал устройства,по этому идем дальше.
Такой экран несложно найти в Интернет-магазинах или в палатках, где продают запчасти для мобильных телефонов (стоит он 150-200 руб). Либо просто выдрать дисплей из старого телефона,который пылится без дела. Но если такой не нашёл - не беда. Изучив эту статью и исходные коды и поразмыслив головой, ты можешь запустить дисплеи от Nokia N95 или Sony PSP.
картинка
Если выбрать все SMD-шные детали , то можно получить реально небольшое устройство для вывода на экран с портом RS232 . Дисплей использовал: Nokia 6100 /6610 /7200 /7250 /3100 в рамке с коннектором.
Почему я выбрал такой дисплей - он удобен в пайке. Смотри на скриншоте распиновку.
картинка
Как видно, существует коннектор на дисплее к которому тяжело подпаяться (шаг 0.5мм). Поэтому лучше ищите дисплеи с такой распиновкой как здесь.
Распиновка дисплея:
VCC-Digital (3.3V)
RESET
SDATA
SCK
CS
VCC-Display (3.3V)
N/C
GND
LED GND
LED Vплюс (6-7V)
На рисунке вы можете видеть 3 дисплея:
картинка
На крайнем левом отсутствуют контакты для удобной пайки (только коннектор). На остальных контакты и коннектор присутствуют. Также важно, что встроенный контроллер у каждого экрана разный. Для этого дисплея существует 2 вида контроллеров:
PCF8833;
Epson S1 D15 G10.
У каждого контроллера своя система команд и, соответственно, софт для одного из них не будет работать для другого. Народ научился различать эти контроллеры по цвету коннектора: коричневый - Epson S1 D15 G10 , зелёный - PCF8833.
Но это не факт. Я советую прошить микроконтроллер для 2 видов дисплеев и посмотреть результат. К примеру на скриншоте все дисплеи с контроллером PCF8833 . Я писал исходный код микроконтроллера для PCF8833, но совершенно не сложно изменить его и для Epson`a!
Ну вроде с трудностями закончили, переходим к нашей схемке:
картинка
Которую во всей красе можно увидеть в прикрепленном файле.
Контроллер
Atmega32 , др. с объёмом памяти Flash > 16кб.
Преобразователь(CMOS/TTL)
MAX232A или аналог.
Преобразователь из 5 В в 3.3В
MC 33269 DT-3.3 или аналог.
Преобразователь из 5 В в 6.5В
MP1541
А остальное всё есть на схеме.
6.5 В нам нужно на подсветку (от 6 В до 7 В = max). Регулируется подстроечным R8. Также ВАЖНО - разделить землю у дисплея (т.е. землю (выводы 8 ,9 коннектора) напрямую присоединить к входу 2 разъёма источника питания) - это нужно для защиты от помех. Желательно поставить 2 различных преобразователя из 5 В в 3.3 В - один для питания контроллера и периферии дисплея, второй - для непосредственно дисплея (выходы 1 ,6 - соответственно коннектора дисплея).
После разбора с железкой и пайкой приступаем к программированию для Atmega.
Открываем WinAVR, создаём проект, будем писать на С. Я отказался от assembler`a потому что код стал реально громоздким.
#include
#include // для задержки
#include "lcd.h" // определения для PFC8833
#include "font.h" // определение шрифта
void sendCMD(byte cmd); // послать команду на PFC8833
void sendData(byte cmd); // послать байт данных
void InitLCD(void); // инициализация дисплея
void shiftBits(byte b); // перестановкой выводов портов эмулируем SPI
void setPixel(byte r,byte g,byte b); // пишет в видеопамять дисплея 3 байта (r,g,b) с заданным цветом
.....
void PointXY(int x,int y,byte r,byte g,byte b)
// рисует точку на экране с координатами x,y и цветом r,g,b
{ sendCMD(CASET); // column set (po x)
sendData(x); // команда CASET - задаёт область рисования по x, от byte1 до byte2
sendData(x); // у нас byte1 =byte2, так как рисуем точку
sendCMD(PASET); // page set (po y)
sendData(y); // аналогично для y
sendData(y);
sendCMD(RAMWR);
setPixel(r,g,b); //пишем в память
} ...
Приведена только часть кода. Все исходники можно найти в опять же прикрепленном файле. У данного дисплея - 4096 цветов, следовательно 12 бит на пиксел RRRRGGGGBBBB.
Так же я написал консольную прожку для компа для рисования (исходники также есть в архиве).
В итоге наш девайс способен выводить:
точку;
окружность;
линию;
прямоугольник (закрашенный/нет);
символ (первой половины ASCII (0 x00
изображение (до (132 на 132)).
С символами нет проблем, ты можешь запросто добавить любой шрифт. Давайте взглянем что вышло благодаря нашим стараниям:
картинка
картинка
картинка
картинка
картинка [img][/img]
Выводы:
Ну вот в итоге и запустили дисплей. А дальше? Можно:
- добавить поддержку системных шрифтов и поместить их не в память микроконтроллера, а посылать символы по байтам по RS232;
-воспроизвести анимацию;
-попробовать завести дисплеи покруче - от Iphone, N95, PSP.
Ссылки в тему:
обзор дисплея, исходники.
видео, картинки, простейшие исходники (от них я отталкивался)
Tutorial для Nokia6100 c использованием микроконтроллеров ARM
Datasheet Philips PFC8833.
Datasheet Epson s1 d15 g10
исходники для Epson s1 d15 g10
Источник:Сайт Хакеров.
Прикрепленный файл: 2286_schemeinpdf.zip (43.28 кб)
Прикрепленный файл: 2286_src.rar (8.17 кб)
Похожие файлы
Здесь находятся
всего 0. За сутки здесь было 0 человек
Комментарии 27
Я в шоке. Статья отличная. Врядли конечно в ближайшее время я ею воспользуюсь, но когда нибудь может пригодится. Автору большой респект!
Меня лично стандарт устраивает, и никакая виста не нужна...Слишком уж все сложно.Но главное зачем эти пляски с бубном?Скажу прямо:эта статья слишком научная, узкоспециализированная, и практическое применение статьи трудновыполнимо.Но наверное есть некоторое количество пытливых умов которым интересно ковыряние во внутренностях телефонов...Думаю, если бы автор написал цикл статей о начинке смарта(начиная с антены), то эта статья была бы более доступна для понимания рядового смартвода.
Я не понял в чем смысл этой статьи? Дисплей с одного тела в другой ставить?
0 ответить