Разработка программно-аппаратной системы адаптивного аналого-цифрового преобразования сигналов звукового диапазона на базе однокристального микроконтроллера
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ые от подсистемы адаптивного преобразования. Выдача результатов может осуществляется на LCD-дисплей или виртуальный терминал. Результаты хранятся во flash-памяти микроконтроллера.
6. Описание алгоритма работы
Алгоритм работы системы представлен на чертеже СевНТУ 7.091501.38.02
Функционирование системы начинается с подачи питания на обозначенные на схеме входы, инициализации интерфейсов микроконтроллера и устройств, подключённых к этим интерфейсам: АЦП, виртуальный терминал.
. Приём входного сигнала. Сигнал поступает с датчика или другого источника на операционный усилитель. Операционный усилитель приводит сигнал в соответствии требованиям АЦП.
. АЦП выполняет преобразование сигнала и передаёт микроконтроллеру цифровые коды.
. Если это первый цикл работы системы, то микроконтроллер сохраняет полученные коды во flash-памяти и отправляет их на вывод на виртуальный терминал, к п.4. Если это не первый цикл работы системы, то микроконтроллер сравнивает полученные коды с кодами, полученными на предыдущем цикле работы. Если разница между значениями не превышает 0.15 В, то микроконтроллер уменьшает частоту дискретизации входного сигнала (то есть, параметры сигнала не изменились, и замеры будут происходить реже). Если коды не совпадают, то микроконтроллер не изменяет задержку.
. Полученные коды от микроконтроллера выводятся для отображения на виртуальный терминал.
. Конец.
7. Описание программного обеспечения
Программа для системы адаптивного аналого-цифрового преобразования была разработана на языке программирования высокого уровня С. Программу можно было разработать также на таком языке программирования низкого уровня, как Ассемблер. По сравнению с кодом программы, написанной на высокоуровневом языке, код на Ассемблере короче. Преимущества Ассемблерного кода очевидны: он быстрее исполняется и занимает меньше памяти в программируемом устройстве. Но программирование на Ассемблере более трудоёмкий процесс, так же программирование на Ассемблере требует куда более глубоких знаний архитектуры и детального понимания принципа работы программируемого устройства. Поскольку в нашем примере памяти устройства более чем достаточно для хранения кода на высокоуровневом языке программирования, а быстродействие программы является приемлемым, было решено использовать язык программирования высокого уровня.
7.1 Описание алгоритма работы программы
1. Выполнить инициализацию интерфейсов SPI и UART.
. Если нажата кнопка "Стоп", то к п.9
. Побайтно считать данные из SPI.
. Преобразовать полученные данные из типа byte в тип int с помощью операций поразрядного сдвига.
. Сохранить полученный результат.
. Если это первый раз, когда были получены данные, то к п.8
. Сравнить результат, полученный в пункте 5 с уже имеющимся значением. Если значения равны, то установить первоначальное значение задержки между измерениями и к п.8, если значения отличаются более чем на 0.15В, то установить вдвое меньшее значение задержки между измерениями.
. Преобразовать результат в строку
. Вывести результат на виртуальный терминал с помощью интерфейса UART и к п.2
. Конец
Программа состоит из одного файла-источника, который называется "Project. c". Также подключаются следующие библиотеки:
а) Conversions - предназначена для преобразования типов данных;
б) C_Stdlib - содержит математические функции;
в) C_String - содержит функции для работы со строковыми типами данных;
г) SPI - содержит функции, необходимые для возможности обмена информацией по параллельному интерфейсу;
д) UART - содержит функции, необходимые для возможности обмена информацией с помощью универсального асинхронного приёмо-передатчика.
7.2 Описание методов и переменных
Описание переменных, содержащихся в файле-источнике приведено в таблице 7.1
Таблица 7.1 - Описание переменных
Имя переменнойТипНазначениеvoltagechar [] Побайтное сохранение данных, считанных из SPIbuffershortБуфер для считывания информации по SPIiintОрганизация цикла побайтного сохранения данных, считанных из SPIvintПредставление данных, полученных по SPI в целочисленном видеresStorageint [] Хранение текущего и промежуточного результата измеренияjintИндекс массива resStoragedcharЗначение задержки между измерениями (мс)
Описание методов
main () - не имеет параметров, ничего не возвращает (void) - метод, предназначенный для запуска всех остальных процедур в бесконечном цикле;
SPI1_Init () - не имеет параметров, ничего не возвращает (void) - метод, инициализирующий интерфейс SPI.
UART1_Init (long baud_rate) - параметр: скорость передачи информации (бод/с), ничего не возвращает (void), предназначен для инициализации интерфейса UART.
SPI1_Read (short buffer) - параметр: буфер для считывания информации, возвращает полученные данные, предназначен для считывания данных по интерфейсу SPI;
FloatToStr (float fnum, unsigned char *str); - параметры: число, которое нужно преобразовать в строку, строка, в которую преобразовывается число, возвращает 3, если первый параметр не число, 2, если число больше бесконечности, 1, если число меньше минус бесконечности, 0, если преобразование успешно, предназначен для преобразования переменной типа float в строку.
UARTx_Write_Text (char * UART_text) - параметры: строка, которую нужно отправить с помощью интерфейса UART, ничего не возвращает (void), предназначен для передачи текста по интерфейсу UART;
delay (char d) - параметры: целое число, ничего не возвращает (void), предназначен для