Uploaded by никита

Отчет по практике

advertisement
ОТЧЕТ
по учебной практике УП.02
студента
Специальность 09.02.01 Компьютерные системы и комплексы
__________________
Вид профессиональной деятельности (ПМ) ПМ.02 «Применение микропроцессорных систем,
установка и настройка периферийного оборудования»
________________________
Место прохождения
Студент(ка)/
(полное название организации, адрес, телефон)
31к
группы
Барсуков Никита Александрович
(фамилия, имя, отчество)
(подпись, дата)
По
дп.
и
да
та
Вз
ам
.
ин
в.
№
руководитель практики (от организации)
Васильев А С, Ганя Д С, Лякина И И
(фамилия, имя, отчество)
М. П.
руководитель практики (от ОУ)
Васильев А С, Ганя Д С, Лякина И И
(фамилия, имя, отчество)
(оценка)
Ин
в.
№
ду
бл.
(подпись, дата)
Содержание
По
дп.
и
да
та
УП02.09.02.01.003.ПЗ
Лит Изм.
Ин
в.
№
по
дп
Разраб.
Пров.
Т. контр.
Н. контр.
Утв.
№ докум.
Подп.
Дата
Лит
Барсуков Н.А
Отчет по
учебной практике
Лист
Листов
3
69
ГБПОУ «РК", 31К
Раздел 1 – Программирование C#
Введение3
1 Основная и практическая часть5
1.1 Техникабезопасности при работе с компьютером ................................... 5
1.2Характеристика рабочего местаОшибка!
Закладка
не
определена.
1.3 Изучение теоретических основ языка программирования Си#, данные в языке
Лабораторная работа 119
Лабораторная работа 219
Лабораторная работа 326
Лабораторная работа 419
Раздел 2 – Программирование МК
2.1Микроконтроллеры: Общее понятие их назначение41
2.2Создание проекта САПР44
2.3Организация циклов55
Заключение69
По
дп.
и
да
та
Вз
ам
.
ин
в.
№
Ин
в.
№
ду
бл.
По
дп.
и
да
та
УП02.09.02.01.003.ПЗ
Лит Изм.
Ин
в.
№
по
дп
Разраб.
Пров.
Т. контр.
Н. контр.
Утв.
№ докум.
Подп.
Дата
Лит
Барсуков Н.А
Отчет по
учебной практике
Лист
Листов
3
69
ГБПОУ «РК", 31К
Введение
Цель практики: получить навыки программирования на языке СиAVR.
Задачи практики:

Ознакомиться с обустройством микроконтроллера на примере МК
СиAVM;

получить навыки программирования микроконтроллера на языке
СиAVM;

получить навык работы с программатора Gozilla;

получить
навыки
прошивки
МК
attiny2313
с
помощью
программатора Gozilla;

получить навыки прототипирования работы МК Attiny2313 на
примере семисегментного индикатора с общим анодом(катодом);

уметь разрабатывать математическую модель задачи;

уметь разрабатывать блок-схему алгоритма программного модуля в
соответствии с математической постановкой задачи;
П
о
д
п.
и
д
а
т
а

владеть навыками программирования на ассемблере;

владеть навыками программирования в среде C#;

применять свои знания при программированию микроконтроллеров;

составить отчет по практике.
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.02.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
4
Раздел 1 – Программирование C#
1
Основная и практическая часть
1.1
Техника безопасности при работе с компьютером
До начала работы: проверить исправность электропроводки розеток
и вилок компьютера заземление ПК.
Во время работы:

Аккуратно обращаться с проводами;

Запрещается работать с неисправным ПК;

Нельзя заниматься отчисткой ПК, когда он находится под
напряжением;

Недопустимо самостоятельно проводить ремонт оборудования;

Нельзя располагать рядом с ПК жидкости, а также работать с
мокрыми руками и не входить в класс во влажной одежде;

В процессе работы с ПК нельзя прикасаться к другим
металлическим конструкциям;

П
о
д
п.
и
д
а
т
а
близости к ПК.
В аварийной ситуации:

Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Не допускается употребление пищи в непосредственной
В случае обнаружения оголенного провода исключить контакт
с проводом;

В случае возникновения пожара принять меры по его тушению
с использованием огнетушителя;

В случае поражения человека током оказать первую помощь и
вызвать скорую;

По окончанию работы выключить ПК, провести влажную
уборку отключить электропитание.
Требование предъявляемые СанПиН к рабочему месту:

Расстояние от монитора до глаз от 600 до 700 мм но не меньше
500;
УП02.09.02.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
5

Стул
работника
должен
быть
регулируемый
по
высоте
и
обеспечивать возможность поворота и изменение позы во время работы;

Высота стола-от 680 до 800мм;

Поверхность стола должна позволять оптимально разместить на ней
все для работы;

СанПиН рекомендует делать перерывы длительностью от 10 до 15
минут после 45-60 минут работы во время перерыва следует выполнять
гимнастику глаз и физические упражнения.
В заключении строго запрещается:

Прикасаться к питающимся проводам;

Прикасаться к экрану и к тыльной стороне монитора;

Включать и отключать аппаратуру без указания преподавателя;

Класть диск книги тетради на монитор и клавиатуру.
Техника безопасности при работе с электронными устройствами:
Причиной
тяжелых
несчастных
случаев может
стать неосторожное
обращение с током безопасным для человека является напряжение не выше --П
о
д
п.
и
д
а
т
а
вольт. При этом должна быть чистая сухая кожа, сухое помещение, следует
Вз
а
м.
ин
в.
№
В свою очередь сопротивление тела человека зависит от состояния кожи в
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
соблюдать безопасность при работе с устройствами, имеющими сетевое
напряжение сила тока, протекающая через человека, зависит от сопротивления
тела.
точках соприкосновения к полюсам источника тока и колеблется от сотен Ом до
сотен тысяч Ом.
Резкое уменьшение сопротивления тела происходит в том случае, когда
увеличивается площадь его соприкосновения с токонесущими предметами.
Например, при работе с плоскогубцами или металлической отверткой, или
когда человек стоит на сырой земле, на влажном бетоне, сырых досках.
Не следует также иметь дело с электрическим током в болезненном или
утомленном состоянии, так как реакция человека снижается и увеличивается
УП02.09.02.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
6
вероятность несчастного случая. На степень поражения также влияет
время прохождения тока.
При длительном прохождении через тело даже слабый ток может
нанести
организму
несчастных
случаях
человека
очень
тяжелые
важно
повреждения,
бывает
поэтому
быстро
при
освободить
пострадавшего от тока
Если человек попал под напряжение, электрический ток протекает
от одной руки к другой, а также от руки к ноге, поэтому не следует
одновременно двумя руками прикасаться к элементам устройства, а также
держаться рукой за трубу отопления или водопровода.
На рабочем месте под ноги желательно подкладывать резиновый
коврик, являющийся изолятором. Замену элементов на налаживающими
конструкциями, следует производить при полном отключении от сети.
Некоторые схемотехники проверяют наличие напряжение на
зажимах с помощью языка.
приборов
транзисторах
и
микросхемах,
питание
которых
осуществляется безопасным напряжением.
П
о
д
п.
и
д
а
т
а
Следует уделять особое внимание монтажу той части прибора,
которая
связана
с
сетью.
Все
соединения
нужно
изолировать
термоусадкой, лакотканью или изолентой. Плату и элементы устройства
необходимо тщательно изолировать от корпуса, а сам корпус выполнять
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
на
Это категорически запрещено при сборке
из непроводящего материала.
Переменной name присваивается
метода Console.ReadLine(),
который
результат
позволяет
считать
с
консоли
введенную строку. То есть мы введем в консоли строку (точнее имя), и эта
строка окажется в переменой name.
Изучив небольшую часть теории, мы смогли написать базовую
программу, благодаря которой мы смогли вывести введенное имя в
консоль
в
тексте
УП02.09.02.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
строки.
Лист
7
Лабораторная работа 1
Тема: Программирование линейных алгоритмов
Цель работы: выработать практические навыки работы с системой Borland
Pascal, научиться создавать, вводить в компьютер, выполнять и исправлять
простейшие программы на языке Pascal в режиме диалога, познакомиться с
диагностическими сообщениями компилятора об ошибках при выполнении
программ, реализующих линейные алгоритмы
Задание 1
Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности
На Таблице 1 представлена тестовый проект к заданию 1
П
о
д
п.
и
д
а
т
а
I
V
S
5
125
25
Таблица 1 – тестовый проект задания 1
На рисунке 1 показана блок схема.
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
8
Начало
Ввод: l
v=l*l*l
s=l*l
Вывод: v, s
Конец
рисунок 1 - Блок схема лабораторной 1 задние 1
П
о
д
п.
и
д
а
т
а
Код Решения:
using System;
Console.Write("Введите длину ребра куба: ");
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
int l = Convert.ToInt32(Console.ReadLine());
int s = l*l;
int v =l*l*l;
Console.WriteLine($"объём= {v} площадть= {s}");
На рисунке 2 представлена консоль отладки.
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
9
Рисунок 2 – консоль отладки к заданию 1
Задание 3
Определить время падения камня на поверхность земли с высоты h.
На Таблице 2 представлена тестовый проект к заданию 3
H
67
S
3,698
Таблица 2 – тестовый проект задания 3
На рисунке 3 показана блок схема.
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
10
Начало
Ввод: h
s=(2*h/9.8)
Вывод: s
Конец
рисунок 3 - Блок схема лабораторной 1 задние 3
П
о
д
п.
и
д
а
т
а
Программный код:
using System;
Console.Write("Введите высоту: ");
double h = Convert.ToInt32(Console.ReadLine());
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
double s = (double)Math.Sqrt(2*h/9.8);
Console.WriteLine("время падения:{0 : 0.000}",s);
На рисунке 4 представлена консоль отладки
Рисунок 4 – консоль отладки к заданию 3
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
11
Задание 5
Треугольник задан координатами своих вершин. Найти:
o
периметр треугольника;
o
площадь треугольника.
На Таблице 3 представлена тестовый проект к заданию 5
x1
0
y1
x2
0
6
y2
0
x3
0
y3
10
p
27
s
23
Таблица 3 – тестовый проект задания 5
На рисунке 5 показана блок схема.
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
12
Начало
Ввод: x1, y1, x2, y2, x3, y3
a= (x-x1)^2+(y-y1)^2
b= (x-x2)^2+ (y-y2)^2
c= (x1-x2)^2+ (y1-y2)^2
p=a+b+c;
pp=p/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
Вывод: p, s
Конец
П
о
д
п.
и
д
а
т
а
рисунок 5 - Блок схема лабораторной 1 задние 5
Программный код:
Вз
а
м.
ин
в.
№
using System;
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Console.Write("Введите y1: ");
Console.Write("Введите x1: ");
int x = Convert.ToInt32(Console.ReadLine());
int y = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите x2: ");
int x1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите y2: ");
int y1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите x3: ");
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
13
int x2 = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите y3: ");
int y2 = Convert.ToInt32(Console.ReadLine());
int a = (int)Math.Sqrt(Math.Pow(x-x1, 2)+Math.Pow(y-y1, 2));
int b = (int)Math.Sqrt(Math.Pow(x-x2, 2)+Math.Pow(y-y2, 2));
int c = (int)Math.Sqrt(Math.Pow(x1-x2, 2)+Math.Pow(y1-y2, 2));
int p = a+b+c;
int pp = p/2;
int s = (int)Math.Sqrt(pp*(pp-a)*(pp-b)*(pp-c));
Console.WriteLine($"Периметр треугольника = {p}, Площадь треугольника
= {s}");
На рисунке 6 показана консоль отладки
П
о
д
п.
и
д
а
т
а
Рисунок 6 – консоль отладки к заданию 5
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Задание 7
Вычислить объем цилиндра с радиусом основания r и высотой h.
На Таблице 4 представлена тестовый проект к заданию 7
h
4
r
5
v
251.327...
Таблица 4 – тестовый проект задания 7
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
14
На рисунке 7 показана блок схема.
Начало
Ввод: h, r
V =
* r * r *
h
Вывод: v
Конец
Рисунок 7 – блок схема задания 7
Программный код:
using System;
П
о
д
п.
и
д
а
т
а
Console.Write("Введите r: ");
int r = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите h: ");
int h = Convert.ToInt32(Console.ReadLine());
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Console.WriteLine(Math.PI * r * r * h);
На рисунке 8 показана консоль отладки.
Рисунок 8 – консоль отладки к заданию 7
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
15
Задание 9
Вычислить площадь треугольника по формуле Герона, если заданы его
стороны
На Таблице 5 представлена тестовый проект к заданию 9
x1
0
y1
x2
0
6
y2
0
x3
0
y3
10
p
27
s
23
Таблица 5 – тестовый проект задания 9
На рисунке 9 показана блок схема задания 9
Начало
П
о
д
п.
и
д
а
т
а
Ввод: a, b, c
p=(a+b+c)/2
s =(p*(p-a)*(pb)*(p-c))
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Вывод: s
Конец
Рисунок 9 – блок схема задания 9
Программный код:
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
16
using System;
namespace Program
{class Program
{static void Main()
{Console.WriteLine("Введите стороны треугольника:");
double a = Convert.ToInt32(Console.ReadLine());
double b = Convert.ToInt32(Console.ReadLine());
double c = Convert.ToInt32(Console.ReadLine());
double p=(a+b+c)/2;
double s = Math.Sqrt(p*(p-a)*(p-b)*(p-c));
Console.WriteLine($"Площадь треугольника равна: {s}");
Console.ReadKey();}}}
На рисунке 10 показа консоль отладки
П
о
д
п.
и
д
а
т
а
Рисунок 10 – консоль отладки к заданию 9
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Задача 11
По данным сторонам прямоугольника вычислить его периметр,
площадь и длину диагонали
На Таблице 6 представлена тестовый проект к заданию 11
a
b
3
4
s
14
p
12
I
5
Таблица 6 – тестовый проект задания 11
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
17
На рисунке 11 показана блок схема задания 11
Начало
Ввод: a, b
p = (a+b)*2
s = a*b
d = (a*a+b*b)
Вывод: s p l
Конец
Рисунок 11 – блок схема задания 11
П
о
д
п.
и
д
а
т
а
Программный код:
using System;
Вз
а
м.
ин
в.
№
Console.WriteLine("ввелите a");
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
int b = Convert.ToInt32(Console.ReadLine());
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("ввелите b");
int p = (a+b)*2;
int s = a*b;
int d = (int)Math.Sqrt(a*a+b*b);
Console.WriteLine($"{p} {s} {d}");
На рисунке 12 показана консоль отладки
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
18
Рисунок 12 – консоль отладки к заданию 11
Лабораторная работа 2
Задача 1
Даны три действительных числа. Выбрать из них те, которые
принадлежат интервалу (1, 3)
На Таблице 7 представлена тестовый проект к заданию 1
a
3
П
о
д
п.
и
д
а
т
а
b
4
c
5
A
4
Таблица 7 – тестовый проект задания 1
На рисунке 13 представлена блок-схема к заданию 1 лабораторной 2
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
19
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 13 – Блок-схема нахождения интервала действительных чисел
Код приложения:
using System;
using System.Collections.Generic;
using System.Text;
namespace console_11{
class Program {
static void Main(string[] args){
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
20
double a, b, c;
Console.Write("Введите a:");
a = Convert.ToDouble(Console.ReadLine().Replace('.', ','));
Console.Write("Введите b:");
b = Convert.ToDouble(Console.ReadLine().Replace('.', ','));
Console.Write("Введите c:");
c = Convert.ToDouble(Console.ReadLine().Replace('.', ','));
if (a > 1 && a < 3)
Console.WriteLine("Число a = {0} принадлежит интервалу (1,3)", a);
if (b > 1 && b < 3)
Console.WriteLine("Число b = {0} принадлежит интервалу (1,3)", b);
if (c > 1 && c < 3)
Console.WriteLine("Число c = {0} принадлежит интервалу (1,3)", c);
Console.Write("Число b=:");
b = Convert.ToDouble(Console.ReadLine().Replace('.', ','));}}}
На рисунке 14 представлен Консоль отладки.
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 14 – Консоль отладки задания 1
Задание 2
Определить и вывести на печать номер квадрата, в котором
расположена точка М(x,y), x и y заданные вещественные числа.
На Таблице 8 представлена тестовый проект к заданию 2
x
y
m
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
21
2
2
1
Таблица 8 – тестовый проект задания 2
На рисунке 15 представлена блок-схема к заданию 2
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
22
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 15 – Блок-схема задания 2
Код приложения:
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
23
using System;
using System.Collections.Generic;
using System.Text;
namespace console_11
{class Program
{static void Main(string[] args)
{double x,y;
Console.Write("Введите x:");
x = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите y:");
y = Convert.ToDouble(Console.ReadLine());
if (x > 0 && y > 0)
{ Console.WriteLine("Точка M принадлежит квадрату 1");}
if (x < 0 && y > 0) {
Console.WriteLine("Точка M принадлежит квадрату 2"); }
if (x < 0 && y < 0) {
Console.WriteLine("Точка M принадлежит квадрату 3"); }
П
о
д
п.
и
д
а
т
а
if (x > 0 && y < 0) {
Console.WriteLine("Точка M принадлежит квадрату 4"); }}}}
На рисунке 16 показана Консоль отладки.
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 16 – Консоль отладки задания 2
Задание 3
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
24
Определить, какая из двух точек - M1(x1,y1) или M2(x2,y2) расположена ближе к началу координат. Вывести на экран дисплея
координаты этой точки.
На Таблице 9 представлена тестовый проект к заданию 3
x1
22
y1
11
x2
33
y2
44
S1
0
S1
0
Таблица 9 – тестовый проект задания 3
На рисунке 17 представлена блок-схема Задания 3
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 17 – Блок-схема задания 3
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
25
Код приложения
using System.Text;
namespace console_11 {
class Program {
static void Main(string[] args) {
double x1,y1,x2,y2;
Console.Write("Введите x1:");
x1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите x2:");
x2 = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите y1:");
y1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите y2:");
y2 = Convert.ToDouble(Console.ReadLine());
if ((x1 * x1 + y1 * y1) < (x2 * x2 + y2 * y2))
{ Console.Write("Ближе к началу координат точка " + x1 + y1); }
П
о
д
п.
и
д
а
т
а
else if ((x1 * x1 + y1 * y1) < (x2 * x2 + y2 * y2)){ Console.Write("Ближе к
началу координат точка " + x2 + y2); }
else { Console.Write("Точки равноудалены от начала координат " ); }}}}
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
На рисунке 18 представлен результат к заданию 3
Рисунок 18 – Результат к заданию 3
Лабораторная работа №3
Задание 1
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
26
Дано натуральное число n Вычислить:(1+1/12)+(1+1/22)+
(1+1/32)+…+(1+1/n2).
На Таблице 10 представлена тестовый проект к заданию 1
n
2
s
2,25
Таблица 10 – тестовый проект задания 1
На рисунке 19 представлена блок-схема Задания 1
П
о
д
п.
и
д
а
т
а
Рисунок 19 – Блок-схема Задания 1
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Код задания:
using System;
using System.Collections.Generic;
using System.Text;
Console.Write($"n = ");
double n = Convert.ToDouble(Console.ReadLine());
double i, s = 0.0;
for (i = 1; i <= n; i++)
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
27
s += 1 / (i * i);
Console.WriteLine($"Сумма ={s + 1}");
На рисунке 20 представлена консоль отладки задания 1.
Рисунок 20 – Задания 1
Задание 2
Дано действительное число х, натуральное число n. Вычислить:
x * (x - n) * (x – 2 * n) * (x – 3 * n)…(x – n * n).
На Таблице 11 представлена тестовый проект к заданию 2
n
8
П
о
д
п.
и
д
а
т
а
x
69
s
35604
Таблица 11 – тестовый проект задания 2
На рисунке 21 представлена блок-схема Задания 2.
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
28
Рисунок 21 – Блок-схема Задания 2
Код задания:
Console.Write($"n = ");
double n = Convert.ToDouble(Console.ReadLine());
Console.Write($"x = ");
double x = Convert.ToDouble(Console.ReadLine());
П
о
д
п.
и
д
а
т
а
double i, s = 0.0;
for (i = 1; i <= n; i++)
s += x - i ;
Console.WriteLine($"Произведение ={s * x}");
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
На рисунке 22 представлена консоль отладки.
Рисунок 22 – консоль отладки задания 1
Задание 3
Дано действительное число х, натуральное число n. Вычислить:
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
29
x1/1! + x2/2! + x3/3! … xn/n! .
На Таблице 12 представлена тестовый проект к заданию 3
n
7
x
2
s
0.05…
Таблица 12 – тестовый проект задания 3
На рисунке 23 представлена блок-схема решения уравнения.
П
о
д
п.
и
д
а
т
а
Рисунок 23 – Блок-схема решения уравнения
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Код задания:
using System;
using System.Collections.Generic;
using System.Text;
Console.Write($"n = ");
double n = Convert.ToDouble(Console.ReadLine());
Console.Write($"x = ");
double x = Convert.ToDouble(Console.ReadLine());
double i, s = 0.0;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
30
double f = 1.0;
for (i = 1; i <= n; i++)
f *= i;
s += Math.Pow(x, i) / f;
Console.WriteLine($"Результат ={s}");
1)
Отладочный пример:
На рисунке 24 представлен результат программы .
Рисунок 24 – консоль отладки задание 3
Задание №4
Вычислить приближенно значение бесконечной суммы (справа от
каждой суммы дается ее точное значение, с которым можно сравнить
полученный ответ):
1
1
1
3
+
+
+⋯=
1∗3 2∗4 3∗5
4
На Таблице 13 представлена тестовый проект к заданию 4
П
о
д
п.
и
д
а
т
а
sum
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
1
Таблица 13 – тестовый проект задания 4
На рисунке изображена 25 блок-схема бесконечной суммы
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
31
Рисунок 25 – Блок-схема бесконечной суммы
Код задания:
using System;
namespace ConsoleApp1{
class Program{
static void Main(string[] args){{
int i = 1;
П
о
д
п.
и
д
а
т
а
double a;
double sum = 0;
while (sum < 0.75){
a = 1 / (i * (i + 2));
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
sum += Math.Abs(a);
i++;
Console.WriteLine("sum= " + sum);}}}}}}
Отладочный пример:
На рисунке 26 представлен результат задания 15
Рисунок 26 - Результат задания 15
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
32
Лабораторная работа: 4
На Таблице 14 представлена тестовый проект к лабораторной работе
4
1
2
3
4
5
6
7
1
2
-2
6
3
-89
54
8
9
10
сум
Кол полж мас Макс мас Порядк №
987
4
-
866
7
987
8
100
Сум + между Количество №
мак и мин № меж мак и мин
991
2
Таблица 14 – тестовый проект лабораторной работе 4
На рисунке 27 представлена блок схема к Лабораторной работе 4
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
33
Начало
нет
да
i = 0;
i<10;
нет
Ввод: a[i]
i = 0;
i<10;
да
i=i+1
s=s+a[i]
нет
a[i]>0
да
p = p+1
нет
П
о
д
п.
и
д
а
т
а
да
max = a[i];
nom_max = i;
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
a[i]>max
нет
a[i]<min
да
min = a[i];
nom_min = i;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
34
Продолжение на следующей странице
нет
да
a[i]>0
pp = pp+1
нет a[i]>0
да
и
a[i] % 2 = 0
chp=chp+1
нет
a[i]>0 и a[i] % 2 ==
1
snechp=
snechp+a[i]
П
о
д
п.
и
д
а
т
а
нет
a[i]=4
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
да
да
four =
four+1;
нет
a[i]<0
да
pr=pr*a[i]
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
35
Продолжение на следующей странице
нет
i % 2 == 1 && a[i]>0 &&
a[i]<bl
да
bl = a[i]
ss = 0
нет
nom_min<nom_max
нет
П
о
д
п.
и
д
а
т
а
i = nom_min i<nom_max; i++
нет
a[i]>0
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
да
да
да
ss =ss+a[i];
ks =ks+1;
нет
i = nom_min i<nom_max; i++
нет
да
a[i]>0
ss =ss+a[i];
ks =ks+1;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
36
Продолжение на следующей странице
Вывод:
s p max nom_max+1
ss ks min
Pp chp snech four
Pr bl
нет
нет
Вывод:
i=nom_max
i = 0; i<10
да
Вывод:
0
да
max
Конец
П
о
д
п.
и
д
а
т
а
Рисунок 27 – блок схема к лабораторной: Одномерные и двумерные
массивы
Код задания:
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
using System;
namespace Program
{class Program
{static void Main()
{int[] a = new int[10];
for (int i = 0; i<10; i++)
{Console.Write($"введите массива (одно число): {i+1} ");
a[i] = Convert.ToInt32(Console.ReadLine());
}int s = 0;
int p = 0;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
37
int max = 0;
int nom_max = 0;
int min = 999999999;
int nom_min = 0;
int pp = 0;
int chp=0;
int snechp=0;
int four = 0;
int pr = 1;
int bl = 999999999;
for (int i = 0; i<10; i++)
{s = s+a[i];
if (a[i]>0)
{p = p+1;}
if (a[i]>max)
{max = a[i];
nom_max = i;}
П
о
д
п.
и
д
а
т
а
if (a[i]<min)
{min = a[i];
nom_min = i;}
if (a[i]>0)
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
{pp = pp+1;}
if (a[i]>0 && a[i] % 2 == 0)
{chp = chp+1;}
if (a[i]>0 && a[i] % 2 == 1)
{snechp=snechp+a[i];}
if (a[i]==4)
{four = four+1;}
if(a[i]<0)
{pr=pr*a[i];}
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
38
if (i % 2 == 1 && a[i]>0 && a[i]<bl)
{bl = a[i];}}
int ss = 0;
int ks = 0;
if (nom_min<nom_max)
{for (int i = nom_min; i<nom_max; i++)
{if (a[i]>0)
{ss =ss+a[i];
ks =ks+1;}}}
else
{for (int i = nom_max; i<nom_min; i++)
{if (a[i]>0)
{ss =ss+a[i];
ks =ks+1;}}}
Console.WriteLine($"сумма
массивов
=
{s}
количество
положительных массивов = {p}");
Console.WriteLine($"максимальный массив {max} порядковый номер
П
о
д
п.
и
д
а
т
а
{nom_max+1} ");
Console.WriteLine($"сумма и количество положительных элементов
между мин и мах элементами: {ss} {ks}");
Console.WriteLine($"миннимальный массив {min} ");
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Array.Sort(a);
foreach (int element in a)
{Console.Write($"{element} ");}
Console.WriteLine("- массивы по возрастанию");
Console.WriteLine($"количество положительных элементов: {pp}");
Console.WriteLine($"количество чётных положительных элементов:
{chp}");
Console.WriteLine($"сумма нечётных положительных элементов =
{snechp}");
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
39
Console.WriteLine($"количество элементов = 4: {four}");
Console.WriteLine($"произведение отрицательных элементов = {pr}");
Console.WriteLine($"наименьший положительный элемент среди элементов
с чётными номерами массива: {bl}");
Console.WriteLine($"новые массивы: ");
for (int i = 0; i<10; i++)
{if (i==nom_max)
{Console.Write($"{max} ");}
else
{a[i]=0;
Console.Write($"0 ");}}}}}
На рисунке 28 показана консоль отладки
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 28 - консоль отладки к лабораторной работе: Одномерные и
двумерные массивы
Раздел 2 – Программирование МК
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
40
2.1
Микроконтроллеры: Общее понятие их назначение
Прежде чем приступить к теме изучения микроконтроллеров и
получить навыки их применения необходимо обратиться к краткой
исторической справки того времени. Времени, когда появился, термин
вычислительная машина до появления первых вычислительных машин
развитие электро-техники привело, к появлению устройств автоматики.
Это были релейные автоматы. Развитие электроники добавило к
электромеханическим
реле
сначала
ламповые
схемы,
а
затем
и
полупроводники. Устройства автоматики стали сложнее, но по-прежнему
строились на «жесткой логике>>, то есть после изготовления под
конкретное применение схема автомата оставалась не изменой и при даже
небольшом изменении функционала, необходимо было разрабатывать
новую схему и изготавливать новое устройство.
Наконец, появились вычислительные машины с принципиальным отличием, которое от всего ранее существовавшего означало наличие про-
П
о
д
п.
и
д
а
т
а
граммы, позволяющая менять функционирование устройств автоматики
без необходимости изменять схему. Например первая вычислительная
машина ENIAK - электронный числовой интегратор и вычислитель.
Вычислительные
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
использовались,
как
машины
или
вычислители.
компьютеры
Были
и
долгое
время
специализированные
вычислители, например COLOSSUS для взлома системы шифрования
сообщений
во
время
второй
мировой
войны.
Со
временем,
вычислительные машины строились на полупроводниковых приборах и
микросхемах.
Появился термин ЭВМ. ЭВМ стали использовать не только для
математических расчетов.
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
41
Появились разные архитектуры ЭВМ, но по-прежнему практически любую
ЭВМ можно было разбить на несколько блоков: процессор, память, устройство
ввода-вывода. Упрощенное представление вычислительного комплекса можно
изобразить следующим образом (рисунок 29).
Рисунок 29 – Упрощенное представление вычислительного комплекса
Как видно из рисунка, устройство ввода и вывода в то время не включались в состав ЭВМ, так как с развитием ЭВМ стали говорить о вычислиП
о
д
п.
и
д
а
т
а
тельных комплексах на базе ЭВМ.
Различные варианты таких комплексов могли включать в себя разные
наборы периферических устройств, но однако процессоры и память, хотя и
разного объема. И наконец-то появилась идея использования ЭВМ для контроля
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
и управления сложным оборудованием. Необходимо было подключить ЭВМ к
оборудованию.
В устройствах управляющего комплекса появились УСО. УСО (устройство
сопряжения с оборудованием) предназначались для получения информации о
состоянии управляемого объекта и управления им, то есть, ЭВМ научились
взаимодействовать с внешним миром. В качестве УСО использовались АЦП,
ЦАП, устройство ввода-вывода.
Дальнейшее развитие управляющих ЭВМ привело к созданию встраиваемых ЭВМ. Появились ЭВМ в бытовых приборах.
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
42
Необходимость дальнейшего уменьшения размеров и развития
микроэлектроники
привели
к
появлению
микроконтроллеров.
Микроконтроллер - микросхема, включающая в себя микро ЭВМ,
некоторые периферийные устройства и УСО.
Схема представлена следующим образом рисунок. 30
Рисунок 30 - Упрощенное представление управляющей ЭВМ
Применение
микроконтроллеров
не
означает
отсутствие
необходимости знать электронику и схемотехнику. Микроконтроллер
бесполезен без написанной для него программы. Записанная программа
П
о
д
п.
и
д
а
т
а
прошивается в микроконтроллер специальным устройством называемым
Вз
а
м.
ин
в.
№
мониторы индикаторы, то есть различного рода нагрузка, которой
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
программатором.
Микроконтроллеры
используются
для
решения
вычислительных.
В качестве внешних устройств могут быть датчики двигатели LCDнеобходимо
управлять
микроконтроллером
Attiny
На
2313
практики
фирмы
мы
Atmel
познакомимся
семейства
с
AVR.
Микроконтроллер имеет три порта с контактны ми площадками, то есть
выводами, которые называются пинами. Выполняются в корпусах PDIP,
SOIC.
Распиновка микроконтроллеров Attiny2313 представлена на рисунке
31.
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
43
Рисунок 31 – Распиновка MK Attiny2313
Рассмотрим способы подключения светодиода к МК. Существует три
способа подключения светодиода к МК:
1
способ МК-анод-катод-земля;
2
способ МК-анод-катод-МК;
3
способ МК-катод-анод-внешний источник.
Пины МК могут быть настроены как на ввод, так и на вывод. Задать сигнал
на конкретный пин можно командой: PORTB.6=1; Delay_ms(500);
1.5
П
о
д
п.
и
д
а
т
а
Создание проекта САПР
Задание 1
Используя способ подключения светодиода
МК-анод-катод зажечь
светодиод 500 миллисекунд отключить 500 миллисекунд.
Вз
а
м.
ин
в.
№
Решение:
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Project: 111
Ниже представлен листинг программного кода (бесконечный цикл):
Version: 1
Date: 24.10.2023
Author: Барсуков Н. А.
PORTB = 0b10000000;
delay_ms(500);
PORTB = 0b01000000;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
44
delay_ms(500);
Скриншоты проекта показаны на рисунке 32, 33.
Рисунок 32 – Скриншот для выключенного светодиода
Рисунок 33 – Схема для горящего светодиода
П
о
д
п.
и
д
а
т
а
Задание 2
Спроектировать и реализовать модель светофора на базе МК
Attyiny2313.
Решение:
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Ниже представлен листинг программного кода:
Project: 222
Version: 1
Date: 24.10.2023
Author: Барсуков Н. А.
PORTB = 0b11111101;
delay_ms(500);
PORTB = 0b00000100;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
45
delay_ms(500);
PORTB = 0b01000000;
delay_ms(500);
Скриншоты проекта показаны на рисунках 34, 35. 36. 37.
Рисунок 34– Скриншот проекта для выключенного светофора
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 35 – Скриншот проекта для горящего красного светодиода
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
46
Рисунок 36 – Скриншот проекта для горящего желтого светодиода
Рисунок 37 – Скриншот проекта для горящего зеленого светодиода
П
о
д
п.
и
д
а
т
а
Задания 3
Спроектировать и реализовать в САПР ISIS Proteus гирлянду из 8
светодиодов, переключающихся поочередно.
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Решение:
Листинг программного кода:
Project: 333
Version: 1
Date: 25.10.2023
Author: Барсуков Н. А.
PORTB = 0b11111110;
delay_ms(500);
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
47
PORTB = 0b11111101;
delay_ms(500);
PORTB = 0b11111011;
delay_ms(500);
PORTB = 0b11110111;
delay_ms(500);
PORTB = 0b11101111;
delay_ms(500);
PORTB = 0b11011111;
delay_ms(500);
PORTB = 0b10111111;
delay_ms(500);
PORTB = 0b01111111;
delay_ms(500);
Скриншоты проекта показаны на рисунках 38. 39.
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 38 - Скриншот проекта для выключенной гирлянды
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
48
Рисунок 39 - Скриншот проекта для включенной гирлянды
Задание 4
Создать новый проект переключения светодиодов слева направо и
справа налево с добавление кнопки.
А) Кнопка нажата, светодиоды переключаются слева на право.
Б) Кнопка не нажата, светодиоды переключаются справа на лево.
Добавление кнопки подразумевает использование команды:
П
о
д
п.
и
д
а
т
а
If(условие)
{Else
{If(PIND.0==0)
{}
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Решение:
Ниже представлен листинг программного кода:
Project: 444
Version: 1
Date: 25.10.2023
Author: Барсуков Н. А.
if (PIND.0==0)
PORTB = 0b11111110;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
49
delay_ms(500);
PORTB = 0b11111101;
delay_ms(500);
PORTB = 0b11111011;
delay_ms(500);
PORTB = 0b11110111;
delay_ms(500);
PORTB = 0b11101111;
delay_ms(500);
PORTB = 0b11011111;
delay_ms(500);
PORTB = 0b10111111;
delay_ms(500);
PORTB = 0b01111111;
delay_ms(500);
else
PORTB = 0b01111111;
П
о
д
п.
и
д
а
т
а
delay_ms(500);
PORTB = 0b10111111;
delay_ms(500);
PORTB = 0b11011111;
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
delay_ms(500);
PORTB = 0b11101111;
delay_ms(500);
PORTB = 0b11110111;
delay_ms(500);
delay_ms(500);
PORTB = 0b11111011;
delay_ms(500);
PORTB = 0b11111101;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
50
delay_ms(500);
PORTB = 0b11111110;
delay_ms(500);
Скриншоты проекта показаны на рисунках 40, 41, 42.
Рисунок 40 - Скриншот проекта для выключенной гирлянды
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 41 – Скриншот проекта включенная гирлянда с не нажатой кнопкой
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
51
Рисунок 42 – Скриншот включенная гирлянда с нажатой кнопкой
Задание 5
Дано: Дом с окном, дерево с тремя ветками.
1 кнопка нажата, горит светодиод окна
2 кнопка нажата, горят светодиоды третьей ветки
3 кнопка горят светодиоды второй ветки
4 кнопка горят светодиоды первой ветки
Решение:
Ниже представлен листинг программного кода:
Project: 555
Version: 1
Date: 26.10.2023
Author: Барсуков Н. А.
if (PIND.0==0)
{PORTB = 0b01111111;
П
о
д
п.
и
д
а
т
а
delay_ms(1500);
PORTB = 0b00111111;
delay_ms(1);}
else
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
if (PIND.1==0)
{PORTB = 0b00001111;
delay_ms(1500);
PORTB = 0b00111111;
delay_ms(1);}
else
if (PIND.2==0)
{PORTB = 0b00110011;
delay_ms(1500);
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
52
PORTB = 0b00111111;
delay_ms(1);}
else
if (PIND.3==0)
{PORTB = 0b00111100;
delay_ms(1500);
PORTB = 0b00111111;
delay_ms(1);}
Решение представлено на рисунках 43, 44, 45, 46.
П
о
д
п.
и
д
а
т
а
Рисунок 43 – 1 кнопка нажата, горит светодиод окна
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
53
Рисунок 44 - 2 кнопка нажата, горит светодиоды третьей ветки
П
о
д
п.
и
д
а
т
а
Рисунок 45 - 3 кнопка горят светодиоды второй ветки
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
54
Рисунок 46 - 4 кнопка горят светодиоды первой ветки
2.3
Организация циклов
Цикл – неоднократно повторяющаяся последовательность команд.
Задание 6:
В среде ISIS Proteus смоделировать.
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п

Группа 1 3 раза – отключить –

Группа 2 4 раза – отключить –

Группа 3 5 раз – отключить –

Все три группы включить – отключить
Форматы циклов:
While(1) - бесконечный цикл
{}
While(i1 – число) – пока не равно
{ … I++ - инкремент переменной }
Int i =0
For (i=1; I<=число;i++)
{
} – цикл с счетчиком
Решение:
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
55
Ниже представлен листинг программного кода:
Project: 666
Version: 1
Date: 27.10.2023
Author: Барсуков Н. А.
{int i=0;
for(i=0;i<=3;i++)
{ PORTB=0b00000000;
delay_ms(100);
PORTB=0b00000010;
delay_ms(100); }
for(i=0;i<=4;i++)
{PORTB=0b00001010;
delay_ms(100);
PORTB=0b00000010;
delay_ms(100);}
for(i=0;i<=5;i++)
П
о
д
п.
и
д
а
т
а
{PORTB=0b01000010;
delay_ms(100);
PORTB=0b00000010;
delay_ms(100);}
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
for(i=0;i<=5;i++)
{PORTB=0b01001000;
delay_ms(100);
PORTB=0b00000010;
delay_ms(100);}
Скриншоты проекта представлены на рисунках 47, 48, 49, 50, 51.
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
56
Рисунок 47 – Скриншот проекта выключенные светодиоды
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 48 – Скриншот проекта горят светодиоды 2 группы
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
57
Рисунок 49 – Скриншот проекта горят светодиоды 3 группы
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 50 – Скриншот проекта горят все светодиоды
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
58
Рисунок 51 – Скриншот проекта горят светодиоды 1 группы
Задание 7
В среде САПР ISIS Proteus смоделировать светодиодный сегментный
индикатор, запрограммировать объект для получения цифр от 0 до 9 по
цифровому счетчику и организацией условного цикла.
П
о
д
п.
и
д
а
т
а
Решение:
Вз
а
м.
ин
в.
№
Version: 1
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Ниже представлен листинг кода:
Project: 777
Date: 27.10.2023
Author: Барсуков Н. А.
{PORTB = 0b01110111;
delay_ms(1000);
PORTB = 0b01000010;
delay_ms(1000);
PORTB = 0b00111011;
delay_ms(1000);
PORTB = 0b01101011;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
59
delay_ms(1000);
PORTB = 0b01001110;
delay_ms(1000);
PORTB = 0b01101101;
delay_ms(1000);
PORTB = 0b01111101;
delay_ms(1000);
PORTB = 0b01000011;
delay_ms(1000);
PORTB = 0b01111111;
delay_ms(1000);
PORTB = 0b01101111;
delay_ms(1000);}
Скриншоты проекта представлены на рисунках 52, 53.
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 52 – Скриншот проекта – Начало цикла
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
60
Рисунок 53 – Скриншот проекта – конец цикла
Задание 8:
Повторить задание 7 с физическими примитивами светодиодных
индикаторов.
Решение:
П
о
д
п.
и
д
а
т
а
Ниже представлен листинг бесконечного цикла:
Project: 888
Version: 1
Date: 30.10.2023
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Author: Барсуков Н. А.
PORTB = 0b00111111;
delay_ms(400);
PORTB = 0b00000110;
delay_ms(400);
PORTB = 0b01011011;
delay_ms(400);
PORTB = 0b01001111;
delay_ms(400);
PORTB = 0b01100110;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
61
delay_ms(400);
PORTB = 0b01101101;
delay_ms(400);
PORTB = 0b01111101;
delay_ms(400);
PORTB = 0b00000111;
delay_ms(400);
PORTB = 0b01111111;
delay_ms(400);
PORTB = 0b01101111;
delay_ms(400);
Скриншоты проекта представлены на рисунках 54, 55.
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 54 – Скриншот проекта начало цикла
Рисунок 55 – Скриншот проекта конец цикла
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
62
Задание 9:
Повторить задание 8, используя формат команды Switch-case
Решение:
Ниже представлен листинг бесконечного цикла:
Project: 999
Version: 1
Date: 30.10.2023
Author: Барсуков Н. А.
PORTB = 0b01000000;
delay_ms(400);
PORTB = 0b01111001;
delay_ms(400);
PORTB = 0b00100100;
delay_ms(400);
PORTB = 0b00110000;
П
о
д
п.
и
д
а
т
а
delay_ms(400);
PORTB = 0b00011001;
delay_ms(400);
PORTB = 0b00010010;
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
delay_ms(400);
PORTB = 0b00000010;
delay_ms(400);
PORTB = 0b01111000;
delay_ms(400);
PORTB = 0b00000000;
delay_ms(400);
PORTB = 0b00010000;
delay_ms(400);
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
63
Скриншоты проекта представлены на рисунках 56, 57.
Рисунок 56 – Скриншот проекта начало цикла
П
о
д
п.
и
д
а
т
а
Рисунок 57 – Скриншот проекта конец цикла
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Задание 10:
Повторите задание 9 с дополнительным индикатором, на котором будет
обратный отсчёт, при окончании отсчёта возвращается к изначальному числу.
Решение:
Ниже представлен листинг бесконечного цикла:
Project: 101010
Version: 1
Date: 31.10.2023
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
64
Author: Барсуков Н. А.
PORTD = 0b01000000;
PORTB = 0b00010000;
delay_ms(400);
PORTD = 0b01111001;
PORTB = 0b00000000;
delay_ms(400);
PORTD = 0b00100100;
PORTB = 0b01111000;
delay_ms(400);
PORTD = 0b00110000;
PORTB = 0b00000010;
delay_ms(400);
PORTD = 0b00011001;
PORTB = 0b00010010;
delay_ms(400);
PORTD = 0b00010010;
П
о
д
п.
и
д
а
т
а
PORTB = 0b00011001;
delay_ms(400);
PORTD = 0b00000010;
PORTB = 0b00110000;
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
delay_ms(400);
PORTD = 0b01111000;
PORTB = 0b00100100;
delay_ms(400);
PORTD = 0b00000000;
PORTB = 0b01111001;
delay_ms(400);
PORTD = 0b00010000;
PORTB = 0b01000000;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
65
delay_ms(400);
PORTD = 0b00010000;
PORTB = 0b01000000;
delay_ms(400);
PORTD = 0b00000000;
PORTB = 0b01111001;
delay_ms(400);
PORTD = 0b01111000;
PORTB = 0b00100100;
delay_ms(400);
PORTD = 0b00000010;
PORTB = 0b00110000;
delay_ms(400);
PORTD = 0b00010010;
PORTB = 0b00011001;
delay_ms(400);
PORTD = 0b00011001;
П
о
д
п.
и
д
а
т
а
PORTB = 0b00010010;
delay_ms(400);
PORTD = 0b00110000;
PORTB = 0b00000010;
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
delay_ms(400);
PORTD = 0b00100100;
PORTB = 0b01111000;
delay_ms(400);
PORTD = 0b01111001;
PORTB = 0b00000000;
delay_ms(400);
PORTD = 0b01000000;
PORTB = 0b00010000;
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
66
delay_ms(400);
Скриншоты проекта представлены на рисунках 58, 59, 60
Рисунок 58 – Скриншот проекта начало цикла
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
Рисунок 59 – Скриншот проекта середина цикла
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
67
Рисунок 60 – Скриншот проекта конец цикла
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
68
Заключение
Цель практики: получил навыки программирования на языке
СиAVR.
Задачи практики:

ознакомился с обустройством микроконтроллера на примере
МК СиAVM;

Получил навыки программирования микроконтроллера на
языке СиAVM;

Получил навык работы с программатора Gozilla;

Получил навыки прошивки МК Феештп2313 с помощью
программатора Gozilla;

Получил навыки прототипирования работы МК Atting2313 на
примере семисегментного индикатора с общим анодом(катодом);
Научился разрабатывать математическую модель задачи;

Научился разрабатывать блок-схему алгоритма программного
модуля в соответствии с математической постановкой задачи;
П
о
д
п.
и
д
а
т
а

Овладел навыками программирования на ассемблере;

Овладел навыками программирования в среде C#;

Научился применять
свои знания при программированию
микроконтроллеров.
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п


Составил отчет по практике и защитил его.
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
69
Лист регистрации изменений
новых
изменен- замененных
ных
новых
Всего
листов
изъятых (страниц)
в докум.
№ документа
Входящий
номер
сопроводительного
документа и
дата
Подпись
Дат
а
П
о
д
п.
и
д
а
т
а
Вз
а
м.
ин
в.
№
И
нв
.
№
ду
бл
.
П
о
д
п.
и
д
а
т
а
И
нв
.
№
по
д
п
УП02.09.01.003.ПЗ
Ли
т
Изм.
№ докум.
Подп.
Дата
Лист
70
Download