- •1. Общие правила выполнения лабораторных работ
- •2. Программное обеспечение, используемое для выполнения лабораторных работ
- •3. Лабораторная работа № 1. Создание простейшего консольного приложения C
- •3.1. Задание
- •3.2. Методические указания по выполнению лабораторной работы
- •3.2.1. Создание проекта консольного приложения
- •3.2.2. Открытие существующего проекта
- •3.2.3. Редактирование функции main Вашего проекта
- •3.2.4. Компиляция и сборка проекта
- •3.2.5. Пробный запуск проекта из интегрированной среды CodeBlocks
- •3.2.6. Запуск откомпилированного исполнительного файла проекта непосредственно из операционной системы
- •4.1. Задание
- •4.2. Методические указания по выполнению лабораторной работы
- •4.2.1.1. Создание переменных
- •4.2.1.2. Ввод значения входной переменной с клавиатуры
- •4.2.1.3. Выполнение арифметических вычислений
- •4.2.1.4. Вывод результата вычисления
- •4.2.1.5. Пример исходного текста программы
- •4.2.2. Использование переменных с модификатором const в исходных текстах приложений
- •5. Лабораторная работа № 3. Использование оператора выбора и преобразования типов значений переменных
- •5.1. Задание
- •5.2. Методические указания по выполнению лабораторной работы
- •5.2.1. Создание проекта приложения
- •5.2.3. Преобразование сигнала АЦП из целочисленного формата в формат с плавающей десятичной точкой и его масштабирование
- •5.2.4. Вычисление значения физического параметра (температуры) по значению напряжения на выходе датчика
- •5.2.5. Вывод вычисленного значения физического параметра (температуры) на дисплей
- •6. Лабораторная работа № 4. Использование оператора переключателя switch
- •6.1. Задание
- •6.2. Методические указания по выполнению лабораторной работы
- •6.2.1. Создание проекта консольного приложения
- •6.2.2. Ввод с клавиатуры символа - шестнадцатеричной цифры, которую требуется преобразовать в числовой формат
- •6.2.3. Преобразование ASCII-символа шестнадцатеричной цифры в числовой формат
- •6.2.4. Вывод результата преобразования
- •6.2.5. Ввод с клавиатуры произвольного символа и завершение работы приложения
- •7. Лабораторная работа № 5. Создание и использование пользовательских функций
- •7.1. Задание
- •7.2. Методические указания по выполнению лабораторной работы
- •7.2.1. Создание проекта консольного приложения
- •7.2.2. Ввод с клавиатуры символа - шестнадцатеричной цифры, которую требуется преобразовать в числовой формат
- •7.2.3. Создание и вызов функции преобразования кода ASCII-символа в число
- •7.2.3.1. Общий порядок создания и вызова функции
- •7.2.3.2. Использование функции для получения числового значения шестнадцатеричной цифры
- •7.2.4. Вывод на дисплей результата вычисления
- •7.2.5. Ввод с клавиатуры произвольного символа и завершение работы приложения
- •8.1. Методические указания по выполнению лабораторной работы
- •8.1.1. Создание проекта консольного приложения
- •8.1.2. Ввод с клавиатуры символа - шестнадцатеричной цифры, которую требуется преобразовать в числовой формат
- •8.1.3. Создание и вызов функции, размещенной в отдельном файле исходного текста
- •8.1.3.1. Создание нового файла исходного текста и размещение в нем пользовательской функции
- •8.1.3.2. Создание нового файла заголовка и подключение его к проекту
- •8.1.4. Вывод на дисплей результата вычисления
- •8.1.5. Ввод с клавиатуры произвольного символа и завершение работы приложения
- •9. Лабораторная работа №7. Использование массивов, структур и указателей
- •9.1. Методические указания по выполнению лабораторной работы
- •9.1.1. Создание проекта приложения
- •9.1.3. Создание пользовательского типа данных - структуры
- •9.1.4. Подключение файла-заголовка к проекту
- •9.1.5. Создание файла исходного текста и подключение его к проекту
- •9.1.6. Создание функции, выполняющей вычисление значения линейной функции по значению ее аргумента
- •9.1.7. Создание функции, выполняющей поиск линейного отрезка, на котором находится аргумент линеаризуемой функции, и вычисление ее (линеаризуемой функции) значения
- •9.1.7.1. Оператор итерационного цикла for
- •9.1.7.2. Оператор цикла с предусловием while
- •9.1.7.3. Оператор цикла с постусловием do while
- •9.1.7.4. Передача функции вычисления значения линейной функции указателей на используемые элементы массива
- •9.1.8. Создание в файле заголовка прототипа функции
- •9.1.9. Создание константного одномерного массива, содержащего параметры граничных точек линейных отрезков линеаризуемой функции
- •9.1.10. Определение размера массива
- •9.1.11. Объявление объекта данных как глобального
- •9.1.12. Вызов функции MultyLinearFuncCalc из файла main.cpp
- •9.1.13. Вывод результата вычислений и завершение работы приложения
№ варианта |
N min |
U min , |
N max |
U max , |
t1 , |
U 1 , |
t2 , |
U 2 , |
N input |
toutput , |
|
В |
|
В |
°C |
В |
°C |
В |
|
°C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
0 |
0.37 |
1023 |
14.5 |
-12 |
0.55 |
73 |
13 |
430 |
27.3205 |
|
|
|
|
|
|
|
|
|
|
|
19 |
0 |
0.24 |
2047 |
14.6 |
48 |
0.34 |
95 |
13.7 |
376 |
56.9275 |
|
|
|
|
|
|
|
|
|
|
|
20 |
0 |
0.15 |
4095 |
3.3 |
72 |
0.57 |
148 |
2.9 |
3529 |
146.846 |
|
|
|
|
|
|
|
|
|
|
|
В качестве выходного кода АЦП используется смещенный код.
Создайте приложение, запустите его, продемонстрируйте работу приложения преподавателю. При этом, целью обеспечения простоты изменения параметров преобразования, все значения, приведенные в таблице 6, должны быть представлены в исходном тексте в виде переменных с модификатором const следующих типов (не в виде чисел непосредственно в
уравнениях):
U max |
, |
U min |
, |
t1 , t2 - |
const |
float |
N max |
, |
N min |
|
- |
const |
unsigned int |
5.2. Методические указания по выполнению лабораторной работы
5.2.1. Создание проекта приложения
Создание консольного приложения уже рассматривалось в предыдущих лабораторных работах (см. разделы 3.2.1., 3.2.2.).
5.2.2.Ввод с клавиатуры сигнала, имитирующего выходной сигнал аналогоцифрового преобразователя
Вкачестве первого шага, выполняемого приложением, необходимо выполнить вывод на экран строки-приглашения и ввод с клавиатуры целого числа, имитирующего код, считанный программой из АЦП.
Вывод на экран строковой константы и ввод значения переменной с клавиатуры уже рассматривался ранее (см. раздел 4.2.1.2.).
В данной лабораторной работе необходимо ввести с клавиатуры целое число - код, который якобы получен из АЦП в процессе преобразования аналогового сигнала - выходного напряжения датчика температуры. Для этого необходимо выполнить следующие действия:
1.Создать целочисленную переменную, в которую будет вводится входное значение - выходной код АЦП.
2.Ввести с клавиатуры значение в данную переменную.
Создание переменных, используемых в приложении, уже рассматривалось в предыдущих работах. Предлагается добавить в область, где уже существуют ранее созданные переменные (в начале функции main либо в начале исходного текста программы) строку создания переменной.
Поскольку код, получаемый от АЦП в данной работе - всегда целое положительное число размером не более 2 байтов, для его хранения предлагается использовать переменную типа unsigned int. Ниже показан фрагмент исходного текста, в котором определяется переменная
36
SignalADC, используемая для ввода и хранения кода АЦП.
Ввод кода АЦП в данную переменную можно выполнить с помощью помощью стандартных потоков ввода/вывода, как это делалось в предыдущей работе. Ниже показан фрагмент примера исходного текста, где выполняется вывод на экран строки - приглашения, и ввод с клавиатуры значения в ту же переменную SignalADC:
Операция вывода строки - приглашения и ввода сигнала занимает две последние строки данного примера. Первые несколько строк примера приведены для облегчения ориентации в исходном тексте и понимания, где должна располагаться операция ввода (по аналогии с предыдущими программами).
5.2.3.Преобразование сигнала АЦП из целочисленного формата в формат с плавающей десятичной точкой и его масштабирование
Входное значение кода АЦП (помещенное в предыдущем примере в переменную SignalADC), представляет собой значение напряжения в целочисленном смещенном коде, то есть
имеющее определенный масштаб и смещение относительно нулевой точки. Поскольку используемое для выполнения приложения процессорное ядро (процессор Вашего персонального компьютера) поддерживает выполнение арифметических операций с числами в формате с плавающей десятичной точкой на аппаратном уровне, удобнее будет преобразовать считанный код к этому формату так. При этом полученное значение должно быть равно величине считанного напряжения в вольтах.
В большинстве случаев (и в данной работе) аналого-цифровые преобразователи имеют линейную (или максимально приближенную к линейной) зависимость между входным сигналом и выходным кодом. Линейная зависимость в общем определяется следующим выражением:
Y =A X + B ; |
( 1) |
где:
Xвходная переменная (аргумент линейной функции), в данном случае - код АЦП из
37
переменной SignalADC;
Yрезультат вычисления (значение линейной функции), в данном случае - отмасштабированное значение напряжения;
A коэффициент пропорциональности (коэффициент наклона);
Bсмещение относительно нулевого уровня.
Коэффициент пропорциональности в общем случае может быть определен по любым двум точкам линейной зависимости:
A= |
Y 2−Y 1 |
; |
( 2) |
X 2− X 1 |
|
||
|
|
|
Коэффициент пропорциональности для вычисления сигнала АЦП может быть определен по максимальному и минимальному значению входного напряжения АЦП и соответствующим им кодам (см. таблицу 6):
K u= |
U max−U min |
; |
( 3) |
N max−N min |
|
||
|
|
|
В этом случае выражение для вычисления напряжения по значению кода АЦП принимает
вид:
U ADC=K u (SignalADC− N min)+U min ; |
( 4) |
Уравнения (3) и (4) можно использовать для реализации масштабирования напряжения АЦП |
|
в системе. При этом значения U max , U min , N max и |
N min являются постоянными, |
выбираемыми из таблицы 6 в соответствии с Вашим вариантом. Можно подставить их в виде числовых значений непосредственно в строки, реализующие данные уравнения в исходном тексте. Однако с точки зрения наглядности исходного текста, простоты дальнейшей настройки, а также в соответствии с заданием, для этих значений необходимо создать переменные с модификатором const. Данные переменные можно создать в том же месте, что и остальные переменные
программы (в данном случае - в начале функции main).
Следующий пример фрагмента исходного текста показывает, как это сделать:
38
Обратите внимание, что значения, присваиваемые переменным с модификатором const, должны соответствовать Вашему варианту задания.
Помимо перечисленных выше переменных здесь также создаются переменные с именами U_ADC и Ku, используемые в уравнениях (3) и (4).
Пример строк, реализующие уравнения (3) и (4) в исходном тексте, показан в следующем примере:
В данном примере строки уравнений (3) и (4) помещены сразу после строк ввода кода АЦП, рассмотренных в разделе 5.2.2. В строках, реализующих данные уравнения, используются операции явного преобразования типа. В общем виде данная операция имеет следующий формат записи:
(тип) значение
где:
39