автор: 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 вполне достаточно.
SprinLayout5.1- платы для ЛУТ max7456 и atmega16
Инструкция по конвертированию символов (google переводчик)
Что касается atmega16, тактируется внешним кварцем, для связи установлен max232 .
Так как идет отладка и дальнейшее изучение max7456, допаян навесом tsop для реализации экранного меню .
Фото показывать не буду есть небольшое видео.
P/S Не ожидал что приучить мегу к пульту будет так сложно. Оказалось что все пульты которые есть в наличии не rc5, так что если интересно спрашивайте.
Последние статьи
- Лучшая практика проектирования при размещении компонентов печатной платы
- Android 6.0 на lancer X
- Простой усилитель мощности класса АВ своими руками.
- Двухтактный ультралинейный ламповый УНЧ на EL84 (6П14П).
- Люксметр на ATmega8 и цифровом датчике BH1750
- Контроллер для светодиодной ленты с ИК управлением
- Самодельный LED светильник на основе ИК датчика HC-SR501
- Простой усилитель низкой частоты на TDA7377 и NE5532
- Простейший звонок с двумя мелодиями
- LED Cube 8x8x8 на Arduino с RTC