- •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. Вывод результата вычислений и завершение работы приложения
тип |
тип, в который должно быть преобразовано значение |
значение |
преобразуемое значение (переменная, константа, выражение) |
Например, в строке:
Ku = (Umax - Umin)/((float)(Nmax - Nmin));
вычисляется разность целочисленных констант Nmax и Nmin. Результат вычисления - также целочисленное значение. Далее это значение с помощью операции (float) преобразуется в формат с плавающей десятичной точкой. В строке:
U_ADC = Ku * (float)(SignalADC - Nmin) + Umin;
выполняется аналогичная операция с разностью целочисленных переменных SignalADC и Nmin.
В данных примерах использование явного преобразования типа не является обязательным - как правило, компилятор сам выполняет данные преобразования. Однако некоторые версии компиляторов могут допускать ошибки в выборе типа результата операции. В таком случае явное указание типа получаемого значения гарантирует от таких ошибок.
5.2.4.Вычисление значения физического параметра (температуры) по значению напряжения на выходе датчика
Для вычисления измеряемого физического параметра используется линеаризованная зависимость между выходным напряжением датчика и измеряемым при этом значением физического параметра (температуры). Данная зависимость приведена на рис. 27.
Зависимость состоит из трех участков, перечисленных в таблице 7
Таблица 7. Нумерация участков характеристики датчика физического параметра (температуры)
№ участка |
Границы участка |
|
|
1 |
[U min ,U 1 ] |
2 |
U 1 ,U 2 |
3 |
[U 2 ,U max ] |
На участках 1 и 3 (см. таблицу 7) значение измеряемого физического параметра неизменно, не зависит от температуры. Фактически это - предельные значения измеряемого физического значения. Для участка 1 значение физического параметра будет определяться выражением:
t=t1 ; |
( 5) |
где:
tтекущее измеренное значение физического параметра (температуры);
t1 |
минимальное измеряемое значение физического параметра (берется из таблицы 7 для |
|
Вашего варианта). |
Для участка 3 значение физического параметра будет определяться выражением:
40
t=t2 ; |
( 6) |
где:
t2 |
максимальное измеряемое значение физического параметра (берется из таблицы 7 для |
|
Вашего варианта). |
Участок 2 представляет собой линейную зависимость напряжения от измеряемого физического параметра. Здесь для вычисления значения физического параметра можно использовать выражения (1) и (2). Применительно к данной задаче они примут следующий вид:
K t= |
t2−t1 |
; |
( 7) |
U 2−U 1 |
|
||
|
|
|
|
t=K t (U ADC−U 1 )+t1 ; |
( 8) |
где: |
|
|
K t |
коэффициент пропорциональности зависимости измеряемого физического |
|
|
параметра от выходного напряжения датчика; |
|
U 1 , U 2 |
границы отрезка 2 по выходному напряжению (берутся из таблицы 7 для |
|
|
Вашего варианта); |
|
U ADC |
выходное напряжение датчика, вычисленное ранее в разделе 5.2.3. |
|
Для реализации данных вычислений в исходном тексте Вам потребуется использовать алгоритм, подобный показанному на рис. 28.
41
Начало |
|
|
U ADC<U 1 |
Да |
t=t1 |
|
||
Нет |
|
|
U ADC>U 2 |
Да |
t=t2 |
|
||
Нет |
|
|
t2−t1 |
|
|
K t= U 2−U 1 |
|
|
t=K t (U ADC−U 1 )+t1 |
|
|
Конец |
|
|
Рис. 28. Блок-схема алгоритма вычисления значения измеряемого физического сигнала |
||
Для реализации данного алгоритма можно использовать оператор выбора. В общем виде |
||
оператор имеет следующую структуру: |
|
|
if (условие)
{
Действия, выполняемые, если значение условия не равно 0.
}
else
{
Действия, выполняемые, если значение условия равно 0.
}
Может использоваться также сокращенный вариант оператора:
if (условие)
{
Действия, выполняемые, если значение условия не равно 0.
}
42
или, если действия включают в себя только одну строку исходного текста:
if (условие) Действие_если_значение_условия_не_0;
В качестве условия может использоваться любая переменная или выражение.
При выполнении оператора вначале вычисляется выражение условия, потом оператор выполняет проверку равенства его нулю и, по результату этой проверки принимает решение, какое действие выполнять. Например:
x = 10;
...
if (x)
{
x = 0;
}
В данном примере переменной x присваивается значение 10. Далее оператор условия проверяет свое условие (в данном случае - значение переменной x), и так как оно не равно 0, выполняет следующее действие (запись в переменную x нового значения, в данном случае - 0).
Чаще всего для создания выражений условий используют знаки операций сравнения, приведенные в таблице 8.
Таблица 8. Символы операций сравнения
Символ |
Проверяемое условие |
|
|
< |
меньше |
> |
больше |
<= |
меньше или равно |
|
|
>= |
больше или равно |
== |
равно |
!= |
не равно |
Например, выражение:
10 >= 20
возвратит значение 0, а выражение:
10 != 20
ненулевое значение (зависит от компилятора, обычно - 1).
Использование данных операций иллюстрирует следующий пример:
x = 10; |
|
... |
|
if (x == 10) |
|
{ |
// Если условие выполняется. |
x = 0; |
|
} |
|
43
else
{
x = 20; |
// Если условие не выполняется. |
}
В данном примере оператор сравнения проверяет условие равенства переменной x константе 10. Поскольку в данном примере это условие выполняется (ранее переменной x присваивается значение 10), далее в переменную x заносится значение 0.
Для реализации в Вашем исходном тексте алгоритма, приведенного на рис. 28, Вам потребуется выполнить следующие действия:
1. Создать переменные Kt и t типа float, используемые для выполнения алгоритма. В переменную Kt будет помещаться рассчитанное значение коэффициента пропорциональности для участка 2 характеристики датчика (см. рис. 27, таблицу 7). В переменную t будет
помещаться вычисленная температура. Переменные создается в той же области, что и все предыдущие переменные Вашего приложения. После этого область создания переменных Вашего исходного текста может принять примерно следующий вид:
2. Реализовать алгоритм, приведенный на рис. 28. Исходный текст, реализующий данный алгоритм, должен размещаться в функции main после вычисления выходного напряжения датчика (см. раздел 5.2.3.). Исходный текст реализации алгоритма будет примерно следующий вид:
44