На главную страницу На страницу выбора описаний устройств
Краткое
описание
Плата предназначена для построения табло отображения текстовой и графической информации.
Дополнительно на плату можно установить:
GSM модем
Порт USB
Порт RS232
Приемник ИК команд
Память для хранения изображений и текста
Принципиальная электрическая схема представлена на рис. 1.
Рис. 1. Принципиальная электрическая схема светодиодного дисплея.
D1 – микроконтроллер ATmega16A [1].
C1 … С5 — блокировочные конденсаторы.
C6, C7, ZQ1 – часть схемы тактового генератора микроконтроллера, который задает тактовую частоту микроконтроллера. В данном устройстве тактовая частота равна 7,3728 МГц.
Х1 — разъем для программирования микросхемы (прошивки программы).
Дисплей собран на 4-х светодиодных матрицах H1 – H4 (8х8 точек) типа TA23-11SRWA [2]. Можно использовать матрицы других размеров и других производителей. Для управления катодами матриц используются сдвиговые регистры D3 и D4 типа MBI5026CD [3]. Они соединены последовательно для получения 32 разрядного регистра. Загрузка информации в регистры производится из микроконтроллера по последовательному интерфейсу (сигналы “SI”, “SCK”). После полной загрузки новой информации в регистры используется сигнал “LE” для защелкивания новой информации в регистры. С помощью сигнала “-OE” выходы регистров отключаются от светодиодных матриц, что дает возможность избежать «паразитной засветки» светодиодов при переключении отображения строк.
Для управления анодами индикаторов используются ключи на транзисторах VT1 – VT8 для усиления тока. Поскольку аноды каждых 8 светодиодов индикатора соединены вместе, ток, протекающий через них, может быть до 8 раз больше, чем через один светодиод. Для управления ключами использована микросхема D5 ULN2803AFW, которая может быть от разных производителей. В каждый момент времени происходит отображение одной из 8-ми строк дисплея.
На рис. 2. Представлена схема расположения матриц и нумерация строк и столбцов дисплея.
Рис. 2. Схема расположения матриц и нумерация строк и столбцов светодиодного дисплея.
Разработаем программу для управления дисплеем. Отображение информации будем осуществлять построчно. Строка 1 – строка 8, строка 1 - строка 8, … Выберем частоту сканирования дисплея 100 Гц. Формировать необходимые временные интервалы будем с помощью таймера 1:
// режим работы таймера - 0 (Normal)
// Пусть частота обновления
дисплея 100 Гц (период 10 мс).
// За каждые 10 мс необходимо отобразить 8 строк.
// Т.о.
прерывания таймера для отображения строки должны идти через каждые 10/8=1,25мс
// Следовательно, при тактовой
частоте 7372800 Гц прерывания таймера должны быть через:
// 0,00125 с / (1 / 7372800 Гц)
= 0,00125 с * 7372800 Гц = 9216
// создадим константу для
предварительной загрузки таймера
#define TCNT1_PRELOAD 65536 - 9216
// таймер выключен
TCCR1A = 0b00000000;
TCCR1B = 0b00000000;
TCNT1 = TCNT1_PRELOAD; // предварительная загрузка таймера
// разрешить прерывание от
Timer1
TIMSK |= 1 << TOIE1;
Для работы с дисплеем зададим буфер для хранения отображаемых данных, переменные для выбора нужной строки и матрицы:
// управление матрицей
#define
MatrixN 4 // количество матриц 8*8
volatile unsigned char
Matrix; // номер матрицы, для которой выводятся
данные
volatile unsigned char
Row; // номер строки, в которую выводятся данные
// буфер для хранения данных,
выводимых на дисплей
char
screen_buf [MatrixN*8];
Инициализируем SPI для работы с регистрами D3 и D4:
void SPI_Init(void)
{
// регистр SPCR:
// бит 7: прерывания запрещены
// бит 6: SPI включен
// бит 5: первым идет младший бит
// бит 4: режим мастера
// бит 3-2: режим 0
// бит 1-0: частота SPI = fsck/2
SPCR = 0b01110000;
// регистр SPSR:
// бит 0: включено удвоение частоты
SPI
SPSR = 0x01;
}
В подпрограмме обработки прерывания таймера будем последовательно записывать данные буфера одной строки в регистры D3 и D4. И изменять номер выводимой строки “Row”, осуществляя таким образом вывод строк последовательно циклически:
ISR (TIMER1_OVF_vect)
{
TCNT1
= TCNT1_PRELOAD; // предварительная загрузка таймера
//
записываем изображения символов в сдвиговый регистр (строка) для всех матриц
for(Matrix = 0; Matrix
< MatrixN; Matrix++)
SPI_MasterTransmit(screen_buf[Matrix*8 + Row]);
//
гашение индикатора
PORTA
= 0x00; // гасим строки
PORTB
|= (1 << MBI5026_OE); // выключаем
выходы сдвиговых регистров
PORTB
|= (1 << MBI5026_LE); //
защелкиваем новые данные в сдвиговые регистры
PORTB
&= ~(1 << MBI5026_LE);
//
включение индикатора
PORTB
&= ~(1 << MBI5026_OE); // включаем выходы сдвиговых регистров
PORTA
= (1 << Row);
// включаем текущую строку
Row++; //
увеличиваем номер выводимой строки
if(Row > 7) Row = 0; // если
достигли последней - начинаем с начала
}
В качестве примера сделаем отображение на дисплее символов диода, конденсатора, резистора и переключателя. Полный текст программы этого примера для средств разработки [4, 5] есть в приложении. Результат работы программы показан на рис. 4.
Рис. 4. Отображение элементов схем на дисплее.
Питание дисплея осуществляется от источника стабилизированного напряжения +5В. При полностью светящемся дисплее (горят все точки) ток потребления порядка 0,75А. При половине светящихся точек – 0,5А.
Ориентировочные цены:
Для подписчиков журнала «Лаборатория электроники и программирования» http://journal.electroniclab.ru/ предусмотрены скидки.
Стоимость печатной платы без компонентов (промышленная двухсторонняя, с маской, без маркировки) – 300р. (для подписчиков журнала 250р.)
Стоимость компонентов для сборки платы – уточняйте.
Стоимость доставки от 250р. в зависимости от места вашего проживания.
Предусмотрены скидки при заказе нескольких одинаковых изделий или при заказе разных изделий на определенную сумму.
Для заказа отправьте письмо на адрес micro51@mail.ru с указанием изделий и их количества, а также город вашего проживания (для определения почтовых расходов).
Если вы хотите приобрести данное изделие дешевле указанной цены, присоединяйтесь к системе «коллективных заявок»
Полное
описание.
Опубликовано в журнале «Лаборатория электроники и
программирования» в номерах 1,2. Получить его вы можете, подписавшись на журнал
или при покупке устройства.
Список литературы и
ссылки
1.
Datasheet ATmega16A. © Atmel
Corporation. http://www.atmel.com/
2.
Datasheet TA23-11SRWA. ©
Kingbright Elec. Co., Ltd. http://www.kingbright.com/
3.
Datasheet MBI5026. © Macroblock, Inc. http://www.mblock.com.tw/
4.
WinAVRTM . http://winavr.sourceforge.net/
5.
AVR Studio®. © Atmel Corporation. http://www.atmel.com/