Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Драйвер MAX7219 для светодиодных матриц 1088


Драйвер MAX7219 для светодиодных матриц 1088

Сообщений 1 страница 15 из 15

1

Саша, я бы вывод строк оформлял по аналогии вот с этими исходниками: 16x8 LED dot matrix with MAX7219 module.

Как всегда использую Notepad++ для сборки и отладки проекта:

http://img.radiokot.ru/files/4453/thumbnail/92gd1ycqx.png

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

Архив: DM1088_20140129.zip (~60 Мб)

Там в архиве есть исходники из приведённой выше ссылки (в папке doc). Интерфейс модуля DotMatrix предназначен для вывода спрайтов (поточечных изображений) на набор матричных модулей разной длины. Я раньше с MAX7219 не работал, поэтому трудно сразу завести примеры. У меня где-то есть ошибки как при портировании исходников, так и, возможно, в согласовании их со схемой в Proteus. Я выбрал ATmega16, т.к. думал, что проблема в мк, когда возникали ошибки компиляции. На самом деле нужно было более полно настраивать программный SPI, указав вывод для Din. Сейчас всё компилируется, но не работает.

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

0

2

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

0

3

Новая версия проекта: DM1088_20140130. Индикация работает, теперь нужно доработать функции рисования на индикаторе. Я сделал несколько тестов для примера, но код ещё нужно дорабатывать.

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

+1

4

Работает!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

http://s8.uploads.ru/t/fP4Sy.jpg http://s9.uploads.ru/t/aKVGg.jpg



А почему так?:

' Строб записи.
Sub Dotmatrix_writestrobe

   ' Формируем короткий строб записи.
    Set Dm_load

    $asm
        NOP
    $end Asm

    Reset Dm_load

End Sub

а не так?:

' Строб записи.
Sub Dotmatrix_writestrobe

   ' Формируем короткий строб записи.
    Set Dm_load
    NOP
    Reset Dm_load

End Sub

Отредактировано sasha_1973 (2014-01-31 06:42:24)

0

5

Да, тоже вариант. Саша, убери в настройках IDE переформатирование кода. Среда портит моё форматирование и имена переменных (Enviromnent\Editor, две галочки напротив слов Reformat).

Там в коде ещё нужно поколдовать с выводом точки, рисует на одну строку ниже, чем должно быть. Потом нужно переделать кодовую страницу и разрисовать русский алфавит. Для этого можно воспользоваться поточечным изображением символов, взятых из драйвера HD44780. Там они тоже имеют размер 5х8. Порядок символов в таблице нужно сделать в соотв-вии с кодовой страницей CP-1251. В оригинальном коде первые 32 символа пропускаются. Наверное, чтобы места сэкономить. Эта поправка потом учитывается в DotMatrix_PutChar().

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

0

6

Саша, могу дать задание по созданию русского шрифта для вывода на эти матричные индикаторы. Ниже показана картинка, как это выглядит на примере заглавной буквы "А".

http://img.radiokot.ru/files/4453/thumbnail/94joojklb.png

Вот буква "А" в псевдографике, созданная по картинке:

Код:
'0 .***.
'1 *...*
'2 *...*
'3 *...*
'4 *****
'5 *...*
'6 *...*
'7 .....

http://s8.uploads.ru/t/5yvut.jpg

Кодируем её в код:

Код:
Data 5, 8, &B01111110, &B00010001, &B00010001, &B00010001, &B01111110 ' А

Это данные спрайта (маленькой картинки из точек): ширина, высота, столбцы данных. "Верх" буквы у данных справа, судя по уже имеющейся и работающей таблице.

Я тебе пришлю текстовой файл с заготовкой таблицы, нужно будет её по аналогии продолжить. Комментарии справа соответствуют порядку букв в верхней части CP1251. Нужно брать букву по порядку, найти её вид на картинке выше (русскую или латинскую), нарисовать в псевдографике, а потом закодировать столбцами. Сможешь?

Отредактировано uni (2014-01-31 17:57:02)

0

7

Доделали? исходниками можете поделиться?

0

8

Поделитесь, пожалуйста, примером работы вот с таким модулем, где микросхемы MAX7219 соединены последовательно.

http://s7.uploads.ru/t/w7WT4.jpg

0

9

kokosh написал(а):

Поделитесь, пожалуйста, примером работы вот с таким модулем, где микросхемы MAX7219 соединены последовательно.


Здесь

+1

10

Что-то не то...

http://sh.uploads.ru/t/6eQ4v.jpg

0

11

Сборка другая (корявая). :D

0

12

Здравствуйте! Нужна помощь.
Есть ли у кого готовый исходник или проект на один сегмент Dot matrix 8x8?
http://s3.uploads.ru/UJt8Q.jpg
Нужно просто выводить циферную индикацию B1,1,2,3,4,5,6,7,8.9
Просто индикация без бегущей строки.

В нете ничего подобного не нашел, есть на 4 - 5 - 10 сегментов.
Нужен на один сегмент 8х8.
Заранее благодарен.

0

13

Newmayer написал(а):

В нете ничего подобного не нашел, есть на 4 - 5 - 10 сегментов. Нужен на один сегмент 8х8.

По ссылке sasha_1973 Исследование MAX7219 (SPI драйвер 7seg led индикаторов) в самом низу страницы есть "Похожие темы"...
Там не копались ?

А так, навскидку, сложнее будет увеличить количество разрядов индикации, чем уменьшить... ;)

0

14

Nord написал(а):

сложнее будет увеличить количество разрядов индикации, чем уменьшить

Угу, было где пораскинуть мозгами. :)

0

15

Сделал вот так:

Код:




$regfile = "m16def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 32
$framesize = 40
$baud = 9600

Ddrc = &B11111111
Ddra = &B11111111

config PORTD.7 =input
portd.7=1

Dim W as byte
dim d0(8) as Byte
dim dt as byte

'dim d as byte


'd = 0
w = 1

do

   if pind.7 = 0 then
      incr w
      if w = 9 then w = 1
      waitms 300
   end if

   gosub f1



   select case w
      case 1 : restore d1
      case 2 : restore d2
      case 3 : restore d3
      case 4 : restore d4
      case 5 : restore d5
      case 6 : restore d6
      case 7 : restore d7
      case 8 : restore d8
   end select


   portc=&B00000001
   porta=d0(1)
   waitus 20
   portc=&B00000010
   porta=d0(2)
   waitus 20
   portc=&B00000100
   porta=d0(3)
   waitus 20
   portc=&B00001000
   porta=d0(4)
   waitus 20
   portc=&B00010000
   porta=d0(5)
   waitus 20
   portc=&B00100000
   porta=d0(6)
   waitus 20
   portc=&B01000000
   porta=d0(7)
   waitus 20
   portc=&B10000000
   porta=d0(8)
   waitus 20


loop
end

f1:

   for dt = 1 to 8
      read d0(dt)
   next dt
   'd =1

return
end

d1:
   Data &B11100011, &B11000111, &B11000111, &B11100111, &B11100111, &B11100111, &B11100111, &B11000011

d2:
   Data &B11000011,&B10111101,&B10111001,&B11110011,&B11100111,&B11001111,&B10011101,&B10000001

d3:
   Data &B11000011,&B10011001,&B10011001,&B11110011,&B11111001,&B10011001,&B10011001,&B11000011

d4:
   Data &B10011001,&B10011001, &B10011001, &B10011001,&B11000001,&B11111001,&B11111001,&B11111001

d5:
   Data &B10000001,&B10011101,&B10011111,&B11000011,&B11111001,&B10011001,&B10011001,&B11000011

d6:
   Data &B11000011,&B10011101,&B10011111,&B10000011,&B10011101,&B10011101,&B10011101,&B11000011

d7:
   Data &B10000001,&B10011101,&B10011101,&B11111011,&B11110111,&B11101111,&B11001111,&B11001111

d8:
   Data &B11111001,&B11110001,&B11110001,&B11111001,&B10001001,&B11111001,&B11111001,&B11110001



если есть вариант по проще, буду рад

есть ли возможность интегрировать этот код для модуля Arduino 8x8?

Готовый

Для генерирования циферок использовал этот сайт:
Генератор LED 8x8

Отредактировано Newmayer (2018-10-22 18:37:50)

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Драйвер MAX7219 для светодиодных матриц 1088