Найти в Дзене

Орион-128. Драйвер MAX7219 + семисегментные индикаторы.

Всех приветствую! Любой радиолюбитель рано или поздно сталкивается с таким понятием как динамическая индикация. Самая популярная поделка в этом вопросе - это часы. Каждый их делал. Я тоже и не раз. Нет ни одного знакомого радиолюбителя, который не делал бы часы будь то из радиоконструктора или из другого радиожурнала по любительской схеме. Но разговор сегодня не про часы, хотя о подключении их к Ориону можно почитать здесь Сегодня рассмотрим в работе очень удобный программируемый драйвер динамической индикации MAX7219. Этот драйвер способен управлять восемью каналами динамической индикации, разрешает записывать данные в любой момент времени в любой разряд, а также обладает другими полезными свойствами, например, может управлять яркостью индикации. Драйвер выпускается как в DIP-корпусе, так и SOIC и продаётся как отдельная микросхема, так и в сборе модулем с индикаторами. Я приобрёл такой модуль и сейчас мы попробуем с ним поработать. Как видно из надписей, на плате есть сигналы DIN и

Всех приветствую!

Любой радиолюбитель рано или поздно сталкивается с таким понятием как динамическая индикация. Самая популярная поделка в этом вопросе - это часы. Каждый их делал. Я тоже и не раз. Нет ни одного знакомого радиолюбителя, который не делал бы часы будь то из радиоконструктора или из другого радиожурнала по любительской схеме. Но разговор сегодня не про часы, хотя о подключении их к Ориону можно почитать здесь

Сегодня рассмотрим в работе очень удобный программируемый драйвер динамической индикации MAX7219. Этот драйвер способен управлять восемью каналами динамической индикации, разрешает записывать данные в любой момент времени в любой разряд, а также обладает другими полезными свойствами, например, может управлять яркостью индикации. Драйвер выпускается как в DIP-корпусе, так и SOIC и продаётся как отдельная микросхема, так и в сборе модулем с индикаторами. Я приобрёл такой модуль

-2

и сейчас мы попробуем с ним поработать.

Как видно из надписей, на плате есть сигналы DIN и DOUT. Это значит, что можно соединять в одну цепочку несколько таких модулей. Но мы возьмём один.

Подключим модуль к Ориону по следующей схеме:

-3

Выглядит это вот так

-4

Никаких переходных плат, только провода! 👍

Теперь напишем программу и что-нибудь отобразим. Например, выведем на индикаторы надпись "Orion128", но не просто, а со спецэффектами.

Для этого нам понадобится ОС DSDOS, ассемблер ASSM$ v2.7, текстовый редактор ED$.

Для внешних устройств, как всегда, пишется процедура инициализации:

PT_MAX7219: EQU 0F603h
;
MAX7219_INIT:
MVI A,93h
STA PT_MAX7219
MVI A,20h ;DIN=0, CLK=0, /CS=1
STA PT_MAX7219-1
LXI B,0B07h ;SCAN LIMIT (8 DIGIT)
CALL SEG_WR
LXI B,0900h ;DECODE MODE (0-NORMAL, FF-BCD)
CALL SEG_WR
LXI B,0A00h ;INTENSITY
CALL SEG_WR
LXI B,0C01h ;SHUTDOWN(0-SHUTDOWN, 1-NORMAL)
CALL SEG_WR
LXI B,0F00h ;DISPLAY TEST
CALL SEG_WR
MVI D,8 ;BLANK ALL DIGIT
M1:MOV B,D
MVI C,0
CALL SEG_WR
DCR D
JNZ M1
RET

Также напишем подпрограмму записи в сам модуль. Это, собственно, самая главная процедура для работы с модулем.

SEG_WR:
;in [BC] ADDRESS & DATA
PUSH DMVI D,8 ;SEND ADDRESSS
WR_ADDR:
MOV A,B
ANI 80h
STA PT_MAX7219-1
MVI A,0Dh
STA PT_MAX7219
MVI A,0Ch
STA PT_MAX7219
MOV A,B
RAL
MOV B,A
DCR D
JNZ SWR_ADDR
MVI D,8 ;SEND DATA
SWR_DATA:
MOV A,C
ANI 80h
STA PT_MAX7219-1
MVI A,0Dh
STA PT_MAX7219
MVI A,0Ch
STA PT_MAX7219
MOV A,C
RAL
MOV C,A
DCR D
JNZ SWR_DATA
MVI A,20h
STA PT_MAX7219-1
POP D
RET

Вот и всё, собственно!
Теперь на основе подпрограммы SEG_WR напишем ещё несколько подпрограмм для управления модулем: выводом точки, управления яркости и вкл/выкл дисплеем модуля:

SEG_WR_DOT:
;in [BC] [B] SEGMENT NUMBER (1..8)
; [C] DATA (0..7F)
MOV A,C
ORI 80h
MOV C,A
CALL SEG_WR
RET

SEG_INTENSITY:
;in [C] INTENSITY (0..F)
MVI B,0Ah
CALL SEG_WR
RET

SEG_SHUTDOWN:
;in [C] SHUTDOWN (0..1)
MVI B,0Ch
CALL SEG_WR
RET

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

Результат работы после запуска файла 7SEG$:

Материалы по статье можно скачать по ссылке https://disk.yandex.ru/d/g8w-wA8ka8bfWw

Про работу с матрицей 64х8 можно прочитать здесь

До новых встреч!