Пятница, 04 марта 2011 19:32

Видеоадаптер на PIC18F46K20 Featured

Written by
Rate this item
(0 votes)

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

 

 

 

 

 

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

Можно посмотреть фото видеоадаптера , работающего в железе (данные передаются от "управляющего " МК PIC18F25K20)-  смотреть .

Описание  работы видеоадаптера .    

Данная конструкция  основана на микроконтроллере  PIC18F46K20. Этот  микроконтроллер выбран из-за его доступности (стоимость менее 100 рублей) и нужными техническими характеристики , необходимыми  для реализации данного проекта. Этот МК позволяет работать  при  тактовой частоте 64 MHz и имеет  размер ОЗУ 3936 байт, наличие необходимого количества портов,все  это дает возможность создать графическое изображение с разрешением 200х143. Для того что бы иметь полноценное цветное изображение необходимо иметь ОЗУ почти в восемь  раз больше .В этой конструкции применена функция  сдвигающего регистра , яркостной сигнал снимается с PortD,7 .

После копирования в PortD из ОЗУ байта данных регистр поочередно   сдвигается до нулевого  разряда  , в результате  один байт “несет“  информацию о  8 «пикселях» горизонтального разрешения. В одной активной строке задействовано 26 байт ОЗУ. Каждый первый байт несет информацию о цвете фона (первый полубайт) и цвете графики (второй полубайт)  . В связи с этим  цвет графики может изменяться только построчно , т.е. одна строка может быть только одного цвета ,кроме этого  можно выбрать цвет фона строки , группы  строк , или всего экрана. Для большинства конструкций этого в полнее достаточно.  Можно работать и в черно-белом режиме , для этого переделывать ни чего не надо , да и  схема упрощается , исключается часть элементов незадействованных при черно-белом изображении. Принцип работы видеоадаптера чем-то схож с  графическим индикатором, в него также можно передать данные для отображения , которые так и будут «крутиться» до очистки или замены другими данными. В видеоадаптере прошит шрифт 8х8 (включая русский), для вывода знака  необходимо от управляющего МК передать три байта –это адрес в местоположения на экране монитора (два байта)  и байт номера шрифта согласно таблице, в результате на экране монитора появится выбранный знак высотой 8 строк.

 

Таблица шрифта. рис.№1

 

Шрифт располагается в памяти программ 8 блоков по 256 байт , начиная с адреса 0100h .Это необходимо для удобства вывода текстовой информации , указав  адрес знака первого байта в последующем обращении увеличиваем на 1  регистр TBLPTRH и чтение происходит уже из следующего блока шрифта и так производится выборка  8 байт.

рис.№2

 

Схема видеоадаптера.

 

Распиновка  разъемов  Х2 и Х3 .

 

В микроконтроллере PIC18F46K20, видеосигнал для вывода на экран телевизора (монитора) формируется следующим образом:

 

  • С вывода RВ5 (sinx) снимаются строчные и кадровые синхроимпульсы, необходимые для синхронизации телевизионного приемника. На осциллографе или в Протеусе на этом выводе можно наблюдать такую же форму синхроимпульсом как и на   рисунке №3 .

 

Здесь показана форма синхроимпульсов  обоих полукадров  (полей). Всего 625 строк (кадр). Все временные интервалы синхроимпульсов соответствуют  ГОСТ 7845-72 .

Временные параметры видеосигнала приведены в таблице.

 

 

  • С выводов RE0,RE1,RA2  снимаются сигналы цветности фона , которые через  резисторы  R2, R3, R4 (регулировка уровня цвета фона) поступают на соответствующие ключи  микросхемы CD4066 (2), задача которой отключать цвет фона на время вывода графики .(иначе цвет фона будет смешиваться с цветом графики).
  • С выводов RA0,RA1,RA2 снимаются сигналы цветности графики (изображения) , которые поступают на управляющие выводы соответствующих ключей  CD4066 (1). С помощью резистора R6 (яркостной сигнал) можно регулировать уровень цвета графики.
  • Порт «С»  работает на вход ,получает данные от другого МК , для обновления ОЗУ видеоадаптера или вывода текстовой информации.
  • RB0,RB2,RB4 управляющие сигналы для обмена с другим МК.
  • Порт «Д» целиком задействован для яркостного сигнала (изображения выводимого на экран). Сигнал снимается с RD7. Работает по принципу сдвигающего регистра, из-за ограничения объема памяти ОЗУ.

Алгоритм работы видеоадаптера

При старте программы копируется заставка  из памяти данных (video) в область ОЗУ (видеопамять) начиная с адреса 0000Н , всего 3840 регистров. Далее программа  циклически формирует необходимые сигналы (видеосигнал), во время временных задержках производится обновление ОЗУ  и обмен данными с управляющим МК. Во время формирования активной части строки (видимой на экране монитора )из видеопамяти поочередно считывается байт данных  и копируется в PortD. В каждой строке первый байт информация о цвете фона и графики и  25 байта данных, разрешение строки за счет сдвига регистра получается 200 бит. Всего активных строк (видимых на экране телевизора) 143, т.е. разрешение получается 200х143.Смесь синхроимпульсов , сигналов цветности (R,G,B ) и яркостный (Y)  сигнал , поступают на кодер PAL . Если необходимости в цветном отображении графики нет , то можно взять черно-белый сигнал с разъема Х3 sinx и Y , соединив их вместе и подать на вход монитора, предварительно  отрегулировать уровни синхроимпульсов 0.3 вольта , по отношению к полному видеосигналу 1 вольт.

Обновление видеопамяти происходит по параллельному порту «С» , алгоритм обновления следующий:

  • Копируются FSR0L,FSR0H во временные  регистры для последующего восстановления .
  • Далее проверяется наличие данных для приема , если есть, то проверяется начало ли пакета , если начало, то принятый байт копируется в регистр FSR0L, указывающий младший байт адреса назначения.
  • Сообщаем о принятии первого байта и готовности приема следующего.
  • Проверяем наличие следующего байта , если есть копируем байт в FSR0H, указывающий  старший  байт адреса назначения.
  • Сообщаем о принятии второго байта и готовности принять байт данных.
  • Проверяем наличие байта данных , если есть копируем в видеопамять.
  • Подтверждаем о принятии пакета.
  • Восстанавливаем регистры FSR0L,FSR0H.

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

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

Во второй части  статья будет рассказано о подключении кодера PAL и пример работы с МК PIC18F25K20.

При копировании материала активная ссылка на источник обязательна!

Обсудить на форуме.

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Read 5066 times Last modified on Четверг, 11 сентября 2014 11:30

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

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