AFON // радиотехник affonya@mail.ru
← Радиотехника

Проекты на PIC контроллерах

Практические устройства на микроконтроллерах PIC с полным исходным кодом на ассемблере: схема, детали, алгоритм и проверенный листинг для каждого проекта.

О разделе

Здесь собраны практические проекты на микроконтроллерах PIC, написанные на ассемблере (MPASM). Каждый проект — это законченное устройство: задача, список деталей, схема подключения, алгоритм и полный листинг с построчными комментариями. Все листинги проверены ассемблером и собираются без ошибок, рядом лежит готовый HEX-файл.

Проекты выстроены по возрастанию сложности: от мигающего светодиода до устройств с индикаторами, датчиками и связью. Базовый контроллер — PIC16F84A (классика для обучения), в проектах с АЦП применяется PIC16F877A, со встроенным UART — PIC16F628A. Теорию по архитектуре смотрите на странице микроконтроллеры PIC, настройку среды — в статье программирование PIC на C.

План раздела

ПроектыТемаСтатус
1–10Основы: порты, кнопки, релеготово
11–18Индикация: 7 сегментов, LCD, матрицаготово
19–26Таймеры, прерывания и ШИМготово
27–34Измерения: АЦП, датчики, частотаготово
35–42Связь: UART, I²C, SPI, ИКготово
43–50Управление: двигатели, клавиатура, автоматикаготово
PRJ//

Проекты

50

Готовые устройства с полным исходным кодом на ассемблере. Раздел пополняется — всего запланировано 50 проектов.

PRJ.01
Мигающий светодиод →

Первый проект: порт на выход и программная задержка

PRJ.02
Бегущие огни →

Сдвиг единицы по восьми светодиодам через регистр сдвига

PRJ.03
Кнопка и антидребезг →

Опрос кнопки с программным подавлением дребезга контактов

PRJ.04
Кнопка-триггер →

Нажал — включил, нажал ещё раз — выключил

PRJ.05
Бегущий огонь «туда-обратно» →

Огонёк доходит до края и возвращается назад

PRJ.06
Двоичный счётчик →

Порт B показывает двоичный код от 0 до 255

PRJ.07
Управление реле →

Кнопка включает и выключает реле через транзисторный ключ

PRJ.08
Генератор меандра 1 кГц →

Точный расчёт задержки в машинных циклах

PRJ.09
Переключение режимов кнопкой →

Три светодиодных эффекта, кнопка выбирает режим

PRJ.10
Светофор →

Полный цикл светофора с мигающим зелёным

PRJ.11
7-сегментный индикатор →

Таблица сегментов и вывод цифр 0…9

PRJ.12
Динамическая индикация →

Два разряда на общих сегментах

PRJ.13
Счётчик 0…99 →

Двухразрядный счёт с переносом десятков

PRJ.14
LCD HD44780 →

Инициализация дисплея в 4-битном режиме

PRJ.15
Вывод текста на LCD →

Строки из таблицы и адресация двух строк

PRJ.16
Светодиодная матрица 8×8 →

Развёртка по столбцам и вывод символа

PRJ.17
Индикатор уровня →

Линейка светодиодов и две кнопки регулировки

PRJ.18
Бегущая строка →

Сдвиг изображения по кольцевому буферу

PRJ.19
Точная задержка на TMR0 →

Аппаратный таймер вместо пустых циклов

PRJ.20
Прерывание по TMR0 →

Фоновая задача и обработчик прерывания

PRJ.21
Программный ШИМ →

Плавное разгорание и затухание светодиода

PRJ.22
Аппаратный ШИМ на CCP →

Модуль CCP1 генерирует ШИМ без участия ядра

PRJ.23
Счётчик импульсов →

TMR0 как счётчик внешних событий

PRJ.24
Секундомер с кнопкой →

Пуск и стоп одной кнопкой, счёт 00…99

PRJ.25
Часы на прерывании →

Минуты и секунды считает таймер в фоне

PRJ.26
Таймер обратного отсчёта →

Отсчёт до нуля и отключение реле

PRJ.27
АЦП: чтение потенциометра →

Первое аналоговое измерение на PIC16F877A

PRJ.28
Цифровой вольтметр →

Перевод кода АЦП в вольты и десятые

PRJ.29
Термометр на LM35 →

10 мВ на градус и опорное 2,56 В

PRJ.30
Датчик освещённости →

Пороговое включение света с гистерезисом

PRJ.31
Термометр DS18B20 (1-Wire) →

Протокол однопроводной шины вручную

PRJ.32
Измеритель длительности импульса →

Захват фронтов модулем CCP

PRJ.33
Пороговое реле на компараторе →

Встроенный компаратор и опорное напряжение

PRJ.34
Логгер в EEPROM →

Запись измерений в энергонезависимую память

PRJ.35
Передача по UART →

Аппаратный USART и вывод строки в терминал

PRJ.36
Приём по UART с эхо →

Приём байта, индикация и ответ обратно

PRJ.37
Управление с ПК по UART →

Текстовые команды включают и выключают нагрузку

PRJ.38
I²C: память 24C02 →

Программная шина I²C и внешняя EEPROM

PRJ.39
SPI и регистр 74HC595 →

Три вывода вместо восьми линий

PRJ.40
Приём ИК-пульта (RC5) →

Декодирование посылки телевизионного пульта

PRJ.41
Обмен между двумя PIC →

Ведущий и ведомый в одной прошивке

PRJ.42
Передача по радиоканалу 433 МГц →

Преамбула, синхробайт и контрольная сумма

PRJ.43
Сервопривод SG90 →

Угол задаётся длительностью импульса

PRJ.44
Шаговый двигатель →

Последовательность фаз через ULN2003

PRJ.45
Двигатель: ШИМ и реверс →

Регулировка скорости и смена направления

PRJ.46
Матричная клавиатура 4×4 →

Сканирование шестнадцати клавиш по восьми выводам

PRJ.47
Кодовый замок →

Четырёхзначный код в EEPROM и блокировка при ошибках

PRJ.48
Сигнализация с датчиком движения →

Задержки на вход и выход, сирена

PRJ.49
Термостат →

Поддержание температуры с гистерезисом и защитой

PRJ.50
Электронный метроном →

Щелчки с регулируемым темпом и вспышкой