Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовик ЭВМиВС мой.doc
Скачиваний:
2
Добавлен:
15.09.2019
Размер:
2.63 Mб
Скачать
    1. Разработка схем алгоритмов

Д ля дальнейшей работы необходимо построить следующие алгоритмы: алгоритм работы программы в целом, и алгоритм обучения нейросети. Обобщенная схема алгоритма программы, распознающей 2 класса чисел с помощью искусственной нейросети на микроконтроллере, представлена на рисунке 2.

Рисунок 2 - Обобщенная схема алгоритма программы.

Распознавание классов на микроконтроллере

Рисунок 2 – Продолжение.

Алгоритм обучения нейросети представлен на рисунке 3.

Рисунок 4 – Схема алгоритма обучения нейросети

2. Разработка программы

Для запуска этой программы предварительно была записана прошивка в микроконтроллер, которая разрабатывалась в среде Keyl 4. Затем соединяются выводы PC10 и РС11 микроконтроллера с выводами Rx и Tx соответственно любого преобразователя компьютерных интерфейсов в UART, на плате с соответствующими элементами. После этого подключается USB-кабель к отладочной плате, тем самым подавая питание на микроконтроллер.

Следующим шагом является запуск программы на ПК. Для этого нужно иметь установленную версию Windows XP/Vista/7. Данная программа разрабатывалась в среде MSVisualC# 2010(Microsoft .NET Framework 4.0).

2.1 Разработка программы на пк.

Для работы использовались следующие пространства имен:

System;

System.Collections.Generic;

System.ComponentModel;

System.Data;

System.Drawing;

System.Text;

System.Windows.Forms;

System.Threading;

System.IO;

System.IO.Ports;

Для создания программы на ПК были использованы:

class Neyro – класс работающий с нейросетью.

class Form1 : Form – класс диалогового окна, наследуемый от стандартного класса Form.

public int[] Vihod(int kol, int kl) - метод, формирующий целевой вектор.

public void Korekt() - метод, коректирующий синапсы.

public void Rez() – метод вычисления результата нейросети.

public void CreateNS() – метод, создающий нейросеть.

public void Obuchenie(string file, StreamWriter sw1) – метод, обучающий нейросеть определенному классу чисел.

private void grafic() – метод, рисующий график.

Текст программы представлен в приложении А.

2.2 Разработка программы на микроконтроллер.

Для создания программы на микроконтроллере STM32F407VG были использованы:

Функции:

void delay(int n) – функция задержки.

void InitUart4(void) – инициализация UART.

void InitPorts() – инициализация портов.

void InitNeyro() – инициализация и создание модели нейросети.

void CreateNeyro(Neyro* nr) – функция заполнения матриц весовых коэффициентов малыми случайными значениями.

void Res(Neyro* nr) ­– функция расчета выходных значений нейросети.

void Write_koef(Neyro* nr, const double *buf) - функция записи весовых коэффициентов в матрицы принятых с ПК.

void Write_vvod(Neyro* nr, const double *buf) – функция формирования входных значений нейросети принятых данных с ПК.

void Klass(Neyro* nr) – функция определения класса чисел по выходным значениям нейросети.

Прерывания:

void UART4_IRQHandler() – перывание по приему данных через UART интерфейс.

void SysTick_Handler() - прерывание по переполнению таймера SysTick.

Текст программы представлен в приложении Б.