Устройства индикации
Работа с драйвером индикаторов MAX7219.
Драйвер семисегметных индикаторов MAX7219 значительно облегчает задачу построения разнообразных цифровых дисплеев и табло. Микросхема берет на себя организацию динамической индикации, при этом для управления необходимо всего три вывода микроконтроллера. Многие платформы программирования содержат готовые библиотеки для работы с MAX7219. Для программирования на низком уровне, особенно микроконтроллеров PIC, можно воспользоваться информацией, приведенной ниже.
Передача данных
Микросхема MAX7219 имеет три линии, по которым осуществляется передача в последовательном коде, всей необходимой информации. Линия DIN используется для информационного сигнала, CLK – тактового, а LOAD – разрешает принимать данные. Имеется еще одна линия DOUT, использовать которую можно как выход данных при последовательном соединении нескольких микросхем.
Реализовать передачу в последовательном коде, с установкой тактирующих импульсов очень просто на любом микроконтроллере. Можно выделить два уровня реализации обмена – физический и информационный. На физическом уровне необходимо выполнить следующие действия:
- Установить низкий уровень на линии LOAD
- Установить первый бит данных
- Установить высокий уровень на линии CLK
- Выждать необходимое время, за которое микросхема считает данные
- Установить низкий уровень на линии CLK
- Пункты 2-5 повторить для оставшихся 15-и битов
- Установить высокий уровень на линии LOAD
Учитывая очень малые требуемые задержки, для работы с MAX7219 не требуется организации каких-либо временных интервалов для большинства частот, на которых могут работать микроконтроллеры.
На информационном уровне предварительно готовится передаваемая информация в виде двух байтов. Старший байт содержит адрес регистра MAX7219, в который будет записана информация, младший – передаваемые данные. Передача начинается со старшего бита старшего байта. Младший бит байта данных передается последним.
Настройка режима работы
Перед началом работы с MAX7219 необходимо вывести ее в рабочий режим и произвести настройку, задав параметры режима декодирования и яркости свечения индикаторов, и количества подключенных элементов. После включения все регистры микросхемы сброшены, а сама она находится в неактивном состоянии. Включение MAX7219 производится записью 1 в регистр Shutdown, имеющий адрес 0Сh. Соответственно, запись 0 в этот регистр приведет к отключению индикации.
MAX7219 поддерживает два режима работы. Первый простой, при котором каждый бит байта данных отвечает за состояние одного элемента индикатора. Этот режим можно использовать для отображения нестандартных символов или при работе со светодиодными матрицами. Для задания свечения того или иного элемента семисегментного индикатора, можно использовать следующую последовательность битов: «PABCDEFG», где P – десятичная точка. Второй режим – декодирование из двоично-десятичного кода. В этом режиме, в качестве данных используется двоичное представление десятичной цифры, что позволяет избежать преобразования данных. В драйвер записывается непосредственно десятичная цифра, которую необходимо отобразить. Микросхема MAX7219 в этом режиме способна индицировать цифры от 0 до 9, символ минуса, буквы E,H,L,P и пустой индикатор. После подачи питания, по умолчанию, установлен простой режим. Изменить режим каждого из 8 индикаторов можно путем установки соответствующего бита в регистре 09h.
Настройка яркости в MAX7219 может быть выполнена программно, путем задания времени (ширины импульса) включения индикатора. Для этого достаточно записать число от 00h до 0Fh в регистр микросхемы 0Ah. Всего имеется 16 градаций яркости. Минимальная яркость достигается при значении 0, максимальная, при значении 0Fh. Дополнительно изменить яркость можно путем подбора внешнего сопротивления Rset, с помощью которого производится ограничение тока через индикаторы.
В случае, если используются не все 8 семисегментных индикаторов, с которыми способна работать MAX7219, рекомендуется производить работу только с подключенными. Для этого в регистр 0Bh записывается количество подключенных индикаторов, начиная с 0. Это значит, что при 0 в 0Bh работает только 0 индикатор, 1 соответствует включенным элементам 0 и 1, 2 – 0,1,2, а 7, записанная в 0Bh включает все индикаторы.
Пример программы
Пример программы написан на языке Ассемблер для микроконтроллеров PIC16. В примере используются переменные ADR и DAT, в которые производится запись адреса регистра MAX7219 и передаваемых данных. Для на чал передачи необходимо вызвать подпрограмму MAX7219X1. Перед началом работы возможно провести инициализацию микросхемы с помощью вызова подпрограммы InitMAX7219.
;**************************************** ;* Необходимые определения * ;**************************************** cblock 0x20 DAT ; Байт Данных MAX7219 ADR ; Байт адреса MAX7219 count ; Счетчик BUFF endc MAX7219 EQU PORTC ; Порт к которому присоединен драйвер CLC1 EQU .0 ; Выход тактовый MAX7219 DIN1 EQU .2 ; Выход данных MAX7219 CS1 EQU .1 ; Выход разрешения MAX7219 ;**************************************** ;* Подпрограммы * ;**************************************** ;**************************************** ;*** ПЕРЕДАЧА ДАННЫХ В МАХ7219X1 *** ;*** ADR - адрес сегмента *** ;*** DAT - цифра *** ;*** вызов передачи MAX7219X1 *** ;**************************************** MAX7219X1 ; ** Передача адреса ** movf ADR,w ; Запись адреса в буфер передачи movwf BUFF bcf MAX7219,CS1 ; Установка разрешения обращения к микросхеме call TransMAX ; Вызов подпрограммы передачи байта в MAX7219 ; ** Передача данных ** movf DAT,w ; Запись адреса в буфер передачи movwf BUFF call TransMAX ; Вызов подпрограммы передачи байта в MAX7219 bsf MAX7219,CS1 ; Сброс разрешения обращения к микросхеме return ;**************************************** ;*** Передача байта в МАХ7219X1 *** ;**************************************** TransMAX movlw .8 ; Установка счетчика movwf count TransB rlf BUFF,f ; Сдвиг адреса через перенос bcf MAX7219,DIN1 ; Выставление бита адреса на шину btfsc STATUS,C bsf MAX7219,DIN1 bsf MAX7219,CLC1 ; Установка синхроимпульса bcf MAX7219,CLC1 ; Сброс синхроимпульса decfsz count,f ; Декремент счетчика goto TransB ; Если счетчик не 0 то переход к след. биту return ;**************************************** ;*** Инициализация МАХ7219X1 *** ;**************************************** InitMAX7219 bcf MAX7219,DIN1 bcf MAX7219,CLC1 bsf MAX7219,CS1 ; Выход из режима Shutdown (0Ch) movlw 0Ch movwf ADR movlw b'00000001' movwf DAT call MAX7219X1 ; Установка яркости (0Аh) movlw 0Ah movwf ADR movlw b'00001010' ; Значение яркости movwf DAT call MAX7219X1 ; Установка установка количества работающих сегментов (0Bh) movlw h'0B' movwf ADR movlw b'00001111' movwf DAT call MAX7219X1 ; Установка режим декодирования (09h) movlw 09h movwf ADR movlw b'11111111' ; Индикаторы для декодирования movwf DAT call MAX7219X1 return