Informatics Point

Информатика и проектирование

Программирование микроконтроллера

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

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

Рисунок 2 - Устройство инерционного контактного датчика движения

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

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

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

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

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

Лучшие статьи по информатике

Одноканальный ЭКГ на ОУ АД620 с цифровым выходом RS232
Электрокардиография - это запись электрических сигналов, генерируемых при работе сердца. Сигнал ЭКГ снимается с кожных покровов при помощи электродов, разме ...

Телефонный номеронабиратель
Первые микроконтроллеры компании MICROCHIP PIC16C5x появились в конце 80-х годов и благодаря своей высокой производительности и низкой стоимости составили с ...

Технология TriplePlay
Сегодня во множестве источников можно узнать, что мировая телекоммуникационная отрасль находится в состоянии грандиозной реконструкции, связанной с конверге ...

Меню сайта