ТВ терминал на базе микроконтроллера AVR


Vassilis Serasidis
www.serasidis.gr

Часто при разработке своих проектов на микроконтроллерах появляется проблема в том, что необходимо как-то отображать данные. Конечно решением может быть использование ЖК индикаторов или нескольких светодиодных дисплеев, просто используя светодиоды. Но если требуется отображение различных данных и этих данных будет много… Большие LCD модули еще остаются дорогими в цене, использование графических модулей затрудняется из-за сложного протокола контроля и управления. Для решения таковой проблемы можно использовать компьютер, передавая данные по последовательному интерфейсу с вашего устройства и данные будут отображаться на мониторе. Но очень часто случается так, что компьютер необходим для другой работы или занят другим пользователем.

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

При разработке данного устройства преследовались определенные цели:

  • дисплейный модуль должен быть максимально простым;
  • для отображения данных достаточно текстового и псевдографического режима;
  • за всю работу модуля должен отвечать лишь 1 микроконтроллер
  • использование совместимой IBM PC AT клавиатуры для ввода данных

AVR TV Terminal

В итоге было разработано два варианта ТВ терминала: встраиваемый (для использования в устройстве) и как отдельный модуль с внешним блоком питания.

Основные параметры ТВ терминала:

  • цветовой режим: черно-белый;
  • разрешение в текстовом режиме: 40 символов × 25 строк;
  • разрешение в псевдографическом режиме: 80 × 75 точек;
  • отображаемые символы: ASCII 32 – 127;
  • скорость последовательного интерфейса: 1200 бод – 115.2 КБод;
  • источник питания: 9.0 – 12.0 В (5.0 В для встраиваемой версии).

Схема двух вариантов устройства представлена на рисунке. Различия, лишь в том, что в отдельном модуле имеется простой преобразователь уровней RS232-TTL и стабилизатор напряжения 78L05 .

AVR TV terminal

AVR TV terminal (smd version)


Как видите все основные функции возложены на микроконтроллер 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.

Fuse

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

ТВ терминал распознает три типа символов:

  1. Символы управления
  2. Отображаемые символы таблицы ASCII 32-127
  3. Псевдографические символы 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)


Вид со стороны компонентов (отдельный модуль)


Вид со стороны компонентов (встриваемый модуль, smd)

Перевод: Vadim по заказу РадиоЛоцман