Страница 39 из 44

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

Добавлено: Пт янв 18, 2013 21:26:32
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 КБ) 759 скачиваний

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

Добавлено: Вс янв 20, 2013 01:42:06
drakon
HHIMERA писал(а): Тип интерфейса, как правило, выбирается пинами конфигурации на кристалле и больше никак... Учитывая его размеры ................
АВР для графики сама по себе "тормознуто-унылое создание", а для 9-битного SPI - вообще УГ... :))
И всё это только ради экономии... одной ноги АВР??? :))) :)))
ну вообще я пишу и на ARM. самый ненадежный элемент в радиоэлектронике - это пайка. выбираться такой режим должен по идее командой, как в STE2007. или он определяет что колличество синхро-импульсов в посылке не четное и автоматом переключает режим.

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

Добавлено: Вс янв 20, 2013 02:41:45
nikityan
Помогите пожалуйста) Не получается вывод изображения в 12 битке. Прилагаю исходники.

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

Добавлено: Вс янв 20, 2013 04:30:53
HHIMERA
drakon писал(а): выбираться такой режим должен по идее командой, как в STE2007. или он определяет что колличество синхро-импульсов в посылке не четное и автоматом переключает режим.
Покажите, где такое написано... ))))
Никто никому ничего не должен и не обязан... всё зависит от производителя дисплея...
По поводу STE2007... читайте даташит...
2.3 Configuration Pins

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

Добавлено: Вс янв 20, 2013 20:35:47
drakon
то у меня последнее предложение - вопрос :). так и не разобрался как включить 9 битный режим, где старший бит - указывает команда/данные.

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

Добавлено: Пн янв 21, 2013 15:24:08
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);

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

Добавлено: Вт янв 22, 2013 01:11:24
nikityan
Спасибо, причина была в программе-кодировшике. Вот такая строчка 0x83, 0x83, 0x03, 0x03, 0x00, - в начале кода лишняя. Без неё цвета естественные. Изображение
У кого есть наработки с работой microSD флешкой?

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

Добавлено: Ср фев 13, 2013 01:47:28
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 не содержит инфы о разъеме.

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

Добавлено: Ср апр 10, 2013 21:19:59
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;
}
Функция работает только не так как нужно. При выводе текста все нормально, а если выводить, например цифры в цикле то последующее число налаживается на первое и получается каша. Что мне сделать, чтобы каждое число выводилось отдельно?

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

Добавлено: Чт апр 11, 2013 11:32:53
radiokot__
Stalkerk750 писал(а):Всем привет!

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

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

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

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

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

Вот моя реализация функций:

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

Добавлено: Чт апр 11, 2013 16:23:34
HHIMERA
Ну так... вместо вывода пикселя фона инкрементируйте позицию пикселя...
Как-то так...

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

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


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

Добавлено: Пт апр 12, 2013 11:29:28
Stalkerk750
Ну так... вместо вывода пикселя фона инкрементируйте позицию пикселя...
Как-то так...
Спасибо за пример, только он мне к сожалению не помог.(
Выходит та же каша - выводится 0 потом на него налаживается единица и т.д., с добавлением фона

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

else 
{
        lcd_pixel(x + i, y + j, bg_color);
}
все работает идеально.

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

Добавлено: Пт апр 12, 2013 12:16:21
VDLab
Да просто уберите это

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

else
{
        lcd_pixel(x + i, y + j, bg_color);
}
и все, взамен ничего добавлять не нужно.

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

Добавлено: Пт апр 12, 2013 13:58:47
Stalkerk750
Так у меня было изначально - текст выводится, а в цикле текст или цифры накладываются друг на друга и в конечном итоге остается лишь черные квадратики.

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

Добавлено: Пт апр 12, 2013 15:57:01
VDLab
Так вам в цикле на картину накладывать нужно?(просто изначальный вопрос не читал)
Тогда конечно так и будет. Нужно сначала затереть предыдущую цифру, а уж потом выводить следующую.
Сделать это можно тремя способами:
1. Перерисовать все по новой - самый простой и долгий способ.
2. Перерисовать часть фона размером с символ - чуть сложнее, и побыстрее первого варианта. В случае накладывающихся друг на друга текстов или фигур неприменим(без ухищрений).
3. Закрасить цветом фона только те участки дисплея, которые были изменены при первой отрисовке цифры - требует массы вычислений, однако, при достаточно быстром процессоре, самый быстрый вариант.

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

Добавлено: Пт апр 12, 2013 17:32:43
Stalkerk750
VDLab Спасибо огромное!) Есть с чем поработать.
А будет работать, если перерисовывать все данные в массив и потом вывести на экран?
И еще один вопрос - А в мобильном телефоне первый пункт работает?

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

Добавлено: Пт апр 12, 2013 18:10:08
VDLab
Какие данные - фона?
Так они у Вас и так есть, сохранены в константном массиве, остается только вычислить адрес, откуда их брать.

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

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

Добавлено: Пт апр 12, 2013 18:35:17
Stalkerk750
Я имею введу пункт второй.
Если сделать массив, в котором будут храниться, и текст и картинка, а уже потом брать с него ту часть пикселей, с которой мне надо будет обновить экран.)

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

Добавлено: Пт апр 12, 2013 19:27:05
VDLab
Ну если ОЗУ девать некуда, то можно скопировать в массив часть экрана на которой предполагается рисовать текст, вот только при таком подходе свободная память закончится очень быстро. Её в АВР немного. Кроме того, когда начнете рисовать большие символы, ее может попросту не хватить даже на один такой массив.
Я еще понимаю такой подход на "взрослых" МК, где флеш-память медленная по сравнению с ядром, а то и вовсе внешняя, зато оперативки полно, здесь же программная память работает с той же скоростью, что и АЛУ. Поэтому проще по новой считывать из массива с фоновым изображением нужный участок и выводить на дисплей перед отрисовкой очередного символа, расчетов там немного.