Периферийные устройства

Работа с драйвером индикаторов MAX7219.

Передача данных

Микросхема MAX7219 имеет три линии, по которым осуществляется передача в последовательном коде, всей необходимой информации.  Линия DIN используется для информационного сигнала, CLK – тактового, а LOAD – разрешает принимать данные. Имеется еще одна линия DOUT, использовать которую можно как выход данных при последовательном соединении нескольких микросхем.

Реализовать передачу в последовательном коде, с установкой тактирующих импульсов очень просто на любом микроконтроллере.  Можно выделить два уровня реализации обмена – физический и информационный. На физическом уровне необходимо выполнить следующие действия:

  1. Установить низкий уровень на линии LOAD
  2. Установить первый бит данных
  3. Установить высокий уровень на линии CLK
  4. Выждать необходимое время, за которое микросхема считает данные
  5. Установить низкий уровень на линии CLK
  6. Пункты 2-5 повторить для оставшихся 15-и битов
  7. Установить высокий уровень на линии LOAD
Временная диаграмма передачи данных в MAX7219

Учитывая очень малые требуемые задержки, для работы с 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	
 

Еще по теме:

Модуль семисегментных индикаторов

Драйвер семисегментных индикаторов MAX7219/MAX7221.

You have no rights to post comments