Привет уважаемым мудрым котам. Ковыряю библиотеку для 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; } } }
_________________ Я всё-всё узнAю и стану профессором.
Да, ты прав, вначале младший бит, потому что вначале mask = 0x01. Потом маска сдвигается влево и передаётся второй бит и т.д.
Ну столько-то я понимаю, хоть и полный профан в С. Я не понял, так и должно быть?. И ещё. Зачем во всех циклах проверяется угол поворота экрана? Если проверку вынести в самое начало функции и установить ФЛАГ в зависимости от поворота (ещё 1 переменная) и потом вместо проверки на поворот просто AND ФЛАГ,- не будет ли быстрее работать? Вообще-то перекраиваю под ассемблер... (Профан же )
_________________ Я всё-всё узнAю и стану профессором.
Заголовок сообщения: Re: Дисплеи от мобильных телефонов- осцилограммы работы
Добавлено: Ср апр 20, 2016 10:52:00
Держит паяльник хвостом
Карма: 16
Рейтинг сообщений: 211
Зарегистрирован: Вс дек 02, 2012 16:58:33 Сообщений: 945 Откуда: от туда
Рейтинг сообщения:0
Учиться никогда не поздно. Я тоже посматриваю листинг ассемблера после компиляции, чтобы проверить, насколько оптимально написана программа, но первичным нужно делать си.
Просто учиться не хватает самого дорогого - времени . Писать на асме начал для Зайлоговского Z80, когда ни С ни тем более AVR небыло. Интуитивно чувствую, что делает программа на С, но сам что либо написать ПОКА не в силах. Потому с месяц назад и просил здесь помощи, но, видно, не дождусь . На свои вопросы ответов не получаю, наверно глупые те вопросы... Ковыряюсь дальше. Сам, всё только сам... Может и рожУ что. Спасибо, что вообще ответили!
_________________ Я всё-всё узнAю и стану профессором.
Привет котам, Запустил я свой LPH-9157-2. Всё какое-то время работало отлично, но потом стал замечать, что цвета пошли не те.. В общем, не гасится зелёный (горит вполнакала даже если вывожу чёрный), да и красный "подсвечивает". Красный еле светит. В итоге цвета искажены. Если даю инверсию (0х21) то Красный светит нормально (опять же вместе с зелёным). Это что - хана дисплею или таблица цветов сбилась? Если таблица (0х2D) - то что там должно быть? (там 128 байт) Команду 0х2D я не посылал. Питаю от 3,3V, входы - через делители.
_________________ Я всё-всё узнAю и стану профессором.
Заголовок сообщения: Re: Дисплеи от мобильных телефонов- осцилограммы работы
Добавлено: Пн июл 11, 2016 06:36:53
Кто знает, что случилось с сайтом, откуда я п@здил схемы сотовых, в частности подключение дисплеев? http://service-schematics.ru/ Месяц назад работал, а сейчас посылает на X.
Привет уважаемым мудрым котам. Ковыряю библиотеку для 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....." Я по поводу кода вывода символа. Циклы циклы циклы.
Доброго времени суток, уважаемые. Подскажите пожалуйста по поводу дисплея от Siemens A70. Подключал еще давно к атмеге, будто разобрался, заработал. Вот, сегодня решил подключить к STM32F103C8T6, библиотеки портировал. Питание STM-ки естественно от 3,3В, на дисплее ничего не выводится, контрастность на максимум поставил, если очень сильно присмотреться, то почти получается различить выводимую информацию, подаю на дисплей питание 5В - все отлично выводится. Есть ли у кого-нибудь опыт подрубания этого дисплея к 3,3В?
Нашел пару проектов по подключению этого дисплея к STM, брал инициализацию с них - та же проблема
Siemens A70.... фу какя древность... и ult их берете если работать с семенами надо брать от с65 с75-самые изученые и масовые кстати все семеновские диспы имеют питание 2,9в!!! подать на них 3в3 еще с болшим натягом можно ...но 5в это... уже полный беспредел ...а че мелочится давай уж сразу 230...
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Дисплеи от Siemens A70 очень удобные - паябельные и с встроенной подсветкой, работают без замечаний при напряжении питания от 2,7 до 3,6 вольт, это проверено, дальше просто не пробовал.
бгкот, спасибо за пример кода. к сожалению он не работает на моем дисплее. то ли он подпаленный, то ли контроллер глючный или немного не тот (не получается поменять адресацию, режим норм/инверсный). всем спасибо, просто стало скучно, хотел поиграться с этим дисплеем. ну, от 5В работает хорошо и то неплохо
зря ты на него 5в подаешь...это в 2раза от нормы! я понимаю что немцы живучие если ориг
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения