Vassilis Serasidis
Часто при разработке своих проектов на микроконтроллерах появляется проблема в том, что необходимо как-то отображать данные. Конечно решением может быть использование ЖК индикаторов или нескольких светодиодных дисплеев, просто используя светодиоды. Но если требуется отображение различных данных и этих данных будет много… Большие 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.
Список использованных компонентов
Вариант – отдельный модуль |
|||
Компонент, |
Значение |
Кол-во |
Примечание |
U1 |
ATMEGA8-16 |
1 |
корпус DIL28 |
U2 |
1 |
стабилизатор 5.0 В |
|
T1 |
1 |
или аналогичный NPN |
|
T2 |
1 |
или аналогичный PNP |
|
XT1 |
20 МГц |
1 |
кварцевый резонатор |
D1,D2,D4 |
1 |
- |
|
D3 |
1 |
- |
|
C1,C2 |
15 пФ |
2 |
керамические |
C3 |
10 мкф/16 В |
1 |
электролитический или танталовый |
C4 |
100 мкф/16 В |
1 |
электролитический или танталовый |
C5-C8 |
100 нФ |
4 |
керамический |
R1-R5 |
4.7 кОм |
5 |
|
R6,R10,R11 |
10 кОм |
1 |
|
R7 |
1 кОм |
1 |
|
R8 |
82 Ом |
1 |
|
R9 |
330 Ом |
1 |
|
CN1 |
CANON 9 MALE |
1 |
разъем DB9-Male |
CN2 |
NAZ 2.5 |
1 |
разъем питания |
CN3 |
CINCH FEMALE |
1 |
разъем «Видео» |
CN4 |
Mini DIN6 FEMALE |
1 |
разъем PS2 |
J1 |
JUMPER |
3×2 |
|
Встраиваемая версия (smd компоненты) |
|||
Компонет, обозначение в схеме |
Значение |
Кол-во |
Примечание |
U1 |
ATMEGA8-16 |
1 |
корпус TQFP32 |
XT1 |
20 МГц |
1 |
кварцевый резонатор |
C1,C2 |
15 пФ |
2 |
Керамический (корпус 0805) |
C3,C4 |
100 нФ |
2 |
Керамический (корпус 0805) |
C5 |
10 мкф/10 В |
1 |
танталовый smd |
R1,R2 |
47 Ом |
2 |
smd 1206 |
R3 |
1 кОм |
1 |
smd 0805 |
R4 |
82 Ом |
1 |
smd 0805 |
R5 |
100 Ом + 220 Ом |
1+1 |
smd 1206 |
R6,R7 |
10 кОм |
2 |
smd 1206, 0805 |
R8 |
4.7 кОм |
1 |
1206 |
J1 |
JUMPER |
3×2 |
ТВ терминал распознает три типа символов:
- Символы управления
- Отображаемые символы таблицы 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)