Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Poyasnitelnaya_zapiska

.docx
Скачиваний:
35
Добавлен:
11.04.2015
Размер:
595.69 Кб
Скачать

Федеральное агентство связи

Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования

«Сибирский государственный университет телекоммуникаций и информатики»

Кафедра Вычислительных систем

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту

по дисциплине «Микропроцессорные системы»

на тему «Бегущая строка»

Выполнил:

студентка 4 к. Ф ИВТ,гр. ИВ-14

Шулбаева Е.И.

Проверил:

Доцент Кафедры ВС, к.т.н.

Борисов А.В.

Новосибирск – 2014

Содержание

Введение ……………………………………………………3

Разработка аппаратной части ………………………………..4

Микроконтроллер ……………………………………………...4

Светодиодная матрица 8х8 ………………………………...5

Принципиальная схема …………………………………….....6

Разработка программной части……..………………………….9

Заключение ……………………………………………………11

Список использованной литературы …………………………1

Введение 3

Разработка аппаратной части 4

Микроконтроллер 4

Принципиальная схема 6

Принципиальная схема 7

9

Заключение 11

Список использованной литературы 12

Введение

Бегущая строка — электронное устройство, предназначенное для отображения текстовой и графической информации. В самом простом варианте текст просто «бежит», двигаясь справа налево. Отображающая матрица обычно состоит из светодиодов. Очень часто помимо простого текста, бегущие строки могут генерировать простейшую графику и накладывать различные эффекты на отображаемый текст.

Цели данной работы:

  1. Подключить к микроконтроллеру ATmega8 светодиодную матрицу;

  2. Реализовать программу «Бегущая строка» посредством динамической индикации светодиодов;

Разработка аппаратной части

Микроконтроллер

Для использования в данном проекте был выбран микроконтроллер 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.

Список использованной литературы

  1. Белов А.В. Разработка устройств на микроконтроллерах AVR: шагаем от «чайника» до профи. – СПб.:Наука и Техника, 2013.-528с.

  2. Прошивка МК ATmega8: http://arduino.ru/forum/programmirovanie/kak-ozhivit-arduino-atmega8a [Электронный ресурс]

  3. Лаборатория электронный средств обучения (ЛЭСО). СибГУТИ:http://www.labfor.ru[Электронный ресурс]

  4. DataSheet ATMEL ATmega8 – Atmega8L: http://www.atmel.com/images/atmel-2486-8-bit-avr-microcontroller-atmega8_l_datasheet.pdf[Электронный ресурс]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]