Вторник, 03.12.2024, 05:05
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Подключение светодиодной матрицы 8х8
В этой статье познакомимся со всем необходимым для работы с светодиодной матрицей.
В нашем случае это LD-1088BS. Но это не так уж и важно ведь внутренняя структура у разных светодиодных матриц одинаковая.
РИС 1 :



РИС 2 :



РИС 3:


 

Важно понимать из картинок выше:
1) Светодиодная матрица 8х8 это 64 светодиода подключенных особым способом, изображенным на картинке.
2) Из второго рисунка видно что ножки находятся в некотором беспорядке)))
3) Выводить сложное изображение на светодиодную матрицу можно только динамически.
4) На 1 ом рисунке видно, как пронумерованны ножки.
5) На 3 ем рисунке можно увидеть 8 резисторов в 220ом она защитят наши светодиоды от перегорания.

 

 

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define PORT_IN PORTD // выбираем порты к каторым
#define DDR_IN DDRD     // подключена наша светодиодная матрица
#define PORT_OUT PORTB
#define DDR_OUT DDRB

char Led_simvol [][8]={
{ // крест
0b10000001,
0b01000010,
0b00100100,
0b00011000,
0b00011000,
0b00100100,
0b01000010,
0b10000001,
},

{ // сердце
0b00000000,
0b01100110,
0b10011001,
0b10000001,
0b01000010,
0b00100100,
0b00011000,
0b00000000,
},

{ // смайлик
0b00000000,
0b00000000,
0b01100110,
0b01100110,
0b00000000,
0b10000001,
0b01111110,
0b00000000,
},

{ // бегающий квадрат шаг 1
0b00001111,
0b00001001,
0b00001001,
0b00001111,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
},

{ // бегающий квадрат шаг 2
0b11110000,
0b10010000,
0b10010000,
0b11110000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
},

{ // бегающий квадрат шаг 3
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00001111,
0b00001001,
0b00001001,
0b00001111,
},

{ // бегающий квадрат шаг 3
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11110000,
0b10010000,
0b10010000,
0b11110000,
}
};

void Port_init ()
{
DDR_IN=0xFF; PORT_IN=0×00; // настройка порта на выход
DDR_OUT=0xFF; PORT_OUT=0×00; // настройка порта на выход
}

void LED_stroka (char row,char col) //функция рисует строку
{
PORT_IN=0×00; // не выбираем одну из строк
PORT_OUT=~row; // выбираем на какой по порядку строке матрицы рисуем
PORT_IN=col; // рисуем строку на порте
}

void timer_init (void)
{
TCCR0=(1<<WGM01); // устанавливаем режим СТС (сброс по совпадению)
TIMSK |= (1<<OCIE0); // устанавливаем бит разрешения прерывания 1ого счетчика по совпадению
OCR0 = 0b00000011; // определяем число сравнения 
TCCR0|=(1<<CS02); //запуск таймера с предделителем 256
}

char *simvol; // переменная для хранения адреса масива символа
char i=0; // переменная определяем какую строку выводить

ISR (TIMER0_COMP_vect)
{
LED_stroka (simvol[i],1<<i);
if (i==7)i=0;
else i+=1;
}

int main(void)
{
Port_init();
timer_init();
sei();
simvol=&Led_simvol[0][0]; _delay_ms(1000); //выводим крест
simvol=&Led_simvol[1][0]; _delay_ms(1000); //выводим сердце
simvol=&Led_simvol[2][0]; _delay_ms(1000); //выводим смайл

char t;
for(t=3;1;t++)
{ if(t==7) t=3;
simvol=&Led_simvol[t][0];
_delay_ms(400);
}
}

Категория: Изучаем AVR | Добавил: Alex (20.01.2014)
Просмотров: 7677 | Рейтинг: 2.5/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024