Конструкція матричного індикатора
Матричний індикатор служить для відображення цифр, символів і спеціальних знаків, графічних зображень в різних пристроях. Виготовляються матричні індикатори різних кольорів (червоні, сині, RGB ..), бувають із загальним анодом (катодом), формою корпусу і розмірів. У матричному дисплеї, кілька світлодіодів з'єднані разом в рядках і стовпцях утворюють матрицю (рисунок 1).
|
Рисунок 1 - Матричний світлодіодний індикатор 8х8 |
Це зроблено, щоб звести до мінімуму кількість виводів, необхідних для керування світлодіодами. Наприклад, світлодіодна матриця розмірністю 8×8 світлодіодів містить 64 світлодіоди, для керування якими потрібно 64 порта вводу/виводу, по одному для кожного пікселя індикатора. Якщо підключити всі аноди разом в рядах (R1-R8), і катоди в стовпчиках (C1-C8), необхідна кількість портів вводу/виводу зменшується до 16. Кожен світлодіод, адресується номером рядка і стовпчика. Це як в грі "морський бій", наприклад, для того щоб засвітився світлодіод обведений на рисунку 1 необхідно подати "+" на рядок R6 та "-" на стовпчик С3. На малюнку нижче, якщо R4 витягнув високим і С3 на низький рівень, LED в четвертому ряду і третьому стовпці буде включений. Довільне зображення, що формується пікселями індикатора може бути отримане методом швидкого сканування рядків або стовпців. Розглянемо для прикладу формування зображення методом сканування рядків на матриці 5х5. В цьому випадку сканування здійснюється по рядкам R1-R5 (номери стрічок) на які почергово подається логічна одиниця з високою частотою (>100 Гц). Код для кожної стрічки подається на стовпчики C1-C5, зверніть увагу, що код інверсний бо в стовпчики матриці з'єднанні катоди світлодіодів. На рисунку 2 зображено формування зображення цифри "3" на індикаторі, це зображення можна умовно поділити на стрічки в яким відповідає певний код чергування цих стрічок на високій частоті утворює суцільне зображення на індикаторі.
|
Рисунок 2 - Формування зображення на індикаторі 5х5 |
В динаміці зміну станів індикатора наведено на діаграмах на рисунку нижче, як бачимо використовуючи динамічну індикацію на матричний дисплей можна вивести будь-яку конфігурацію пікселів та відображати різноманітні символи.
|
Рисунок 3 - Формування зображення цифри "3" на світлодіодній матриці 5х5 в динаміці |
Приступимо до написання програми, використаємо для нашої цілі мікроконтролер Atmega8 та компылятор CodeVisionAVR, спочатку як завжди підключимо необхідні бібліотеки та об'явимо змінні.
#include <mega8.h>
#include <delay.h>
// Declare your global variables here
unsigned int v = 5; //змінна яка виводиться на дисплей
unsigned short k[] = {0b00001,0b00010,0b00100,0b01000,0b10000};// номери стрічок
unsigned short i3[10][5] = { // стрічки
{0b1110000,0b1110110,0b1110110,0b1110110,0b1110000}, //0
{0b1111101,0b1111001,0b1110101,0b1111101,0b1111101}, //1
{0b1110000,0b1111110,0b1110000,0b1110111,0b1110000}, //2
{0b1110000,0b1111110,0b1111000,0b1111110,0b1110000}, //3
{0b1110110,0b1110110,0b1110000,0b1111110,0b1111110}, //4
{0b1110000,0b1110111,0b1110000,0b1111110,0b1110000} //5
};
void b(void)
{
int c=0;
while(c<5)
{ PORTB=0xff; //погасимо стрічку
PORTD=k[c]; //вибір стовбця (правильніше номера стрічки) PORTB=i3[v][c]; // вибір числа з масиву
c++;
delay_ms(3); //затримка
}
}
void main(void)
{ // Ініціалізація
// Port B initialization
DDRB=0x1F;
// Port C initialization
PORTC=0x00;
DDRC=0x00;
// Port D initialization
PORTD=0x00;
DDRD=0x1F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Основна програма
while (1)
{
b();
}
}
Немає коментарів :
Дописати коментар