Poyasnitelnaya_zapiska
.docxФедеральное агентство связи
Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования
«Сибирский государственный университет телекоммуникаций и информатики»
Кафедра Вычислительных систем
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
по дисциплине «Микропроцессорные системы»
на тему «Бегущая строка»
Выполнил:
студентка 4 к. Ф ИВТ,гр. ИВ-14
Шулбаева Е.И.
Проверил:
Доцент Кафедры ВС, к.т.н.
Борисов А.В.
Новосибирск – 2014
Содержание
Введение ……………………………………………………3
Разработка аппаратной части ………………………………..4
Микроконтроллер ……………………………………………...4
Светодиодная матрица 8х8 ………………………………...5
Принципиальная схема …………………………………….....6
Разработка программной части……..………………………….9
Заключение ……………………………………………………11
Список использованной литературы …………………………1
Введение 3
Разработка аппаратной части 4
Микроконтроллер 4
Принципиальная схема 6
Принципиальная схема 7
9
Заключение 11
Список использованной литературы 12
Введение
Бегущая строка — электронное устройство, предназначенное для отображения текстовой и графической информации. В самом простом варианте текст просто «бежит», двигаясь справа налево. Отображающая матрица обычно состоит из светодиодов. Очень часто помимо простого текста, бегущие строки могут генерировать простейшую графику и накладывать различные эффекты на отображаемый текст.
Цели данной работы:
-
Подключить к микроконтроллеру ATmega8 светодиодную матрицу;
-
Реализовать программу «Бегущая строка» посредством динамической индикации светодиодов;
Разработка аппаратной части
Микроконтроллер
Для использования в данном проекте был выбран микроконтроллер ATmega8 фирмы Atmel в корпусе PDIP (рисунок 1). Это 8-битный микроконтроллер с архитектурой AVR RISC.
Рисунок 1 – Микроконтроллер ATmega8A
Основные характеристики микроконтроллера следующие: 8 Кбайт Flash-памяти, 512 байт памяти EEPROM, 1 Кбайт памяти SRAM, 23 линии ввода/вывода общего назначения, 32 регистра общего назначения, 3 таймера/счётчика, 6-канальный 10-битный АЦП.
Назначение ножек:
VCC – для подачи напряжения питания;
GND – для подключения к земле;
Порты B, C, D – порты ввода/вывода.
RESET (PC6) – сброс микроконтроллера;
AVCC – для подачи напряжения питания для АЦП;
AREF–для подключения внешнего источника опорного напряжения для АЦП.
RL-M1588 - матрица светодиодная 8х8
RL-M1588— это светодиодная матрица, размерности 8х8 светодиодов. Размеры Снизу матрицы, находится два ряда пинов, со стандартным шагом 2.54. Отсчёт пинов ведётся от угла, на котором сходятся стороны матрицы с выступами.
Принципиальная схема
— матричное включение светодиодов. Т.е., подключив столбец (Column) на землю и подавая +5V (лучше через токоограничительный резистор) на строчку (Row), мы зажём светодиод находящийся в заданном узле матрицы. Нарисуем выводы матрицы:
Принципиальная схема
В качестве источника питания используется USB порт на 5 Вольт.
Прошиваем микропроцессор с помощью стандартного BM9010 - USB внутрисхемного программатора AVR. Я использовала импровизированный клон Arduino UNO (ручная пайка гнезда для чипа в макетную плату). Среда разработки программы для прошивки – Arduino. Но т.к. я использовала клон, то получив .hex файл, прошивала ATmega8 с помощью AVRDUDE PROG 3.1.
Пины в среде разработки Arduino не совпадают с DataSheet ATmega8, поэтому сопоставляем их с помощью этой распиновки:
Пины среды Arduino отмечены коричневым цветом, сопостовляем их с DataSheet пинами МК и записываем в программу.
Листинг программы:
const int col[8]={0,1,2,3,4,5,6,7};
const int row[8]={8,9,10,11,12,13,A0,A1};
int v=10;
int dms=200, dx=116;
//int dx=16;
boolean A[8][116] =
{
0,1,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,0,1,0,1,0,0,0,0,0, 1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,0, 1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0, 0,1,1,1,1,1,0,1, 0,0,0,0,
0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0, 1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0, 0,1,0,0,0,0,0,1, 0,0,0,0,
0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0, 0,1,0,0,0,0,0,1, 0,0,0,0,
0,1,0,1,0,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0, 1,0,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0, 0,1,1,1,1,0,0,1, 0,0,0,0,
0,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0, 1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0, 0,0,0,0,0,1,0,1, 0,0,0,0,
0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0, 0,0,0,0,0,1,0,1, 0,0,0,0,
0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,0,0,1,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0, 0,0,0,0,0,1,0,0, 0,0,0,0,
0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0, 1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0, 0,1,1,1,1,0,0,1, 0,0,0,0
}; //массив текста: Курсовой проект!
void setup()
{
for (int i=0; i<8; i++)
{
pinMode(row[i],OUTPUT);
pinMode(col[i],OUTPUT);
}
for (int i=0; i<8; i++)
{
digitalWrite(row[i],HIGH);
}
int k;
}
void loop()//циклично повторяется
{
paint(A, v);
scroll(A);
}
void paint(boolean screen[8][116], int v)
{
int i, j;
for (int c=0; c <v; c ++)
{
for (i=0; i<8; i++)
for (j=0; j<8; j++)
{
if (screen[i][j]==1)
{
digitalWrite(row[i], LOW); //Запись в пин 0 или 1
digitalWrite(col[j], HIGH);
delayMicroseconds(dms); //Задержка в мсек
digitalWrite(row[i], HIGH);
digitalWrite(col[j], LOW);
}
else
{
digitalWrite(row[i], HIGH);
digitalWrite(col[j], LOW);
delayMicroseconds(dms);
digitalWrite(row[i], HIGH);
digitalWrite(col[j], LOW);
}
}
}
}
void scroll(boolean screen[8][116]) //прокрутка массива по 1 столбцу
{
boolean buf[8][1];
for (int i=0; i<8; i++)
{
buf[i][0]=screen[i][0];
}
for (int i=0; i<8; i++)
for (int j=0; j<dx; j++)
{
screen[i][j]=screen[i][j+1];
}
for (int i=0; i<8; i++)
{
screen[i][dx-1]=buf[i][0];
}
}
Заключение
В процессе выполнения курсового проекта было разработано устройство для отображения текста в динамическом режиме. Я получила большой опыт в разработке микропроцессорных устройств на примере ATmega8 фирмы ATMEL. В итоге получили «Бегущую строку» на светодиодной матрице 8х8.
Список использованной литературы
-
Белов А.В. Разработка устройств на микроконтроллерах AVR: шагаем от «чайника» до профи. – СПб.:Наука и Техника, 2013.-528с.
-
Прошивка МК ATmega8: http://arduino.ru/forum/programmirovanie/kak-ozhivit-arduino-atmega8a [Электронный ресурс]
-
Лаборатория электронный средств обучения (ЛЭСО). СибГУТИ:http://www.labfor.ru[Электронный ресурс]
-
DataSheet ATMEL ATmega8 – Atmega8L: http://www.atmel.com/images/atmel-2486-8-bit-avr-microcontroller-atmega8_l_datasheet.pdf[Электронный ресурс]