Отправляет email-рассылки с помощью сервиса Sendsay

Цифровая схемотехника

  Все выпуски  

Цифровая схемотехника Выпуск 21.


Цифровая схемотехника
Почтовая рассылка
Выпуск №21 от 20.11.2006 г.


Добрый день, уважаемый подписчик!

Сегодня я предлагаю вам описание интересной радиолюбительской конструкции. Она может стать интрересным новогодним подарком или просто дополнением к новогодней иллюминации.

Светодиодное табло "Волшебная палочка"
с ручной динамической разверткой

За этим замысловатым названием кроется очень интересная конструкция на PIC-контроллере. Главное достоинство - это оригинальность идеи. В Интернете можно встретить множество вариантов подобных устройств. Я решил опубликовать две схемы. Первую из них я нашел в глубинах интернета. Я выбрал именно эту схему потому, что в у нее простая схема и упрощенная и легкая для понимания программа. На основе первой схемы я разработал другой вариант такого же устройства (на микроконтроллере AT89C2051). Сначала я опишу основную идею конструкции:

Устройство представляет собой небольшую палочку с электронной начинкой. На палочке имеется ряд светодиодов (в нашем случае их пять штук). Они расположены вдоль палочки, как показано на рисунке.

Внутри схема на микроконтроллере и батарейка. Вы берете волшебную палочку в руку и делаете быстрый мах в воздухе. Вам не приходилось махать, в темноте палкой, вынутой из костра, с тлеющим огоньком на конце? Такая палка рисует линии в прямо воздухе. А наша волшебная палочка рисует не линии. В ней, внутри встроен инерционный датчик. Как только вы начнете движение, датчик сработает и подаст на процессор команду старта. Процессор начнет зажигать и тушить светодиоды по мере движения палочки. В результате появится надпись. Некое слово, заложенное в программе процессора. В авторском варианте палочка высвечивает слово "HELLO". Но программа содержит в себе подпрограммы рисования всех латинских букв. Заставить ее показывать любое другое латинское слово - пара пустяков. Русские буквы тоже сделать нетрудно. Дальше я обо всем этом подробно расскажу.

Теперь посмотрите на схему первого варианта устройства:

Схема устройства

Вы видели, что ни будь проще? Тут и пояснять особо нечего. В основе схемы микросхема PIC16C84. Стабилизатор напряжения DA1 служит для получения напряжения стабилизированного +5В, которое питает все устройство. На элементах R1, C4 собрана частотно задающая цепочка, для внутреннего тактового генератора микросхемы. Вход RA0 используется для ввода стартового сигнала в микроконтроллер. Для этого на него, через резистор R2 подано напряжение питание, образующее на входе сигнал логической единицы. Контактная пара "Старт" срабатывает при резком ускорении движения палочки и замыкает вход RA0 на общий провод, создавая на нем нулевой уровень. Программа постоянно опрашивает состояние этого входа. Когда после очередного цикла опроса программа получит нулевой уровень в младшем разряде порта RA, она перейдет к циклу вывода изображения. Светодиоды подключены к пяти младшим разрядам порта RB процессора. Автор подключил светодиоды непосредственно к выходам микросхемы для получения большей яркости свечения, хотя такая схема включения создает слишком большую нагрузку на выходы. Для повышения надежности и яркости светодиодов не мешало бы подключить светодиоды через транзисторные ключи.

Остальные емкости схемы служат для сглаживания помех по питанию.

Для синхронизации процесса вывода изображения с движением палочки применяется инерционный контактный датчик движения. Устроен он следующим образом:

Датчик движения

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

ПРОГРАММА

Автор этой конструкции приводит полный текст программы с комментариями. Мы приводим его с русским переводом и дополнительными комментариями. Для удобства изучения программы щелкните по следующей ссылке: <Программа> . Откроется отдельное окно с текстом программы.

В этой программе реализован самый элементарный алгоритм. В авторском варианте она может выводить только заглавные латинские буквы. После включения программа сначала производит настройку портов (процедура init). Все разряды порта b переводятся в режим вывода. А порт b настраивается таким образом, что его младший разряд RA.0 включается в режим ввода. Для этого в управляющие регистры соответствующих портов записываются управляющие коды. Далее программа переходит к процедуре опроса датчика запуска getbut. Пока датчик не замкнут, программа находится в непрерывном процессе опроса датчика и из программы опроса не выходит. Как только программа обнаружит нулевой сигнал на RA0, она переходит к процедуре вывода слова letters.

Процедура вывода слова представляет собой последовательные обращения к подпрограммам вывода букв отображаемого слова. У автора программа выводит слово "HELLO". Поэтому она последовательно обращается к подпрограммам вывода именно этих букв.

Для вывода каждой буквы имеется своя отдельная подпрограмма. Для вывода буквы 'A' служит подпрограмма, на которую можно перейти по метке 'la'. Подпрограмма вывода буквы 'B' имеет метку 'lb' и так далее. Все подпрограммы вывода букв совершенно одинаковы. Различаются они лишь выводимыми кодами. Каждая подпрограмма последовательно выводит на выходные светодиоды четыре кода, соответствующие четырем столбцам матрицы, отображающей изображение буквы. Эта матрица, как мы знаем, образуется при движении пяти светодиодов в пространстве. Следовательно каждый знак отображается матрицей 4X5 точек. После вывода очередного столбца матрицы, подпрограмма рисования буквы переходит к подпрограмме задержки wait. Подпрограмма задержки обеспечивает нужный темп вывода столбцов. Задержка подобрана таким образом, что бы при движении палочки с разумной для человека скоростью, ширина букв была пропорциональна их высоте.

После вывода всех четырех столбцов, подпрограмма вывода буквы переходит к процедуре space1, служащей для формирования промежутка между буквами. Подпрограмма space1 гасит все светодиоды и выдерживает необходимый временной интервал.

Описываемая программа содержит подпрограммы для высвечивания всех букв латинского алфавита. поэтому вы сами легко можете переделать программу, заставив ее выводить ваше слово. Для этого нужно переписать процедуру letters таким образом, что бы она обращалась к подпрограммам вывода нужных букв.

В заключении предлагаем скачать ZIP архив, содержащий текст программы и оттранслированный ее вариант в формате HEX и BIN. Формат HEX является выходным форматом транслятора с языка ассемблера. HEX формат - это по сути специальный текстовый формат, в котором каждый байт кода описан в шестнадцатеричной форме. Формат BIN - это уже набор тех самых двоичных кодов, собственно и составляющих программу. Эти самые коды при помощи специального программатора необходимо "прошить" в память программ контроллера PIC16C84.

Краткое описание микроконтроллера PIC18C84 вы можете загрузить с нашего сайта (загрузить).
Подробные описания многих микроконтроллеров фирмы MicroChipна русском языке, в том числе и контроллеров, серии PIC16, вы можете найти на сайте фирмы по адресу http://www.microchip.ru/lit/?mid=1x0
Описание хорошего программатора вы найдете на http://www.kmv.ru/workshop/ludipipo.html

Второй вариант схемы приведен ниже:

Схема (вариант 2)

Принцип действия в новой схеме аналогичен предыдущей. Отличие состоит вопервых в том, что в новой схеме используется не 5 а 7 светодиодов. Это дает возможность улучшить качество высвечиваемых букв и цифр. Кроме того, датчик движения в новой схеме двухсторонний. Он запускает процесс высвечивания как при прямом, так и при обратном ходе "палочки". При этом мы увидим одно и то же изображение. Кнопка S1 служит для выбора высвечиваемого слова. В программу заложено несколько слов для высвечивания. Каждое нажатие кнопки переключает "палочку" в режим высвечивание следующего. После последнего слова, программа переходит к первому. Полный текст программы для второй схемы вы можете увидеть здесь. В программу заложено четыре надписи: "2005", "ГОД", "УРА", "СЭЛМА". Последнее слово - это название фирмы, где работает автор. Вы можете легко добавить любое количество новых слов в таблицу. Текст программы в электронном виде и оттранслированный вариант вы можете загрузить отсюда.

Ниже приведен рисунок двунаправленного датчика движения.

Датчик (вариант 2)

Из опыта изготовления конструкции:
1. Для того, что бы надпись была хорошо витдна, нужно приноровиться правильно махать устройством. Это не так просто. Необходимо, что бы палочка двигалась равномерно. Иначе некоторые знаки сливаются в вертикальную линию и не понятно, что написано.
2. Самая оптимальная длина надписи - три символа. Такая надпись хорошо разоичима. Можно сделать надпись в четыре символа. Это тоже приемлемо. Надпись в пять символов наименее читаема. Тут нужно делать широкие махи. При этом труднее выдерживать равномерность движения.
3. Подберите для устройства светодиоды с повышенной яркостью свечения. Иначе вы сможете насладиться эффектом только в полной темноте.

Внимание! Готовится к печати новая книга по микропроцессорной технике! Подробнее на сайте http://book.microprocessor.by.ru

Желаю успехов в повторении устройства. По всем вопросам обращайтесь к автору по адресу avbelov.ukr.net


Если у вас в этом письме не открываются картинки, и вы не знаете, что делать, перейдите по ссылке и прочитайте подробную инструкцию о том, как добиться появления картинок.

Автор рассылки Белов А.В.         avbelov@ukr.net


В избранное