ТВ терминал на базе микроконтроллера AVR
Vassilis Serasidis
www.serasidis.gr
Часто при разработке своих проектов на микроконтроллерах появляется проблема в том, что необходимо как-то отображать данные. Конечно решением может быть использование ЖК индикаторов или нескольких светодиодных дисплеев, просто используя светодиоды. Но если требуется отображение различных данных и этих данных будет много… Большие LCD модули еще остаются дорогими в цене, использование графических модулей затрудняется из-за сложного протокола контроля и управления. Для решения таковой проблемы можно использовать компьютер, передавая данные по последовательному интерфейсу с вашего устройства и данные будут отображаться на мониторе. Но очень часто случается так, что компьютер необходим для другой работы или занят другим пользователем.
Решением проблемы может быть данная разработка. Для отображения данных, которые передаются пользовательским устройством по последовательному интерфейсу, используется обычный телевизор с небольшим размером по диагонали. Сейчас можно без особых трудностей найти такой телевизор.
При разработке данного устройства преследовались определенные цели:
- дисплейный модуль должен быть максимально простым;
- для отображения данных достаточно текстового и псевдографического режима;
- за всю работу модуля должен отвечать лишь 1 микроконтроллер
- использование совместимой IBM PC AT клавиатуры для ввода данных
В итоге было разработано два варианта ТВ терминала: встраиваемый (для использования в устройстве) и как отдельный модуль с внешним блоком питания.
Основные параметры ТВ терминала:
- цветовой режим: черно-белый;
- разрешение в текстовом режиме: 40 символов × 25 строк;
- разрешение в псевдографическом режиме: 80 × 75 точек;
- отображаемые символы: ASCII 32 – 127;
- скорость последовательного интерфейса: 1200 бод – 115.2 КБод;
- источник питания: 9.0 – 12.0 В (5.0 В для встраиваемой версии).
Схема двух вариантов устройства представлена на рисунке. Различия, лишь в том, что в отдельном модуле имеется простой преобразователь уровней RS232-TTL и стабилизатор напряжения 78L05 .
Как видите все основные функции возложены на микроконтроллер U1. Для текстового режима (40 символов × 25 строк) необходим минимальный объем памяти 1 КБайт, поэтому был выбран хорошо изученный и доступный микроконтроллер Atmega8 фирмы Atmel (для встраиваемой версии – в smd исполнении).Микроконтроллер выполняет 3 задачи:
- генерация видеосигнала;
- прием символов с клавиатуры, декодирование и отправка по последовательному интерфейсу;
- прием символов с последовательного интерфейса и сохранение их в памяти.
Организация одновременного выполнения этих трех процессов была самой трудной задачей. Генерация видеосигнала должно быть крайне точной, поэтому исходный код программы микроконтроллера был написан на ассемблере. Рабочая частота микроконтроллера – 20 МГц, предпочтительнее, конечно было бы 22 МГц, но в целях повторяемости была выбрана 20 МГц, вследствие этого присутствуют некоторые различия в горизонтальной ширине пикселей.
Источник питания и преобразователь логических уровней включены в версию отдельного модуля. Для упрощения схемы использовался вариант преобразователя на двух транзисторах, при небольших расстояниях последовательной линии. При увеличении расстояния возможно появление ошибок на высоких скоростях обмена. Также хочется отметить, что необходима определенная осторожность при использовании указанного типа клавиатуры. Энергопотребление многих из них в пределах допустимого, но не исключаются варианты у которых потребление более 100 мА. Повышенное потребление может вывести из строя регулятор напряжения U2 78L05. В этом случае лучше использовать регулятор напряжения 7805 в корпусе TO220.
Клавиатуру можно подключать с коннектором PS/2 или DIN5. Устройство в виде отдельного модуля рассчитано сразу для подключения PS/2 клавиатуры. Возможно использование переходника DIN5/PS2 для клавиатур со старым вариантом разъема DIN5.
При программировании микроконтроллера необходимо выставить Fuse-биты:
RESET=ON,
BROWN-OUT LEVEL 4.0V,
OSCILLATOR=EXT. CRYSTAL HIGH FREQ.
Правильно запрограммированный микроконтроллер генерирует видеосигнал, при подаче питания на экране ТВ отображаются текущие параметры, спустя 3 с терминал полностью готов к работе. Если нет синхронизации на необходимо подобрать резистор R7.
ТВ терминал распознает три типа символов:
- Символы управления
- Отображаемые символы таблицы ASCII 32-127
- Псевдографические символы 128 – 191
Все оставшиеся символы (21) отображаются в виде квадратика. Символы 192 – 255 игнорируются. Активные символы управления представлены в таблице.
Символ
Десятичное значение
HEX-значение
Описание
SOH
1
0×01
Установка режима перевода строки “CR или LF” (Unix, Apple)
STX
2
0×02
Установка режима перевода строки "CR и LF" (Microsoft)
BS
8
0×08
Backspace
TAB
9
0×09
Horizontal TAB - move cursor to position modulo 8
LF
10
0×0A
Line feed (перевод строки) (см. также SOH и STX)
FF
12
0×0C
Form feed (новая страница) (очистка экрана)
CR
13
0×0D
Возврат каретки (see SOH and STX as well)
DC1
17
0×11
Курсор вкл.
DC2
18
0×12
Курсор выкл.
DC3
19
0×13
Следующий байт определяет Х позицию курсора
DC4
20
0×14
Следующий байт определяет Y позицию курсора
Точка начала отсчета позиции курсора – верхний левый угол – координаты (0,0), нижний правый угол – координаты (39,24). Псевдографические символы представляются как указано на рисунке ниже, кодируются 6 битами.
Отображаемые символы можете набирать на клавиатуре сразу. Специальные символы (символы управления и символы по таблице выше 127) могут быть переданы при помощи клавиши “левый Alt”, сначала нажимается клавиша “Alt” затем последовательно две клавиши соответствующие шестнадцатеричному значению символа. К примеру, для команды LF нужно нажать “Alt” + “0” + “A”. Таким образом вы можете Вы можете передавать все символы таблицы от 0 до 255.
Еще одна особенность – при нажатии клавиши F12, клавиатура переключается в режим “SCAN mode”. В этом режиме при нажатии клавиш передается строка содержащая Scan-код нажатой клавиши. Если нажать клавишу F12 еще раз – этот режим отключается.
При помощи переключателя J1 (jumper) выбирается скорость коммуникации по последовательному интерфейсу. В таблице представлены положения переключателя и соответствующие скорости.
Скорость
J1 - 2
J1 - 1
J1 - 0
115200 Бод
ON
ON
ON
57600 Бод
ON
ON
OFF
38400 Бод
ON
OFF
ON
19200 Бод
ON
OFF
OFF
9600 Бод
OFF
ON
ON
4800 Бод
OFF
ON
OFF
2400 Бод
OFF
OFF
ON
1200 Бод
OFF
OFF
OFF
Основное применение устройства: устройства, где требуется отображение различного рода информации большого объема, а также на этапе отладки пользовательских разработок на микроконтроллерах.
Скомпилированный код для программирования микроконтроллера (hex-файл)- скачать
Рисунки печатных плат (кликните для увеличения, сохраните и распечатайте)
Вариант: встраиваемый модуль (smd)Перевод: Vadim по заказу РадиоЛоцман