Четверг, 22 сентября 2011 04:44

Алгоритм вывода информации на экран телевизора Featured

Written by
Rate this item
(0 votes)

После выхода ряда статей на этом сайте, часто возникают вопросы, связанные с алгоритмом вывода информации на экран телевизора , что и побудило написать эту статью. Особенно многие встают в ступор, если требуется каким  то образом изменить программу под свои задачи .Здесь я попробую более подробно, на «пальцах», рассказать как сам алгоритм вывода информации , так и об адаптации своего проекта.Надеюсь, что это поможет при разработке устройств .

 

 

 

Пропустим структуру  видеосигнала , (т.к. ранее это обсуждалось. Если появятся вопросы , то всегда можно будет задать на форуме.) и сразу перейдем к рассмотрению алгоритма вывода информации на экран телевизора.

 Итак начнем.

 

Есть два основных варианта вывода информации на экран телевизора , это:

 

  • - наложения на проходящий видеосигнал
  • - формирование видеосигнала с отображением необходимой информации

 

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

 

 

Рассмотрим первый вариант:

 

 

Наложение графической информации на проходящий видеосигнал.

 

 

Для этого необходимо синхронизироваться с проходящим видеосигналом и в нужном месте вывести нашу графику. Как это сделать? Нужно из проходящего видеосигнала выделить вертикальные (кадровые) и горизонтальные (строчные) синхроимпульсы и, с их помощью, "привязать" нашу графику. С помощью вертикального импульса мы определяем начало кадра (полукадра) , с помощью горизонтального - момент начала вывода  информации .Проще говоря, мы ждем вертикального синхроимпульса , после которого просто считаем «строки», и в нужной строке начинаем выводить графику. Для выполнения этой задачи проще всего (на мой взгляд) использовать  специализированную микросхему LM1881 (что и реализовано в проекте «Термометр с выводом показаний на экран телевизора ») .

Ниже приведена структурная схема синхронизации вывода информации и наложения ее на проходящий видеосигнал.

 

 

 

На  вход микросхемы LM1881  подается проходящий видеосигнал  .Вход практически не вносит изменений  в видеосигнал и имеет высокую чувствительность. С выходов Vsync(3)  и Csync(1) снимаем  необходимые нам вертикальные и горизонтальные синхроимпульсы, которые подаем на микроконтроллер (в данном случае на входа  INT0, INT1 соответственно). Микроконтроллер, при появлении импульса  на входе INT0 (вертикальный синхроимпульс), прерывает выполнение основной программы и начинает отсчитывать синхроимпульсы, поступающие на вход INT1 (местоположение по вертикали ). При достижении необходимого по счету импульса (к примеру в выше упомянутой программе это 255 строк), делаем необходимую паузу (местоположение по горизонтали) и начинаем выводить графику. Следует отметить , что каждая строка повторяется дважды в каждом поле (полукадре) , это необходимо для правильного соотношения графики. В момент предполагаемого вывода графики включается «фон» .Для чего это нужно ? В первую очередь для ограничение уровня «белого». Проходящий видеосигнал в нужном нам месте «притемняется», и это дает нам возможность вывести графику на любом фоне видеосигнала. Как это выглядит в программном коде, можно посмотреть в статье «Термометр с выводом показаний на экран телевизора». Главная сложность состоит в том , что длина активной  части строки (то что мы видим на экране ) всего 52 мкс. В этой связи необходимо применить «скоростной» микроконтроллер , чтобы вывести как можно больше информации (разрешение). По этому и были применены МК PIC18f46k20  (видеоадаптер) ,  PIC18f25k20, позволяющие работать при тактовой частоте 64 MHz.

Думаю, с синхронизацией разобрались. Теперь главный, наверное, вопрос, который многие задают: «Как технически реализован вывод определенной информации ? » .

Если рассматривать опять же вышеупомянутый пример, то использован следующий алгоритм:  Побайтно  из ОЗУ  (видеопамять)  считывается  данные, всего 24 байта на каждую строку, каждый бит в байте «несет» информацию об одном «пикселе» и выводится на экран методом сдвига (черно-белый вариант). Попробую опять же своими словами. Область ОЗУ состоит из "0" и "1", когда выводится "0", то на экране телевизора черная точка , когда "1", то светлая точка, если в ОЗУ одни ноли, то и на экране соответственно ничего нет, а если одни единицы, то на экране наша графика будет выглядеть белым пятном. Можно сказать, что в данном случае у нас выводится растровое изображение. Для того, чтобы вывести текстовую информацию, необходимо подготовить и обработать программным образом текстовую информацию и после этого отправить ее в  в ОЗУ (видеопамять). Как это сделать, можно почитать в статье "ПП обработки символьной информации."

Что касается  цветного  варианта , то для отображения одного «пикселя» необходимо задействовать весь байт. Часть бит байта будет нести информацию о цвете, другая часть - о яркости видеосигнала (в этом случае можно задействовать ограниченную область экрана из-за нехватки памяти ОЗУ в микроконтроллере) и добавить кодер ПАЛ в Вашу конструкцию , можно даже этот. Для изготовления большинства  конструкции достаточно черно-белого варианта.

 

Формирование видеосигнала с отображением необходимой информации.

 

 

 

Как видно из схемы , в этом варианте не надо синхронизироваться с проходящим видеосигналом , но это не значит, что в этом варианте проще реализовать вывод информации . Наверное,  сложней, ведь кроме вывода информации, необходимо сформировать полный видеосигнал со всеми техническими параметрами согласно "ГОСТ" , иначе не каждый телевизор (монитор) сможет распознать наш видеосигнал . Алгоритм обработки тот же что и в первом варианте . Но если в первом варианте МК может свободно выполнять различные ПП (измерения, обработка и т.д.) , то в этом все ограничено временными интервалами .Более подробно в статье "Видеоадаптер на PIC18F46k20". Опять же все зависит от задач. И какой вариант использовать, решать программисту.

Адаптация своего проекта .

Допустим необходимо "адаптировать" свой проект, ранее использовавший в качестве визуального отображения, к примеру, LCD . Что для этого необходимо сделать? Неплохо, если данный проект работает на рекомендованных микроконтроллерах с производительностью 16 MIPS, если нет, то необходимо проект сначала  переделать под них.

 

 

 

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

 

Вопросы можно задать на форуме.

Read 2383 times Last modified on Среда, 03 сентября 2014 14:46

Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru