Дисплеи от мобильных телефонов- осцилограммы работы

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
nikityan
Встал на лапы
Сообщения: 91
Зарегистрирован: Сб авг 11, 2012 22:31:57

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение nikityan »

Спойлерchar r, g, b;
CS_LCD_RESET;

b=*pBitmap++;
g=*pBitmap++;
r=*pBitmap++;
nlcd_SendByte(DATA_LCD_MODE, r);
nlcd_SendByte(DATA_LCD_MODE, b);
nlcd_SendByte(DATA_LCD_MODE, g);

CS_LCD_SET;

поймал закономерность. Цвета отображаються правильно но! очень поплывшее изображение. куда копать дальше?

ABCD0006.JPG
(206.07 КБ) 756 скачиваний
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение drakon »

HHIMERA писал(а):Тип интерфейса, как правило, выбирается пинами конфигурации на кристалле и больше никак... Учитывая его размеры ................
АВР для графики сама по себе "тормознуто-унылое создание", а для 9-битного SPI - вообще УГ... :))
И всё это только ради экономии... одной ноги АВР??? :))) :)))


ну вообще я пишу и на ARM. самый ненадежный элемент в радиоэлектронике - это пайка. выбираться такой режим должен по идее командой, как в STE2007. или он определяет что колличество синхро-импульсов в посылке не четное и автоматом переключает режим.
nikityan
Встал на лапы
Сообщения: 91
Зарегистрирован: Сб авг 11, 2012 22:31:57

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение nikityan »

Помогите пожалуйста) Не получается вывод изображения в 12 битке. Прилагаю исходники.
Вложения
Project.rar
(48.28 КБ) 346 скачиваний
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение HHIMERA »

drakon писал(а):выбираться такой режим должен по идее командой, как в STE2007. или он определяет что колличество синхро-импульсов в посылке не четное и автоматом переключает режим.

Покажите, где такое написано... ))))
Никто никому ничего не должен и не обязан... всё зависит от производителя дисплея...
По поводу STE2007... читайте даташит...
2.3 Configuration Pins
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение drakon »

то у меня последнее предложение - вопрос :). так и не разобрался как включить 9 битный режим, где старший бит - указывает команда/данные.
Аватара пользователя
U235
Встал на лапы
Сообщения: 135
Зарегистрирован: Вт фев 21, 2012 20:42:26
Откуда: Санкт-Петербург, Россия, Земля

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение U235 »

nikityan писал(а):Помогите пожалуйста)

Ну так что бы помочь, нужно больше информации. Например, о формате картинки. А так гадание на кофейной гуще получается.
Попробуйте такой вариант функции, только не забудьте соответственно изменить прототип в начале файла.

Код: Выделить всё

void nlcd_Bitmap(unsigned char start_x, unsigned char start_y,  const char __flash *pBitmap) 
{
    int i;
    unsigned char h_size, v_size;

    h_size=*pBitmap++;
    v_size=*pBitmap;
    pBitmap+=4;

    nlcd_SendByte(CMD_LCD_MODE,0xDA);

    // Указать размеры рисунка в соответствии с этими пределами
    nlcd_SendByte(CMD_LCD_MODE,PASET);   // Команда адреса страницы RAM
    nlcd_SendByte(DATA_LCD_MODE,start_x);             // Старт
    nlcd_SendByte(DATA_LCD_MODE,start_x+h_size-1);    // Конец

    nlcd_SendByte(CMD_LCD_MODE,CASET);   // Команда адреса колонки RAM
    nlcd_SendByte(DATA_LCD_MODE,start_y);             // Старт
    nlcd_SendByte(DATA_LCD_MODE,start_y+v_size-1);    // Конец   
    nlcd_SendByte(CMD_LCD_MODE,RAMWR);   // Пишем в RAM

    i=h_size*v_size;
    i+=i>>1;
    while (i--)
    {
        CS_LCD_RESET;
        nlcd_SendByte(DATA_LCD_MODE, *pBitmap++);
        CS_LCD_SET;
    }
    nlcd_SendByte(CMD_LCD_MODE,NOP);
}

И при вызове функции вместо

Код: Выделить всё

nlcd_Bitmap (0, 0, 132 , 132, bitmap_data);

сделайте так

Код: Выделить всё

nlcd_Bitmap (0, 0,  bitmap_data);
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
nikityan
Встал на лапы
Сообщения: 91
Зарегистрирован: Сб авг 11, 2012 22:31:57

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение nikityan »

Спасибо, причина была в программе-кодировшике. Вот такая строчка 0x83, 0x83, 0x03, 0x03, 0x00, - в начале кода лишняя. Без неё цвета естественные. Изображение
У кого есть наработки с работой microSD флешкой?
Аватара пользователя
t0nich
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Ср фев 13, 2013 01:32:39

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение t0nich »

Здравствуйте!

Подскажите, как подключить внутренний 96x64 b/w или внешний 128x128@65k дисплей от Nokia 7200.
http://www.gsmarena.com/nokia_7200-567.php


у обоих дисплеев разъем не как обычно 10 или 24, а 20 pin.

Есть подозрения, что он дожен быть похож на 6100 lcd 128x128@65k.
Нет ли у кого мыслей как отловить распиновку сигналов нужных для spi ? И может ли она быть похожей на 24-pin Nokia ?
В инете ну совсем нет инфы по распиновке, а единственная схема 7200 не содержит инфы о разъеме.
Вложения
nokia7200_screens3.jpg
(188.6 КБ) 470 скачиваний
nokia7200_screens2.jpg
(209.37 КБ) 590 скачиваний
nokia7200_screens1.jpg
(221.73 КБ) 582 скачивания
Аватара пользователя
Stalkerk750
Родился
Сообщения: 10
Зарегистрирован: Вт мар 16, 2010 20:40:23
Откуда: Украина

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Stalkerk750 »

Всем привет!

Помогите мне, пожалуйста, с кодом вывода символа на LCD LPH88.

Код: Выделить всё

void lcd_putchar(byte x, byte y, byte ch, int16 txt_color)
{
   byte data_ch, mask;
   lcd_cmd(0x05, 0x0030); //Entry mode: hor++   
   lcd_set_window(x, y, x + 5 - 1, y + 8 - 1);
   
   if ( (ch >= 0x20) && (ch <= 0x7F) )
    {
        ch -= 32;
    }
    else if ( ch >= 0xC0 )
    {
        ch -= 96;
    }
    else
    {
        ch = 95;
    }

   for(byte i = 0; i < 5; i++)
   {
      data_ch = pgm_read_byte(&(smallFont[ch][i]));
      mask = 0x01;
      for(byte j = 0; j < 8; j++)
      {   
         if(data_ch & mask)
         {
            lcd_pixel(x + i, y + j, txt_color);
         }
         mask <<= 1;   
      }   
   }
   return;
}

Функция работает только не так как нужно. При выводе текста все нормально, а если выводить, например цифры в цикле то последующее число налаживается на первое и получается каша. Что мне сделать, чтобы каждое число выводилось отдельно?
Аватара пользователя
radiokot__
Мучитель микросхем
Сообщения: 454
Зарегистрирован: Вс янв 15, 2012 19:58:40

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение radiokot__ »

Stalkerk750 писал(а):Всем привет!

Помогите мне, пожалуйста, с кодом вывода символа на LCD LPH88.

Функция работает только не так как нужно. При выводе текста все нормально, а если выводить, например цифры в цикле то последующее число налаживается на первое и получается каша. Что мне сделать, чтобы каждое число выводилось отдельно?


Вот, разбирайся.
Вложения
LPH88xxxx.rar
(62.25 КБ) 361 скачивание
Ни один домашний кот незнает что он домашний.
Аватара пользователя
Stalkerk750
Родился
Сообщения: 10
Зарегистрирован: Вт мар 16, 2010 20:40:23
Откуда: Украина

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Stalkerk750 »

Спасибо за помощь, но код, который вы мне дали, выводит текст с фоном, а мне нужно чтобы без. Я решил эту задачу выводом попиксельно каждый символ, но как оказалось он выводится нормально только тогда когда функция не в цикле. Получается вывести нормально часы поверх картинки только при обновлении всего экрана, но это слишком долго, так как atmega32 слишком слаба.

Буду рад на любую помощь.)

Вот моя реализация функций:
Вложения
LCD_S65_LPH88_VER_1.0.rar
(66.35 КБ) 337 скачиваний
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение HHIMERA »

Ну так... вместо вывода пикселя фона инкрементируйте позицию пикселя...
Как-то так...

Код: Выделить всё

         if(data_ch & mask) 
         {
            lcd_pixel(x + i, y + j, txt_color);
         }
            else
              {
                 lcd_cursor(x + i + 1, y + j);
              }

"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Stalkerk750
Родился
Сообщения: 10
Зарегистрирован: Вт мар 16, 2010 20:40:23
Откуда: Украина

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Stalkerk750 »

Ну так... вместо вывода пикселя фона инкрементируйте позицию пикселя...
Как-то так...

Спасибо за пример, только он мне к сожалению не помог.(
Выходит та же каша - выводится 0 потом на него налаживается единица и т.д., с добавлением фона

Код: Выделить всё

else 
{
        lcd_pixel(x + i, y + j, bg_color);
}

все работает идеально.
Аватара пользователя
VDLab
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср июн 29, 2011 14:16:22
Откуда: __.DP.UA

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение VDLab »

Да просто уберите это

Код: Выделить всё

else
{
        lcd_pixel(x + i, y + j, bg_color);
}

и все, взамен ничего добавлять не нужно.
[color=#FFBF00]На любой вопрос даю любой ответ[/color]
Аватара пользователя
Stalkerk750
Родился
Сообщения: 10
Зарегистрирован: Вт мар 16, 2010 20:40:23
Откуда: Украина

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Stalkerk750 »

Так у меня было изначально - текст выводится, а в цикле текст или цифры накладываются друг на друга и в конечном итоге остается лишь черные квадратики.
Аватара пользователя
VDLab
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср июн 29, 2011 14:16:22
Откуда: __.DP.UA

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение VDLab »

Так вам в цикле на картину накладывать нужно?(просто изначальный вопрос не читал)
Тогда конечно так и будет. Нужно сначала затереть предыдущую цифру, а уж потом выводить следующую.
Сделать это можно тремя способами:
1. Перерисовать все по новой - самый простой и долгий способ.
2. Перерисовать часть фона размером с символ - чуть сложнее, и побыстрее первого варианта. В случае накладывающихся друг на друга текстов или фигур неприменим(без ухищрений).
3. Закрасить цветом фона только те участки дисплея, которые были изменены при первой отрисовке цифры - требует массы вычислений, однако, при достаточно быстром процессоре, самый быстрый вариант.
[color=#FFBF00]На любой вопрос даю любой ответ[/color]
Аватара пользователя
Stalkerk750
Родился
Сообщения: 10
Зарегистрирован: Вт мар 16, 2010 20:40:23
Откуда: Украина

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Stalkerk750 »

VDLab Спасибо огромное!) Есть с чем поработать.
А будет работать, если перерисовывать все данные в массив и потом вывести на экран?
И еще один вопрос - А в мобильном телефоне первый пункт работает?
Аватара пользователя
VDLab
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср июн 29, 2011 14:16:22
Откуда: __.DP.UA

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение VDLab »

Какие данные - фона?
Так они у Вас и так есть, сохранены в константном массиве, остается только вычислить адрес, откуда их брать.

А в мобильном все работает несколько по другому - там сначала в памяти отрисовывается, потом уже целиком выдается на дисплей. Но в памяти, подозреваю, что работает все способом, похожим на первый
[color=#FFBF00]На любой вопрос даю любой ответ[/color]
Аватара пользователя
Stalkerk750
Родился
Сообщения: 10
Зарегистрирован: Вт мар 16, 2010 20:40:23
Откуда: Украина

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Stalkerk750 »

Я имею введу пункт второй.
Если сделать массив, в котором будут храниться, и текст и картинка, а уже потом брать с него ту часть пикселей, с которой мне надо будет обновить экран.)
Аватара пользователя
VDLab
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср июн 29, 2011 14:16:22
Откуда: __.DP.UA

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение VDLab »

Ну если ОЗУ девать некуда, то можно скопировать в массив часть экрана на которой предполагается рисовать текст, вот только при таком подходе свободная память закончится очень быстро. Её в АВР немного. Кроме того, когда начнете рисовать большие символы, ее может попросту не хватить даже на один такой массив.
Я еще понимаю такой подход на "взрослых" МК, где флеш-память медленная по сравнению с ядром, а то и вовсе внешняя, зато оперативки полно, здесь же программная память работает с той же скоростью, что и АЛУ. Поэтому проще по новой считывать из массива с фоновым изображением нужный участок и выводить на дисплей перед отрисовкой очередного символа, расчетов там немного.
[color=#FFBF00]На любой вопрос даю любой ответ[/color]
Ответить

Вернуться в «Периферия»