категории | RSS

TFT-дисплей своими руками

В данной статье хотелось бы рассмотреть возможность вывода графики на дисплей от Nokia,не совсем стандартным способом без самого телефона.Зрелище ужасноеsmile:
картинка Но нам важен функционал устройства,по этому идем дальше.
Такой экран несложно найти в Интернет-магазинах или в палатках, где продают запчасти для мобильных телефонов (стоит он 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); //пишем в память
} ...
Приведена только часть кода. Все исходники можно найти в опять же прикрепленном файлеwinked. У данного дисплея - 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

Источник:Сайт Хакеров.smile

Прикрепленный файл: 2286_schemeinpdf.zip (43.28 кб)
Прикрепленный файл: 2286_src.rar (8.17 кб)

AJSmart
2009-01-04T03:10:31Z

Здесь находятся
всего 0. За сутки здесь было 0 человек

Комментарии 27

#7   sanya5700    

Чего только наш человек не придумает wink


0 ответить

#7   Tushkan20    

Это нужно для общего развития


0 ответить

#7   Canth    

Ты лучше скажи как сделать так если есть экран например от 3230 чтоб его можно было подключить к телику в видеовыход чтоб изображение с телевизора было на экране от 3230


0 ответить

#7   777Andrej    

Молодоцытакое придумать.


0 ответить

#7   andrei9799    

смысла в этом не вижу.


0 ответить

#7   asha66    

Фанатам-электротехникам пригодиться;)


0 ответить

#7   Bblkovo    

0_0 только кому эт надо?


0 ответить

Яндекс.Метрика