У нас уже были статьи и про COM-порт и дисплей WH0802, но в этой статье я хочу рассмотреть обе темы более подробно.
Для того , чтобы использовать COM-порт для своих целей, прежде всего нужно убедиться в его наличии физически (есть ли разъемчик), и присутствии в операционной системе. В Windows, это можно увидеть в "диспетчере устройств" в
разделе "Порты (COM и LPT)" в строке "Последовательный порт (COMx)". Где "x" - его номер.
В том случае, если COM-порта у вас нет, можно воспользоваться переходником USB-COM, установив соответствующие драйвера. После того, как COM-порт у вас появился, есть простой способ проверки его работоспособности. Для этого к пинам разъема порта "GND" (5) и "TX" (3) нужно подключить светодиод, катодом к "GND" (у нового светодиода эта нога короче), а анодом к "TX":
В обычном состоянии, светодиод гореть не должен. Если скопировать в COM-порт, какой-нибудь коротенький файл, то светодиод должен моргнуть. Сделать это можно из консоли, набрав команду "copy file.xxx /b comX". К сожалению в виндовс из консоли доступны только COM-порты с номерами от "1" до "4". Если вы используете USB-COM-переходник, и система назначила вам больший номер, можно попробовать его изменить в "диспетчере устройств".
После того как вы убедились , что COM-порт у вас есть и вы можете им управлять, можно подключать его к плате Марсоход.
Пин "GND" , соответственно, нужно подключить к земле , а "TX" мы будем подключать ко входу "DN" который есть на разъеме для ИК-приемника. Для защиты входа от повышенного напряжения, на штыречки "DN" и "+5V" , USB- разъема, обязательно нужно установить джампер.
Далее, зашиваем в платку проект (взять здесь:
Приемник COM-порта работает на скорости 9600, поэтому COM-порт компьютера нужно настроить на эту-же скорость. В консоли виндовс это можно сделать с помощью команды "mode comX baud=9600 data=8".
Теперь, если скопировать в COM-порт какой нибудь файл, можно из заготовленных нами (находятся в архиве), то на светодиодах останется последний байт.
Например после команды "copy 0.bin /b comX" должен остаться включенным третий слева светодиодик, поскольку последний байт в файле "0.bin" - "20h".
Таким образом, мы имеем возможность управлять дисплеем непосредственно из консоли компьютера.
Для продолжения экспериментов устанавливаем шилд с дисплеем WH0802
Его изготовление и схема описаны в статье "часики".
Подробно о самом диспле WH0802 можно узнать из даташита (
Для подключения, дисплей имеет 14 пинов.
1,2 - "VSS" и "VDD"- питание ( все эксперименты я выполнял при напряжении 4В ).
3 - "VO" - контрастность. Вообще-то, напряжение здесь должно быть регулируемым, но у нас
для простоты, подключено на землю. Контрастность может оказаться не самой удачной,
но на принципиальную работоспособность это не влияет.( можно доделать потом, когда все заработает ).
4 - "RS" - команда/символ. У нас подключено к 5- му биту.
5 - "R/W" - чтение/запись. Поскольку в дисплей мы будем только писать, у нас этот пин подключен к земле.
6 - "E" - при переходе этого сигнала из "1" в "0", данные фиксируются в дисплее. У нас это 6-й бит.
7..14 - сами данные. Мы будем использовать четырехбитный режим, поэтому "DB3", "DB2","DB1" и "DB0"
подключены к земле, а "DB7", "DB6","DB5" и "DB4" к четырем младшим битам.
Для того, чтобы нужные нам данные попали в дисплей , нужно выполнить "операцию записи".
Из картинки видна следующая последовательность действий.
Сначала нужно "поднять" сигнал "E" (установить 6-й бит в "1" ) Далее, выставить нужные данные . Затем "опустить" сигнал "E" (установить 6-й бит в "0" )
Для удобства выполнения этих действий, мы заготовили нужное количество файлов, каждый из которых содержит три байта, последовательное копирование которых в COM-порт, выполняет "операцию записи", причем имена этих файлов соответствуют записываемым данным.
Теперь подробнее о данных , которые можно записывать.
Это коды символов, которые можно посмотреть в "Table 2" даташита и команды
Хочу обратить внимание на самую правую колонку это таблицы "Execution time".
Это время, за которое конкретная команда должна гарантированно выполниться. В нашем случае (при скорости порта 9600, 3 байта на "операцию записи" да еще и 2 раза ), минимальное время, за которое можно записать одну команду ~ 6 миллисекунд. Это значительно медленнее выполнения любой команды, но, если вам в дальнейшем
приедется управлять дисплеем из проекта ПЛИС, эти времена нужно выдерживать.
Далее, последовательность действий, для того чтобы дисплей начал показывать.
После подключения питания нужно немного подождать (по даташиту > 40 миллисекунд). Затем выполнить инициализационную последовательность команд. Поскольку мы будем пользоваться четырехбитным режимом, то каждая команда
или код символа передается за 2 раза (две "операции записи"), сначала старшие 4 бита, затем младшие.
Для удобства мы собрали эту последовательность в файл "init.bat"
copy 3.bin /b com1
copy 3.bin /b com1
copy 2.bin /b com1
copy 2.bin /b com1
copy 8.bin /b com1
copy 0.bin /b com1
copy 1.bin /b com1
copy 0.bin /b com1
copy f.bin /b com1
Первые две строки, включение 8-битного режима. Следующие три строки - переключение в 4-х битный режим и включение второй строки. Далее - очистка экрана. Последняя пара строк - включение экрана и мигающего курсора.
После выполнения этой последовательности должен появиться курсор в первой позиции верхней строки.
Теперь дисплеем можно пользоваться. Если два раза выполнить "copy 13.bin /b comX", то в позиции курсора появится символ "3" (код 33h).
В качестве примера, я сделал файл "show.bat" в котором выполняется инициализация и выводится образец текста.
Все эксперименты я проводил на двух компьютерах - десктопе с "настоящим комом" и
системой "WindowsXP" и на ноутбуке с переходником "USB-COM" и "Windows7".
Подробнее...