Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
403
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

Приведем также пример использования функции для программирования изображения символа с кодом 0x01 в соответствии с рисунком 3.10.6:

char NewSymbol[]= {0x00,0x0A,0x1F,0x1F,0x0E,0x04,0x00,0x00};

...

ProgSymbol(NewSymbol,0x8);

Пример включения запрограммированного символа в выводимую на индикатор строку

PrintSymbol("I \x01 ARM7",0x04);

3.11 Управление матричным светодиодным индикатором

3.11.1 Задание

Разработать программу, формирующую изображение произвольного символа с помощью светодиодной матрицы 8x8 точек, управляемой динамически через сдвиговые регистры по интерфейсу SPI.

3.11.2 Основные рекомендации

На учебной плате установлена светодиодная матрица 8×8 точек

LMD08088AG-15 производства фирмы Wenrun Optoelectronic. Матрица предназначена для динамической индикации. Это значит, что одновременно могут гореть несколько светодиодов только одного столбца. Светодиоды подключены по схеме «общий катод» (рисунок 3.11.1). Подключая питание к каждому из столбцов по очереди с высокой частой, создается зрительное впечатление изображения. Полный цикл рекомендуется повторять не менее 100 раз в секунду.

Рисунок 3.11.1 – Схема управления светодиодной матрицей

196

Управление светодиодами осуществляется с помощью сдвиговых регистров типа 74HC595 производства фирмы NXP. Выходы регистра управления столбцами усилены p-n-p транзисторами, так как суммарный ток светодиодов превышает предельно допустимый ток выходов регистра и составляет примерно 48 мА. Через каждую линию строк протекает ток только одного светодиода (около 6 мА), поэтому строки (катоды светодиодов) подключены к регистрам непосредственно.

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

Для формирования символов предлагается использовать файл Font_6x8.h, содержащий объявление массива — таблицы знакогенератора. Файл имеет следующую структуру:

const char Font_6x8_Data[]=

 

{

 

...

 

0x00, 0x7f, 0x09, 0x09, 0x09, 0x01,

// 0x46 - 'F'.

...

 

}

 

Каждая строка файла соответствует символу таблицы ASCII. Пример приведен для латинской буквы «F». Байты соответствуют столбцам точечного изображения символа (двоичная единица — точка светится, двоичный ноль — не светится). Массив является одномерным, поэтому индекс каждого

элемента должен рассчитываться по формуле

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

(3.11.1)

где

— ASCII-код символа;

 

— номер столбца изображения символа. На

рисунке 3.11.1 показана схема кодирования символов таким способом.

 

3.11.3 Алгоритм основной программы

 

 

 

 

 

 

 

 

К программе необходимо подключись файл, содержащий таблицу

знакогенератора Font_6x8.h директивой

 

 

 

 

 

 

 

 

0x45·6

 

 

0x45·6+5 0x46·6

 

 

0x46·6+5

0x47·6

 

 

0x47·6+5

0

1

1

1

1

1

0

1

1

1

1

1

0

 

1

1

1

0

0

1

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

1

0

1

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

0

0

1

1

1

1

0

0

1

1

1

1

0

0

1

0

1

1

1

0

1

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

1

0

1

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

1

0

1

1

1

1

1

0

1

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0x00

0x7F

0x49

0x49

0x49

0x41

0x00

0x7F

0x09

0x09

0x09

0x01

0x00

0x3E

0x41

0x49

0x49

0x7A

Рисунок 3.11.2 – Схема кодирования изображений символов в таблице знакогенератора Font_6x8.h

197

#include "Font_6x8.h"

Глобальные переменные программы: а) K — целочисленный счетчик;

б) Map — «карта» столбца индикатора — одномерный байтовый массив из восьми элементов.

В основный программе потребуется также локальный счетчик k.

1.Для использования передатчика SPI0 необходимо перевести линию P0.6 в режим MOSI, линию P0.4 в режим SCK (регистр PINSEL0).

2.Настроить на выход линию P0.15, к которой подключен стробирующий сигнал RCK сдвиговых регистров.

3.Настроить передатчик SPI (регистр S0SPCR):

а) в поле BITS выбрать разрядность 16-бит (по 8 разрядов для управления строками и столбцами светодиодной матрицы);

б) установить передачу, начиная с младшего бита (бит LSBF); в дальнейшем такой порядок упростит алгоритм;

в) включить режим ведущего (бит MSTR);

г) включить управление разрядностью (бит BITEN).

Основная программа

Процедура обработки прерывания от таймера

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 Настройка режима

1

 

 

 

 

 

 

 

Формирование кода C

 

 

 

линий P0.6 и P0.4

 

для столбца K

 

 

2

 

2

 

 

 

 

 

 

 

Настройка направления

 

Инкремент K

 

 

 

линии P0.15

 

 

 

 

 

 

 

 

 

3

 

3

 

 

 

 

 

Да

 

 

K > 7

 

 

 

 

Настройка SPI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

4

 

 

 

Нет

K = 0

 

 

 

 

 

 

Настройка таймера и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

схемы совпадения,

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

включение таймера

 

 

 

 

 

 

 

 

 

Передача по SPI С

 

 

 

 

 

 

 

 

5Настройка системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

прерываний

6

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

6

 

 

Передача ?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Формирование

 

 

 

 

 

 

 

 

 

 

карты матрицы

 

 

Нет

 

 

 

 

 

7

 

 

 

 

 

 

 

7

 

 

Строб на P0.15

 

 

 

 

 

 

 

 

 

 

 

 

 

Пустая команда

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Инициализация

 

 

 

 

 

системы прерываний

 

 

Возврат

Рисунок 3.11.2 – Блок схема алгоритма управления светодиодной матрицей

198

Рисунок 3.11.3 – Осциллограммы сигналов интерфейса SPI

 

 

 

 

 

 

RCK

 

RG

 

OUT

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SCL

 

Q7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Q6

1

 

 

 

 

 

 

 

 

 

 

Q5

0

 

 

 

 

 

 

 

 

 

 

Q4

0

 

 

 

 

 

 

 

 

 

 

Q3

1

 

 

 

 

 

 

 

 

 

 

Q2

1

 

 

 

 

 

 

 

 

 

 

Q1

0

 

 

 

 

 

 

SER

 

 

 

Q0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P0.15

 

 

 

 

 

RCK

 

RG

OUT

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SCK0

 

 

 

 

 

SCL

 

Q7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Q6

1

 

 

 

 

 

 

 

 

 

 

Q5

1

 

 

 

 

 

 

 

 

 

 

Q4

1

 

 

 

 

 

 

 

 

 

 

Q3

1

 

 

 

 

 

 

 

 

 

 

Q2

1

 

 

 

 

 

 

 

 

 

 

Q1

1

 

 

MOSI0

 

 

SER

 

 

 

Q0

1

 

Направление сдвига

S0SPDR – Регистр данных SPI

15

 

 

 

 

 

 

 

 

8

7

 

 

 

 

 

 

 

 

0

1

1

1

1

1

 

1

1

0

1

0

1

1

0

 

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 << K

 

Направление сдвига

 

Map[K]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 3.11.4 – Схема связи регистра данных SPI

со сдвиговыми регистрами 74HC595 и светодиодной матрицей

199