Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

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

Ср апр 20, 2016 08:19:12

Привет уважаемым мудрым котам. Ковыряю библиотеку для LPH9157-2. Прошу помощи разобраться в принципе работы функции. Судя по тому, что маска сдвигается влево, шлём сначала младший бит? Или я не так понимаю?
Так надо или всёже надо со старшего? В таблице баиты (напр. для символа "А") такие:
0x7E, 0x11, 0x11, 0x11, 0x7E
Я ещё ничего в железе не делал, только разбираюсь. Запутался в конец. :?
Спойлер//=========
// Функция прорисовки символа на дисплее без цвета фона
//=========
void Send_Symbol_Shadow (unsigned char symbol, char x, char y, int t_color, char zoom_width, char zoom_height)
{
unsigned char temp_symbol, a, b, zw, zh, mask;
char m, n;
m=x;
n=y;
if (symbol>127) symbol-=64; //Убираем отсутствующую часть таблицы ASCII
for ( a = 0; a < 5; a++) //Перебираю 5 байт, составляющих символ
{
temp_symbol = font_5x8[symbol-32][a];
zw = 0;
while(zw != zoom_width) //Вывод байта выполняется zw раз
{
switch(rot)
{
case 0: case 180: n=y; break;
case 90: case 270: m=x; break;
}
mask=0x01;
for ( b = 0; b < 8; b++ ) //Цикл перебирания 8 бит байта
{
zh = 0; //в zoom_height раз увеличится высота символа
while(zh != zoom_height) //Вывод пикселя выполняется z раз
{
switch(rot)
{
case 0: case 180:
if (temp_symbol&mask)
{
Put_Pixel (m+zw, n+zh, t_color);
}
break;
case 90: case 270:
if (temp_symbol&mask)
{
Put_Pixel (m+zh, n+zw, t_color);
}
break; //Получить адрес начального пикселя по оси y для вывода очередного байта
}
zh++;
}
mask<<=1; //Смещаю содержимое mask на 1 бит влево;
switch(rot)
{
case 0: case 180: n=n+zoom_height; break;
case 90: case 270: m=m+zoom_height; break;
}
}
zw++;
}
switch(rot)
{
case 0: case 180: m=m+zoom_width; break;
case 90: case 270: n=n+zoom_width; break;
}
}
}

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

Ср апр 20, 2016 09:03:47

Да, ты прав, вначале младший бит, потому что вначале mask = 0x01. Потом маска сдвигается влево и передаётся второй бит и т.д.

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

Ср апр 20, 2016 09:16:25

GARMIN писал(а):Да, ты прав, вначале младший бит, потому что вначале mask = 0x01. Потом маска сдвигается влево и передаётся второй бит и т.д.

Ну столько-то я понимаю, хоть и полный профан в С. Я не понял, так и должно быть?. И ещё. Зачем во всех циклах проверяется угол поворота экрана? Если проверку вынести в самое начало функции и установить ФЛАГ в зависимости от поворота (ещё 1 переменная) и потом вместо проверки на поворот просто AND ФЛАГ,- не будет ли быстрее работать?
Вообще-то перекраиваю под ассемблер... (Профан же :))) )

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

Ср апр 20, 2016 10:52:00

Учиться никогда не поздно. :)
Я тоже посматриваю листинг ассемблера после компиляции, чтобы проверить, насколько оптимально написана программа, но первичным нужно делать си.

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

Ср апр 20, 2016 12:22:43

Просто учиться не хватает самого дорогого - времени :( . Писать на асме начал для Зайлоговского Z80, когда ни С ни тем более AVR небыло. Интуитивно чувствую, что делает программа на С, но сам что либо написать ПОКА не в силах. Потому с месяц назад и просил здесь помощи, но, видно, не дождусь :cry: . На свои вопросы ответов не получаю, наверно глупые те вопросы... Ковыряюсь дальше. Сам, всё только сам...
Может и рожУ что. Спасибо, что вообще ответили!

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

Ср май 18, 2016 10:43:42

Привет котам, Запустил я свой LPH-9157-2. Всё какое-то время работало отлично, но потом стал замечать, что цвета пошли не те.. В общем, не гасится зелёный (горит вполнакала даже если вывожу чёрный), да и красный "подсвечивает". Красный еле светит. В итоге цвета искажены. Если даю инверсию (0х21) то Красный светит нормально (опять же вместе с зелёным). Это что - хана дисплею или таблица цветов сбилась? Если таблица (0х2D) - то что там должно быть? (там 128 байт) Команду 0х2D я не посылал. Питаю от 3,3V, входы - через делители.

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

Пт июн 10, 2016 06:48:20

Есть дисплеи от Samsung C3300 (LMS241GF66) и Nokia 5600s-1(LS022...), попадалось ли что-нибудь на них?

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

Пт июн 10, 2016 22:31:38

По дисплеям LS022... я ранее приводил ссылку http://phreakerclub.com/464

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

Пн июл 11, 2016 06:36:53

Кто знает, что случилось с сайтом, откуда я п@здил схемы сотовых, в частности подключение дисплеев?
http://service-schematics.ru/
Месяц назад работал, а сейчас посылает на X.

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

Чт сен 22, 2016 08:39:39

Так работает сайт.

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

Сб сен 24, 2016 22:38:31

Изучаю даташит на SPFD54124B. В упор не вижу рекомендаций как его инициализировать. Ткните носом, пожалуйста. :(

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

Пт окт 07, 2016 23:07:15

dgrett писал(а):Привет уважаемым мудрым котам. Ковыряю библиотеку для LPH9157-2. Прошу помощи разобраться в принципе работы функции. Судя по тому, что маска сдвигается влево, шлём сначала младший бит? Или я не так понимаю?
Так надо или всёже надо со старшего? В таблице баиты (напр. для символа "А") такие:
0x7E, 0x11, 0x11, 0x11, 0x7E
Я ещё ничего в железе не делал, только разбираюсь. Запутался в конец. :?
Спойлер//=========
// Функция прорисовки символа на дисплее без цвета фона
//=========
void Send_Symbol_Shadow (unsigned char symbol, char x, char y, int t_color, char zoom_width, char zoom_height)
{
unsigned char temp_symbol, a, b, zw, zh, mask;
char m, n;
m=x;
n=y;
if (symbol>127) symbol-=64; //Убираем отсутствующую часть таблицы ASCII
for ( a = 0; a < 5; a++) //Перебираю 5 байт, составляющих символ
{
temp_symbol = font_5x8[symbol-32][a];
zw = 0;
while(zw != zoom_width) //Вывод байта выполняется zw раз
{
switch(rot)
{
case 0: case 180: n=y; break;
case 90: case 270: m=x; break;
}
mask=0x01;
for ( b = 0; b < 8; b++ ) //Цикл перебирания 8 бит байта
{
zh = 0; //в zoom_height раз увеличится высота символа
while(zh != zoom_height) //Вывод пикселя выполняется z раз
{
switch(rot)
{
case 0: case 180:
if (temp_symbol&mask)
{
Put_Pixel (m+zw, n+zh, t_color);
}
break;
case 90: case 270:
if (temp_symbol&mask)
{
Put_Pixel (m+zh, n+zw, t_color);
}
break; //Получить адрес начального пикселя по оси y для вывода очередного байта
}
zh++;
}
mask<<=1; //Смещаю содержимое mask на 1 бит влево;
switch(rot)
{
case 0: case 180: n=n+zoom_height; break;
case 90: case 270: m=m+zoom_height; break;
}
}
zw++;
}
switch(rot)
{
case 0: case 180: m=m+zoom_width; break;
case 90: case 270: n=n+zoom_width; break;
}
}
}



А еще можно покурить регистры "Partial....."
Я по поводу кода вывода символа. Циклы циклы циклы.

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

Ср ноя 16, 2016 09:49:09

у кого есть библиотеки под цветные дисплеи?
например такого плана TFT 5110
поделитесь!
https://ru.aliexpress.com/item/J34-F85- ... 5540d63412

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

Вт сен 19, 2017 16:59:17

Доброго времени суток, уважаемые. Подскажите пожалуйста по поводу дисплея от Siemens A70.
Подключал еще давно к атмеге, будто разобрался, заработал. Вот, сегодня решил подключить к STM32F103C8T6, библиотеки портировал. Питание STM-ки естественно от 3,3В, на дисплее ничего не выводится, контрастность на максимум поставил, если очень сильно присмотреться, то почти получается различить выводимую информацию, подаю на дисплей питание 5В - все отлично выводится. Есть ли у кого-нибудь опыт подрубания этого дисплея к 3,3В?

Нашел пару проектов по подключению этого дисплея к STM, брал инициализацию с них - та же проблема

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

Сб сен 23, 2017 11:05:03

Вот кусок из проэкта, отвечающий за инициализацию и установку контраста:

Код:
Proc LCD_Command(Command As Byte)
  LCD_DC = 0
  DelayCS 1
  LCD_CS = 0
  DelayCS 1
  SHOut LCD_SDA,LCD_CLK,MsbFirst,[Command]
  DelayCS 1
  LCD_CS = 1
EndProc

Proc LCD_Init()' Siemens A70  102x64 pix.
  LCD_Reset()
  LCD_Command($21)      'LCD EXTENDED COMMANDS
  LCD_Command(Contrast)      'SET LCD Vop (CONTRAST), init value = $C8
  LCD_Command($14)      'LCD BIAS MODE
  LCD_Command($0B)
  LCD_Command($05)      'SET TEMP COEFFICENT
  LCD_Command($20)      'LCD STANDARD COMMANDS
  LCD_Command($11)
  LCD_Command($0C)      'LCD IN NORMAL MODE
EndProc

Proc LCD_Contrast(Contrast As Byte)
  LCD_Command($21)
  LCD_Command(Contrast)      'SET CONTRAST
  LCD_Command($20)
  LCD_Command($11)
  LCD_Command($0C)
EndProc


А вот и как работает: https://www.youtube.com/watch?v=RM_3OMl8NG4

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

Сб сен 23, 2017 11:27:36

Siemens A70.... фу какя древность... и ult их берете если работать с семенами надо брать от с65 с75-самые изученые и масовые
кстати все семеновские диспы имеют питание 2,9в!!! подать на них 3в3 еще с болшим натягом можно ...но 5в это... :shock: :facepalm: уже полный беспредел ...а че мелочится давай уж сразу 230... :)))

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

Сб сен 23, 2017 19:41:53

Дисплеи от Siemens A70 очень удобные - паябельные и с встроенной подсветкой, работают без замечаний при напряжении питания от 2,7 до 3,6 вольт, это проверено, дальше просто не пробовал.

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

Сб сен 23, 2017 22:14:47

бгкот, спасибо за пример кода. к сожалению он не работает на моем дисплее. то ли он подпаленный, то ли контроллер глючный или немного не тот (не получается поменять адресацию, режим норм/инверсный). всем спасибо, просто стало скучно, хотел поиграться с этим дисплеем. ну, от 5В работает хорошо и то неплохо

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

Сб сен 23, 2017 22:20:13

зря ты на него 5в подаешь...это в 2раза от нормы! я понимаю что немцы живучие если ориг

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

Сб сен 23, 2017 23:11:21

Немцы здесь нипричем, это корейцам спасибо - "ориг" дисплей HP10534 сделали в Hyundai LCD Inc., но конечно 5в. это перебор.
Ответить