LED модуль P10C4V12

Views: 3282


cat_ledm_06

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

Мне попался в руки двухцветный модуль P10C4V12 (красные и зеленые светодиоды), с разрешением 16*35 RG.

Как они подключаются?cat_ledm_07 По питанию проблем не будет, тут все просто, колодка, с детальным описание GND и VСС напряжение питания номинальное 5 вольт. Для подключения в комплекте идут комплекте два силовых проводов красного и черного цвета, а также интерфейсный шлейф.

Интерфейс подключения, представляет собой 16 пиновый соединитель, назначение выводов следующее:

Номер Название Назначение
1 OE 0 – включено/ 1 – выключено (для всего модуля)
2 А Вход дешифратора выбора строк
3 AT OK
4 В Вход дешифратора выбора строк
5 GND
6
7 GND
8 CLK Синхронизация байта
9 GND
10 STB Синхронизация блока данных
11 GND
12 RED Вход данных для красного цвета
13 GND
14 GREEN Вход данных для зеленого цвета
15 GND
16

cat_ledm_10

Схема подключения к микроконтроллеру PIC24FJ64GA004 для тестирования двух модулей подключенных последовательно.

cat_ledm_24

После подключения наступает самое интересное, это каким образом регистры выведены на светодиоды!!? После определенного периода секса с модулями было выяснено:

cat_ledm_20

Электрическую схему я не разрисовывал, просто лень, главное понять принцип. Для работы модуля нужно лепить динамическую индикацию (как при работе с матрицами семисегментных индикаторов). Весь индикатор разбит скажем так на 4 ветки светодиодов + два цвета, это значит, что необходимо сделать развертку на 8 разрядов ( это применительно к семисегментным индикатором). На рисунке видно как китайцы за мудрили с подключением регистров, почему так я не понял, это видимо надо быть китайцем.

 

На рисунке мы видим, что имеются 4 (двухцветные линейки светодиодов), подключение регистров нарисовано стрелками, каждой группе дан условно номер. Надо понимать, что данные поступают например на 15 группу верхний ряд и по стрелкам проходят до нижней нулевой. Это если кому-то захочется создать свой алгоритм развертки. Какая особенность для переключения индикации строк нужно воспользоваться входами А и В, но самое главное в статике фокус не проходит, для того, чтобы получить индикацию, необходимо организовать постоянное переключение при загрузке каждой строки.

Сканы как выглядит работа библиотеки для управления индикацией на модуле:

cat_ledm_22

ОЕ – используется для регулировки яркости дисплея. А и В видно как используется для включения работы индикации. CLK – это синхронизация, в каждой группе это 32 байта (у меня два модуля соединенных последовательно). STB – это импульс окончания загрузки данных в регистры и после него данные появляются на светодиодах (ну и типа мы их видим). RED и GREEN это соответственно сами данные которые надо отобразить в красном или зеленом цвете. Библиотека написана, чтобы можно было отобразить 4 комбинации цвета точки 0 – черный, 1 – красный, 2 – зеленый, 3 – желтый. Но Желтый на этом модуле на маленьком расстоянии смотрится не очень, а так всё работает.

Загрузка одной строки в модуль выглядит так:

cat_ledm_09

Для загрузки всех светодиодов одного цвета надо 4 такие передачи (правда загрузку красного и зеленого цветов можно выполнять параллельно, но функция работы модуля, чтобы сделать индикацию гибкой этого не позволяет, поэтому тут будет описан вариант при необходимости загрузки двух цветов только в последовательном варианте). Для загрузки двух последовательно включенных модулей 16*64 будет выглядеть так:cat_ledm_11

 Общий вид имеет вид.

cat_ledm_12

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

Во всех конструкциях я предпочитаю делать обновление дисплеев не ниже 100 Гц. если ниже, то это уже видно мерцание и раздражает глаза, как на телевизорах или дисплеях где частота обновления 50-60 Гц. Поэтому у меня на PIC24 (почему 24, просто он был под рукой) частота получилась 125 Гц, так просто делители настроились в таймерах при тактовой 32 МГц.

Период развертки, можно видеть по сигналу B:





  • Внешний вид панели


  • Расположение свтиков


  • Входной буфер


  • Распиновка соединителя
  • cat_P10_1R_V706A_08

    cat_P10_1R_V706A_08
    Подтягивающие резисторы шин
  • cat_P10_1R_V706A_07

    cat_P10_1R_V706A_07


  • Колока подключения питания 5 вольт


  • Маркировка модуля


  • Вид на печатную плату


  • Вид на монтаж


  • Видна лицевую панель



Библиотека

Инициализация настройка, управление

void OpenSPI1(void);  – инициализация интерфейса SPI передача данных в матрицу

void PWM_Init(void);    – настройка Output Compare для работы в режиме ШИМ, регулировка общей яркости дисплея.

void indic (void);    – функция динамической индикации, её помещаем в цикл прерывания таймера

/*Формирование временных интервалов*/
void __attribute__((__interrupt__, no_auto_psv)) _T2Interrupt(void) {
//------------------------------------------------------------------------------
    indic (); // развертка индикатора
//------------------------------------------------------------------------------
    if(sleep_mode && count_time_sleep<8000)count_time_sleep++;
    else {
            count_time_sleep=0;     
            sleep_mode=0;      // спяшим режимом
         }
//------------------------------------------------------------------------------
    count_time_arrow++;     // таймер управления стрелкой
//------------------------------------------------------------------------------
    IFS0bits.T2IF = 0; // сбросить флаг
}

Вариант настройки таймера для тактовой 32 Мгц

    //------------------------------------------------------------------------------
    /*настройка таймера*/
    // 32000000/2/8 = 2000000 Гц
    T2CON = 0b1010000000010000;
/*            |||||||||||||||+------- Unimplemented:
 *            ||||||||||||||+-------- TCS: 0 = Internal clock (FP)
 *            |||||||||||||+--------- Unimplemented:
 *            ||||||||||||+---------- T32: 0 = Timerx and Timery act as two 16-bit timers
 *            ||||||||||++----------- TCKPS<1:0>: 01 = 1:8
 *            |||||||||+------------- TGATE:0 = Gated time accumulation is disabled
 *            |||++++++-------------- Unimplemented:
 *            ||+-------------------- TSIDL:1 = Discontinues module operation when device enters Idle mode
 *            |+--------------------- Unimplemented:
 *            +---------------------- TON: 1 = Starts 16-bit Timerx
 */
    TMR2 = 0; //
    PR2 = 1000; // 5 000 Гц для индикации 10 ступеней яркости
    IFS0bits.T2IF = 0; // сбросить флаг
    IPC1bits.T2IP = 4; // приоритет 4
    IEC0bits.T2IE = 1; // разрешить прерывание
    //------------------------------------------------------------------------------

void BrightnessControl(unsigned int brightness); – функция регулировка яркости значение 0-1000, для более менее получения плавности.

Рисование примитивов

void point (unsigned int X, unsigned int Y, unsigned int tip, unsigned int color);    – функция рисования точки
где :  X-Y координаторы точки, tip – тип прорисовки с цветом пикселя, color – 0-черный, 1-красный, 2-зеленый, 3- желтый.

void line ( int x0,  int y0,  int x1,  int x1,  int tip,  int color);      –  функция рисования линии алгоритм Брезенхема
где : x0, y0 – начальные координаторы линии, x1-x1 – конечные точки линии, tip – тип прорисовки с цветом пикселя, color – 0-черный, 1-красный, 2-зеленый, 3- желтый.

void Circle( int cx,  int cy , int radius,  int tip,  int color);         –  функция  рисования  окружности

где : cx, cy – координаторы центра, radius – радиус, tip – тип прорисовки с цветом пикселя, color – 0-черный, 1-красный, 2-зеленый, 3- желтый.

void rectangle ( int x0,  int y0,  int sh,  int vs,  int filling,  int tip,  int color); – функция рисования прямоугольника.
где :  X-Y координаторы точки, x1-x1 – ширина и высота прямоугольника, tip – тип прорисовки с цветом пикселя, color – 0-черный, 1-красный, 2-зеленый, 3- желтый.

Эффекты

void FAIDER (unsigned int speed, unsigned int mode); // файдер – функция плвного гашения и увеличения яркости дисплея.
void delaym (unsigned int delay); // регулируемый делай, для фейдера
void HRANSKRIN (void); // хранитель экрана, если необходима такая функция
void svernut (void); // свернуть экран, типа сворачивания изображения, для очистки
void FastClean (void); // быстрая очистка

Тестовые функции

void Cursor (char Xp, char Yp);
void Symbol (unsigned char cod, int shi, int vis, unsigned char ots, unsigned int tip, unsigned int color); // прорисовка символа
void scrolling(const char *str, unsigned int window, unsigned int color); //бегущая строка

void StringCur(const char *str, int shi, int vis, unsigned int tip, unsigned int color); //вывод строки с положения курсора
void String (const char *str, unsigned int shi, unsigned int vis, int X, unsigned int Y, unsigned int tip, unsigned int color) ; // String – вывод на дисплей строк c любой точки дисплея
// преобразование и вывод чисел
void BinDec(long data, char zap, char nul, char mes, char ras, int shi, int vis, int color); // вывод на дисплей/режим

Библиотека “картинок”

Дополнительные функции для прорисовки картинок

void PIC_BinDec(long data, int x, int y, int mode, int tip, int color); // вывод на дисплей/режим

void PIC_Symbol (int chislo, int x, int y, int tip, int color); // для больших цифр

void pictureRLE (const char *mas, int Xs, int Ys, int tip, int color); // прорисовка примитивов

Файлы для загрузки


Значок

LED модуль P10C4V12 — графическая библиотека v.1.2 12.41 KB 221 downloads

LED модуль P10C4V12 — графическая библиотека v.1.2 ...

Значок

LED модуль P10C4V12 — дополнение к графической библиотеки v.1.2 6.07 KB 160 downloads

LED модуль P10C4V12 — дополнение к графической библиотеки...


Продолжение возможно…


Это может быть интересно


  • ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302
    Views: 2469 На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11  самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств …
  • Проект с использованием MCC часть 11Проект с использованием MCC часть 11
    Views: 936 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
  • Простой сенсорный регулятор светаПростой сенсорный регулятор света
    Views: 2473 Простой сенсорный регулятор. Проект – 2007 года. Регулятор выполнена на микроконтроллере PIC12F683 и имеет минимальное количество элементов. Выполняет стандартные функции, включение выключение света, изменение яркости, запоминание последнего установленного уровня …
  • VU Meter Tower ART – part 2VU Meter Tower ART – part 2
    Views: 1125 Проект – VU Meter Tower ART получил продолжение в своем развитии. Теперь можно заказать набор деталей из акрила для самостоятельной сборки. В проект корпуса внесено целый ряд доработок, …
  • MPLAB® Harmony – или как это просто! Часть 1.MPLAB® Harmony – или как это просто! Часть 1.
    Views: 3750 Часть первая – Установка Гармонии. Музыкальная тема к статье, слушаем: В начале запуска нового проекта и выбора микроконтроллера стоит задача правильно его сконфигурировать, прежде чем перейти к реализации …
  • Temperature measurement with NTC thermistor.Temperature measurement with NTC thermistor.
    Views: 537 Проекты в которых присутствовало измерение температуры начинал с цифровых датчиков, т.к. в них все просто и не надо ничего преобразовывать и вычислять. При использовании цифровых датчиков ты получаешь …
  • Development Boards PIC18F47Q84Development Boards PIC18F47Q84
    Views: 5668 Microchip тішить новими мікроконтролерами. Особливістю цього MCU – це багата інтелектуальна периферія, що дозволяє вирішувати такі завдання на 8 бітних MCU, які неможливо реалізувати на деяких навіть 32 …
  • LED модуль P10 (1R) V706ALED модуль P10 (1R) V706A
    Views: 7865 Это еще одно чудо от китайского брата. Это монохромные матрицы, называются они P10 (1R) V706A, ну типа  R-красные, но не верьте паяют светики и зеленые и синие, в общем …
  • PIC32MZ – прерывания (заметки)PIC32MZ – прерывания (заметки)
    Views: 502 Виды формирования запоминая контекста при входе в прерывания. Компилятор представляет три варианта AUTO – когда запоминания места возврата из подпрограммы возложено на программу, т.е все создается программно. Этот …
  • MPLAB® Harmony – или как это просто! Часть 3.MPLAB® Harmony – или как это просто! Часть 3.
    Views: 2158 Часть третья – копнём немного глубже. Вы наверное заметили, что во второй главе, вроде сначала все шло как по маслу, а потом, что бы заморгали светики, я вставил …



Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее