Страница 26 из 73

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 11:49:36
спящий
Подскажите пожалуйста:
У меня получилось настроить чернобелый экран от Nokia 3110, а вот как с Цветными? где можно взять коды на включение экрана, на ввод символов и т.д. Перерыл почти весь инет, там все примеры показаны с библиотекой,причем на СИ(я умею только на асме),есть ли гденить пример без библеотек? И вообще с ним также работать как и с чернобелым? выложите код на асме)

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 12:35:08
HHIMERA
КАШАК писал(а):А под AVR ничего нет? :roll: В основном интересует подключение к МК.
Цеплять такой дисплей на АВР... печальное зрелище...
Распиновка есть на вертепе... только там в PDF'е две ноги перепутаны...
Смотрите отсюда и дальше...
http://vrtp.ru/index.php?showtopic=1120&st=1380

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 13:26:46
hd44780
HHIMERA писал(а):Цеплять такой дисплей на АВР... печальное зрелище...
А чё печальное? Я вот сам сижу, курю потихоньку AT91SAM7S256, но щупать разные дисплеи, которые я раньше и не нюхал, буду всё равно AVR-ом, который я знаю, как свои 5 пальцев .... Хоть это и "печальное зрелище" для Вас.
Ибо, если он не заработает, куда мне рыть - в неправильную работу с дисплеем и его командами, либо в кучу ARM-овских регистров и прибамбасов, в которых я ещё путём не разобрался :shock: ? А решать уравнение в одной неизвестной всегда проще, чем с двумя.

Да и перенести потом готовый, рабочий на 100% код работы с дисплеем на другой камень проще :)) . Переписал только функции работы с портом проца и всё ...

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 13:50:47
BigallS
спящий писал(а):Подскажите пожалуйста:
У меня получилось настроить чернобелый экран от Nokia 3110, ... И вообще с ним также работать как и с чернобелым? выложите код на асме)
Здесь есть http://forum.easyelectronics.ru/viewtop ... f=4&t=1760

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 14:08:06
КАШАК
HHIMERA писал(а):
КАШАК писал(а):А под AVR ничего нет? :roll: В основном интересует подключение к МК.
Цеплять такой дисплей на АВР... печальное зрелище...
Распиновка есть на вертепе... только там в PDF'е две ноги перепутаны...
Смотрите отсюда и дальше...
http://vrtp.ru/index.php?showtopic=1120&st=1380
Ну почему сразу печальное? Для статичной картинки вполне подойдет, например красивую шкалу сделать и т.п.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 14:12:31
HHIMERA
hd44780 писал(а):
HHIMERA писал(а):Цеплять такой дисплей на АВР... печальное зрелище...
А чё печальное?
Да всё печально...
И ваша попытка освоить AT91SAM7S256... тогда уже сразу, на К172 или К511 делать... или на микрухах обязательно должна сиять надпись "Atmel"??? :)))
И желание переписать готовый код под АВР, а потом обратно...

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 14:17:34
HHIMERA
КАШАК писал(а):Ну почему сразу печальное? Для статичной картинки вполне подойдет, например красивую шкалу сделать и т.п.
А хранить эту картинку где собираетесь???
Печалька...

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 14:37:48
спящий
BigallS писал(а):
спящий писал(а):Подскажите пожалуйста:
У меня получилось настроить чернобелый экран от Nokia 3110, ... И вообще с ним также работать как и с чернобелым? выложите код на асме)
Здесь есть http://forum.easyelectronics.ru/viewtop ... f=4&t=1760


как раз я с ним разобрался,а вот с цветными нефига немогу понять , они работают по такомуже принципу,или с ними работают только через библиотеки?

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 14:50:12
Satyr
hd44780 писал(а):
HHIMERA писал(а):Цеплять такой дисплей на АВР... печальное зрелище...
А чё печальное? Я вот сам сижу, курю потихоньку AT91SAM7S256,
Не трать время зря. Старье.
Перепаяй на ATSAM3Sxxx - по ногам встает вместо без изменений

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 14:51:34
Satyr
HHIMERA писал(а):или на микрухах обязательно должна сиять надпись "Atmel"??? :)))
Правильно. Еще лучше чтоб вобще без атмела -))

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 14:58:31
КАШАК
HHIMERA писал(а):
КАШАК писал(а):Ну почему сразу печальное? Для статичной картинки вполне подойдет, например красивую шкалу сделать и т.п.
А хранить эту картинку где собираетесь???
Печалька...
Хм. Надо подумать... Пока стоит задача запустить данный дисплей, а там уже посмотрим :)

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 15:01:29
Satyr
Ну запустишь, велико ли достижение ? Дальше то что ? :)))
Удел аврок - только моргать светодиодами, максимум парой-тройкой семисегментников

Бери stm32f2xx в 100 ногом - будет фигарить по экрану только в путь.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 15:07:58
КАШАК
Да уже давно собираюсь перейти на более производительные МК, вот с сентября и начну :) Кстати, где можно заказать ARM? А то сильно сомневаюсь, что найду их в магазинах...

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 15:46:33
hd44780
КАШАК писал(а):Кстати, где можно заказать ARM? А то сильно сомневаюсь, что найду их в магазинах...
На Украине - в Киеве. Может ещё в Харькове, но не уверен...
Satyr писал(а):Перепаяй на ATSAM3Sxxx - по ногам встает вместо без изменений
Если буду переходить, я всю плату переразведу. Видели б вы эту уродину - мой первый опыт в PCAD-е 7-летней давности :))) . 10 SMD деталей, а размер как 2 фотографии 10х15 :)) . К тому же ошибки есть, исправленные проволочками.

Зато РАБОТАЕТ!!!

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 16:24:31
Satyr
ну тогда вобще забудь про атмел :)))
хотя сейчас младшие atsam3'ы стоят чуть ли не дешевле младших stm32f1xxx, но, помоему, это временный демпинг всвязи с очень запоздалым выходом на рынок кортексов. во вторых, даже в Москве в розницу штука эта весьма экзотичная.

хотя у меня даже atsam4 лежит :)))

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 18:18:19
Кислый
харе оффтопить. на форуме достаточно тем для сравнения мк, и мест где их купить.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 21:31:01
CyberVad
КАШАК писал(а):Есть дисплей от Samsung s5230, думаю запустить его совместно с AVR. Только вот нигде не могу найти его инициализацию и подключение к микроконтроллеру. Тут писали, что уже запускали данный дисплей, может поделитесь схемой подключения и парой строчек кода? :) Да, сколько вольт подавать на подсветку и как соединить все катоды и аноды подсветки?

Заранее спасибо :))
По просьбам трудящихся написал опус "Я и S5230"

Я - и LCD S5230

Говорю сразу - я не претендую на истину в последней инстанции, я лишь делюсь тем что знаю (что постиг сам и прочитал в сети). Я сделал 2 конструкции с данным дисплеем, так что, как мне кажется, имею право поведать миру.

Дисплей (дисп) очень прост в управлении, питании, подсветке. Контроллер там S6D04D1
Я делал подсветку замкнув все аноды, замкнув все катоды и подав на них +5В через резистор примерно 33 ома (точнее зависит от напряжения питания подсветки и желаемой яркости. Ток особо не мерил, примерно 100мА.
Питается дисп от 3.3В Если от такого же напряжения питается и микроконтроллер (МК), то никакого согласования уровней не надо. Если же питание МК 5В - то я соединял выводы МК с выводами диспа через резисторы 1КОм. В таком случае из диспа ничего не прочитаешь, а мне это и не нужно было.
Подключение. Для этого нужны линии (все - выходы МК) CS, WR, DC, D0...D7. RD можно активно не использовать - но не забудьте его завести на +3.3В (я когда запускал первый подобный дисплей - это был Nok 6300 долго не мог понять - что ж он не работает?? Потом заметил что я забыл о RD и никуда его не подключил!)
Подключается дисп не самым удобным образом. Это надо или напаять разъём на плату и включать в него собственно дисп (но такой разъём негде взять кроме как отпаять со шлейфа которым дисп подключается к плате в телефоне) или взять оный шлейф и включать его в разъём на плате (как в телефоне). Но достать такой разъём (на плату) проблемка. Его можно или купить в каких-то магазинах, или в сервисном центре самсунг или как предлагал controller_m30 использовать разъёмы со шлейфа NOKIA 5300/5200. Он утверждает что они того же размера и того же шага. Ссылка: http://vrtp.ru/index.php?showtopic=1120&st=1440#. Там-же и фотка настоящего самсунгового шлейфа. В любом случае шаг очень мелкий - сделать такую плату не совсем просто.
Распиновка разъёма прилагается. Прим.: это вид на разъём на плату сверху, значит мы видим золотые контакты. Шлейф дисплея будет втыкаться в него и уходить вниз. То есть контакты 1 и 2 будут скраю шлейфа.
Теперь самое интересное - как им управлять.
Я использовал оба раза в горизонтальном виде, поэтому описываю как делал я для такой ориентации. Для другой надо кое-что изменить в инициализации дисплея и ещё по мелочи.

Данные посылаемые в дисп бывают данными и командами.

Как послать байт данных:
1. Линию DC ставим в 1 - это признак данных;
2. На шине анных ставим нужный байт;
3. Линию WR в ноль;
4. Линию WR в единицу. - байт записан
Например:
void LCDData(unsigned char data)
{
A_PORT |= 1 << DC; //Единица Признак данных
PORTC = data;
A_PORT &= ~(1 << WR); //Ноль
A_PORT |= 1 << WR; //Единица
}

Как послать байт команды: точно также, только линию DC в 0 - это признак команды.
void LCDCommand(unsigned char cmd)
{
A_PORT &= ~(1 << DC); //Ноль Признак команды
PORTC = cmd;
A_PORT &= ~(1 << WR); //Ноль
A_PORT |= 1 << WR; //Единица
}

Инициализция. Мне хватало следующих байтов:
void LCDInit(void)
{
_delay_ms(100);
//************* Reset LCD Driver ****************//
A_PORT &= ~(1 << Res); //Ноль
_delay_ms(10);
A_PORT |= 1 << Res; //Единица
_delay_ms(100);
D_PORT &= ~(1 << CS); //Ноль
//************* Start Initial Sequence **********//
LCDCommand(0x11); // SLPOUT
_delay_ms(100);

LCDCommand(0x3A);
LCDData(0x08);

LCDCommand(0x36); //Ориентация верх-низ дисплея
LCDData(0x14); //Шлейф внизу - 0,0 вверху справа
LCDCommand(0x2A);
LCDData(0x00);
LCDData(0x00);
LCDData(0x00);
LCDData(0xEF);

LCDCommand(0x2B);
LCDData(0x00);
LCDData(0x00);
LCDData(0x01);
LCDData(0x8F);

LCDCommand(0x29); // DISPON
_delay_ms(100);

}
Теперь на экране должен быть разноцветный "мусор"
Можно очень обрадоваться :music: и почитать теорию дальше.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 21:34:53
CyberVad
Продолжение.

Каждый пиксель (вернее троица пикселей - R G и B) задаётся тремя байтами записываемыми в диплей по адресу относящемуся к данному пикселю. 0 - яркость 0, 255 - яркость максимальна. Соответственно что бы какой-то пиксель засветился ярко-бело нужно записать 255 255 255 (я пишу не шестнадцатеричные числа а десятичные так как так проще оценить как выбрать нужное число: что будет посредине между 0x00 и 0xFF? наверное проще будет решать между 0 и 255 - это 127), что бы тёмно-зелёно - 0 127 0 и так далее.
Теперь - как записать байты именно туда куда нам надо?
Сначала определяем область вывода на дисплее и потом передаём данные сплошняком. Только надо позаботиться что бы байтов было не больше чем в определённой нами области. Меньше - можно, ничего страшного. То есть надо точно определить высоту области вывода, а ширину можно задать и с запасом.
Для этого команды
LCDCommand(0x2A); //Команда ориетации по Y координате
LCDData(0x0); //Данныеначала Y координат (0)
LCDData(0x0); //
LCDData(0); //Данные конца Y координат (240)
LCDData(240); //
//------------------------
LCDCommand(0x2B); //Команда ориетации по Х координате
LCDData(0x0); //Данныеначала X координат (0)
LCDData(0x0); //
LCDData(1); //Данные конца X координат (400)
LCDData(0x90); //

Что происходит при последующей посылке данных. Первый байт записывается в верхний левый угол нашей области (в нашем примере это верхний левый угол дисплея). Следующий - под ним. Следующий - под ним. И так до тех пор пока не будет достигнута нижняя граница области. Следующий байт разместится в следующем столбце на самой верхней строке. Следующий - под ним. И так далее и так далее.

Допустим дисп проинициализировался и на экране разноцветный "мусор". Что бы было красиво надо очистить экран. Для этого нужно во все адреса дисплея записать байты нужного цвета.
Давайте сделаем процедуру записывающую три байта нужного нам цвета
Например так:
void SDLCDcolor(unsigned char R, unsigned char G, unsigned char B)
{
A_PORT |= 1 << DC; //Единица Признак данных
PORTC = B;
A_PORT &= ~(1 << WR); //Ноль
A_PORT |= 1 << WR; //Единица
PORTC = G;
A_PORT &= ~(1 << WR); //Ноль
A_PORT |= 1 << WR; //Единица
PORTC = R;
A_PORT &= ~(1 << WR); //Ноль
A_PORT |= 1 << WR; //Единица
}
всё просто - вызываем процедуру с параметрами цвета нужного пикселя и байт за байтом записываем в дисплей.


Теперь собственно очистка дисплея:
void CLSLcd(void)
{
unsigned int i, k; // объявляем переменную i
D_PORT &= ~(1 << CS); //Ноль
//------------------------
LCDCommand(0x2A); //Команда ориетации по Y координате
LCDData(0x0); //Данныеначала Y координат (0)
LCDData(0x0); //
LCDData(0); //Данные конца Y координат (240)
LCDData(240); //
//------------------------
LCDCommand(0x2B); //Команда ориетации по Х координате
LCDData(0x0); //Данныеначала X координат (0)
LCDData(0x0); //
LCDData(1); //Данные конца X координат (400)
LCDData(0x90); //
//------------------------
LCDCommand(0x2C); //Команда записи в память дисплея

for (i = 1; i <= 401; i++)
{
for (k = 1; k <= 241; k++)
{
LCDData(255); // B
LCDData(255); // G
LCDData(255); // R
}
}

}

Теперь дисплей должен быть белым.
Внимательный читатель воскликнет: "Позвольте! А что же мы записываем сначала B потом G и последним R?" Отвечаю - мне лениво было исправлять такое положение дел - это лечится каким-то байтом отвечающим за цвета в процедуре инициализации. Кому будет не лениво - исправьте. А вообще это "на скорость не влияет".

Ух, я устал. :tea: В следующей статье постараюсь рассказать как я выводил символы на дисплей. Если нужно, конечно

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 21:45:38
Satyr
Можно проще - вешаем дисплей на МК с интерфейсом под SRAM, DC на адресную линию какую нибудь.
Далее пишем в один адрес в памяти - устанавливаем регистр в дисплее, пишем в другой - устанавлиаем в дисплее значение.
Копирование, заливку вобще по DMA можно организовать.

Получается все совсем примитивно, типа такого (DC на A18)

#define LCD_DATA *((uint16_t *) 0x60080000)
#define LCD_ADDR *((uint16_t *) 0x60000000)

void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue)
{
LCD_ADDR = LCD_Reg;
LCD_DATA = LCD_RegValue;
}

uint16_t LCD_ReadReg(uint8_t LCD_Reg)
{
LCD_ADDR = LCD_Reg;
return (LCD_DATA);
}

void LCD_WriteRAM_Prepare(void)
{
LCD_ADDR = LCD_REG_34;
}

inline void LCD_WriteRAM(uint16_t RGB_Code)
{
LCD_DATA = RGB_Code;
}

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Чт авг 16, 2012 22:03:42
Satyr
Еще раз напоминаю, что микрочип раздает в исходниках библиотеку с драйверам под большинство встречающихся в дисплеях контроллерах
http://www.microchip.com/pagehandler/en ... llers.html