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
Электронный метроном

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