Устройство дистанционного измерения параметров аналоговых сигналов

Разработка микропроцессорного устройства измерения параметров аналоговых сигналов и передачи измеренных величин по беспроводному каналу связи на ЭВМ. Выбор микроконтроллера, микросхемы, интерфейса связи. Разработка программного обеспечения для управления.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 24.06.2013
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНОБРНАУКИ РОССИИ

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

высшего профессионального образования

"ИЖЕВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М.Т. КАЛАШНИКОВА"

Кафедра "Мехатронные системы"

Курсовая работа

по направлению 220100.62

"Системный анализ и управление"

Устройство дистанционного измерения параметров аналоговых сигналов

Разработал студент гр.8-05-3

Б.П. Лазарев

Руководитель проекта

П.В. Лекомцев

Ижевск - 2013

Техническое задание на выполнение выпускной квалификационной работы

студенту Лазареву Борису Павловичу

1. Тема работы: "Устройство дистанционного измерения параметров аналоговых сигналов".

2. Разработать микропроцессорное устройство измерения параметров аналоговых сигналов и передачи измеренных величин по беспроводному каналу связи на ЭВМ со следующими исходными данными:

2.1 Канал связи:

2.1.1 Тип - беспроводной;

2.1.2 Частота - 2,4 ГГц;

2.1.3 Дальность передачи на открытом пространстве - до 15 м;

2.1.4 Соответствие стандарту IEEE 802.15.1;

2.2 Микропроцессорное устройство измерения параметров аналоговых сигналов:

2.2.1 Габариты: не более чем 100х70х50 (мм);

2.2.2 Напряжение питания: +5В пост. тока;

2.2.3 Тип управления: от ЭВМ;

2.2.4 Интерфейс связи с ЭВМ: Bluetooth 2.0, 3.0;

2.2.5 Диапазон измеряемых напряжений: 0…3.3В;

2.2.6 Частота измеряемого сигнала: макс.100 КГц;

2.2.7 Количество измерительных каналов - 1;

2.3 Электронно-вычислительная машина:

2.3.1 Наличие установленных программных средств: ОС Windows NT; 2.3.2 Интерфейс Bluetooth 2.0 (3.0) для подключения периферийных устройств;

2.3.3 Процессор: 1 ГГц IA-32 processor;

2.3.4 Оперативная память (RAM): 2 Гб;

2.3.5 Объем энергонезависимой памяти: 80 Гб;

3. Перечень подлежащих разработке конструкторско-технологических, расчетных и программных решений:

3.1 Разработка микропроцессорного устройства измерения параметров аналоговых сигналов;

3.2 Разработка алгоритма и программы микропроцессорного устройства измерения параметров аналоговых сигналов и передачи измеренных величин по беспроводному каналу связи на ЭВМ;

3.3 Разработка алгоритма и программы приема, анализа и обработки данных на ЭВМ;

4. Перечень подлежащих разработке графических материалов:

4.1 Схема электрическая принципиальная (А3);

4.2 Плата печатная (А3);

4.3 Сборочный чертеж микропроцессорного устройства (А3);

5. Дата выдачи задания: "___" __________ 2013 г.

Плановый срок сдачи законченного проекта: "___" __________ 2013 г.

программное обеспечение микропроцессорное устройство

Содержание

  • Введение
  • 1. Разработка структурной схемы
  • 2. Разработка устройства измерения параметров аналоговых сигналов
  • 2.1 Выбор микроконтроллера
  • 2.2 Выбор микросхемы и интерфейса связи
  • 2.3 Расчет минимальной ширины печатных проводников
  • 2.4 Разработка печатной платы
  • 2.5 Разработка сборочного чертежа
  • 3. Разработка программного обеспечения для устройства измерения параметров аналоговых сигналов
  • 3.1 Разработка программного обеспечения для управления устройством измерения параметров аналоговых сигналов для микроконтроллера
  • Разработка алгоритма
  • Выбор параметров работы периферийных модулей микроконтроллера
  • Разработка программы
  • 3.2 Разработка программного обеспечения для управления устройством измерения параметров аналоговых сигналов с ЭВМ
  • Разработка алгоритма
  • Разработка программы
  • 4. Результаты вычислительных экспериментов
  • Заключение
  • Список литературы
  • Приложения

Введение

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

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

Цель выпускной квалификационной работы это разработка микропроцессорного устройства измерения параметров аналоговых сигналов, создание конструкторской документации, соответствующей требованиям ГОСТ и ЕСКД, а так же получение практических навыков разработки устройства в программе Altium Designer.

В соответствии с техническим заданием в ходе выполнения работы было разработано микропроцессорное устройство измерения параметров аналоговых сигналов. В качестве устройства беспроводной передачи данных был выбран Bluetooth-модуль из-за простоты его установки и настройки и относительно небольшой стоимости.

Управляющая плата была разработана на основе микроконтроллера STM32F407VGT6 от компании STMicroelectronics ввиду достаточной функциональности данного микроконтроллера и его низкой стоимости. Питание платы осуществляется от источника напряжением 5В.

Для разработки программы для микроконтроллера STM32F407VGT6 использовался пакет разработки MDK-ARM с интегрированной средой разработки CoIDE CooCox и набором компиляторов, а также официальный набор библиотек периферии для данного микроконтроллера.

В главе 1 представлена разработка структурной схемы устройства измерения параметров аналоговых сигналов.

В главах 2 и 3 представлены разработка микропроцессорного устройства измерения параметров аналоговых сигналов и разработка конструкторской документации соответственно.

В главе 4 представлены разработка алгоритмов и программ управления устройством измерения параметров аналоговых сигналов для микропроцессора и ЭВМ.

Пояснительная записка к выпускной квалификационной работе "Разработка устройства дистанционного измерения параметров аналоговых сигналов" состоит из 44 страниц машинописного текста, содержит 11 рисунков, 5 приложений, CD-диск. Список литературы состоит из 4 библиографических источников.

1. Разработка структурной схемы

Основой устройства дистанционного измерения параметров аналоговых сигналов является микроконтроллер. Принцип работы устройства заключается в измерении амплитуды аналогового сигнала посредством аналого-цифрового преобразователя микроконтроллера. После этого, результат измерения фиксируется в памяти микроконтроллера с использование прямого доступа к памяти. Запись в память микроконтроллера производиться до тех пор, пока количество результатов измерений не достигнет определённого значения (до тех пор, пока не сформируется "кадр" осциллограммы). После выполнения этого этапа измерения прекращаются и начинается передача сформированного "кадра" на персональный компьютер (ПК) через беспроводной канал передачи данных. По завершении передачи периферия микроконтроллера ожидает подачи сигнала о начале формирования нового "кадра" осциллограммы.

При подаче управляющего сигнала от ПК об изменении частоты производимых измерений (не частоты формирования "кадров", а частоты измерений производимых в одном "кадре"). Частоты формирования "кадров" фиксирована и равняется 10Гц.

С помощью регуляции частоты производимых измерений АЦП можно изменять энергопотребление устройства дистанционного измерения параметров аналоговых сигналов, что влечёт за собой увеличение времени автономной работы устройства.

Устройство предназначено для измерения формы, амплитуды, частоты и периода аналоговых сигналов, максимальная амплитуда которых не превышает величины 3.3 вольт. На рисунке 1 представлена структурная схема устройства дистанционного измерения параметров аналоговых сигналов.

Размещено на http://www.allbest.ru/

Рисунок 1.1 - Схема структурная устройства дистанционного измерения параметров аналоговых сигналов

2. Разработка устройства измерения параметров аналоговых сигналов

В данном разделе осуществляется выбор, микроконтроллера, разработка схемы электрической принципиальной устройства измерения параметров аналоговых сигналов, осуществляется разработка печатной платы и сборочного чертежа устройства.

2.1 Выбор микроконтроллера

В качестве основы устройства был выбран микроконтроллер STM32F407VGT6 фирмы STMicroelectronics. Выбор был сделан в пользу этого микроконтроллера в виду достаточно низкой стоимости, при большой максимальной скорости работы ядра (max.168 MHz), большого количества периферийных модулей, необходимых для реализации устройства измерения параметров аналоговых сигналов (модули УАПП, ПДП, таймеры, АЦП, ЦАП). Технические характеристики данного микроконтроллера представлены в приложении Д.

2.2 Выбор микросхемы и интерфейса связи

В качестве интерфейса связи с ЭВМ в данной работе был выбран интерфейс UART (универсальный асинхронный приёмо-передатчик), так как для передачи данных используется Bluetooth модуль, который в свою очередь использует интерфейс UART. Плюсами выбора именно этого вида интерфейса связи ПК и микроконтроллерного устройства являются простота, возможность полнодуплексной передачи данных, и достаточная скорость передачи данных (max. до 115200 кбод).

2.3 Расчет минимальной ширины печатных проводников

Габариты разработанной печатной платы составляют 80*60мм.

Необходимо обратить внимание на какой ток будет рассчитана та или иная дорожка печатного проводника. В зависимости от этого выбирается её толщина.

(2.3.1)

(2.3.2)

(2.3.3)

где b - ширина дорожки печатного проводника,

с - удельная теплоемкость меди;

с - удельная теплоемкость меди;

q - плотность меди;

h - глубина дорожки печатного проводника;

?t - оптимальный интервал температур для работы платы;

I - ток, на который рассчитана дорожка печатного проводника;

;

;

.

(2.3.4)

где t? - максимальная температура, при которой может работать плата;

t? - комнатная температура.

=60°-20°=40°С

Расчет сигнальной цепи по максимальному току микроконтроллера.

При I=100мА .

Для платы были выбрана ширина печатного проводника равная 0,25мм. Исходя из расчета видно, что дорожки печатного проводника выдержат ток, протекающий по ним.

При данных значениях ширины проводника, будет обеспечена работоспособность схемы управления, и проводники не будут перегреваться.

2.4 Разработка печатной платы

Разработка конструкции устройства осуществляется на основе разработанной принципиальной электрической схемы с учетом требований к ремонтопригодности, требований технической эстетики, с учетом условий эксплуатации и других требований.

При конструировании печатной платы необходимо учитывать следующее.

Толщина ПП должна соответствовать одному из чисел ряда: 0.8; 1.0; 1.5; 2.0 в зависимости от площади ПП.

Центры отверстий должны располагаться в узлах координатной сетки. Каждое монтажное и переходное отверстие должно быть охвачено контактной площадкой.

Диаметр монтажных отверстий, диаметры выводов микросхем колеблются в пределах 0,8…1,2 мм, а диаметры выводов резисторов колеблются около 0,66 мм. Для упрощения процесса изготовления, монтажные отверстия на плате имеют диаметр 0,8 и 1,2 мм. Шаг координатной сетки составляет 1,27 мм.

Паять элементы припоем ПОС-61. Материал платы стеклотекстолит фольгированный СТЭФ 2-1,5-50 по ГОСТ 10316-86.

2.5 Разработка сборочного чертежа

В ходе разработки сборочного чертежа необходимо уделить внимание следующим требованиям:

1) разработка сборочного чертежа устройства измерения параметров аналоговых сигналов осуществляется на основе разработанной принципиальной электрической схемы с учетом требований к чертежным документам;

2) в соответствии со схемой деления изделия на составные части присвоить обозначение сборочной единице и ее элементам по ГОСТ 2.201-68;

3) проставить необходимые размеры согласно требованиям ГОСТ 2.109-73;

4) заполнить спецификацию, выдерживая все требования ГОСТ 2.108-68;

5) заполнить основную надпись и выполнить другие необходимые надписи (технические требования и пр.).

Чертежи схемы электрической принципиальной, платы печатной и сборочного чертежа устройства измерения параметров аналоговых сигналов, а так же спецификация и перечень элементов представлены в приложении А.

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

Разработка программного обеспечения для устройства измерения параметров аналоговых сигналов включает в себя разработку двух алгоритмов и, соответственно, двух программ управления устройством - программы для микроконтроллера и программы для ЭВМ.

3.1 Разработка программного обеспечения для управления устройством измерения параметров аналоговых сигналов для микроконтроллера

Программа для микроконтроллера STM32F407VGT6 (так называемая программа "нижнего уровня") предназначена для организации взаимосвязанной работы различных периферийных модулей микроконтроллера (МК), для осуществления приёма/передачи данных между МК и ЭВМ, для непосредственного изменения параметров работы устройства измерения параметров аналоговых сигналов.

Данная программа разработана в программном обеспечении CoIDE CooCox, на языке программирования С++. В программе использована библиотека стандартной периферии (Standard Peripheral Library) предоставленная производителем (ST Microelectronics) микроконтроллера STM32F4o7VGT6 в свободном доступе на сайте производителя.

Разработка алгоритма

Для организации корректной работы устройства дистанционного измерения параметров аналоговых сигналов на базе микроконтроллера STM32F407VGT6 необходимо выполнить соответствующую настройку используемых периферийных модулей микроконтроллера:

1. Порты ввода/вывода микроконтроллера, для осуществления передачи и приёма данных между микроконтроллером и устройством измерения аналоговых сигналов;

2. Аналогово-цифровой преобразователь ADC для считывания величины аналогового сигнала.

3. Таймеры для управления частотой работы ADC

4. Контроллер прямого доступа к памяти DMA, для различных операций с получением, хранением и передачей данных.

5. Модуль UART (УАПП - универсальный асинхронный приёмо-передатчик) для передачи и приёма данных.

Более подробное описание настройки параметров используемых периферийных модулей микроконтроллера приведены в разделе 3.1.3 Схема алгоритма работы устройства представлена на рисунке 3.1.1.1.

Рисунок 3.1.1.1 - Схема алгоритма работы устройства дистанционного измерения параметров аналоговых сигналов

Рисунок 3.1.1.1 - Продолжение

Выбор параметров работы периферийных модулей микроконтроллера

Для организации корректной работы устройства дистанционного измерения параметров аналоговых сигналов необходима "слаженная" работа периферийных модулей микроконтроллера. Другими словами, необходимо настроить параметры работы периферийных модулей, таких как таймеры и АЦП, определённым образом.

При выборе параметров работы периферийных модулей микроконтроллера следует "отталкиваться" от значения частоты формирования кадров осциллограммы (фиксирована, равняется 10Гц).

Таким образом, за время равное 0.1 секунды устройство должно формировать кадр осциллограммы (состоящий из 250 измерений) и передать результаты измерений на ПК.

Максимальная частота изменения аналогового сигнала ограничена техническим заданием и равняется 100кГц. Следовательно, для корректной работы устройства частота производимых измерений, в этом случае, не должна быть строго большей 200кГЦ (согласно теореме Котельникова, если аналоговый сигнал имеет финитный (ограниченный по ширине) спектр, то он может быть восстановлен однозначно и без потерь по своим отсчётам, взятым с частотой, строго большей удвоенной верхней частоты). Была выбрана частота измерений равная частоте измеряемого сигнала увеличенная в 10 раз.

Максимальная частота работы АЦП микроконтроллера, согласно технической документации, равняется 2.4 МГц. Частота работы АЦП достаточная для измерения сигналов амплитудой до 100кГЦ.

Максимальная скорость передачи данных посредством интерфейса УАПП равняется 115200кБод. Так как размер "посылки" составляет 8 бит, и ещё 1 бит является стоповым, то за 1 секунду модуль УАПП способен передать 12800 "посылок", т.к. один кадр состоит из 250 значений, то он будет передан менее чем за 0.02 секунды. Время формирования кадра, при частоте измеряемого сигнала в 100кГц, и частоте измерения в 1Мгц, равняется 2.5*10^ (-4).

Исходя из расчётов видно, что время необходимое на формирование кадра (выполнения 250 измерений) и отправки результатов измерений на ПК, меньше чем 0.1 секунды (период обновления кадров).

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

В соответствии с техническим заданием и схемой алгоритма (см. раздел 2) была разработана программа для устройства дистанционного измерения параметров аналоговых сигналов.

Программа разработана на языке программирования высокого уровня - С++, с использованием библиотеки стандартной периферии, предоставляемой производителем микроконтроллера STM32F407VGT6 для упрощения настройки работы с периферией микроконтроллера.

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

3.2 Разработка программного обеспечения для управления устройством измерения параметров аналоговых сигналов с ЭВМ

Программа для ЭВМ предназначена для управления параметрами работы устройства дистанционного измерения параметров аналоговых сигналов на базе микроконтроллера STM32F407VGT6. Так же в программе предусмотрено графическое отображение принимаемых данных (построение графика, зависимость амплитуды напряжения от времени).

Разработка алгоритма

В соответствии с техническим заданием был разработан алгоритм программы передачи данных между устройством измерения параметров аналоговых сигналов и ПК. Схема алгоритма представлена на рисунке 3.2.1.1

Рисунок 3.2.1.1 - Схема алгоритма программы приёма/передачи данных между цифровой измерительной системой и ПК

Рисунок 3.2.1.1 - Продолжение

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

В соответствии с техническим заданием и схемой алгоритма была разработана программа приёма/передачи данных между устройством дистанционного измерения параметров аналоговых сигналов и ПК. Программа представляет собой 1 окно с набором кнопок для установления соединения с устройством измерения и настройки параметров его работы (для настройки частоты дискретизации измерительной системы), а так же набор кнопок для настройки частоты генерируемого сигнала. На рисунках 3.2.2.1 и 3.2.2.2 представлены окно программы и окно справки.

Рисунок 3.2.2.1 - Окно программы приёма/передачи данных между устройством дистанционного измерения параметров аналоговых сигналов и ПК

Рисунок 3.2.2.2 - Окно справки программы приёма/передачи данных между устройством дистанционного измерения параметров аналоговых сигналов и ПК

Окно программы содержит 3 блока кнопок:

1. Блок управления включением/выключением канала связи и отображением принятых данных ("Work settings”);

2. Блок управления частотой дискретизации ЦИС ("Oscilloscope settings”);

3. Блок управления частой генерируемого сигнала ("Generator settings”).

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

4. Результаты вычислительных экспериментов

После разработки алгоритмов и программ для микроконтроллера и ПК с целью подтверждения корректности работы устройства были проведены вычислительные эксперименты. В качестве генератора исследуемого сигнала, для простоты отладки, используется сигнал, генерируемый цифро-аналоговым преобразователем входящим в состав микроконтроллера, следовательно для проведения вычислительного эксперимента необходимо вход аналого-цифрового преобразователя соединить с выходом цифро-аналогового преобразователя. Результаты вычислительных экспериментов (работы программы по приёму/передаче данных между устройством дистанционного измерения параметров аналоговых сигналов и ПК) 1,2 и 3 представлены на рисунках 4.1,4.2 и 4.3 соответственно.

Рисунок 4.1 - Программа приёма/передачи данных между устройством дистанционного измерения параметров аналоговых сигналов и ПК

Условия проведения вычислительного эксперимента: частота дискретизации устройства равна 60кГц, горизонтальная развёртка - 0.00041667сек/дел. Частота исследуемого сигнала - 1кГц.

Рисунок 4.2 - Программа приёма/передачи данных между устройством дистанционного измерения параметров аналоговых сигналов и ПК

Условия проведения вычислительного эксперимента: частота дискретизации устройства равна 10кГц, горизонтальная развёртка - 0.0025сек/дел. Частота генерируемого сигнала - 1кГц.

Рисунок 4.3 - Программа приёма/передачи данных между устройством дистанционного измерения параметров аналоговых сигналов и ПК

Заключение

В результате выполнения выпускной квалификационной работы на тему: "Устройство дистанционного измерения параметров аналоговых сигналов" было разработано микропроцессорное устройство дистанционного измерения параметров аналоговых сигналов, с передачей данных измерений по каналу связи Bluetooth, были приобретены навыки в создании конструкторской документации, соответствующей требованиям ГОСТ и ЕСКД, были получены практические навыки разработки устройства в программе Altium Designer. Параметры разработанного устройства:

Диапазон измеряемых напряжений: 0-3.3В;

- Частота сигнала на канал: макс.100 КГц;

- Количество каналов - 1;

- Напряжение питания микропроцессорного устройства - 5 В;

- Потребляемая мощность устройства - не более 2х ватт;

Габариты разрабатываемого устройства - 52,5х46,5мм.

Были приобретены навыки работы в ПО CoIDE CooCox при написании программы для микроконтроллера STM32F407VGT6.

При выполнении курсовой работы были разработаны:

- конструкторская документация микропроцессорного устройства измерения аналоговых сигналов:

- схема электрическая принципиальная;

- перечень элементов к схеме электрической принципиальной;

- печатная плата;

- сборочный чертеж;

- спецификация к сборочному чертежу.

- схема алгоритма работы микропроцессорного устройства измерения аналоговых сигналов;

- программа работы микропроцессорного устройства измерения аналоговых сигналов.

Список литературы

1. Горячев Н.В.: Типовой маршрут проектирования печатной платы и структура проекта в САПР. Altium Designer - Пенза: "ПГУ", 2011. - 300с.

2. Сабунин А.Е.: Altium Designer. Новые решения в проектировании электронных устройств - Москва: ”СОЛОН-ПРЕСС”, 2009. - 425с.

3. Суходольский В.Ю.: Altium Designer. Проектирование функциональных узлов РЭС на печатных платах - Санкт-Петербург: "БХВ-Петербург", 2010. - 500с.

4. Характеристики микроконтроллера STM32F407VGT6: [Электронный ресурс] URL: http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1577/LN11/PF252140 (Дата обращения: 18.04.2013).

Приложения

Приложение А

Конструкторская документация

В ходе курсовой работы была разработана конструкторская документация:

А.1. Схема электрическая принципиальная МС427110.001 Э3 (А3).

А.2. Перечень элементов схемы электрической принципиальной МС741000.001 ПЭ.

А.3. Чертеж печатной платы устройства управления МС427110.002 (А3).

А.4. Сборочный чертеж устройства управления МС427110.003 СБ (А3).

А.5. Спецификация устройства управления МС427110.003 СП.

А.6 CD-диск МС427110.004

Приложение Б

Текст программы

Текст программы управления устройством измерения параметров аналоговых сигналов для микроконтроллера представлен на рисунке ПБ.1.

#include "stm32f4xx. h"

GPIO_InitTypeDef gpio_struct;

USART_InitTypeDef usart_struct;

TIM_TimeBaseInitTypeDef timer2_base;

TIM_TimeBaseInitTypeDef timer3_base;

TIM_TimeBaseInitTypeDef timer6_base;

ADC_InitTypeDef adc1_init_struct;

ADC_InitTypeDef adc2_init_struct;

ADC_CommonInitTypeDef adc_common_init_struct;

DAC_InitTypeDef dac_struct;

DMA_InitTypeDef dma2_struct;

DMA_InitTypeDef dma1_struct;

RCC_ClocksTypeDef SYSCLK_Frequency;

ErrorStatus HSEStartUpStatus;

uint8_t sync1 = 0;

uint8_t sync2 = 0;

uint8_t i = 0;

uint8_t flag = 0;

uint8_t counter = 0;

uint8_t buffer [250];

uint8_t recived_data [2];

uint8_t sin [16] = {127, 176, 218, 245, 255, 245, 218, 176, 127, 79, 37, 10, 0,10, 37, 79};

const uint8_t Escalator8bit [6] = {0x0, 0x33, 0x66, 0x99, 0xCC, 0xFF};

void RCC_Configuration (void)

{ RCC_HSEConfig (RCC_HSE_ON);

HSEStartUpStatus = RCC_WaitForHSEStartUp ();

if (HSEStartUpStatus == SUCCESS)

{

FLASH_PrefetchBufferCmd (ENABLE);

FLASH_SetLatency (FLASH_Latency_5);

RCC_HCLKConfig (RCC_SYSCLK_Div1);

RCC_PCLK2Config (RCC_HCLK_Div2);

RCC_PCLK1Config (RCC_HCLK_Div4);

#define PLL_M 8

#define PLL_N 336

#define PLL_P 2

#define PLL_Q 7

RCC_PLLConfig (RCC_PLLSource_HSE, PLL_M, PLL_N, PLL_P, PLL_Q);

RCC_PLLCmd (ENABLE);

while (RCC_GetFlagStatus (RCC_FLAG_PLLRDY) == RESET) { }

RCC_SYSCLKConfig (RCC_SYSCLKSource_PLLCLK);

while (RCC_GetSYSCLKSource ()! = 0x08) { }

Рисунок ПБ.1 - Текст программы

SystemCoreClockUpdate (); }

RCC_GetClocksFreq (&SYSCLK_Frequency);

RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_DMA1|RCC_AHB1Periph_DMA2|RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC, ENABLE); RCC_APB1PeriphClockCmd (RCC_APB1Periph_DAC|RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM6|RCC_APB1Periph_USART3, ENABLE);

RCC_APB2PeriphClockCmd (RCC_APB2Periph_ADC1, ENABLE); }

void GPIO_Configuration (void)

{ gpio_struct. GPIO_Pin = GPIO_Pin_10;

gpio_struct. GPIO_Speed = GPIO_Speed_100MHz;

gpio_struct. GPIO_OType = GPIO_OType_PP;

gpio_struct. GPIO_PuPd = GPIO_PuPd_UP;

gpio_struct. GPIO_Mode = GPIO_Mode_AF;

GPIO_Init (GPIOC, &gpio_struct);

GPIO_PinAFConfig (GPIOC, GPIO_PinSource10, GPIO_AF_USART3);

gpio_struct. GPIO_Pin = GPIO_Pin_11;

gpio_struct. GPIO_Mode = GPIO_Mode_AF;

GPIO_Init (GPIOC, &gpio_struct);

GPIO_PinAFConfig (GPIOC, GPIO_PinSource11, GPIO_AF_USART3);

gpio_struct. GPIO_Pin = GPIO_Pin_0;

gpio_struct. GPIO_Mode = GPIO_Mode_AN;

gpio_struct. GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init (GPIOA, &gpio_struct);

gpio_struct. GPIO_Pin = GPIO_Pin_1;

gpio_struct. GPIO_Mode = GPIO_Mode_AN;

gpio_struct. GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init (GPIOA, &gpio_struct);

gpio_struct. GPIO_Pin = GPIO_Pin_5;

gpio_struct. GPIO_Mode = GPIO_Mode_AN;

gpio_struct. GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init (GPIOA, &gpio_struct); }

void Timer_Snapshot_Configuration (void)

{timer3_base. TIM_Period = 48000-1;

timer3_base. TIM_Prescaler = 100-1;

timer3_base. TIM_ClockDivision = 0;

timer3_base. TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit (TIM3, &timer3_base);

NVIC_EnableIRQ (TIM3_IRQn);

TIM_ITConfig (TIM3, TIM_IT_Update, ENABLE);

TIM_Cmd (TIM3, ENABLE); }

void Timer_Adc_Configuration (uint32_t period)

{timer2_base. TIM_Prescaler = 0;

timer2_base. TIM_Period = period-1;

timer2_base. TIM_ClockDivision = 0;

timer2_base. TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit (TIM2, &timer2_base); }

void Timer_Dac_Configuration (uint32_t period)

{timer6_base. TIM_Prescaler = 0;

timer6_base. TIM_Period = period-1;

timer6_base. TIM_ClockDivision = 0;

timer6_base. TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit (TIM6, &timer6_base);

TIM_SelectOutputTrigger (TIM6, TIM_TRGOSource_Update); TIM_Cmd (TIM6, ENABLE); }

void USART3_Configuration (void)

{usart_struct. USART_BaudRate = 115200;

usart_struct. USART_WordLength = USART_WordLength_8b;

usart_struct. USART_StopBits = USART_StopBits_1;

usart_struct. USART_Parity = USART_Parity_No;

usart_struct. USART_HardwareFlowControl = USART_HardwareFlowControl_None;

usart_struct. USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_Init (USART3, &usart_struct);

USART_DMACmd (USART3, USART_DMAReq_Tx, ENABLE);

USART_DMACmd (USART3, USART_DMAReq_Rx, ENABLE);

USART_Cmd (USART3, ENABLE); }

Рисунок ПБ.1 - Продолжение

void DMA2_Stream0_Chanel0_Configuration (void)

{DMA_DeInit (DMA2_Stream0);

dma2_struct. DMA_Channel = DMA_Channel_0;

dma2_struct. DMA_PeripheralBaseAddr = (uint32_t) (&ADC1->DR);

dma2_struct. DMA_Memory0BaseAddr = (uint32_t) buffer;

dma2_struct. DMA_DIR = DMA_DIR_PeripheralToMemory;

dma2_struct. DMA_BufferSize = sizeof (buffer);

dma2_struct. DMA_PeripheralInc = DMA_PeripheralInc_Disable;

dma2_struct. DMA_MemoryInc = DMA_MemoryInc_Enable;

dma2_struct. DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;

dma2_struct. DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;

dma2_struct. DMA_Mode = DMA_Mode_Circular;

dma2_struct. DMA_Priority = DMA_Priority_High;

dma2_struct. DMA_FIFOMode = DMA_FIFOMode_Disable;

dma2_struct. DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;

dma2_struct. DMA_MemoryBurst = DMA_MemoryBurst_Single;

dma2_struct. DMA_PeripheralBurst = DMA_PeripheralBurst_Single;

DMA_Init (DMA2_Stream0, &dma2_struct);

DMA_Cmd (DMA2_Stream0, ENABLE);

}

void ADC1_Configuration (void)

{ADC_DeInit ();

adc_common_init_struct. ADC_Mode = ADC_Mode_Independent; //

adc_common_init_struct. ADC_Prescaler = ADC_Prescaler_Div2;

ADC_CommonInit (&adc_common_init_struct);

adc1_init_struct. ADC_Resolution = ADC_Resolution_8b;

adc1_init_struct. ADC_ScanConvMode = DISABLE;

adc1_init_struct. ADC_ContinuousConvMode = DISABLE;

adc1_init_struct. ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;

adc1_init_struct. ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_TRGO;

adc1_init_struct. ADC_DataAlign = ADC_DataAlign_Right;

adc1_init_struct. ADC_NbrOfConversion = 0;

ADC_Init (ADC1, &adc1_init_struct); ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_3Cycles);

NVIC_EnableIRQ (ADC_IRQn);

ADC_ITConfig (ADC1, ADC_IT_EOC, ENABLE);

ADC_Cmd (ADC1, ENABLE); }

void DMA1_Stream6_Chanel7_Configuration (void)

{DMA_DeInit (DMA1_Stream6);

dma1_struct. DMA_Channel = DMA_Channel_7;

dma1_struct. DMA_PeripheralBaseAddr = (uint32_t) & (DAC->DHR8R2);

dma1_struct. DMA_Memory0BaseAddr = (uint32_t) sin; // Escalator8bit;

dma1_struct. DMA_DIR = DMA_DIR_MemoryToPeripheral;

dma1_struct. DMA_BufferSize = sizeof (sin); // ) Escalator8bit;

dma1_struct. DMA_PeripheralInc = DMA_PeripheralInc_Disable;

dma1_struct. DMA_MemoryInc = DMA_MemoryInc_Enable;

dma1_struct. DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;

dma1_struct. DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;

dma1_struct. DMA_Mode = DMA_Mode_Circular;

dma1_struct. DMA_Priority = DMA_Priority_High;

dma1_struct. DMA_FIFOMode = DMA_FIFOMode_Disable;

dma1_struct. DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;

dma1_struct. DMA_MemoryBurst = DMA_MemoryBurst_Single;

dma1_struct. DMA_PeripheralBurst = DMA_PeripheralBurst_Single;

DMA_Init (DMA1_Stream6, &dma1_struct);

DMA_Cmd (DMA1_Stream6, ENABLE); }

void DAC_Chanel2_Configuration (void)

{dac_struct. DAC_Trigger = DAC_Trigger_T6_TRGO;

dac_struct. DAC_WaveGeneration = DAC_WaveGeneration_None;

dac_struct. DAC_OutputBuffer = DAC_OutputBuffer_Disable;

DAC_Init (DAC_Channel_2, &dac_struct);

DAC_Cmd (DAC_Channel_2, ENABLE);

DAC_DMACmd (DAC_Channel_2, ENABLE); }

Рисунок ПБ.1 - Продолжение

void DMA1_Stream3_Chanel4_Configuration (void)

{DMA_DeInit (DMA1_Stream3);

dma1_struct. DMA_Channel = DMA_Channel_4;

dma1_struct. DMA_PeripheralBaseAddr = (uint32_t) (&USART3->DR);

dma1_struct. DMA_Memory0BaseAddr = (uint32_t) buffer;

dma1_struct. DMA_DIR = DMA_DIR_MemoryToPeripheral;

dma1_struct. DMA_BufferSize = sizeof (buffer);

dma1_struct. DMA_PeripheralInc = DMA_PeripheralInc_Disable;

dma1_struct. DMA_MemoryInc = DMA_MemoryInc_Enable;

dma1_struct. DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;

dma1_struct. DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;

dma1_struct. DMA_Mode = DMA_Mode_Normal;

dma1_struct. DMA_Priority = DMA_Priority_High;

dma1_struct. DMA_FIFOMode = DMA_FIFOMode_Disable;

dma1_struct. DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;

dma1_struct. DMA_MemoryBurst = DMA_MemoryBurst_Single;

dma1_struct. DMA_PeripheralBurst = DMA_PeripheralBurst_Single;

DMA_Init (DMA1_Stream3, &dma1_struct);

DMA_Cmd (DMA1_Stream3, ENABLE); }

void DMA1_Stream1_Chanel4_Configuration (void)

{DMA_DeInit (DMA1_Stream1);

dma1_struct. DMA_Channel = DMA_Channel_4;

dma1_struct. DMA_PeripheralBaseAddr = (uint32_t) (&USART3->DR);

dma1_struct. DMA_Memory0BaseAddr = (uint32_t) recived_data;

dma1_struct. DMA_DIR = DMA_DIR_PeripheralToMemory;

dma1_struct. DMA_BufferSize = sizeof (recived_data);

dma1_struct. DMA_PeripheralInc = DMA_PeripheralInc_Disable;

dma1_struct. DMA_MemoryInc = DMA_MemoryInc_Enable;

dma1_struct. DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;

dma1_struct. DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;

dma1_struct. DMA_Mode = DMA_Mode_Circular;

dma1_struct. DMA_Priority = DMA_Priority_High;

dma1_struct. DMA_FIFOMode = DMA_FIFOMode_Disable;

dma1_struct. DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;

dma1_struct. DMA_MemoryBurst = DMA_MemoryBurst_Single;

dma1_struct. DMA_PeripheralBurst = DMA_PeripheralBurst_Single;

DMA_Init (DMA1_Stream1, &dma1_struct);

NVIC_EnableIRQ (DMA1_Stream1_IRQn);

DMA_ITConfig (DMA1_Stream1, DMA_IT_TC, ENABLE);

DMA_Cmd (DMA1_Stream1, ENABLE); }

int main (void)

{RCC_Configuration ();

GPIO_Configuration ();

Timer_Snapshot_Configuration ();

Timer_Adc_Configuration (9600);

TIM_SelectOutputTrigger (TIM2, TIM_TRGOSource_Update);

Timer_Dac_Configuration (3000);

USART3_Configuration ();

DMA1_Stream1_Chanel4_Configuration ();

ADC1_Configuration ();

DMA1_Stream6_Chanel7_Configuration ();

DAC_Chanel2_Configuration ();

while (1) {} }

void DMA1_Stream1_IRQHandler (void)

{

if (DMA_GetITStatus (DMA1_Stream1, DMA_IT_TCIF1)! = RESET)

{ switch (recived_data [0])

{

case ('1'):

{

switch (recived_data [1])

{case ('1'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_3Cycles); // total conv. time = 3+8 = 11cycle at 36MHz (ADC freq.) = 0.305 uS

break; // 3 278 688 Hz

}

Рисунок ПБ.1 - Продолжение

case ('2'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_15Cycles); // total conv. time = 15+8 = 23cycle at 36MHz (ADC freq.) = 0.638 uS

break;

}

case ('3'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_28Cycles); // total conv. time = 28+8 = 36cycle at 36MHz (ADC freq.) = 1 uS

break;

}

case ('4'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_56Cycles); // total conv. time = 56+8 = 64cycle at 36MHz (ADC freq.) = 1.7 uS

break;

}

case ('5'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_84Cycles); // total conv. time = 84+8 = 92cycle at 36MHz (ADC freq.) = 2.5 uS

break;

}

case ('6'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_112Cycles); // total conv. time = 112+8 = 120cycle at 36MHz (ADC freq.) = 3.33 uS

break;

}

case ('7'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_144Cycles); // total conv. time = 144+8 = 152cycle at 36MHz (ADC freq.) = 4.2 uS

break;

}

case ('8'):

{

ADC_RegularChannelConfig (ADC1, ADC_Channel_0, 1, ADC_SampleTime_480Cycles); // total conv. time = 480+8 = 488cycle at 36MHz (ADC freq.) = 13.5 uS

break; // 74 074 Hz

}

}

}

break;

case ('2'): // подстройка с верхнего уровня периода таймера генератора

{

switch (recived_data [1])

{

case ('1'):

{ // для режима Triger посмотреть задержку (порядка 1 цикла?)

Timer_Dac_Configuration (40);

}

break;

case ('2'):

{

Timer_Dac_Configuration (50);

}

break;

case ('3'):

{

Timer_Dac_Configuration (125);

}

break;

Рисунок ПБ.1 - Продолжение

case ('4'):

{

Timer_Dac_Configuration (250);

}

break;

case ('5'):

{

Timer_Dac_Configuration (500);

}

break;

case ('6'):

{

Timer_Dac_Configuration (1000);

}

break;

case ('7'):

{

Timer_Dac_Configuration (2000);

}

break;

case ('8'):

{

Timer_Dac_Configuration (3000);

}

break;

}

}

break;

case ('3'): // подстройка с верхнего уровня частоты старта измерений

{

switch (recived_data [1])

{

case ('1'):

{

Timer_Adc_Configuration (64);

}

break;

case ('2'):

{

Timer_Adc_Configuration (80);

}

break;

case ('3'):

{

Timer_Adc_Configuration (200);

}

break;

case ('4'):

{

Timer_Adc_Configuration (400);

}

break;

case ('5'):

{

Timer_Adc_Configuration (800);

break;

case ('6'):

{

Timer_Adc_Configuration (1600); }

break;

case ('7'):

{Timer_Adc_Configuration (3200);

}

break;

Рисунок ПБ.1 - Продолжение

case ('8'):

{

Timer_Adc_Configuration (4800);

}

break; }}break; }

DMA_ClearITPendingBit (DMA1_Stream1, DMA_IT_TCIF1);

}

}

void ADC_IRQHandler (void)

{

if (ADC_GetITStatus (ADC1, ADC_IT_EOC)! = RESET)

{

if (i==0)

{

sync1 = ADC_GetConversionValue (ADC1);

i++;

}

else if (i==1)

{

sync2 = ADC_GetConversionValue (ADC1);

i=0;

if (sync2 == 50 && sync2 > sync1)

{

NVIC_DisableIRQ (ADC_IRQn);

ADC_ITConfig (ADC1, ADC_IT_EOC, DISABLE);

DMA2_Stream0_Chanel0_Configuration ();

ADC_DMARequestAfterLastTransferCmd (ADC1, ENABLE);

ADC_DMACmd (ADC1, ENABLE);

flag = 1;

}

sync1 = 0;

sync2 = 0;

}

ADC_ClearITPendingBit (ADC1, ADC_IT_EOC); }}

void TIM3_IRQHandler (void)

{

if (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)

{

counter = 0;

if (flag ==1)

{ DMA2_Stream0_Chanel0_Configuration (); }

ADC_SoftwareStartConv (ADC1);

NVIC_EnableIRQ (TIM2_IRQn);

TIM_ITConfig (TIM2, TIM_IT_Update, ENABLE);

TIM_Cmd (TIM2, ENABLE);

TIM_ClearITPendingBit (TIM3, TIM_IT_Update); }}

void TIM2_IRQHandler (void)

{

if (TIM_GetITStatus (TIM2, TIM_IT_Update)! = RESET)

{

if (counter == 251)

{ TIM_Cmd (TIM2, DISABLE);

DMA_Cmd (DMA2_Stream0, DISABLE);

DMA1_Stream3_Chanel4_Configuration ();

}

counter++;

TIM_ClearITPendingBit (TIM2, TIM_IT_Update); }}

Рисунок ПБ.1 - Продолжение

Текст программы для управления устройством измерения параметров аналоговых сигналов с ЭВМ. Текст программы представлен на рисунке ПБ.2.

using System;

using System. Collections. Generic;

using System.componentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. IO. Ports;

using ZedGraph;

namespace bluetooth

{

public partial class View: Form

{

const int SnapshotLenght = 250;

public double Vref = 3.3;

double ADC_Period;

double T3_Period;

double V3_Freq;

double SecondPerDivision;

double Tgen_Period;

double Vgen_Freq;

static byte [] ByteArray = new byte [SnapshotLenght];

public double [] IntArray = new double [SnapshotLenght];

string str_Rx;

SerialPort port = new SerialPort ("COM18", 115200, Parity. None, 8, StopBits. One);

public View ()

{

InitializeComponent ();

button_1_1. Enabled = false;

button_1_2. Enabled = false;

button_1_3. Enabled = false;

button_1_4. Enabled = false;

button_1_5. Enabled = false;

button_1_6. Enabled = false;

button_1_7. Enabled = false;

button_1_8. Enabled = false;

}

private void View_Load (object sender, EventArgs e)

{

zedGraph. ZoomEvent += new ZedGraphControl. ZoomEventHandler (zedGraph_ZoomEvent);

}

private void OpenSpButton_Click (object sender, EventArgs e)

{

openSerialPort ();

}

public void reDraw ()

{

changeInterval ();

DrawGraph ();

}

Рисунок ПБ.2 - Текст программы

private void CloseSpButoon_Click (object sender, EventArgs e)

{

closeSerialPort ();

}

private void closeButton_Click (object sender, EventArgs e)

{

Close ();

}

void zedGraph_ZoomEvent (ZedGraphControl sender, ZoomState oldState, ZoomState newState)

{

GraphPane pane = sender. GraphPane;

if (pane. XAxis. Scale. Min <= 0)

{

pane. XAxis. Scale. Min = 0;

}

if (pane. XAxis. Scale. Max >= 12)

{

pane. XAxis. Scale. Max = 12;

}

if (pane. YAxis. Scale. Min <= 0)

{

pane. YAxis. Scale. Min = 0;

}

if (pane. YAxis. Scale. Max >= Vref + 2)

{

pane. YAxis. Scale. Max = Vref + 2;

}

}

public void openSerialPort ()

{

port. ReadBufferSize = 250;

port. ReceivedBytesThreshold = 250;

port. DataReceived += new SerialDataReceivedEventHandler (DataReceivedHandler);

port. Open ();

}

private void DataReceivedHandler (object sender, SerialDataReceivedEventArgs e)

{

SerialPort sp = (SerialPort) sender;

sp. Read (ByteArray, 0, ByteArray. Length);

}

public void sendStrToPort (string str1)

{

port. Write (str1);

}

public void closeSerialPort ()

{

port. Close ();

}

public void changeInterval ()

{

for (int i = 0; i < ByteArray. Length; i++)

{

IntArray [i] = Convert. ToDouble (ByteArray [i]);

IntArray [i] = ( (IntArray [i] / SnapshotLenght) * Vref); // входной интервал - [0; 255], выходной интервал - [0; 3.3]

}}

public string convertByteToStr ()

{str_Rx = null;

for (int i = 0; i < ByteArray. Length; i++)

{str_Rx += i + ")" + " " + Convert. ToString (IntArray [i]) +

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

Environment. NewLine; }

return str_Rx; }

public void DrawGraph ()

{

GraphPane panel = zedGraph. GraphPane

PointPairList list = new PointPairList ();

panel. CurveList. Clear ();

int y = 0;

for (double x = 0; x < 10-0.04; x +=0.04, y += 1)

{

list. Add (x, IntArray [y]);

}

LineItem myCurve = panel. AddCurve ("ADC", list, Color. Red, SymbolType. None);

zedGraph. AxisChange ();

zedGraph. Invalidate ();

}

private void timer1_Tick (object sender, EventArgs e)

{

reDraw ();

}

private void pause_Click (object sender, EventArgs e)

{

timer1. Stop ();

}

private void start_Click (object sender, EventArgs e)

{

timer1. Start ();

}

private void button_1_1_Click (object sender, EventArgs e)

{

sendStrToPort ("11");

ADC_Period = 1.17; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period);

}

private void button_1_2_Click (object sender, EventArgs e)

{

sendStrToPort ("12");

ADC_Period = 1.67; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period);

}

private void button_1_3_Click (object sender, EventArgs e)

{

sendStrToPort ("13");

ADC_Period = 2.17; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period);

}

private void button_1_4_Click (object sender, EventArgs e)

{

sendStrToPort ("14");

ADC_Period = 3.417; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period); }

private void button_1_5_Click (object sender, EventArgs e)

{

sendStrToPort ("15");

ADC_Period = 4.5; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period);

}

private void button_1_6_Click (object sender, EventArgs e)

{ sendStrToPort ("16");

ADC_Period = 5.67; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period); }

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

private void button_1_7_Click (object sender, EventArgs e)

{

sendStrToPort ("17");

ADC_Period = 7; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period);

}

private void button_1_8_Click (object sender, EventArgs e)

{

sendStrToPort ("18");

ADC_Period = 21; // *SnapshotLenght;

textBox2. Text = Convert. ToString (ADC_Period);

}

private void button_2_1_Click (object sender, EventArgs e)

{

sendStrToPort ("21");

Tgen_Period = 13.34; // *SnapshotLenght;

Vgen_Freq = 75;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

private void button_2_2_Click (object sender, EventArgs e)

{

sendStrToPort ("22");

Tgen_Period = 16.67; // *SnapshotLenght;

Vgen_Freq = 60;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

private void button_2_3_Click (object sender, EventArgs e)

{

sendStrToPort ("23");

Tgen_Period = 41.67; // *SnapshotLenght;

Vgen_Freq = 24;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

private void button_2_4_Click (object sender, EventArgs e)

{

sendStrToPort ("24");

Tgen_Period = 83.34; // *SnapshotLenght;

Vgen_Freq = 12;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

private void button_2_5_Click (object sender, EventArgs e)

{

sendStrToPort ("25");

Tgen_Period = 166.67; // *SnapshotLenght;

Vgen_Freq = 6;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

private void button_2_6_Click (object sender, EventArgs e)

{

sendStrToPort ("26");

Tgen_Period = 333.34; // *SnapshotLenght;

Vgen_Freq = 3;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

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

private void button_2_7_Click (object sender, EventArgs e)

{

sendStrToPort ("27");

Tgen_Period = 666.67; // *SnapshotLenght;

Vgen_Freq = 1.5;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

private void button_2_8_Click (object sender, EventArgs e)

{

sendStrToPort ("28");

Tgen_Period = 1000; // *SnapshotLenght;

Vgen_Freq = 1;

textBox4. Text = Convert. ToString (Vgen_Freq);

textBox1. Text = Convert. ToString (Tgen_Period);

}

private void button_3_1_Click (object sender, EventArgs e)

{

sendStrToPort ("31");

T3_Period = 1.33; // *SnapshotLenght;

V3_Freq = 750;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),

8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

textBox3. Text = Convert. ToString (T3_Period);

}

private void button_3_2_Click (object sender, EventArgs e)

{

sendStrToPort ("32");

T3_Period = 1.66; // *SnapshotLenght;

V3_Freq = 600;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

textBox3. Text = Convert. ToString (T3_Period); }

private void button_3_3_Click (object sender, EventArgs e)

{

sendStrToPort ("33");

T3_Period = 4.16; // *SnapshotLenght;

V3_Freq = 240;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),

8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

textBox3. Text = Convert. ToString (T3_Period); }

private void button_3_4_Click (object sender, EventArgs e)

{

sendStrToPort ("34");

T3_Period = 8.33; // *SnapshotLenght;

V3_Freq = 120;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),

8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

textBox3. Text = Convert. ToString (T3_Period); }

private void button_3_5_Click (object sender, EventArgs e)

{sendStrToPort ("35");

T3_Period = 16.66; // *SnapshotLenght;

V3_Freq = 60;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),

8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

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

textBox3. Text = Convert. ToString (T3_Period);

}

private void button_3_6_Click (object sender, EventArgs e)

{

sendStrToPort ("36");

T3_Period = 33.33; // *SnapshotLenght;

V3_Freq = 30;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),

8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

textBox3. Text = Convert. ToString (T3_Period);

}

private void button_3_7_Click (object sender, EventArgs e)

{

sendStrToPort ("37");

T3_Period = 66.66; // *SnapshotLenght;

V3_Freq = 15;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),

8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

textBox3. Text = Convert. ToString (T3_Period);

}

private void button_3_8_Click (object sender, EventArgs e)

{

sendStrToPort ("38");

T3_Period = 100; // *SnapshotLenght;

V3_Freq = 10;

SecondPerDivision = Math. Round ( (25/ (V3_Freq * 1000)),

8);

textBox6. Text = Convert. ToString (SecondPerDivision);

textBox5. Text = Convert. ToString (V3_Freq);

textBox3. Text = Convert. ToString (T3_Period);

}}}

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

Приложение В

Руководство оператора

Назначение кнопок блока управления "Graphic settings":

· OpenSP - открытие беспроводного канала связи Bluetooth с цифровой измерительной системой

· CloseSP - закрытие беспроводного канала связи Bluetooth с цифровой измерительной системой

· Close - закрытие программы

· Start - запуск обновления изображения

· Pause - остановка обновления изображения

Назначение кнопок блока управления частотными параметрами генератора сигнала "Generator settings":

· 1kHz - установление частоты генерируемого сигнала в 1kHz

· 1.5kHz - установление частоты генерируемого сигнала в 1.5kHz

· 3kHz - установление частоты генерируемого сигнала в 3kHz

· 6kHz - установление частоты генерируемого сигнала в 6kHz

· 12kHz - установление частоты генерируемого сигнала в 12kHz

· 24kHz - установление частоты генерируемого сигнала в 24kHz

· 60kHz - установление частоты генерируемого сигнала в 60kHz

· 75kHz - установление частоты генерируемого сигнала в 75kHz

Назначение кнопок блока управления частотными параметрами цифровой измерительной системы (ЦИС)"Oscilloscope settings":

· 10kHz - установление частоты измерений ЦИС в 10kHz

· 15kHz - установление частоты измерений ЦИС в 15kHz

· 30kHz - установление частоты измерений ЦИС в 30kHz

· 60kHz - установление частоты измерений ЦИС сигнала в 60kHz

· 120kHz - установление частоты измерений ЦИС в 120kHz

· 240kHz - установление частоты измерений ЦИС в 240kHz

· 600kHz - установление частоты измерений ЦИС в 600kHz

· 750kHz - установление частоты измерений ЦИС в 750kHz

Приложение Г

Руководство программиста

Список используемых переменных, массивов и объектов:

· SnapshotLenght - переменная, в которой хранится количество измерений, производимых для формирования кадра изображения

· Vref - переменная, в которой хранится величина опорного напряжения АЦП последовательного приближения цифровой измерительной системы.

· T3_Period - переменная, используемая для отображения текущего периода измерений цифровой измерительной системы

· V3_Freq - переменная, используемая для отображения текущей частоты измерений цифровой измерительной системы

· SecondPerDivision - переменная, используемая для отображения текущего соотношения времени на деление графика

· Tgen_Period - переменная, используемая для отображения текущего периода генерируемого сигнала

· Vgen_Freq - переменная, используемая для отображения текущей частоты генерируемого сигнала

· Str1 - локальная строковая переменная, используемая для отправки данных цифровой измерительной системе


Подобные документы

  • Классификация цифровых измерительных приборов, разработка структурной схемы устройства измерения временных величин сигналов. Описание базового микроконтроллера и программного обеспечения. Аппаратно-программные средства контроля и диагностики устройства.

    дипломная работа [647,7 K], добавлен 20.10.2010

  • Исследование принципов разработки генератора аналоговых сигналов. Анализ способов перебора адресов памяти генератора аналоговых сигналов. Цифровая генерация аналоговых сигналов. Проектирование накапливающего сумматора для генератора аналоговых сигналов.

    курсовая работа [513,0 K], добавлен 18.06.2013

  • Разработка структурной и функциональной схем устройства преобразования аналоговых сигналов на микропроцессоре PIC. Входное буферное устройство, аналого-цифровой преобразователь. Устройство цифровой обработки сигнала, широтно-импульсный модулятор.

    контрольная работа [612,9 K], добавлен 11.04.2014

  • Разработка устройства преобразования аналоговых сигналов на базе микроконтроллера PIC16F877 и ЦАП AD5346, осуществляющее преобразование в последовательность двоичных кодов, обработку кодов и преобразование результатов обработки в аналоговые сигналы.

    курсовая работа [1,6 M], добавлен 06.06.2012

  • Разработка структурной схемы системы связи, предназначенной для передачи данных и аналоговых сигналов методом импульсно-кодовой модуляции для заданного диапазона частот и некогерентного способа приема сигналов. Рассмотрение вопросов помехоустойчивости.

    курсовая работа [139,1 K], добавлен 13.08.2010

  • Проектирование цифрового генератора аналоговых сигналов. Разработка структурной, электрической и функциональной схемы устройства, блок-схемы опроса кнопок и работы генератора. Схема делителя с выходом в виде напряжения на инверсной резистивной матрице.

    курсовая работа [268,1 K], добавлен 05.08.2011

  • Устройство коммутаторов аналоговых сигналов. Сущность коммутации сигналов - метода, с помощью которого сигналы, поступающие от нескольких источников, объединяются в определенном порядке в одной линии. Многоканальные, матричные коммутаторы, мультиплексоры.

    реферат [556,8 K], добавлен 20.12.2010

  • Структурная схема системы связи и приемника. Выигрыш в отношении сигнал/шум при применении оптимального приемника. Применение импульсно-кодовой модуляции для передачи аналоговых сигналов. Расчет пропускной способности разработанной системы связи.

    курсовая работа [1,1 M], добавлен 09.12.2014

  • Детализация исходного ТЗ и постановка задачи (использование блочно-иерархического подхода при разработке устройства контроля за уровнем аналоговых сигналов). Структурная схема, её описание. Расчет потребляемой мощности и требования к источникам питания.

    курсовая работа [119,3 K], добавлен 14.02.2009

  • Разработка структурной схемы системы связи, предназначенной для передачи двоичных данных и аналоговых сигналов методом импульсно-кодовой модуляции. Принципы статического (эффективного) кодирования сообщений. Классификация помехоустойчивых кодов.

    курсовая работа [882,7 K], добавлен 13.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.