Страница 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;
поймал закономерность. Цвета отображаються правильно но! очень поплывшее изображение. куда копать дальше?
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);
сделайте так
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
Ну если ОЗУ девать некуда, то можно скопировать в массив часть экрана на которой предполагается рисовать текст, вот только при таком подходе свободная память закончится очень быстро. Её в АВР немного. Кроме того, когда начнете рисовать большие символы, ее может попросту не хватить даже на один такой массив.
Я еще понимаю такой подход на "взрослых" МК, где флеш-память медленная по сравнению с ядром, а то и вовсе внешняя, зато оперативки полно, здесь же программная память работает с той же скоростью, что и АЛУ. Поэтому проще по новой считывать из массива с фоновым изображением нужный участок и выводить на дисплей перед отрисовкой очередного символа, расчетов там немного.