Проект 16х16

«Давно не брал я шашки в руки».

В конце 2007 года передо мной, «… в качестве шефской помощи», стала задача по созданию устройства отображающего определенную графическую информацию на небольшом светодиодном экране. Так как требовалась еще некоторая дополнительная функциональность, за основу я решил взять микропроцессор — в частности PIC-контроллер.

Поиски в Интернете дали множество интересного материала, но в большей части он был ориентирован на работу с индикаторами 8х5 или 8х8.
Пришлось все начинать с «нуля». Дело в том, что я достаточно давно работал с PIC-контроллерами, и с тех пор в голове мало что осталось.
Да и использовал я раньше только достаточно простой микроконтроллер PIC16F84.

Чтобы облегчить самому себе работу я решил выбрать процессор с наибольшим количеством портов ввода-вывода и большим объемом памяти (хочу поэкспериментировать
с анимацией и еще кое-какими вещами). Наиболее подходящим оказался представитель среднего семейства PIC-контроллеров PIC16F877. Он достаточно дешев, имеет значительный объем памяти, 5 портов ввода-вывода и может работать на частоте 20 МГц.
Схема тоже достаточно проста:

Базовая схема проекта 16х16

Базовая схема проекта 16х16

Строками матрицы управляют выводы порта B и D (через буферные элементы), а сканирование столбцов осуществляется сдвиговым регистром. Управление регистрами осуществляется через порт Е (тактовые импульсы, сброс и последовательный вход D). Нумерация выводов на схеме микропроцессора PIC16F877 приведена для DIP-корпуса. При использовании других корпусов
расположение соответствующих выводов необходимо уточнить. Русский datasheet на PIC16F87X можно взять здесь >>>).

Программа для микроконтроллера тоже достаточно проста (.ASM и .HEX файл программы можно взять здесь >>>). Она может являться основой для тех «очумелых ручек», кто сам захочет расширить ее функциональность.
Для программирования микроконтроллера нужен программатор. Я использую самодельный, с небольшой тестовой платой для PIC16F84, расположенной прямо на программаторе.
Для управления программатором используется программа Ic-Prog или ProPic XP.

Фото программатора

Фото программатора

В своем устройстве я использовал четыре точечных светодиодных индикатора KINGBRIGHT TBA15-11EGVA. Этот индикатор двухцветный и достаточно яркий.
Управляя общими анодами можно получить три цвета свечения — красный, зеленый и оранжевый. Можно использовать другие индикаторы с общим анодом или
собрать матрицу из отдельных светодиодов любого цвета.

Индикатор

Индикатор

В устройстве применен динамический способ создания индикации. На катоды напряжение подается с двух портов микропроцессора, через буферные элементы ULN2803A, а подключение
столбцов (анодов) осуществляется через транзисторные ключи двумя (2х2) сдвиговыми регистрами CD4015B. Каждая микросхема содержит 2 4х-разрядных регистра. Соединив их последовательно,
получаем 16-ти разрядный сдвиговый регистр. Можно было применить что-нибудь специализированное для этих дел, например MAX6961, MBI5026 или аналогичные микросхемы. Но, к сожалению,
под рукой ничего не оказалось и пришлось довольствоваться CD4015B (российский аналог — К561ИР2).

Мое устройство собрано на двух макетных платах.

Устройство

Для быстрой разработки устройств на микропроцессорах используются специальные устройства, позволяющее отследить состояние портов, регистров и т.п. Для данного проекта я тоже собрал простую
отладочную плату. К выводам портов B,D и E я подключил светодиоды, через ограничительные резисторы 470 Ом.
Все это собрал на макетной плате. Вот как она выглядит в моем исполнении:

Тестовая плата для микропроцессора PIC16F877

Тестовая плата для микропроцессора PIC16F877

Такая плата позволяет проводить быструю отладку кусков кода, отслеживая непосредственно состояние регистров. Хотя это можно сделать и в среде MPLAB, но в живую — это гораздо интересней.
Добавив на плату несколько кнопок и подключив их к любому порту можно экспериментировать с прерываниями. А если добавить маленькую колодку и установить на нее последовательную память, например 24LC64,
то получится вполне функциональное устройство для проведения экспериментов с последовательной памятью.

Для облегчения рисования и программирования смайликов я создал вот такой шаблон — пользуйтесь на здоровье.

Шаблон для рисования и программирования смайликов

Шаблон для рисования и программирования смайликов

P.S.

Я написал эту статью для тех, кто только начинает осваивать микроконтроллеры. Так как сам в середине 90-х годов «по крупицам» собирал информацию и учился разрабатывать программы на ассемблере.
В то время меня просто поразила «мощь» этих устройств. Та функциональность, что раньше создавалась с использованием двух-трех десятков цифровых микросхем, стала доступна с использованием одной микросхемы.
А большую часть времени разработки устройства стала занимать процедура написания программы.

Comments are disabled.