Вывод текста на экран телевизора с помощью MAX7456

автор: Seny

 Для дачного терморегулятора отопления хотел реализовать возможность вывода данных на экран телевизора. Бегать в подвал к котлу не удобно да и зрение у родителей уже не то, ЖК 16*2 не самый читабельный экранчик. Так что на телевизоре , на мой взгляд, удобнее и информативнее. 

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

Это OSD (on screen display) монохромный

256 зарезервированных символов

TSSOP 28 – корпус

Два минуса цена и энергопотребление.

Вот моя отладочная схема (кликабельно).

 По схеме из даташит кварцевый резонатор должен быть 27 Мгц – так как я такой не нашел пришлось ставить из наличия 27.145 Мгц. С ним схема не завелась , пришлось добавить пару емкостей по 6 pf .  Дальше с электролитами на видео выходе Cout и Csag по схеме С26 и С27

 Толи у меня электролиты бракованные все, толи терпения не хватило подобрать оптимально но в итоге стабильно заработало только без конденсаторов на выходе.

Да и лапу ресет надо либо на RC цепочку повесить либо на свободную ногу меги.

 Управляется эта микросхема по SPI.

Порывшись в интернете нашел реализацию кода на Bascom.

http://www.evertdekker.com/Joomla/index.php?option=com_content&task=view&id=69&Itemid=84

 По ссылке выше исчерпывающее описание и код отлично прокомментирован.

 Прошилось в мегу16 без проблем и сразу заработало.

Теперь шрифты и символы. В памяти микросхемы уже имеются прошитые символы

Но нам нужен русский алфавит. Помогли ребята из 

http:// www.compcar.ru/forum/showthread.php?t=6064

огромное им спасибо.

 В статье из ссылки выше описано как добавлять свои символы в MAX. Берем Converter tool и конвертируем все символы в читаемый формат для баском.

У меня получился rus.bas отредактированный под русскую раскладку ASCII.

Sub Writecustomcharacter(byval Characters As Byte)

  Restore Customcharacter                                   ‘переходим к массиву

 Local Count As Byte

 For Count = 1 To Characters  ‘Количество символов, должно совпадать с символами в data

  Writereg Vm0 , &B01000100          ‘Disable osd

  Read Regdata                       ‘читаем первый байт символа в max7456

    Writereg Cmah , Regdata          ‘Запись в регистр

  For Lus = 0 To 53

       Writereg Cmal , Lus

       Read Regdata

  Print ” dannie simvola ” ; Regdata

       Writereg Cmdi , Regdata

  Next Lus

  Writereg Cmm , &HA0

  Waitms 200

 Next Count

  Writereg Vm0 , &B01001100          ‘enable osd

End Sub

Исходник позицируется как демо так что использует всего 130 символов из 256 возможных 

  If Tempbyte < 130 Then                                    ‘Character larger then 130 are controle characters  

Таблица символов max7456 начинается с 0 а таблица ascii с 32 так что берем ascii код символа отнимаем 32 и получаем номер символа в max.

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

Берем файл max7456_rus.bas раскомментируем строчки:

Call Writecustomcharacter(64) в начале кода и

$include “rus.bas” – в самом конце кода

А строчку Customcharacter: закомментируем.

 Теперь можно откомпилировать и прошивать контроллер. Произойдет следующее, из файла rus.bas в энергонезависимую память MAX7456 запишутся символы в ascii последовательности русской раскладки с 128 по 239 (80 по EF) символы. 

 Нам теперь не нужен $include “rus.bas” и Call Writecustomcharacter(64) их можно закомментировать. А Customcharacter: раскомментировать 

она еще пригодится для записи доп символов или пиктограмм.

С этого момента можно в строках Videotext “Можно писать по Русски ” , 8 , 2 писать в русской раскладке.

На экране 14 строк по 27 символов в строке

Есть еще 3 эфекта

1. Мерцание строки ($ и %)

2. Инверсия строки (& и *)

3. Строка с задним фоном.( ! и # )

Эти знаки необходимо поставить в начале и в конце строки.

Для запуска MAX 7456 вполне достаточно.

схема Splan70

SprinLayout5.1- платы для ЛУТ max7456 и atmega16

Даташит на max7456

Инструкция по конвертированию символов (google переводчик)

Фьюзы для ПониПрог

Исходный код Bascom

 Что касается atmega16, тактируется внешним кварцем, для связи установлен max232 .

Так как идет отладка и дальнейшее изучение max7456, допаян навесом tsop для реализации экранного меню .

 Фото показывать не буду есть небольшое видео.

 

P/S Не ожидал что приучить мегу к пульту будет так сложно. Оказалось что все пульты которые есть в наличии не rc5, так что если интересно спрашивайте.


Взято с: avrproject.ru


Категория: AVR
Метки:

Написать коментарий

*
= 4 + 8

Добавить изображение

Последние статьи