MAX7219 светодиодный драйвер с SPI интерфейсом

Хотел сделать матричное табло для отображение информации. Основой стал баянистый драйвер для светодиодов max7219. После всяких 74hc164, 74hc595, кучи токоограничивающих резисторов, uln2003, дешифраторов, эта микросхема просто халява. Не буду описывать все ее возможности ( кто хочет даташит в помощь). У этой микросхемы spi интерфейс и обращение к каждой строчке микросхемы происходит через адрес. Аппаратно реализовал это изделие ( в кавычках) на матрицах кингбрайта TA15-11. Я как-то на форуме выкладывал нечто подобное, но там плата была не кашерная, гнулась из-за 1 мм текстолита и корпуса матриц были подогнаны некорректно. Сама плата разводилась в diptrace автотрассировщиком. Подключение строго по даташиту, каскадирование тоже. Несколько фоток.


Прикладываю волной вторую сторону рисунка платы.


Запайка перемычек закончена!


Вид платы сзади.


Вывод изображения на матрицы.

Код писался под PIC. Компилятор CSS. Все просто и понятно

#include <18f4550.h>
#fuses intrc
#fuses NOLVP
#fuses NOBROWNOUT
#fuses NOWDT
#use delay(clock=4M) 

#define CS PIN_C1   // Нога выбора чипа
#define SCLK PIN_C2 // Тактовая нога
#define SI PIN_C0   // Нога данных 

// Начало SPI

load (
	int address5, int data5, 
	int address4, int data4, 
	int address3, int data3, 
	int address2, int data2,
	int address1, int data1)
 {
   BYTE i;
   BYTE cmd[10];

   cmd[0] = data5;
   cmd[1] = address5;
   cmd[2] = data4;
   cmd[3] = address4;
   cmd[4] = data3;
   cmd[5] = address3;
   cmd[6] = data2;
   cmd[7] = address2;
   cmd[8] = data1;
   cmd[9] = address1;

   output_low(SCLK);
   output_low(CS);

   for(i=1;i<=80;++i) {
      output_bit(SI, shift_left(cmd,10,0));

      output_high(SCLK);
      output_low(SCLK);
   }
   output_high(CS);
   output_low(CS);
   output_high(CS);
}

// Буквы в массиве

int8 row[8][5] = {
{0b10000010, 0b00011100, 0b10000100, 0b00010000, 0b00011000},
{0b10000010, 0b00100010, 0b10001000, 0b00101000, 0b00011000},
{0b10000010, 0b01000000, 0b10010000, 0b01000100, 0b00011000},
{0b10000010, 0b01000000, 0b11100000, 0b11111110, 0b00011000},
{0b10000010, 0b01000000, 0b11100000, 0b10000010, 0b00011000},
{0b11111111, 0b01000000, 0b10010000, 0b10000010, 0b00000000},
{0b00000001, 0b00100010, 0b10001000, 0b10000010, 0b00011000},
{0b00000001, 0b00011100, 0b10000100, 0b10000010, 0b00011000}};

void main()

{

// Настройка MAX7219

load(0x0C,0x01,0x0C,0x01,0x0C,0x01,0x0C,0x01,0x0C,0x01);
load(0x0B,0x07,0x0B,0x07,0x0B,0x07,0x0B,0x07,0x0B,0x07);
load(0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00);
load(0x0A,0xFF,0x0A,0xFF,0x0A,0xFF,0x0A,0xFF,0x0A,0xFF);
load(0x0F,0x00,0x0F,0x00,0x0F,0x00,0x0F,0x00,0x0F,0x00);

// Вывод из массива букв на матрицы

int8 y;

while(1)
{
for (y=0x01; y<0x09; y++)
{
load(y,row[y-1][4],y,row[y-1][4],y,row[y-1][4],y,row[y-1][4],y,row[y-1][4]);
}}}
  • +1
  • 16 декабря 2011, 22:21
  • gashetka

Комментарии (25)

RSS свернуть / развернуть
Количество переходных отверстий впечатляет.)
Микросхемки хорошие, лежит в ящике десяток их с ebay, дожидаются своего часа.)
0
Тоже заказ с ебея себе 10 штук, только в соике, но мне кажеться они не оригинальные)))
0
все бы хорошо и обвязки ненадо и сама все делает но 595 стоит 6-7р. а эта радость от 260р цену имеет (для варианта -40 +85)
учитывая что на более менее дисплей надо 5-8 штук использовать ее будут только для разработок где цена не имеет значения
0
Да, полностью согласен, по цене не торт. Есть такой драйвер светодиодов HT1632 (32x8 & 24x16 LED Driver), он получше будет, но, что-то не нашел, где его заказать можно. На том же самом ebay его в Россию не высылают.
0
Если брать в корпусе SOP-24, то можно найти по $2.5 за 5 штук ;)
0
для дома\себя согласен но я рассматриваю все с точки зрения промышленного применения :) а там закупки на ебай не подходят, опять же указанные по ссылке это температурный диапазон 0-70
0
CH452A как дешевый аналог рассматривали?
0
набрал у основных поставщиков — нет в списке — поэтому для россии он получается дешевый но труднодостоваемый :)
0
Видимо, да, хотя eFind.ru выдал трех российских поставщиков.
0
Блин нашел даташит, там все на китайском, если чип в один содран максов, то еще можно, а так я китайский немзнаю))
0
С MAX7219 не работал, насколько точно содран — не знаю. Если есть интерес к CH452A, то для начала Вам поможет вот это.
0
И при этом у 595 распиновка практически идеальна для создания LED-матриц, чего о MAX7219 уж никак не скажешь.)
0
Перенес в Деталкьу.
0
натаскал их семплами. ждут своего часа.
0

такое когдато сделал)) без MAXa.
0
Класс.
Только не понял, почему 31 столбец, а не 32?
0
Да схемота понятна сдвиговый регистр 595 или строб 164 плюс тонна токоограничивающих резисторов, 8 нужной структуры транзисторов в строки — это все ясно, только загадка, зачем нужен idc20 разъем? Хватило бы и 10-ти пинового.
0
Это все я делал в порыве творчества лет эдак пять назад. 31 столбец потому что кусок текстолита такой был)))). У меня была макетка на меге16 с нее и управлял. Разьем 20-ти пиновый потому что его проще наколоть на шлейф. Используется логика 595 и одна 138. Т.к. светодиодов чуть менише 256, тот на такие подвиги уже не иду. Просто тогда была охота попробовать с бегущей строкой. Сейчас матричные индикаторы стали доступней.
0
Есть готовые модули, касадируются прилагаемым кабелем до 4 штук.
Купил, запустил демо, работает.

www.ebay.com/itm/3208-Red-LED-3mm-Dot-Matrix-Display-Information-Board-/380387949465?pt=LH_DefaultDomain_0&hash=item5890e37b99
translate.googleusercontent.com/translate_c?spm=11024mpB.1-4A6bR.b-2ofpXb&hl=ru&ie=UTF8&prev=_t&rurl=translate.google.com&sl=auto&tl=ru&u=http://item.taobao.com/item.htm%3Fid%3D5064676875&usg=ALkJrhhG5_D28MeKeP6D0-3WcPZiJ7tw7A

www.ebay.com/itm/2416-Red-LED-3mm-Dot-Matrix-Display-Information-Board-/380393021028?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item589130de64

www.dealextreme.com/p/jy-mcu-8x-green-light-digital-tube-8x-key-8x-double-color-led-module-104329
translate.googleusercontent.com/translate_c?spm=11024mpB.1-4A6bR.b-2ofpXb&hl=ru&ie=UTF8&prev=_t&rurl=translate.google.com&sl=auto&tl=ru&u=http://item.taobao.com/item.htm%3Fid%3D5065057607&usg=ALkJrhhdxfm3rlVZWJ7PdY5Qeh9YwjSoqA

Тоже каскадируются.
Микросхема стоит TM1638, pdf нашёл только на китайском
www.szpth.com/p/zl/TM1638.pdf

code.google.com/p/tm1638-library/
www.youtube.com/watch?v=0B5GQWyF5SQ

Может кому пригодится…
0
TM1638, pdf, на английском
leadfsbo.com/tm1638en.pdf
0
Max7219 не заставил выводит бегущую строку, хоть бегущая строка и задача первокусников, но не получаеться она у меня до сих пор на этом максе. Получаеться бегущая строка в случае со сдвиговыми регистрами без проблем…
0
А я себе собрал модуль из 2-х матриц 5х7 на MBI5025 и 595-м регистре, управление по SPI. Бегущая строка на них без проблем. Драйвер MBI5025 стоил 40 с чем-то рублей, регистр точно не помню, ну где-то рублей семь, плюс всякая мелоч типа транзисторов, R, C. Правда сам по себе MBI ничего особенного не представляет — тот же регистр только в профиль.
0
  • avatar
  • Anton
  • 19 декабря 2011, 15:27
посмотрел у местных спекулянтов, и мягко говоря, о%уел. kosmodrom.ua/product.php?page=0&name=max7219 58(!!!)грн. %) %) %) а реально 60-65, т.к. у них на сайте «мелкооптовые цены», а розница процентов на 10 выше…

ЗЫЖ стало интересно, т.к. только что из (почтового) ящика достал 10pcs за $5…
ЗЗЫЖ 1грн примерно 4-4,5р.
0
В пиках с их софтом не силён, смущает организация cmd[10];
Вы передаёте сначала данные, а потом адрес? Или вы просто cmd[10] с конца читаете?
0
автотрассировщик кучу лишних переходных отверстий ставит
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.