Микроконтроллеры и Технологии Микроконтроллеры и Технологии каталог схем и прошивок
  • ВКонтакте
  • Youtube
  • Вход на сайт
  • Создать аккаунт

  • Забыли пароль?
  • Забыли логин?
  • Создать аккаунт
(*)
(*)
(*)
(*)
(*)
(*)

Поля, помеченные звездочкой (*) обязательны для заполнения.

  • Создать аккаунт
  • Вход на сайт
  • Устройства
    •  AVR AVR
    •  Microchip Microchip
    •  STM STM
    • ARM
    • ArduinoArduino
    •  ESP8266 ESP8266
    • Разное
      • Аудио
      • Автомобиль
      • Источники питания
      • Для компьютера
      • Электропривод
      • Электроника в быту
    • Метки
  • Программирование
    • AVR
      • Программаторы
      • Программирование на СИ
      • FUSE калькулятор
    • Microchip
      • Программаторы
      • Ассемблер (Видео)
    • Memory
  • Технологии
  • Справочник
    • Энциклопедия радиолюбителя
    • Онлайн калькуляторы
  • Литература
  • Программы
  • Форум
  1. Главная|
  2. Программирование|
  3. AVR|
  4. Программирование на СИ

Программирование на СИ

Занятие №1. Простейшая программа

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 18 декабря 2010
Просмотров: 169546

Задача: Разработаем программу управления одним светодиодом. При нажатии на кнопку светодиод горит, при отпускании гаснет.

Для начала разработаем принципиальную схему устройства. Для подключения к микроконтроллеру любых внешних устройств используются порты ввода-вывода. Каждый из портов способен работать как на вход так и на выход. Подключим светодиод к одному из портов, а кнопку к другому. Для этого опыта мы будем использовать контроллер Atmega8. Эта микросхема содержит 3 порта ввода-вывода, имеет 2 восьмиразрядных и 1 шестнадцатиразрядный таймер/счетчик. Также на борту имеется 3-х канальный ШИМ, 6-ти канальный 10-ти битный аналого-цифровой преобразователь и многое другое. По моему мнению микроконтроллер прекрасно подходит для изучения основ программирования.

Для подключения светодиода мы будем использовать линию PB0, а для считывания информации с кнопки воспользуемся линией PD0. Схема приведена на рис.1.

Рис. 1
Подробнее... 50 комментариев

Занятие №2. Переключение светодиода

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 19 декабря 2010
Просмотров: 95242

Задача: Разработаем устройство управления светодиодом при помощи одной кнопки. При каждом нажатии на кнопку выход порта к которому подключен светодиод должен менять свое состояние на противоположное. Эта задача легко решается при помощи D-триггера, но все же рассмотрим как ее можно решить при помощи микроконтроллера.

Схема устройства такая же как в занятии 1. Алгоритм программы прост. Сначала настраиваем порты ввода-вывода. Проверяем состояние младшего разряда порта D(PD0) к которому подключена кнопка, а затем выполняем операцию сравнения, где PD0 проверяется на равенстве единице. Если условие выполняется программа переходит к началу цикла, если нет то выполняется еще одна операция сравнения, но уже линии PB0. Сначала оператор сравнения проверяет PB0 на равенство нулю, если результат истина(PB0=0), то разряд сбрасывается в единицу (PB0=1). Если ложно, устанавливается в ноль (PB0=0). Далее в программу вносим процедуру ожидания, без нее наш светодиод будет так часто мигать, что наш глаз не заметит этого. Основной цикл программы будет приостанавливается как только произойдет переключение светодиода и будет возобновляться как только будет отпущена кнопка.

Подробнее... 97 комментариев

Занятие №3. Мигание светодиодом

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 21 декабря 2010
Просмотров: 92005

Задача: Разработаем устройство управления светодиодом. Кнопка будет включать и выключать мигание светодиода. Пока кнопка нажата светодиод мигает с частотой 2,5 Hz, если кнопка отпущена светодиод не горит.

Алгоритм программы:

- Производим чтение порта D;
- Проверяем PD0, если он равен нулю включаем алгоритм мигания;
- Если PD0 равен единице выключаем алгоритм мигания и тушим светодиод;
- Переходим к началу основного цикла(первый пункт);
- Пишем алгоритм мигания светодиодом (зажигаем светодиод, пауза, гасим светодиод, пауза);
- Переходим к началу алгоритма(первый пункт).

Подробнее... 22 комментария

Занятие №4. Бегущие огни

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 22 декабря 2010
Просмотров: 64502

Задача: разработаем устройство которое должно обеспечивать движение огня в двух разных направлениях. Переключение направления движения будет осуществляться с помощью переключателя S1. В соответствие с поставленной задачей наше устройство должно управлять восемью светодиодами HL1-HL8. Подключим восемь светодиодов к порту D микроконтроллера через токоограничительные резисторы по 220 Ом. Переключатель подключим к младшему разряду порта C.

Подробнее... 16 комментариев

Занятие №5. Бегущие огни с использованием таймера

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 22 декабря 2010
Просмотров: 54425

Доработаем программу «Бегущие огни», изменив процедуру формирования задержки. Чтобы не загружать процессор новая процедура задержки должна использовать один из внутренних таймеров/счетчиков и не использовать прерывания.

В микроконтроллере Atmega8 имеются 3 таймера: 2 восьмиразрядных и 1 шестнадцатиразрядный. Для формирования временных интервалов таймер просто подсчитывает тактовые импульсы от системного генератора.

В нашем случае частота равна 4 MHz, а период импульсов 1/4MHz=0,25мкс. Для того чтобы получить на выходе 200мс, необходимо иметь коэффициент деления равный 200мс/0,25мкс= 800000. Восьмиразрядный таймер имеет максимальный коэффициент пересчета 28=256, а шестнадцатиразрядный 216=65536. То есть даже шестнадцатиразрядного таймера нам не хватит для формирования требуемой задержки. Тогда воспользуемся предварительным делителем. Этот делитель производит предварительное деление тактового сигнала перед тем как он поступит на вход таймера.

Подробнее... 7 комментариев

Занятие №6. Бегущие огни. Использование прерываний по таймеру

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 29 декабря 2010
Просмотров: 61598

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

В данном случае мы будем использовать режим работы таймера – сброс при совпадении(СТС). В этом режиме таймер сам периодически вырабатывает запросы на прерывания с заранее заданным периодом.

Все функции управления движением огней выполняет процедура обработки прерывания. При каждом вызове прерывания процедура производит сдвиг огней на 1 шаг в нужном направлении.

Подробнее... 48 комментариев

Занятие №7. Операторы управления битами

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 15 января 2011
Просмотров: 47616

Сдвиг влево ( << )

Сдвигает число на n разрядов влево. Старшие n разрядов при этом исчезают, а младшие n разрядов заполняются нулями.

unsigned char temp = 5; // 0b00000101

temp = temp << 1; // теперь в переменной temp число 10 или 0b00001010

temp = temp << 4; // теперь в переменной temp число 160 или 0b10100000

Выражения, в которых над переменной производится какая-либо операция, а потом результат операции присваивается этой же переменной, можно записывать короче, используя составные операторы.

temp = 42; // 0b00101010

temp <<= 3; // теперь в переменной temp число 80 или 0b01010000

Операция сдвига влево на n разрядов эквивалентна умножению переменной на 2n.

Подробнее... 5 комментариев

Занятие №8. Реализация ШИМ

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 16 января 2011
Просмотров: 124703

Цифровые устройства, например, микроконтроллер может работать только с двумя уровнями сигнала, т.е. ноль и единица или выключено и включено. Таким образом, вы можете легко использовать его для контроля состояния нагрузки, например включит или выключить светодиод. Так же вы можете использовать его для управления любым электрическим прибором, используя соответствующие драйверы (транзистор, симистор, реле и т.д.).Но иногда нужно больше, чем просто "включить" и "выключить" устройство. Поэтому, если вы хотите контролировать яркость светодиода (или лампы) или скорости двигателя постоянного тока, то цифровые сигналы просто не могу этого сделать. Эта ситуация очень часто встречается в цифровой технике и называется Широтно-Импульсной Модуляцией(PWM).

Подробнее... 41 комментарий

Подключение LCD(HD44780) к микроконтроллерам AVR

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 28 февраля 2011
Просмотров: 189099

В этой статье приведен пример подключения LCD индикатора к микроконтроллеру AVR, а именно ATmega8. При выборе LCD cледует различать обычные многопозиционные LCD серии ИЖКЦ, модули на их основе с микросхемой HT1611 и алфавитно-символьные LCD с встроенным контроллером. Именно последние и относят к наиболее перспективным изделиям. В подтверждение тому множество фирм в мире, специализирующихся на выпуске подобной продукции. Крупнейшие из них находятся в Тайване, Китае, Японии, США.

Подробнее... 44 комментария

Подключение LCD(HD44780) по 4-х разрядной шине. Русификация LCD

Empty
  •  Печать 
  • E-mail
AntonChip logo
Создано: 17 марта 2011
Просмотров: 92760

Для активизации четырехбитового режима надо программно сформировать сигналы управления согласно временным диаграммам на рис.1. По структуре они совпадают с диаграммой 8-ми разрядной шины за исключением удвоенного числа импульсов "Е". Линии связи проходят через старшие разряды шины данных DB4-DB7, младшие DB0-DB3 остаются не задействованными.

Рис.1

Подробнее... 56 комментариев

Ещё статьи...

  1. Подключение семисегментных индикаторов к AVR. Динамическая индикация
  2. Воспроизведение однотональных мелодий с помощью AVR
  3. Аналого-цифровой преобразователь микроконтроллеров AVR
  4. АЦП микроконтроллеров AVR. Делаем цифровой вольтметр 0 - 25V
  5. Зажигаем RGB светодиод. Программный ШИМ
Страница 1 из 5
  • В начало
  • Назад
  • 1
  • 2
  • 3
  • 4
  • 5
  • Вперед
  • В конец

Популярные метки

  • PIC16F73
  • PCF8591
  • PIC10F200
  • Омметр
  • Аудиопроцессор
  • TL2575
  • PIC12F675
  • ATmega644
  • PIC18F2550
  • Мощность
  • FT232
  • PIC16F876
  • Remote
  • ADXL322
  • PIC16F630
  • AT90S1200
  • ATmega8515
  • Звук
  • ATmega32
  • Таймер

Полезная информация

  • Обмен ссылками
  • Контакты
  • Реклама на сайте
  • Спонсоры проекта
  • Карта сайта

Социальные сети

  • ВКонтактеВКонтакте
  • YoutubeYoutube
  • Обмен ссылками
  • Контакты
  • Реклама на сайте
  • Спонсоры проекта
  • Карта сайта
© 2010-2022 Микроконтроллеры и Технологии. Все права защищены.
Материалы представленные на сайте исключительно только для ознакомления
При копировании материалов ссылка на Микроконтроллеры и Технологии обязательна
Рейтинг@Mail.ru