Главная страница

курсовой. Семестр2020-КС. Семестровое задание по программированию(4 курс) микроконтроллеров


Скачать 22.39 Kb.
НазваниеСеместровое задание по программированию(4 курс) микроконтроллеров
Анкоркурсовой
Дата25.10.2021
Размер22.39 Kb.
Формат файлаdocx
Имя файлаСеместр2020-КС.docx
ТипОтчет
#255452

Семестровое задание по программированию(4 курс)

микроконтроллеров AVR

Для заданного варианта составить программу на языке Си. По каждой задаче отчет должен содержать: исходное задание, листинг программы, алгоритм и функциональную схему. Все задержки времени реализовывать только с помощью таймеров.

Вариант 1

  1. «Реверсивный счетчик». Реализовать 4-х разрядный реверсивный счетчик: PA1 - вход T (подать через фильтр), PА0 - вход R (сброс счетчика), PA7 - вход направления (суммирование или вычитание), PС0...PС3 - выходы, начиная с младшего разряда.

  2. «ШИМ». Скважность работы таймера Т2 в режиме ШИМ задается 8-ми разрядным кодом двоичным кодом на входах PA0...PA7. Начальное значение 7=0,5. На 7-ми сегментные индикаторы выводится текущее значение скважности в десятичном формате.

Вариант 2

    1. «Светофор пешехода». Выходы PD0, PD1 имитируют красный и зеленый сигналы светофора для пешеходов. При включении зеленого света выводится индикация оставшегося времени: от 9 до 0 секунд.

    2. Реализовать 4-х разрядное АЛУ: входы первого числа задаются на входах PA0...PA3, второго - на входах PB0..PB3, выходы - биты PD0...PD7. Код различных 8 операций задается на входах PC0...PC2 и выводится на 7-ми сегментный индикатор. Выполняемые арифметические операции: суммирование, вычитание, умножение, целочисленное деление первого на второе. Выполняемые поразрядные логические операции: конъюнкция, дизъюнкция, исключающее ИЛИ, инверсия первого числа.

Вариант 3

      1. «Сдвиговый регистр». Реализовать 4-х разрядный сдвиговый регистр: на входах PA0...PA3 задается параллельный код. При подаче логической «1» на вход PB0 начинается последовательная передача на выходе PD0, длительность передачи каждого бита - 1 сек.

      2. Составить программу, которая выводит двоичное число, задаваемое на входах PA0...PA7, на 7-ми сегментные индикаторы в десятичном коде.

Вариант 4

        1. Реализовать 4-х разрядный цифровой компаратор: входы PA0...PA3 - 4 разряда числа а, входы PB0...PB3 - 4 разряда числа b, выход PD0 устанавливается в «1» при a < b, выход PD1 - при a = b, выход PD2 - при a > b.

        2. Программа «Секунды». Вывести на 7-ми сегментный индикатор цифры единиц секунд: при включении появляется цифра «0», через секунду «1» и т.д. до «9», далее «0» и процесс повторяется.

Вариант 5

          1. Реализовать 5-ми разрядную асинхронную передачу данных: на входах PA0...PA4 задается 5-ми разрядное число. При подаче «1» на вход PB0 начинается последовательная передача на выходе PC0 - стартовый бит, 8 информационных разрядов, бит паритета, 1 стоповый бит. Длительность передачи каждого бита - 1 сек.

          2. «Будильник». Исходное значение цифр на семисегментном индикаторе «9». Нажатием кнопки на входе РА0 запускается таймер с обратным счетом: через 1 секунду индицируется цифра «8» и т.д. до «0». При достижении «0» включается светодиод на выходе PB0.

Вариант 6

            1. Составить программу, выполняющую операцию «сдвиг вправо». На входах PA0...PA7 задается 8-ми разрядное двоичное число, на входах PB0...PB2 количество разрядов, на которое число сдвигается. Результат выводится непрерывно на выходах PD0...PD7.

            2. «Аналоговый вольтметр». Индикация изменение напряжения с потенциометра выполняется в двоичном коде на светодиодах.

Вариант 7

              1. «Код Грея». На входах PA0...PA7 задается двоичное число, на выходах PD0...PD7 видим это число в коде Грея.

              2. «Светофор дневной и ночной». Выходы PD0, PD1 и PD2 имитируют красный, желтый и зеленый сигналы светофора. Светофор работает в дневном и ночном режимах (вход РА0). В дневном режиме красный и зеленый свет горит по 3 с, желтый - 1 с. В ночном периоде включается только мигающий желтый свет: 1 с - горит, 1 с - не горит.

Вариант 8

                1. Битовые логические операции. Первое целое двоичное число «a» вводится на входах PA0...PA3, второе «Ь» - на входах PA4...PA7. Код операции вводится на входах PB0...PB2. Реализовать все битовые операции языка Си: сложение, умножение, исключающее ИЛИ, инверсия «a», инверсия «b», сдвиг влево «a», сдвиг вправо «a», сдвиг влево «b». Результат выводится в двоичной форме на 7-ми сегментных индикаторах.

                2. Вывести на 7-ми сегментных индикаторах восьмеричное число от 0 до 377. Двоичный код цифры задается в порт А.

Вариант 9

                  1. «Бегущий огонь с таймером». При запуске программы возникает «бегущий огонь» на выходах PC7 ^ PC6 ^ ... ^ PC0 и далее повтор PC7 ^ PC6 ... Промежуток времени между включением выходов задается в порт А: от 0,1 с до 25,5 с.

                  2. Вывести на 7-ми сегментных индикаторах шестнадцатеричное число от 00 до FF, соответствующее коду порта А.

Вариант 10

  1. Двоичный счетчик импульсов. Счетный вход - вход PA0, выход счетчика - разряды PD0...PD7. В исходном состоянии не включен ни один выход PD0...PD7. При переполнении счетчика счет начинается с нуля.

  2. «Программируемый светофор». Выходы P^, PO и PС2 имитируют сигналы светофора. Биты PA0...PA1 порта А задают режим работы светофора: «00» - светофор отключен, «01» - зеленый и красный свет включены 10 с, желтый - 3 с, «10» - зеленый включен 20 с, красный свет включены 10 с, желтый - 3 с, «11» - ночной режим (только мигающий желтый свет).

Вариант 11

  1. «Счетчик до 10». На вход PA7 подаются импульсы с кнопки, выход счетчика семисегментный индикатор. В исходном состоянии показывает «0», при нажатии кнопки появляется цифра «1», при новом нажатии «2» и т.д. После достижения «9» счет начинается с «0».

  2. «Настройка ШИМ». С помощью двух кнопок «+» и «-» изменяется скважность ШИМ. Начальное значение скважности ШИМ равно 50%.

Вариант 12

    1. «Светофор». PD0 - «красный свет», PD1 - «желтый свет», PD2 - «зеленый свет». Красный и зеленый цвета горят по 10 с, желтый - 3 с. Перед появлением зеленого света горят вместе красный и желтый. Одновременно с изменением света работают 7-ми сегментные индикаторы - они показывают оставшееся время включения света.

    2. Вывести на 7-ми сегментном индикаторе 16 букв латинского алфавита. Двоичный код буквы задается в четырех битах PA0...PA3.

Вариант 13

      1. «Светофор». PD0 - «красный свет», PD1 - «желтый свет», PD2 - «зеленый свет». Красный и зеленый цвета горят по 5 с, желтый - 2 с. Перед появлением зеленого света горят вместе красный и желтый. Одновременно с изменением света работают 7-ми сегментные индикаторы: при включении красного света выводится «r», зеленого - «G», желтого - «Y», желтого и зеленого - «YG».

      2. Битовые логические операции. Первое целое двоичное число «a» вводится на входах PA0...PA3, второе «b»- на входах PA4...PA7. Код операции вводится на входах PB0...PB2. Реализовать все битовые операции языка Си: сложение, умножение, исключающее ИЛИ, инверсия «a», инверсия «b», сдвиг влево «a», сдвиг вправо «a», сдвиг влево «b». Результат выводится в двоичной форме на 7-ми сегментных индикаторах.

Вариант 14

1. «Инверсия». На входах PA0...PA3 порта А задается значение 4-х разрядное двоичного число, на 7-ми сегментном индикаторе выводится его инверсное значение в шестнадцатеричном коде.

2. Составить программу «бегущий огонь» на 7-ми сегментных индикаторах HG1...HG4: Поочередно загораются сегменты A, B, ... F и далее процесс повторяется. Продолжительность включения сегмента - 1 секунда.

Вариант 15

        1. Битовые логические операции. Первое целое двоичное число «a» вводится на входах PA0...PA3, второе «Ь» - на входах PB0...PB3. Код операции вводится на входах PC0...PC2. Реализовать все битовые операции языка Си: сложение, умножение, исключающее ИЛИ, инверсия «a», инверсия «Ь», сдвиг влево «a», сдвиг вправо «a». Результат выводится на выходах PD0...PD3.

        2. Поочередно загораются сегменты А индикаторов HG1...HG4, затем сегменты B и так далее до сегментов F. После процесс повторяется. Продолжительность включения сегмента - 0,5 секунды.

Вариант 16

          1. Поочередно загораются цифры от 0 до 9 на 7-ми индикаторе HG1 и далее процесс повторяется. Продолжительность включения цифры - 2 секунды.

          2. Светодиод горит в течение Т секунд, и далее столько же погашен. Период Т задается входами PA0...PA3 соответственно от 1 до 16 секунд.

Вариант 17

            1. Зашифровать на 7-ми сегментном индикаторе все буквы русского алфавита, какие возможно. Код буквы вводится на входах порта A.

            2. «Тик-так». Поочередно включаются разряды PD0 и PD1. Продолжительность включения разрядов регулируется битами порта PA от 0,5 до 10 с.

Вариант 18

              1. Поочередно загораются по одному сегменту индикатора A, B, C, D, E и F индикатора HG1, после этого те же сегменты индикатора HG2 и далее процесс повторяется. Продолжительность включения сегмента задается битами PA0 и PA1, при значении 00 составляет 0,25 сек, 01 - 0,5 сек, 10 - 1 сек, 11 - 2 сек.

              2. Составить программу, рассчитывающую разность двух двоичных 4-х разрядных чисел. Ввод чисел выполняется при PB0=0. Первое число вводится на входах PA0...PA3, второе - на входах PС0...PС3. Результат выводится при PB0=1 на 7-ми сегментные индикаторы.

Вариант 19

                1. На 7-ми сегментных индикаторах поочередно загорается цифра 0 в каждом положении HG1, HG2, HG3 и HG4 и далее процесс повторяется. Продолжительность включения цифры - 1 секунда.

                2. «Бегущий огонь». Реализуется на 16 битах выходы PD0, PD1...PD7 и далее PC0, PC1...PC7. Далее процесс повторяется.

Вариант 20

1. «Счетчик импульсов». Счетный вход - вход PA7 с устранением дребезга контактов, выход счетчика - десятичное число на 7-ми сегментных индикаторах.

Импульсы считаются от 0 до 255. При переполнении счетчика счет начинается с нуля.

2. Создать таймер на 7-ми сегментном индикаторе от 0 до 60 с. В исходном состоянии на индикаторе горит «0». При нажатии кнопки «Пуск» через 1 с загорается «1» и т.д. После достижения «60» таймер останавливается и ждет очередного нажатия «Пуск».

Вариант 21

                  1. «Двоичный калькулятор». Первое 4-х разрядное двоичное число вводится на входах PA0...PA3, второе - на входах PA4...PA7. На входах PB0 и PB1 задается код операции: 00 - сложение, 01 - вычитание, 10 - умножение, 11 - целочисленное деление первого числа на второе. Результат выводится на 7-ми сегментные индикаторы в десятичном формате с указанием символа кода операции.

                  2. «Установка числа». С помощью двух кнопок «+» и «-» изменять значение десятичного числа, выводимого на семисегментный индикатор от 0 до 99. Начальное значение, выводимое на индикатор, равно 50.

Вариант 22

  1. Реализовать 4-х разрядную синхронную передачу данных: на входах PA0...PA3 задается 4-х разрядное число. При подаче «1» на вход PB0 начинается последовательная передача: на выходе PC0 -синхронизация, на выходе PC1 - информация. Передача начинается с младшего разряда. Длительность передачи каждого бита - 1 сек.

  2. С помощью 2 кнопок задавать значение десятичного числа от 0 до 9999, выводимого на семисегментные индикаторы: первая кнопка задает положение цифры, которая меняется, вторая увеличивает значение цифры от 0 до 9 и далее повтор. Третий вход обнуляет все число.

Вариант 23

  1. Произведение двух двоичных 4-х разрядных чисел. Первое число вводится на входах PA0...PA3, второе - на входах PA4...PA7. Результат выводится непрерывно на выходах PD0 ... PD7.

  2. «Счетчик импульсов». Счетный вход - вход PA7 с устранением дребезга контактов, выход счетчика - десятичное число на 7-ми сегментных индикаторах. Импульсы считаются от 0 до 255. При переполнении счетчика счет начинается с нуля.

Вариант 24

    1. Операция «сдвиг вправо». На входах PA0...PA3 задается 4-х разрядное двоичное число, на входах PA6...PA7 количество разрядов, на которое число сдвигается. Результат выводится в десятичном виде на 7-ми сегментном индикаторе.

    2. «Реверсивный счетчик». Счетный положительный вход - PA0, отрицательный - PA7 (с устранением дребезга контактов), выход счетчика - десятичное число на 7-ми сегментных индикаторах. Начальное значение счетчика - 0. Импульсы считаются от «-128» до «127». При переполнении счетчика счет начинается с «-128».

Вариант 25

1. «Программируемый светофор». PD0 - «красный свет», PD1 - «желтый свет», PD2 - «зеленый свет». Порт А задает начальные установки работы светофора: регулирование продолжительности включения каждого цвета. Биты PA1...PA0 задают режим работы: 00 - работа светофора, 01 - задание параметров включения «красного света», 10 - «желтого света», 11 - «зеленого света». Биты PA7...PA4 задают продолжительность включения выбранного цвета от 1 до 16 с.

2. Светофор пешехода: 10 с горит красный свет, 15 с - зеленый. При включении зеленого света на 7-сементных индикаторах выводится индикация количества оставшихся секунд.

Вариант 26

1. «Телефонные кнопки». При нажатии кнопок 0.9 с помощью звукоизлучателя выдается звуковой сигнал. Каждая кнопка имеет свою частоту, звуковой сигнал выдается все время, пока нажата кнопка. Одновременно со звуковым сигналом на 7-ми сегментный индикатор выдается изображение соответствующей цифры.

2. «Аналоговый вольтметр». С потенциометра на аналоговый вход МК подается напряжение 0.5В. На 7-ми сегментных индикаторах выдается соответствующее значение с точностью до сотых долей вольта от 0.00 до 5.00.

Вариант 27

1.«Регулирование скорости». Составить программу, в которой аналоговым входом от 0 до 5В задается скважность выходного сигнала с ШИМ от 0 до 255, например, для регулирования скорости двигателя. На 7-ми сегментные индикаторы выводится текущее значение скважности.

2. «Маяк». Заданное время включается разряд PD0, затем такое же время он выключен. Время включения задается разрядами порта А от 0 с до 25,5 с. На 7-ми сегментные индикаторы выводится значение времени включения сигнала.

Вариант 28

1. «Плавный пуск». В исходном состоянии на индикаторе горит символ «С» («Стоп»). При нажатии кнопки «Пуск» программа линейно увеличивает интенсивность горения светодиода в течение 8 с от 0 до максимального значения. Одновременно на 7-ми сегментные индикаторы выводится цифра оставшегося времени пуска (8, 7, .0). После достижения максимального значения в течение 5с свечение светодиода должно быть линейно снижено до нуля (индикация -5, -4, -0). Далее появляется символ «C» и ожидается новое нажатие кнопки.

2. «Задатчик интенсивности». При нажатии кнопки «Пуск» программа линейно увеличивает интенсивность свечения светодиода в течение 5 с от 0 до максимального значения, при этом на 7-ми сегментных индикаторах соответствующее сообщение. Далее светодиод остается в этом состоянии и выводится индикация работы «РАБ». При нажатии кнопки «Стоп» в течении 5 с свечение линейно уменьшается до нуля. Далее ожидается новое нажатие кнопки.

Вариант 29

1. «Регулируемый пуск». При нажатии кнопки «Пуск» программа линейно увеличивает интенсивность горения светодиода в течение t секунд от 0 до максимального значения, при нажатии кнопки «Стоп» - аналогично уменьшает сигнал от максимума до нуля. Время t устанавливается потенциометром от 0 до 10 секунд. На 7-ми сегментные индикаторы выводится: а) буквы «П» и «С» (пуск и стоп) в зависимости от режима работы; б) время разгона и торможения.

2. Записать таблицу азбуки Морзе: в порту А двоичным кодом задается символ, при нажатии кнопки «Пуск» выполняется вывод выбранного сигнала, при этом тире звучит 0,5 сек, точка 0,2 сек. Пауза между точками и тире составляет 0,5 сек. Вывод сигнала выполняется свечением светодиода.

Вариант 30

1. «Мигалка автомобиля». При нажатии кнопки «Пуск» сегменты А, B, C, D, E и F индикатора включаются поочередно друг за другом и далее процесс повторяется до нажатия кнопки «Стоп». Период свечения сегментов задается дискретно или аналоговым потенциометром от 0,1 сек до 25,5 сек.

2. «Перевод двоичных чисел». Программа переводит двоичное число, задаваемое в порт А, в указанную систему счисления с основанием D=4...16. Основание задается двоичным кодом в порт B. Вывод выполняется на 7-ми сегментные индикаторы.
Вариант 31

1.«Маяк». Заданное время включается разряд PD0, затем такое же время он выключен. Время включения задается разрядами от порта A от 0 до 25,5 с. На семисегментные индикаторы выводится значение времени включения сигнала.

2.Реализовать два независимых RS- триггера. Входы/выходы выбрать самостоятельно.

.
Вариант 32.

1.Реализовать JK-триггер. Входы/выходы выбираем самостоятельно.
2.При нажатии кнопки «Пуск» - отображается время нажатия с увеличением на 1 с и отображением на семисегментном индикаторе. Отпускаем кнопку – индикаторы обнуляются


написать администратору сайта