Чертеж на 8х32 светодиодной матрице с 74HC154

8

Как отправить шаблон в светодиодную матрицу 8x32? Я использую AT89S52 микроконтроллер с 74HC154 линии декодера 4-16, программирование в C с Keil IDE. Я сделал вертикальное сканирование, но на следующем этапе я в тупике. Я включу схему, если это необходимо. Схема та же, что и в приведенной ниже, только я не использую 74HC138, общую анодную матрицу и использую UN2803 в качестве драйвера, я не использую память

Порт 1 - это столбец, порт 2 - это строка ... код:

 row = 0xFF;
     //for (j=0x01; j< 0x08; j<<=1)  {   /* scan left to right */
     for (j=0x00; j<=0x0F; j++)
     {
          E1=0;
          E2=0;
          P1 = j;
          P2 = row;
                                   /* Output to LED Port */
          for (i = 0; i < 100; i++) 
           {  /* Delay for 100 ms */
              delay ();                       /* call delay function */

           }

введите описание изображения здесь

Рик Муравей
источник

Ответы:

3

Обычный шаблон для управления мультиплексированным светодиодным дисплеем MxN состоит в том, чтобы обозначить одно направление как «строки», а другое как «столбцы», независимо от физического расположения на экране, так что система будет подавать питание на «рядные» провода по одному за раз, и, в то время как каждый ряд находится в последовательности, система подает питание на провода «столбца» для всех светодиодов в этом ряду, которые должны гореть.

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

Микросхемы 74HC154 могут нормально работать в логике выбора строки, но поскольку одновременно может быть активен только один выход, они не подходят для управления столбцами. Если вы хотите отсканировать свое «вбок», чтобы логически получить к нему доступ в виде 32 строк и 8 столбцов, тогда 74HC154 может подойти для выбора строки, но тогда вам потребуется добавить дополнительное оборудование, чтобы каждая строка могла предоставить тока достаточно для управления восемью светодиодами, и вам также нужно будет что-то добавить к каждому выходу UN2803, чтобы ограничить токи.

Скорее всего, вы захотите заменить 74HC154 либо на набор микросхем 74HC595 (сдвиговые регистры) и резисторы, либо на один или несколько чипов драйвера светодиодов со встроенным ограничителем тока (например, четыре Texas Instruments TLC5916). , доступный от Digi-Key). Подключите эти чипы к порту SPI вашего контроллера и последовательно сдвигайте каждую строку данных. Если вы используете микросхему драйвера нижнего уровня (например, вышеупомянутый TLC5916), вам придется изменить драйверы строк на источник тока, а не поглотить его. Самый простой способ сделать это - просто использовать восемь NPN-транзисторов, каждый с коллектором, привязанным к положительной шине (вы можете использовать нерегулируемый источник питания, если хотите), базу, привязанную к выходу контроллера или чипу декодера, и излучатель привязан к светодиодному ряду.

Supercat
источник
так что я должен изменить логику? P2 = столбик; P1 = Row? ".... тогда 74HC154 может подойти для выбора строки ..." Я скоро попробую эту логику в программном обеспечении ...
Rick Ant
Если вы хотите иметь 32 вертикальных «ряда», вы можете использовать 74HC154 для их выбора, но 74HC154 не способен к источнику большого тока (и даже к значительному снижению), а движение с рабочим циклом 1/8 почти конечно лучше, чем езда с рабочим циклом 1/16. Вы не указываете, подключены ли светодиоды в горизонтальном направлении в качестве анодов или катодов, но я бы порекомендовал использовать сильные драйверы (возможно, дискретные транзисторы) для строк и драйверы ограничения тока для столбцов (независимо от того, являются ли строки в конечном итоге горизонтальный или вертикальный).
Суперкат
Если вы хотите, чтобы ваш дисплей был ярким, вероятно, будет необходимо, чтобы ток возбуждения для каждого провода колонки был выше, чем максимальный ток, который светодиод может выдержать безопасно. Чтобы не повредить светодиоды, если код перестает работать, вам, вероятно, следует спроектировать драйвер строки, чтобы он не управлял строкой в ​​течение слишком долгого времени, даже если процессор работает со сбоями. Есть множество способов, которыми это может быть достигнуто. Если вы используете дискретные транзисторы для рядных драйверов, можно добавить резистор и колпачок к каждому, чтобы ограничить максимальный рабочий цикл.
суперкат
В качестве альтернативы, если кто-то использует счетчик для управления строками, можно использовать схему синхронизации, чтобы определить, истекло ли чрезмерное время между счетами, и либо очистить дисплей, либо сгенерировать «автоматический» импульс счета.
суперкат
у вас есть пример кода для этого? Например я хочу отобразить символ AAAA?
Рик Ант