Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Примеры решения лабораторных работ / Программирование 8535 на СИ

.pdf
Скачиваний:
53
Добавлен:
26.01.2023
Размер:
2.19 Mб
Скачать

Приложение 4. Семестровое задание по программированию

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

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

 

 

Вариант 1

 

1.

«Реверсивный счетчик».

Реализовать 4-х разрядный

реверсивный счетчик:

PA1 - вход T (подать через фильтр), PA0 - вход 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»,

инверсия

«Ь»,

сдвиг

влево

«a»,

сдвиг вправо «a», сдвиг влево «Ь». Результат выводится в двоичной форме на 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^,

Pd и

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-ми сегментные

индикаторы: при включении

красного

света выводится

«г», зеленого - «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,

второе

-

на

входах PC0...PC3.

Результат выводится при 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 с.

 

 

 

 

 

 

 

 

Вариант 26

 

 

 

 

 

 

 

1. Светофор пешехода: 10 с горит красный

свет, 15 с - зеленый. При

включении зеленого света на 7-сементных индикаторах

выводится

индикация

количества оставшихся секунд.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вариант 27

 

 

 

 

 

 

 

1.

«Телефонные

кнопки».

При

нажатии

кнопок

0.9

с

 

помощью

звукоизлучателя выдается звуковой сигнал. Каждая

кнопка имеет свою частоту,

звуковой

сигнал выдается

все

время,

пока

нажата кнопка.

Одновременно со

звуковым сигналом на 7-ми

сегментный

индикатор

выдается изображение

соответствующей цифры.

 

 

 

 

 

 

 

 

 

 

Вариант 28

 

 

1. «Аналоговый вольтметр». С потенциометра на аналоговый

вход МК

подается

напряжение

0.5В.

На

7-ми

сегментных

индикаторах

выдается

соответствующее значение с точностью до сотых долей вольта от 0.00 до 5.00.

 

Вариант 29

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

Вариант 30

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

 

 

 

 

Вариант 31

 

 

 

1. «Плавный пуск». В

исходном состоянии на индикаторе горит

символ «С»

(«Стоп»).

При

нажатии

кнопки

«Пуск»

программа

линейно

увеличивает

интенсивность горения светодиода в течение 8 с от 0 до максимального значения. Одновременно на 7-ми сегментные индикаторы выводится цифра оставшегося времени пуска (8, 7, .0). После достижения максимального значения в течение 5с

свечение светодиода должно быть линейно снижено до нуля (индикация

-5, -4,

-0).

Далее появляется символ «C» и ожидается новое нажатие кнопки.

 

 

 

 

 

 

Вариант 32

 

 

 

 

1. «Задатчик интенсивности».

При нажатии кнопки «Пуск»

программа

линейно увеличивает интенсивность свечения светодиода в течение 5 с от 0

до

максимального

значения,

при

этом

на

7-ми

сегментных

индикаторах

соответствующее

сообщение.

Далее

светодиод

остается

в этом состоянии

и

выводится индикация работы «РАБ». При нажатии кнопки «Стоп» в течении 5 с свечение линейно уменьшается до нуля. Далее ожидается новое нажатие кнопки.

Вариант 33

1.«Регулируемый пуск». При нажатии кнопки «Пуск» программа линейно

увеличивает интенсивность горения светодиода в течение

t секунд от 0 до

максимального значения, при нажатии кнопки «Стоп» -

аналогично уменьшает

сигнал от максимума до нуля. Время t устанавливается потенциометром от 0 до 10

секунд. На 7-ми сегментные индикаторы выводится:

а) буквы «П» и «С»

(пуск и

стоп) в зависимости от режима работы; б) время разгона и торможения.

 

 

 

 

 

 

 

 

Вариант 34

 

 

 

 

 

 

 

 

1. Записать таблицу азбуки Морзе: в порту

А

двоичным кодом

задается

символ, при нажатии кнопки «Пуск»

выполняется вывод

выбранного

сигнала,

при

этом тире звучит 0,5 сек, точка

0,2 сек. Пауза между

точками

и

тире

составляет

0,5

сек. Вывод сигнала выполняется свечением светодиода.

 

 

 

 

 

 

 

 

 

 

Вариант 35

 

 

 

 

 

 

 

 

1. «Мигалка автомобиля».

При нажатии кнопки

«Пуск» сегменты А,

B,

C,

D,

E и F индикатора включаются поочередно друг

за

другом

и

далее

процесс

повторяется до нажатия кнопки «Стоп». Период

свечения

 

сегментов

задается

дискретно или аналоговым потенциометром от 0,1 сек до 25,5 сек.

 

 

 

 

 

 

 

 

 

Вариант 37

 

 

 

 

 

 

 

 

1. «Перевод двоичных

чисел».

Программа

переводит

двоичное

 

число,

задаваемое в порт А, в указанную

систему счисления с

основанием

D=4...16.

Основание задается двоичным кодом в порт B. Вывод выполняется

на

7-ми

сегментные индикаторы.

 

 

 

 

 

 

 

 

 

 

Соседние файлы в папке Примеры решения лабораторных работ