Реклама на сайте | Помощь сайту   English version | Datasheets 
KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Подключение светодиодного матричного индикатора к микроконтроллеру PIC

Подключение светодиодного матричного индикатора к микроконтроллеру PIC



Раздел: Периферия к МК

Матричные светодиодные индикаторы находят широкое применение в устройствах отображения информации, т.к. позволяют отображать статический и анимированный текст и графику. Вы, наверное, сталкивались с такими большими информационными табло на автомобильных заправочных станциях, в общественных местах, на автодорогах, которые отображали информацию различного характера.

 

В статье мы рассмотрим базовые моменты подключения монохромного матричного индикатора к микроконтроллеру с целью отображения на нем статических символов. Для решения нашей задачи мы использовали отладочную плату StartUSB for PIC с установленным микроконтроллером Microchip PIC18F2550, однако пользователи могут использовать любой микроконтроллер с достаточным количеством линий ввода/вывода для управления индикатором. 

 

Использование платы StartUSB обусловлено простотой ее использования, т.к. она подключается непосредственно к USB интерфейсу и для программирования микроконтроллера не требуется внешнего программатора. 

Матричный индикатор представляет собой массив светодиодов, объединенных в один корпус. Размеры массива обычно составляют 4×4, 5×7, 5×8 или 8×8 точек. Каждая точка может быть сформирована одним, двумя или тремя светодиодами различного цвета. Множество светодиодов объединены в столбцы и строки. Это сделано с целью сокращения количества выводов для управления. Например, для матричного индикатора 8×8 (см. рисунок ниже) требовалось бы 64 линии ввода/вывода, одна для каждого светодиода. Соединением всех анодов в рядах (R1-R8) и катодов в столбцах (C1-C8), необходимое количество выводов управления сокращаеся до 16. На рисунке ниже, если на R4 появится высокий уровень и на C3 – низкий уровень, то светодиод в четвертом ряду и третьем столбце будет светиться. Символы на таком индикаторе отображаются динамически, т.е. мы будем быстро переключать столбцы для отображения символа. 

 


Матричный светодиодный индикатор, используемый в нашем проекте, имеет размер 5×7, и мы узнаем как отображать на нем стандартные символы разрешением 5×7. На рисунке ниже отображено, какие светодиоды должны быть включены для отображения буквы английского алфавита «A». Семь строк и пять столбцов управляются микроконтроллером. Теперь рассмотрим в деталях, как это работает.

 


Для отображения символа «A» сначала мы выберем первый столбец С1 (это означает, что в нашем случае на С1 мы подадим низкий уровень) и отключим все оставшиеся (подадим на С2-С5 высокий уровень). Теперь у нас активен первый столбец и необходимо включить светодиоды в строках R2-R7 подав на них напряжение высокого уровня. Далее, нам нужно сделать активным столбец C2 и включить светодиоды в строке R1 и R5 и так далее. Таким образом, перебирая очень быстро столбцы (более 100 раз в секунду) и включая соответствующие светодиоды для каждого отдельного столбца, мы увидим статическое изображение символа.

 


Таблица ниже демонстрирует, какие должны быть логические уровни на выводах столбцов и строк для отображения символа «A».


Следует отметить, что для управления столбцами индикатора потребуются ключи на транзисторах, т.к. линия ввода/вывода микроконтроллера не может обеспечить протекание большого тока (заметьте одновременно могут быть включены 7 светодиодов). С этой целью применяется драйвер ULN2003A, который имеет семь составных транзисторов. Активное состояние входа драйвера – высокий уровень. На рисунке ниже изображено расположение выводов микросхемы и схема одного канала.

 


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

 


Схема подключения индикатора и драйвера к микроконтроллеру очень проста. Нам потребуется семь резисторов номиналом 300 Ом, которые включаются в цепи строк R1-R7 для ограничения тока через светодиоды. Управление строками осуществляется выводами RB0-RB6 микроконтроллера. Столбцы индикатора подключаются к выходам драйвера ULN2003A. Соответствующие входы управления драйвера подключаются к порту RA0-RA4 микроконтроллера.

Таким образом, микроконтроллер может переключать столбцы индикатора, записывая в порт соответствующие биты. Например, установив бит RA0 (лог. 1) и сбросив биты RA1-RA4 (лог. 0), мы сделаем активным первый столбец индикатора. Между перключениями столбцов микроконтроллер должен выдержать паузу около 1 мс. Для каждого столбца, необходимо вывести соответствующее значение в порт B, чтобы включить нужные светодиоды в столбце. Переключение между столбцами происходит довольно быстро, поэтому человеческий глаз этого не замечает, и мы видим статическое изображение.




Схема подключения индикатора и драйвера к микроконтроллеру (отладочной плате)



Главная часть нашего проекта – программа микроконтроллера, осуществляющая вывод символов на индикатор. Программа осуществляет переключение столбцов и вывод соответствующих данных в строки в определенные моменты времени. Данные, которые должны выводиться в порт B, могут быть определены в RAM микроконтроллера или в программе, если объема встроенной RAM недостаточно. В компиляторе mikroC переменные сохраняются в RAM, а константы сохраняются в памяти программ. В случае, если памяти RAM микроконтроллера не хватает, пользователь может определить массив констант в памяти программ.

В mikroC мы определим каждый символ с разрешением 5×7 (буквы английского алфавита A-Z, пользователи могут самостоятельно подготовить эти данные в соответствии со своими нуждами):

 
Код:

unsigned short Alphabets[130] =
{
0x7e, 0x09, 0x09, 0x09, 0x7e, // A
0x7f, 0х49, 0х49, 0х49, 0х36, // B
0x3e, 0х41, 0х41, 0х41, 0х22,
0x7f, 0х41, 0х41, 0х22, 0x1c,
0x7f, 0х49, 0х49, 0х49, 0х63,
0x7f, 0х09, 0х09, 0х09, 0х01,
0x3e, 0х41, 0х41, 0х49, 0x7a,
0x7f, 0х08, 0х08, 0х08, 0x7f,
0х00, 0х41, 0x7f, 0х41, 0х00, // I
0х20, 0х40, 0х41, 0x3f, 0х01,
0x7f, 0х08, 0х14, 0х22, 0х41,
0x7f, 0х40, 0х40, 0х40, 0х60,
0x7f, 0х02, 0х04, 0х02, 0x7f,
0x7f, 0х04, 0х08, 0х10, 0x7f,
0x3e, 0х41, 0х41, 0х41, 0x3e,
0x7f, 0х09, 0х09, 0х09, 0х06,
0x3e, 0х41, 0х51, 0х21, 0x5e,
0x7f, 0х09, 0х19, 0х29, 0х46,
0х46, 0х49, 0х49, 0х49, 0х31, // S
0х01, 0х01, 0x7f, 0х01, 0х01,
0x3f, 0х40, 0х40, 0х40, 0x3f,
0x1f, 0х20, 0х40, 0х20, 0x1f,
0x3f, 0х40, 0х30, 0х40, 0x3f,
0х63, 0х14, 0х08, 0х14, 0х63,
0х07, 0х08, 0х70, 0х08, 0х07,
0х61, 0х51, 0х49, 0х45, 0х43 // Z
}

 

А также данные специальных символов, которые сохраняются в программе:

 
Код:
const unsigned short characters[30] =
{
0х24, 0x2A, 0x7f, 0x2A, 0х12, // $
х08, 0х14, 0х22, 0х41, 0х00, // <
0х41, 0х22, 0х14, 0х08, 0х00, // >
0х14, 0х14, 0х14, 0х14, 0х14, // =
0х36, 0х49, 0х55, 0х22, 0х50, // &
0х44, 0x3c, 0х04, 0x7c, 0х44, // PI
};

 

Демонстрация работы индикатора

 

 

В архиве по этой ссылке - исходный код демонстрационной программы (последовательное отображение букв и символов на индикаторе) 


Запчасти Opel http://www.mirus-auto.ru/. ТЦ МирусАвто в Кунцево - автозапчасти по выгодным ценам.
 © 2003—2017 «Электронный портал»Обр@тная связь