ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 123
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
36
Закрывает последовательное соединение, порты RX и TX освобождаются и могут быть использованы для ввода/вывода.
3) Serial.available()
Функция получает количество байт(символов) доступных для чтения из последовательного интерфейса связи. Это те байты, которые уже поступили и записаны в буфер последовательного порта. Буфер может хранить до 64 байт.
4) Serial.read()
Считывает очередной доступный байт из буфера последовательного со- единения.
5) Serial.print(val, format)
Передает данные через последовательный порт как ASCII текст. Эта функция может принимать различные типы данных. Так целые числа выводятся соответствующими им символами ASCII. Вещественные выводятся с помощью двух ASCII символов, для целой и дробной части. Байты передаются как сим- вол с соответствующим номером. Символы и строки отсылаются как есть.
Пример:
Serial.print(78) передается как "78"
Serial.print(1.23456) передается как "1.23"
Serial.print(byte(78)) передается как "N" (т.к. в таблице ASCII "N" под 78 номером)
Serial.print('N') передается как "N"
Serial.print("Hello world.") передается как "Hello world."
С помощью второго опционально параметра можно задать базис (систему счисления) для чисел. Допустимые значения BYTE, BIN (двоичный), OCT
(восьмеричный), DEC (десятеричный), HEX (шестнадцатеричный). Для веще- ственных (дробных) чисел второй параметр задает количество знаков после за- пятой. Пример:
Serial.print(78, BYTE) выводит "N"
Serial.print(78, BIN) выводит "1001110"
Serial.print(78, OCT) выводит "116"
Serial.print(78, DEC) выводит "78"
Serial.print(78, HEX) выводит "4E"
Serial.println(1.23456, 0) выводит "1"
Serial.println(1.23456, 2) выводит "1.23"
Serial.println(1.23456, 4) выводит "1.2346"
6) Serial.println(val, format)
Передает данные через последовательное соединение как ASCII текст с следующим за ним символом переноса строки (ASCII символ 13 или '\r') и сим- волом новой строки (ASCII 10 или '\n'). Параметры и типы данных для этой функции такие же, как и для Serial.print().
7) Serial.write()
Функция передает данные как бинарный код через последовательное со- единение. Данные посылаются как один или серия байтов.
Serial.write(val) – передает байт;
37
Serial.write(str) – передает строку, как последовательность байтов;
Serial.write(buf, len) – передает байты из массива, len – число байтов.
3. ПОРЯДОК ВЫПОЛНЕНИЯ ПРАКТИЧЕСКОЙ РАБОТЫ
Напишем программу по управлению светодиодами с помощью кнопки.
Управление будет доступно, после введения определенного кодового значения с ПК. При отправке «1345» управление светодиодами будет разрешено и при нажатии кнопки светодиод будет загораться. Чтобы запретить управление, с ПК необходимо отправить любую другую команду, отличную от разрешающей.
После этого сообщение светодиод не будет реагировать на нажатие кнопки. Для ввода команд необходимо открыть Serial Monitor (Инструменты – Монитор порта). Также в мониторе необходимо выставить скорость передачи данных как в написанной программе. int value = 0; int led = 2; int button = 4; void setup()
{
Serial.begin(9600); pinMode(led, OUTPUT); pinMode(button, INPUT);
} void loop()
{ if (Serial.available())
{ value = Serial.read();
} if(value == ‘1345’)
{ if(digitalRead(button) == HIGH)
{ digitalWrite(led, HIGH);
} else
{ digitalWrite(led, LOW);
}
} else
{
38 digitalWrite(led, LOW);
}
Сначала объявляем переменную value, в которую будет записываться ко- довое значение с компьютера, и переменные ПИНов светодиода и кнопки. Да- лее инициализируем UART со скоростью 9600 и настраиваем ПИНы светодио- да на выход, а кнопки на вход. В бесконечном цикле мы считываем данные из
UART и записываем их в переменную value. После, в зависимости от значения value, управление светодиодом с кнопки разрешено либо запрещено.
4. ВАРИАНТЫ
Кодовое значение, номера ПИНов (см. Практическое занятие №3, рис. 2) светодиода и кнопки выбрать самостоятельно.
5. ОТЧЕТ
Отчет по практической работе должен содержать:
1. Наименование и цель работы.
2. Краткие теоретические данные по практической работе.
3. Код программы, написанной в соответствии с вариантом.
4. Вывод по проделанной работе.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №9
Разработка кодового устройства с музыкальным звонком
1. ЦЕЛЬ ЗАНЯТИЯ
1. Изучить схему и принцип работы устройства;
2. Написать программу с различными вариантами кодовых комбинаций и музыкального звонка.
2. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
В данной практической работе представлена вариация кодового замка с использованием кнопок, подключенных непосредственно к микроконтроллеру, в отличие от Практического занятия №8, где кодовая комбинация вводилась при помощи ПК. На рисунке 1 представлена структурная схема программируе- мого устройства. В таблице 1 приводятся используемые ПИНы микроконтрол- лера и их назначение.
39
Рисунок 1. Структурная схема устройства
Таблица 1 – Назначение ПИНов микроконтроллера
Номер ПИНа
Назначение
2
Чтение состояния кнопки «4»
3
Чтение состояния кнопки «3»
4
Чтение состояния кнопки «2»
5
Чтение состояния кнопки «1»
6
Чтение состояния кнопки «0»
14
Вывод сигнала на динамик
15
Чтение состояния кнопки «9»
16
Чтение состояния кнопки «8»
17
Чтение состояния кнопки «7»
18
Чтение состояния кнопки «6»
19
Чтение состояния кнопки «5»
Устройство постоянно находится в состоянии чтения выводов, к которым подключены кнопки. После последовательного нажатия четырех кнопок (ввода определенной кодовой комбинации), микроконтроллер сравнивает какие кноп- ки нажаты и в каком порядке. Если введена верная комбинация (для данного примера верная комбинация «1369»), то в течение пяти секунд будет генериро-
40 ваться звуковой сигнал. В случае ввода неверной комбинации, будет генериро- ваться три прерывистых сигнала, с периодом звучания и затишья в 1 секунду.
Для формирования звукового сигнала будут использоваться функции tone() и noTone(), изученные на Практическом занятии №6.
3. ПОРЯДОК ВЫПОЛНЕНИЯ ПРАКТИЧЕСКОЙ РАБОТЫ
Ниже представлен код программы для данного устройства. int button0 = 6; int button1 = 5; int button2 = 4; int button3 = 3; int button4 = 2; int button5 = 19; int button6 = 18; int button7 = 17; int button8 = 16; int button9 = 15; int buzzer = 14; int count = 0; int button0_state = 0; int button1_state = 0; int button2_state = 0; int button3_state = 0; int button4_state = 0; int button5_state = 0; int button6_state = 0; int button7_state = 0; int button8_state = 0; int button9_state = 0; void setup()
{ pinMode(buzzer, OUTPUT); pinMode(button0, INPUT); pinMode(button1, INPUT); pinMode(button2, INPUT); pinMode(button3, INPUT); pinMode(button4, INPUT); pinMode(button5, INPUT); pinMode(button6, INPUT); pinMode(button7, INPUT);
41 pinMode(button8, INPUT); pinMode(button9, INPUT);
} void loop()
{ if (digitalRead(button0) == HIGH)
{ count++; button0_state = count; delay(500);
} if (digitalRead(button1) == HIGH)
{ count++; button1_state = count; delay(500);
} if (digitalRead(button2) == HIGH)
{ count++; button2_state = count; delay(500);
} if (digitalRead(button3) == HIGH)
{ count++; button3_state = count; delay(500);
} if (digitalRead(button4) == HIGH)
{ count++; button4_state = count; delay(500);
} if (digitalRead(button5) == HIGH)
{ count++; button5_state = count; delay(500);
} if (digitalRead(button6) == HIGH)
{ count++;
42 button6_state = count; delay(500);
} if (digitalRead(button7) == HIGH)
{ count++; button7_state = count; delay(500);
} if (digitalRead(button8) == HIGH)
{ count++; button8_state = count; delay(500);
} if (digitalRead(button9) == HIGH)
{ count++; button9_state = count; delay(500);
} if (count == 4)
{ if ((button1_state == 1) && (button3_state == 2) && (button6_state
== 3) && (button9_state == 4))
{ tone(buzzer, 100, 5000); count = 0; button0_state = 0; button1_state = 0; button2_state = 0; button3_state = 0; button4_state = 0; button5_state = 0; button6_state = 0; button7_state = 0; button8_state = 0; button9_state = 0;
} else
{ tone(buzzer, 100, 1000); delay(1000);
43 tone(buzzer, 100, 1000); delay(1000); tone(buzzer, 100, 1000); count = 0; button0_state = 0; button1_state = 0; button2_state = 0; button3_state = 0; button4_state = 0; button5_state = 0; button6_state = 0; button7_state = 0; button8_state = 0; button9_state = 0;
}
}
}
Сначала объявляются переменные, хранящие значения ПИНов кнопок и динамика. Переменная count хранит значение количества нажатых кнопок ко- довой комбинации. Переменные вида buttonX_state хранят значение последова- тельности нажатия кнопок (нажата первой, второй, третьей или четвертой). В функции setup() настраиваются параметры выводов кнопок – на вход и вывода динамик – на выход. В бесконечном цикле происходит опрос кнопок и произ- водимых действиях после ввода комбинации. При нажатии на кнопку, счетчик нажатий увеличивается на единицу и переменной последовательности нажатия кнопки присваивается значение номера нажатия. Задержка в пол секунды, при выполнении кода после нажатия кнопки, вводится для более корректной рабо- ты программы. При нажатии на четыре кнопки, программа переходит в усло- вие, в котором сравниваются значения последовательности нажатия кнопок для кодовой комбинации. Если она совпадает с верной комбинацией, то воспроиз- водится пятисекундный звуковой сигнал и переменные счетчика и последова- тельности нажатий кнопок обнуляются. Если она не совпадает, то воспроизво- дится прерывистый сигнал и переменные также обнуляются. Микроконтроллер готов к вводу новой комбинации.
4. ВАРИАНТЫ
Кодовую комбинацию, звуковые сигналы (частота, время звучания, вы- держки времени) при верной и неверной кодовой комбинации выбрать само- стоятельно.
44 5. ОТЧЕТ
Отчет по практической работе должен содержать:
1. Наименование и цель работы.
2. Краткие теоретические данные по практической работе.
3. Код программы, написанной в соответствии с вариантом.
4. Вывод по проделанной работе.
СОДЕРЖАНИЕ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
Цель самостоятельной работы обучающихся – получить новые знания по дисциплине «Микропроцессорные системы».
Задачи самостоятельной работы обучающихся:
– изучение микропроцессорных систем;
– выработка навыков работы с микропроцессорными системами;
– подготовка к самостоятельному и технически грамотному созданию программ микроконтроллеров.
На самостоятельную работу обучающихся отводится 24 часа и состоит из выполнения индивидуальных заданий по созданию программ микроконтролле- ра в соответствии с заданием на разработку электронного устройства.
Обучающиеся должны изучить литературу по соответствующим темам, составить конспекты, которые предоставляются преподавателю. Написанные конспекты проверяются преподавателем и подлежат защите обучающимися.
Формами контроля самостоятельной работы обучающихся являются:
– текущий контроль – оценка уровня подготовки обучающегося в процес- се проведения преподавателем практических занятий путем выполнения и за- щиты практических занятий;
– промежуточный контроль – дифференцированный зачет по дисциплине.
Учебно-методические материалы по дисциплине
1. Гусев, В. Г. Электроника и микропроцессорная техника [Текст] : учеб- ник для студентов вузов / В. Г. Гусев, Ю. М. Гусев. – Москва : КноРус, 2018. –
798 с.
2. Пигарев, Л. А. Микропроцессорные системы автоматического управле- ния [Электронный ресурс]. – Санкт-Петербург: СПбГАУ, 2017. – 179 c. – Ре- жим доступа: http://biblioclub.ru/index.php?page=book_red&id=480402. – Загл. с экрана.
45 3. Алиев, М. Т. Микропроцессорные системы управления электроприво- дами [Электронный ресурс]. – Йошкар-Ола: ПГТУ, 2017. – 124 c. – – Режим до- ступа: http://biblioclub.ru/index.php?page=book_red&id=459451. – Загл. с экрана.
4. Алиев, М. Т. Микропроцессоры и микропроцессорные системы управ- ления. 8-разрядные процессоры семейства AVR [Электронный ресурс]. – Йош- кар-Ола : ПГТУ, 2016. – 64 c. – Режим доступа: http://biblioclub.ru/index.php?page=book_red&id=459452. – Загл. с экрана.
5. Матвеенко, И. П. Основы электроники и микропроцессорной техники
[Электронный ресурс]. – Минск : РИПО, 2015. – 132 c. – Режим доступа: http://biblioclub.ru/index.php?page=book_red&id=463640. –Загл. с экрана.
6. Миловзоров, О. В. Основы электроники. 6-е изд., пер. и доп. [электрон- ный ресурс]. – Москва : Юрайт, 2018. – 344 c. – Режим доступа: https://biblio- online.ru/book/osnovy-elektroniki-413671. – Загл. с экрана.
Программное обеспечение и интернет–ресурсы
1. Официальный сайт Кузбасского государственного технического уни- верситета имени Т. Ф. Горбачева. Режим доступа: www.kuzstu.ru
2. Сайт: RadioRadar: Datasheets, service manuals, схемы, электроника, ком- поненты, САПР,CAD: http://www.radioradar.net/repair_electronic_technics/computer_technics/device_repa ir_lcd_pa
3. Телемастер – http://www.chat.ru/catalog/catlink900.php
4. RadioMaster – Твой гид в мире электроники: http://radiomaster.com.ua/
5 Паяльник – http://cxem.net
6. РадиоБиблиотека – http://radiomurlo.narod.ru/HTMLs/RADIO_cxemy.html
7. Промэлектроника – Электронные компоненты: http://www.promelec.ru/
8 Промэлектроника – Группа компаний: http://ilovs.ru/companies/proizvodstvo/11110136-promelektronika.html
9. РадиоЛоцман — Электронные схемы www.rlocman.com.ru/indexs.htm