Как сделать многофункциональные часы-термометр на микроконтроллере PIC18F2550. Какие компоненты потребуются для сборки. Как запрограммировать и настроить устройство для измерения температуры и отображения времени. Каковы преимущества использования PIC18F2550 для создания часов-термометра.
Компоненты для сборки часов-термометра на PIC18F2550
Для создания функциональных часов-термометра на базе микроконтроллера PIC18F2550 потребуются следующие основные компоненты:
- Микроконтроллер PIC18F2550
- Кварцевый резонатор на 20 МГц
- Датчик температуры DS18B20
- Семисегментный светодиодный индикатор
- Кнопки для управления
- Резисторы, конденсаторы и другие пассивные компоненты
Микроконтроллер PIC18F2550 является оптимальным выбором благодаря достаточному объему памяти программ и данных, а также наличию необходимых интерфейсов для подключения датчика и индикатора.
Схема подключения компонентов часов-термометра
Для корректной работы устройства необходимо правильно подключить все компоненты к микроконтроллеру PIC18F2550. Ключевые моменты подключения:
- Кварцевый резонатор подключается к выводам OSC1 и OSC2
- Датчик DS18B20 — к одному из цифровых входов/выходов через подтягивающий резистор
- Сегменты индикатора — к выводам порта B через токоограничивающие резисторы
- Кнопки управления — к выводам порта A с подтяжкой к питанию
Правильное подключение обеспечит стабильную работу микроконтроллера, точное измерение температуры и корректное отображение информации на индикаторе.
Программирование микроконтроллера PIC18F2550
Для программирования PIC18F2550 можно использовать язык C и среду разработки MPLAB X IDE от Microchip. Основные этапы разработки программы:
- Инициализация микроконтроллера и настройка тактирования
- Реализация драйвера для работы с датчиком DS18B20
- Разработка функций управления семисегментным индикатором
- Создание алгоритма измерения и отображения температуры
- Реализация часов реального времени на базе таймера микроконтроллера
- Обработка нажатий кнопок для настройки часов
Грамотно написанная программа обеспечит точность измерений, энергоэффективность и удобство использования часов-термометра.
Калибровка и настройка часов-термометра
После сборки и программирования устройства необходимо выполнить его калибровку и настройку. Как это сделать:
- Сверьте показания времени с эталонным источником и при необходимости скорректируйте
- Проведите калибровку датчика температуры, сравнив его показания с точным термометром
- Настройте яркость индикатора для комфортного считывания показаний
- Проверьте корректность работы кнопок управления
Тщательная калибровка и настройка позволят добиться максимальной точности измерений температуры и хода часов.
Преимущества использования PIC18F2550 для часов-термометра
Микроконтроллер PIC18F2550 имеет ряд преимуществ для создания часов-термометра:
- Высокая производительность при низком энергопотреблении
- Достаточный объем памяти для реализации всех необходимых функций
- Наличие встроенного USB-интерфейса для возможности подключения к компьютеру
- Широкий выбор периферийных модулей для работы с различными датчиками
- Доступность и невысокая стоимость микроконтроллера
Эти особенности делают PIC18F2550 отличным выбором для создания многофункциональных и энергоэффективных часов-термометров.
Расширение функциональности часов-термометра
На базе созданного устройства можно реализовать дополнительные полезные функции:
- Подключение датчика влажности для измерения влажности воздуха
- Добавление будильника с настраиваемой мелодией
- Реализация интерфейса для подключения к компьютеру и настройки через ПО
- Добавление функции измерения атмосферного давления
- Реализация беспроводного интерфейса для передачи данных
Расширение функциональности позволит создать универсальное устройство для мониторинга параметров окружающей среды.
Применение часов-термометра на PIC18F2550
Разработанное устройство может найти широкое применение в различных сферах:
- Использование в домашних условиях для контроля микроклимата
- Применение в офисных помещениях для мониторинга температуры
- Установка в теплицах для контроля условий выращивания растений
- Использование в серверных комнатах для отслеживания температурного режима
- Применение в лабораториях для проведения экспериментов
Широкие возможности применения делают часы-термометр на PIC18F2550 полезным устройством как для бытового, так и для профессионального использования.
Двухточечный термометр на DS18B20 и микроконтроллере PIC16F84 (A)
РадиоКот >Лаборатория >Цифровые устройства >Двухточечный термометр на DS18B20 и микроконтроллере PIC16F84 (A)
Подобных схем радиолюбителями было разработано немало, но мне захотелось собрать компактный термометр на батарейном питании, включающийся только тогда, когда надо узнать температуру. На батарейном питании потому, что не очень люблю постоянно включенные в сеть устройства, особенно, если в этом нет необходимости. Ведь температуру подходишь смотреть несколько раз в день.
Посмотрим на схему термометра:
Основой термометра является микроконтроллер PIC16F84, который осуществляет опрос интегральных термодатчиков DS18B20 и отображение информации на дисплее. Информация отображается на 10-разрядном 7-сегментном дисплее MT10T7-7T со встроенным контроллером производства компании «МЭЛТ». Подробное описание дисплея можно найти на сайте компании: https://www.
melt.aha.ru.Микросхема DS18B20 это термометр с цифровым вводом/выводом, работающий с точностью +0.5°C. Данные считываются через 1-проводную последовательную шину в дополнительном от 9 до 12 битном (программируется пользователем) коде с ценой младшего разряда от 0.5°C до 0.0625°C.
Устройство выглядит следующим образом:
На индикаторе символ «d» обозначает «дом», символ «u» — улица. В свободном на снимке разряде между символом «u» и значением температуры появляется знак «—» при отрицательных значениях температуры.
Внутренности градусника:
А так размещен датчик на улице:
Датчик, измеряющий температуру в комнате находится внутри корпуса устройства. В корпусе просверлено несколько отверстий в месте расположения датчика. Датчик, измеряющий уличную температуру, помещен в подходящий пластмассовый корпус, наполненный теплопроводной пастой КПТ-8 и заизолирован от влаги герметиком.
Файлы:
Прошивка — 01.rar
Плата — 02.rar
Все вопросы — сюда.
Как вам эта статья? | Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться:
Часы с термометром на микроконтроллере
- Подробности
- Категория: Микроконтроллеры
- Опубликовано 15.06.2016 13:34
- Автор: Admin
- Просмотров: 2259
Простые часы с термометром на микроконтроллере AVR ATtiny2313 с выводом информации на семисегментный индикатор. Часы используют для отсчета времени микросхему DS1307 — часы реального времени и источником резервного питания в 3 В. Температура измеряется при помощи датчика температуры DS18B20.
Текущее значение времени и температуры происходит поочередно сначала время а потом температура с нтервалом в 4 секунды. Формат отображения времени ЧЧ.ММ (часы,минуты). Первый ноль не отображается. О ходе отсчета времени сигнализирует мигающая точка.
Точность отображения температуры составляет десятые доли градуса. Погрешность в интевале температуры от -10 до 85 градусов составляет порядка +/- 0.5. В другом диапазоне точность уже +/- 2 градуса.
Температура замеряется 1 раз в минуту. Измеренное значение отправляется в память контроллера в которой может хранится пять послених измеренных значения. Измеренная температура округляется до целого значения. На дисплее имеются специальные символы повашения температуры (стрелка вверх) и понижения температуры (стрелка вниз), которые показывают как изменилась температура повисилась она или понизилась.
Если нажать на кнопке «меньше» то на дисплее сразу отобразится время. Если кнопку «больше» то отобразится температура последнего измеренного значения и начнется новый процесс измеерения температуры и новое значение отобразиться на дисплее в этом случае точность составит десятые доли и в таком формате будет отображатся в течении минуты. Если датчик температуры неисправен или отсутсвует подключение то будет оторажаться только время.
Схема часов с термометром на микроконтроллере
Представленные схемы отличаются только общим выводом индикатора анод и катод. Индикаторы работают в динамической индикации. Динамическая индикация раелизована программно. Каждый семисегментный индикатор включается с интервалом 100 раз за 1 секунду. остальное время выключен.
Прошивка для микроконтроллера
В архиве имеются файлы Proteus и сама прошивка написана на ассемблере. Прошивка может работать для двух вышеприведенных схем, для схемы с индикатором с общим катодом и схемы индикатора с общим анодом. При прошивке микроконтроллера важно выствыить fuse-биты: CKSEL3, CKSEL1, CKSEL0, SUT0, BODLEVEL1, BODLEVEL0.
Скачать: прошивка микроконтроллера
Вход в режим усановки времени осуществляется нажатием и удерживанием кнопки «ввод». После того как пройдет 3 секунды начнется режим установки минут. Для того чтобы устаноыить новое значение времени нужно использовать кнопки «больше» и «менеше». Для того чтобы перейти в режим установки часов необходимо нажать на кнопку «ввод». Для того чтобы сохранить выбранное время нужно также нажать и удерживать кнопку «ввод» после этого программа выйдет из режима установки времени. Если после этих всех операций в течении 10 секунд не будет нажата какия нибудь кнопка то часы перейдут в рабочее состояние и новое значение времени не будет сохраненно.
Для устройства необходимы две печатные платы из одностороннего стеклотекстолита который имеет размеры 50 на 100 мм, на одной плате устанавливаются индикатор с кнопками, а на другой сами часы. Равзодка платы в формате SpringLayout.
Индикатор или дисплей собран на двух семисегментных индикаторах FYD-8021BS-11, каждый имеет 2 разряда и имеют общий анод.
Вместо указаных на схеме вернхних включающих транзисторов платы можно использовать другие к примеру KT361B.
Исходник статьи: Часы-термометр
- < Назад
- Вперёд >
Добавить комментарий
Часы и таймеры повышенной точности на микроконтроллерах
|
Часы термометр на PIC16F628A, DS1307, DS18B20 или DS18S20. — Устройства на микроконтроллерах — Схемы устройств на микроконтроллерах
Начну из далека. Года два назад, когда я начал осваивать микроконтроллеры PIC16, мне естественно хотелось собрать действующую схему. Был закуплен самый дешевый программатор, собрана схема, естественно самые простые часы на PIC16F84A. Все собрал, прошил, запустил, начал тестировать и понял, что это фигня. После примерно месяца работы, часы сбивались. Собрал еще одни на PIC16F628A с резервным питанием вроде, но они тоже через несколько месяцев работы сбивались. Понял я, что делать часы только на микроконтроллере не очень хорошая идея. Ну и естественно мой взор привлекли часы реального времени DS1307 с интерфейсом I2C. В сети достаточно много схем на этих микросхемах. Нашел, на мой взгляд самую оптимальную для себя с сайта: http://c2.at.ua/load/pic/prostye_chasy_termometr_s_poocherednoj_smenoj_indikacii/12-1-0-136
Собрал, прошил, запустил. Отличные часы, простые, температуру показывают. Вроде все ничего, но при включение высвечивается на несколько секунд надпись «Soir». Возможно программист решил таким образом увековечить свой труд, но на мой взгляд это как то не правильно. С этим я смерился. Собрал я этих часов аж три экземпляра. Но вдруг оказалось, что датчика температуры DS18B20 у меня больше нет, но осталось 3 датчика DS18S20. Это и оказалось тем решающим фактором, который подвиг меня на написание своей программы для этих часов. Ну, почти этих, все таки одну перемычку все же пришлось добавить. К этому времени я уже достаточно поднаторел в программировании PIC контроллеров, опять же как мне кажется. Ну в общем все получилось. Все изготовленные мной ранее часы были перепрошиты и уже несколько недель успешно работаю, вроде даже без нареканий. Соответственно две прошивки, для DS18B20 и DS18S20. Ну вот и вся история.
Соответственно прошивка для датчика температуры DS18S20:
Файлы к статье Часы термометр на PIC16F628A
для датчика температуры DS18B20:
Файлы к статье Часы термометр на PIC16F628A
PROTEUS:
DS18S20: Файлы к статье Часы термометр на PIC16F628A
DS18B20: Файлы к статье Часы термометр на PIC16F628A
Печатная плата с контроллером: Файлы к статье Часы термометр на PIC16F628A, DS1307, DS18B20 или DS18S20.
Плата индикатора: Файлы к статье Часы термометр на PIC16F628A, DS1307, DS18B20 или DS18S20.
Плата кнопок: Файлы к статье Часы термометр на PIC16F628A, DS1307, DS18B20 или DS18S20.
% PDF-1.6 % 40123 0 obj> эндобдж xref 40123 842 0000000016 00000 н. 0000023306 00000 п. 0000023442 00000 п. 0000023628 00000 п. 0000023668 00000 п. 0000023724 00000 п. 0000023770 00000 п. 0000023832 00000 п. 0000024044 00000 п. 0000024189 00000 п. 0000024364 00000 п. 0000025182 00000 п. 0000025831 00000 п. 0000026344 00000 п. 0000026974 00000 п. 0000031711 00000 п. 0000031944 00000 п. 0000032274 00000 п. 0000033010 00000 п. 0000033624 00000 п. 0000033808 00000 п. 0000034241 00000 п. 0000034933 00000 п. 0000035024 00000 п. 0000035213 00000 п. 0000035873 00000 п. 0000036349 00000 п. 0000036809 00000 п. 0000037251 00000 п. 0000037691 00000 п. 0000038146 00000 п. 0000038629 00000 п. 0000039044 00000 н. 0000045271 00000 п. 0000050869 00000 п. 0000050932 00000 п. 0000051044 00000 п. 0000051148 00000 п. 0000051199 00000 п. 0000051352 00000 п. 0000051464 00000 п. 0000051577 00000 п. 0000051710 00000 п. 0000051828 00000 п. 0000051927 00000 п. 0000052081 00000 п. 0000052236 00000 п. 0000052389 00000 п. 0000052524 00000 п. 0000052690 00000 п. 0000052786 00000 п. 0000052950 00000 п. 0000053054 00000 п. 0000053161 00000 п. 0000053323 00000 п. 0000053437 00000 п. 0000053583 00000 п. 0000053727 00000 п. 0000053897 00000 п. 0000054045 00000 п. 0000054198 00000 п. 0000054359 00000 п. 0000054494 00000 п. 0000054633 00000 п. 0000054797 00000 п. 0000054948 00000 п. 0000055098 00000 п. 0000055267 00000 п. 0000055412 00000 п. 0000055529 00000 п. 0000055702 00000 п. 0000055852 00000 п. 0000055996 00000 п. 0000056173 00000 п. 0000056345 00000 п. 0000056497 00000 п. 0000056657 00000 п. 0000056789 00000 п. 0000056954 00000 п. 0000057143 00000 п. 0000057272 00000 п. 0000057423 00000 п. 0000057639 00000 п. 0000057780 00000 п. 0000057935 00000 п. 0000058120 00000 п. 0000058240 00000 п. 0000058375 00000 п. 0000058539 00000 п. 0000058647 00000 п. 0000058807 00000 п. 0000058975 00000 п. 0000059133 00000 п. 0000059276 00000 п. 0000059459 00000 п. 0000059607 00000 п. 0000059751 00000 п. 0000059925 00000 н. 0000060061 00000 п. 0000060195 00000 п. 0000060349 00000 п. 0000060477 00000 п. 0000060655 00000 п. 0000060809 00000 п. 0000060953 00000 п. 0000061090 00000 п. 0000061244 00000 п. 0000061375 00000 п. 0000061536 00000 п. 0000061690 00000 н. 0000061821 00000 п. 0000061964 00000 п. 0000062115 00000 п. 0000062235 00000 п. 0000062393 00000 п. 0000062545 00000 п. 0000062685 00000 п. 0000062843 00000 п. 0000063008 00000 п. 0000063106 00000 п. 0000063240 00000 п. 0000063398 00000 п. 0000063549 00000 п. 0000063694 00000 п. 0000063855 00000 п. 0000064007 00000 п. 0000064178 00000 п. 0000064336 00000 п. 0000064487 00000 п. 0000064656 00000 п. 0000064802 00000 п. 0000064939 00000 п. 0000065088 00000 п. 0000065246 00000 п. 0000065401 00000 п. 0000065555 00000 п. 0000065720 00000 п. 0000065853 00000 п. 0000065993 00000 п. 0000066148 00000 п. 0000066289 00000 п. 0000066450 00000 п. 0000066574 00000 п. 0000066675 00000 п. 0000066794 00000 п. 0000066907 00000 н. 0000067026 00000 п. 0000067133 00000 п. 0000067262 00000 п. 0000067380 00000 п. 0000067506 00000 п. 0000067621 00000 п. 0000067727 00000 н. 0000067860 00000 п. 0000067983 00000 п. 0000068130 00000 п. 0000068279 00000 п. 0000068427 00000 н. 0000068532 00000 п. 0000068658 00000 п. 0000068786 00000 п. 0000068903 00000 п. 0000069061 00000 п. 0000069238 00000 п. 0000069352 00000 п. 0000069500 00000 п. 0000069667 00000 п. 0000069773 00000 п. 0000069949 00000 н. 0000070104 00000 п. 0000070265 00000 п. 0000070418 00000 п. 0000070535 00000 п. 0000070700 00000 п. 0000070807 00000 п. 0000070970 00000 п. 0000071122 00000 п. 0000071277 00000 п. 0000071456 00000 п. 0000071617 00000 п. 0000071762 00000 п. 0000071911 00000 п. 0000072059 00000 п. 0000072176 00000 п. 0000072305 00000 п. 0000072423 00000 п. 0000072512 00000 п. 0000072616 00000 п. 0000072784 00000 п. 0000072933 00000 п. 0000073066 00000 п. 0000073166 00000 п. 0000073277 00000 п. 0000073427 00000 п. 0000073525 00000 п. 0000073665 00000 п. 0000073790 00000 п. 0000073933 00000 п. 0000074086 00000 п. 0000074222 00000 п. 0000074377 00000 п. 0000074532 00000 п. 0000074667 00000 п. 0000074808 00000 п. 0000074922 00000 п. 0000075075 00000 п. 0000075236 00000 п. 0000075350 00000 п. 0000075472 00000 п. 0000075571 00000 п. 0000075680 00000 п. 0000075820 00000 п. 0000075990 00000 п. 0000076085 00000 п. 0000076260 00000 п. 0000076396 00000 п. 0000076554 00000 п. 0000076662 00000 н. 0000076805 00000 п. 0000076965 00000 п. 0000077071 00000 п. 0000077225 00000 п. 0000077385 00000 п. 0000077520 00000 п. 0000077644 00000 п. 0000077738 00000 п. 0000077852 00000 п. 0000077974 00000 п. 0000078125 00000 п. 0000078244 00000 п. 0000078377 00000 п. 0000078536 00000 п. 0000078703 00000 п. 0000078872 00000 п. 0000079049 00000 н. 0000079190 00000 п. 0000079314 00000 п. 0000079439 00000 п. 0000079599 00000 н. 0000079745 00000 п. 0000079905 00000 н. 0000080023 00000 п. 0000080168 00000 п. 0000080331 00000 п. 0000080424 00000 п. 0000080566 00000 п. 0000080729 00000 п. 0000080831 00000 п. 0000080979 00000 п. 0000081079 00000 п. 0000081250 00000 п. 0000081358 00000 п. 0000081526 00000 п. 0000081642 00000 п. 0000081763 00000 п. 0000081860 00000 п. 0000082027 00000 н. 0000082187 00000 п. 0000082329 00000 п. 0000082463 00000 п. 0000082576 00000 п. 0000082743 00000 н. 0000082888 00000 п. 0000083032 00000 п. 0000083176 00000 п. 0000083287 00000 п. 0000083406 00000 п. 0000083548 00000 п. 0000083704 00000 п. 0000083900 00000 п. 0000084067 00000 п. 0000084226 00000 п. 0000084384 00000 п. 0000084498 00000 п. 0000084659 00000 п. 0000084769 00000 п. 0000084930 00000 п. 0000085067 00000 п. 0000085193 00000 п. 0000085310 00000 п. 0000085433 00000 п. 0000085605 00000 п. 0000085734 00000 п. 0000085854 00000 п. 0000086021 00000 п. 0000086169 00000 п. 0000086340 00000 п. 0000086466 00000 п. 0000086597 00000 п. 0000086753 00000 п. 0000086906 00000 п. 0000087057 00000 п. 0000087207 00000 п. 0000087344 00000 п. 0000087476 00000 п. 0000087608 00000 п. 0000087729 00000 п. 0000087842 00000 п. 0000087985 00000 п. 0000088100 00000 п. 0000088277 00000 н. 0000088402 00000 п. 0000088538 00000 п. 0000088650 00000 п. 0000088764 00000 п. 0000088885 00000 п. 0000089020 00000 н. 0000089153 00000 п. 0000089281 00000 п. 0000089433 00000 п. 0000089542 00000 п. 0000089652 00000 п. 0000089785 00000 п. 0000089914 00000 н. 00000 00000 п. 00000 00000 п. 00000
00000 п. 00000 00000 п. 00000
00000 п. 00000
00000 п. 00000
PIC18F2550 Распиновка микроконтроллера, программирование, приложения, особенности
Микроконтроллер PIC18F2550 — это 8-битный микроконтроллер, разработанный MICROCHIP.Это один из самых дешевых микроконтроллеров серии PIC18FXXXX. Он популярен благодаря своей производительности, дешевизне и множеству функций. Микроконтроллер PIC18F2250 может напрямую взаимодействовать с другим ПК. Он имеет множество вспомогательных материалов в Интернете из-за его популярности, и это одна из причин, по которой его используют большинство разработчиков и инженеров. Микроконтроллер может поддерживать активность периферийного устройства, когда ядро ЦП находится в режиме ожидания, а использование внутреннего генератора также приводит к экономии энергии контроллером до 90% .
PIC18F2550 Конфигурация контактовРаспиновка, включая детали всех контактов и периферийных устройств, указана ниже:
PIC18F2550 Функции и периферийные устройства
В этом разделе мы увидим все функции и подробную информацию о доступных встроенных функциях.
КОНТАКТЫ ЦИФРОВОГО ВЫХОДАМикроконтроллер имеет четыре порта GPIO (A, B, C и E). Вместо E все порты обеспечивают функцию вывода.Выходной контакт подключается к порту A, и B дает логику TTL, но выход порта C поступает в логику ST. Выходные контакты на PIC18F2250:
- RA0 — GPIO2
- RA1 — GPIO3
- RA2 — GPIO4
- RA3 — GPIO5
- RA4 — GPIO6
- RA5 — GPIO7
- RA6 — GPIO10
- RB0 — GPIO21
- РБ1 — GPIO22
- РБ2 — GPIO23
- РБ3 — GPIO24
- РБ4 — GPIO25
- РБ5 — GPIO26
- РБ6 — GPIO27
- РБ7 — GPIO28
- RC0 — GPIO11
- RC1 — GPIO12
- RC2 — GPIO13
- RC6 — GPIO17
- RC7 — GPIO18
КОНТАКТЫ ЦИФРОВОГО ВХОДАПроверьте это руководство: Как использовать выводы GPIO микроконтроллеров Pic
В PIC18F2550 количество входных контактов больше, чем у любых других контактов.Каждый порт имеет возможность ввода. Входные контакты на портах A и B все входные контакты могут работать с входом TTL, но в порте C (RC4 и RC5) могут работать только с входом TTL, для других контактов на портах C и E требуется логика ST, иначе это может вызвать проблемы для программа микроконтроллера, чтобы понять и правильно работать. Список всех входных контактов:
- RA0 — GPIO2
- RA1 — GPIO3
- RA2 — GPIO4
- RA3 — GPIO5
- RA4 — GPIO6
- RA5 — GPIO7
- RA6 — GPIO10
- RB0 — GPIO21
- РБ1 — GPIO22
- РБ2 — GPIO23
- РБ3 — GPIO24
- РБ4 — GPIO25
- РБ5 — GPIO26
- РБ6 — GPIO27
- РБ7 — GPIO28
- RC0 — GPIO11
- RC1 — GPIO12
- RC2 — GPIO13
- RC4 — GPIO14
- RC5 — GPIO15
- RC6 — GPIO16
- RC7 — GPIO17
Функция прерывания PIC18F2550Прочтите это руководство: ИСПОЛЬЗУЙТЕ ВХОДНЫЕ ВЫХОДНЫЕ ПОРТЫ МИКРОКОНТРОЛЛЕРА PIC18F452
Каждое внешнее устройство требует функции прерывания в случае привлечения внимания ЦП, а PIC18F2550 имеет три контакта прерывания, которые можно использовать для приема входного сигнала для генерации прерывания в микроконтроллере.Контакты прерывания:
- INT0 — GPIO21
- IN1 — GPIO22
- IN2 — GPIO23
АСИНХРОННЫЕ ШТИФТЫ EUSARTПрочтите эту статью по прерываниям: Как использовать внешнее прерывание микроконтроллера PIC18F452
В настоящее время для большинства систем требуются системы последовательной связи, и система асинхронной последовательной связи Eusart является одной из самых популярных систем для последовательной связи. Он имеет отдельные контакты для передачи и приема данных, и оба могут использоваться одновременно.
- прием — GPIO18
- TX — GPIO17
Связь SPI PIC18F2550ПОСЛЕДОВАТЕЛЬНАЯ СВЯЗЬ С МИКРОКОНТРОЛЛЕРОМ PIC16F877A
Контроллеру иногда требуются внешние модули для выполнения связи, и некоторые из них используют метод связи SPI. Она известна как трехпроводная система связи, в которой используются два провода данных, один провод тактовых импульсов и третий провод, известный как выбор ведомого, который используется в случае нескольких периферийных устройств.Контакты SPI на PIC18F2550:
- SDO (вывод данных) — GPIO18
- SDI (вход данных) — GPIO21
- SCK (тактовый импульс) — GPIO22
- SS ’(выбор ведомого) — GPIO7
Это двухпроводная последовательная связь, но она односторонняя. Он использует два провода, один используется для тактовых импульсов, а другие будут использоваться для передачи и приема данных. Тактовый импульс помогает контроллеру использовать несколько периферийных устройств одновременно.I 2 Выводы C в PIC18F2550 приведены ниже:
- SDA — GPIO22
- SCL — GPIO23
СИНХРОННЫЕ ШТИФТЫ EUSARTУчебное пособие по микроконтроллеру PIC для связи I2C
У ИС есть несколько способов программирования, но ее можно запрограммировать посредством синхронного последовательного программирования. Для последовательного программирования контроллера будут использоваться три контакта: первый для часов, второй для передачи / приема данных и третий для программирования входной мощности.
- В PP — GPIO1
- СК — GPIO17
- ДТ — GPIO18
Это известно как внутрисхемное последовательное программирование, при котором используется специальная схема программирования, разработанная компанией для MICROCHIP для программирования микроконтроллера с использованием HEX-файла программы. В этом процессе будут использоваться 6-контактные. Все эти контакты перечислены ниже:
- MCLR ’- GPIO1
- VDD — GPIO20
- VSS — GPIO19
- PGM — GPIO26
- PGC — GPIO27
- PGD — GPIO28
В PIC18F2550 USB можно подключить напрямую к микроконтроллеру.Рисунок содержит полноскоростной и половинный интерфейс USB. USB может быть подключен через внутренний трансивер или внешний трансивер. Внутренний трансивер можно подключить к внешнему USB-интерфейсу, но он также может использовать внешний трансивер в случае необходимости. Контакты для обоих трансиверов указаны ниже:
ВНЕШНИЙ ТРАНСИВЕР:
- RCV — GPIO6
- VMO — GPIO23
- ВПО — GPIO24
- UOE ’- GPIO12
- ВМ — GPIO15
- ВП — GPIO16
ВНУТРЕННИЙ ТРАНСИВЕР:
- В USB — GPIO14
- D- — GPIO15
- D + — GPIO16
ТАЙМЕРЫ PIC18F2550USB-коммуникационный микроконтроллер PIC
Всего в PIC18F2550 четыре таймера.Один таймер (Timer0) — 8-битный, а другие три (Timer1, Timer2, Timer3) — 16-битные. В PIC18F2550 Timer1 может использовать внешний генератор, отдельный от генератора микроконтроллера. Таймер 1 и таймер 3 — единственные таймеры, которые могут работать с внешним входным сигналом, Time0 и Timer2 работают только внутри:
- T0CKI (вход внешнего таймера Timer0) — GPIO6
- T1OSO (выход генератора Timer1) — GPIO11
- T13CKI (вход внешнего таймера Timer3) — GPIO11
- T1OSI (вход генератора Timer1) — GPIO12
HLVDIN PINТаймеры микроконтроллера PIC
Это предохранительный штифт к контроллеру.Благодаря этому пользователь сможет инициализировать диапазон напряжения в микроконтроллере, от которого устройство будет отключаться. Вход на этот вывод будет аналоговым входным сигналом, который сможет генерировать прерывание.
АНАЛОГ НА ЦИФРОВОЙ КАНАЛ Аналого-цифровой преобразовательстановится потребностью каждой цифровой схемы, потому что несколько датчиков и периферийных устройств выдают выходной сигнал в аналоговой форме, а микроконтроллер требует аналоговый канал преобразователя для работы с этими данными.В PIC18F2550 всего 10 каналов аналого-цифрового преобразования по 10 бит. Все эти каналы могут преобразовывать 10 аналоговых входных сигналов в цифровой, а затем сохранять / использовать его в соответствии с инструкциями, приведенными в программе. Контакты АЦП в PIC18F2550 перечислены ниже:
- AN0 — GPIO2
- AN1 — GPIO3
- AN2 — GPIO4
- AN3 — GPIO5
- AN4 — GPIO7
- AN8 — GPIO23
- AN9 — GPIO24
- AN10 — GPIO22
- AN11 — GPIO25
- AN12 — GPIO21
В PIC18F2550 АЦП умный из-за контактов V REF .Есть два контакта Vref, один из которых используется для описания максимального напряжения входного аналогового сигнала, а второй будет использоваться для ввода минимального напряжения аналогового входного сигнала. Таким образом, АЦП выдает на выходе только значения в диапазоне, заданном V REF . Контакты опорного напряжения:
- В REF + — GPIO4
- В REF- — GPIO5
В микроконтроллере есть два компаратора.Эти два компаратора могут сравнивать несколько входов. Их входы могут быть приняты с помощью любого аналогового входного сигнала от AN0-AN4. Выходное напряжение может сравниваться на VDD или отдельное опорное напряжение компаратора может быть обеспечено на опорном выводе компаратора.
- CV REF — GPIO4
- CV1OUT — GPIO6
- CV2OUT — GPIO7
В этом микроконтроллере есть два контакта захвата / сравнения / ШИМ.Этот внутренний модуль использует Timer1 и Timer3 и позволяет устройству генерировать выходные данные в определенное время. Этот модуль позволяет контроллеру генерировать ШИМ желаемого рабочего цикла с помощью таймеров и предделителя. Выходные контакты этого модуля в PIC182550:
- CCP1 (выход) — GPIO13
- CCP2 / RC1 (вход / выход) — GPIO12
- CCP2 / RB3 (ввод / вывод) — GPIO24
- FLT0 (Неисправность) — GPIO21
По умолчанию RB3 выдает выходной сигнал, но RC1 и RB3 можно отличить от программы внутренне.Вывод обнаружения неисправности используется для инициализации минимального периода активности неисправности в CCP1 (выход компаратора 1). Прочтите эти руководства по ШИМ:
ПИН СБРОСАPIC18F2550 имеет внешний вывод сброса, который можно использовать для полного сброса микроконтроллера. Контакт является активным нижним контактом и может управляться кнопкой или любым устройством логического состояния ST.
ВХОДНЫЕ ШТИФТЫPIC имеет три вывода питания; один используется для подачи питания, а оставшиеся два — это контакты заземления, используемые для создания общего заземления, и они также являются общими для контроллера.Выводы питания и заземления PIC18F2550:
- VSS — GPIO19, GPIO8
- VDD — GPIO20
Для работы каждого микроконтроллера требуется тактовый импульс. PIC18F2550 поставляется с внутренними часами от 32 кГц до 8 МГц, и их можно откалибровать на другом уровне с помощью инструкций. Для использования тактовой частоты до 48 МГц в контроллере предусмотрены два входа тактовой частоты: один для входа, а второй — для выхода. Оба контакта:
- OSC1 / CLKI — GPIO9
- OSC2 / CLKO — GPIO10
Вот блок-схема PIC18F2550:
PIC18F2550 Программирование микроконтроллеровЧтобы начать изучение программирования микроконтроллера pic , вы должны иметь представление о выводах GPIO.Поэтому мы подробно остановились на всех выводах и их функциях в предыдущих разделах. Мы можем использовать либо язык ассемблера , либо c программированием для программирования микроконтроллеров. Мы предлагаем вам ознакомиться с этими руководствами по началу работы:
Инструменты для программирования
Для начала программирования вам потребуются следующие программные и аппаратные компоненты:
- Компилятор или IDE для написания программы на ассемблере или языке C : Главное, где вы будете вводить свою первую программу микроконтроллера, — это компилятор или интегрированная среда разработки.Тремя наиболее популярными компиляторами, используемыми для программирования микроконтроллеров pic, являются MPLABX IDE, Mikro C для PIC и компилятор PIC CCS. Компилятор используется для создания шестнадцатеричного файла, который пользователь загружает в микроконтроллер.
- Программист или записывающее устройство : Когда вы закончите писать код, у вас будет шестнадцатеричный файл, который вы хотите загрузить в микроконтроллер. Мы используем программатор или записывающее устройство для загрузки двоичных файлов на pic16f866. Pickit3 — один из лучших вариантов для записи кода.
- Pic Development Boards : Макетные платы не являются обязательными, но они значительно упрощают процесс разработки.Потому что они предлагают встроенные периферийные устройства, такие как разъемы GPIO, датчики, АЦП и т. Д.
Мы обновим этот раздел, добавив в этот раздел примеров программирования на встроенном языке C в этом разделе.
ПРИЛОЖЕНИЯ- Используется с теми устройствами, которым требуется интерфейс с ПК.
- Большая часть интеллектуальных приложений использует PIC18F2550, потому что он заполняет почти весь протокол связи большинства приложений.
PIC18F2550 имеет 32 КБ памяти, которая указана ниже:
2D Схема
Все о часах для PIC
Всем микроконтроллерам требуются часы или осциллятор, чтобы управлять программой через ее шаги.Такой модуль обязан указывать, когда инструкция должна быть извлечена из программной памяти, декодирована и обработана. Фактически, даже самая простая инструкция состоит из ряда операций, которые необходимо выполнять в правильном порядке и в нужный момент. Таким образом, часы подобны дирижеру оркестра, координирующему все части, составляющие единое целое.
Поскольку часы так важны, микроконтроллеры PIC предлагают широкий спектр опций на выбор для ваших собственных приложений.У вас могут быть часы, которые работают быстро, когда многое должно произойти за короткий промежуток времени, или часы, которые потребляют незначительное количество энергии для установок с батарейным питанием. Возможно, для вас важна синхронизация PIC со стабильными часами реального времени. Фактически, для типичного PIC существует восемь или более вариантов тактовой частоты.
Однако, если вы возьмете таблицу и попытаетесь отсортировать все возможности, вы быстро пожалеете о старой фразе: «За деревьями не видно леса». Таблицы данных для PIC состоят из сотен страниц и не обязательно организованы для лучшего обучения.И, конечно же, время от времени возникает ошибка, из-за которой новичку становится еще труднее разобраться.
Как человек, посвятивший всю свою сознательную жизнь преподаванию, я всегда интуитивно ценил важность хорошо организованной презентации. Вы начинаете с «леса» и только потом подходите к «деревьям». Вот что мы сделаем здесь — сначала будем иметь в виду общую картину, а затем заняться деталями, когда они, наконец, понадобятся.
Итак, если в прошлом вы были встревожены тем, насколько сложными кажутся параметры часов для PIC, отметьте это сейчас и посмотрите, как правильный подход может иметь большое значение.Чтобы превратить это в процесс активного обучения, мы завершим несколько реальных экспериментов, которые вы можете провести на макетной плате. К концу нашей совместной сессии вы должны быть готовы начать с уверенностью использовать часы PIC.
Основные частоты
Для большей конкретики я остановлюсь на PIC16F88, который является одним из самых популярных микроконтроллеров среди домашних мастеров. Однако другие PIC будут обладать многими из тех же опций — даже меньшими восьмиконтактными микросхемами.
Первая концепция, которую следует закрепить, заключается в том, что PIC может работать либо на первичных, либо на вторичных часах.Первое составляет большинство ситуаций. В частности, типичный проект содержит единственные часы, управляющие микроконтроллером, и на этом все. В более продвинутых приложениях мы можем захотеть, чтобы второстепенные часы срабатывали всякий раз, когда основные часы не работают. Есть несколько причин для желания такой избыточности, и мы рассмотрим их чуть позже.
А пока давайте сосредоточимся на основных часах, которые нам нужны для большинства проектов. См. Рисунок 1 , на котором показано, что доступно.
РИСУНОК 1. Восемь режимов для основных часов.
Эта древовидная диаграмма упорядочивает типы основных тактовых генераторов, доступных в PIC16F88, в порядке сверху вниз. Для начала посмотрите на первые ветви древовидной диаграммы. Часы могут быть внутренними RC-цепочками или, если хотите, вы можете поставить свои собственные резистор и конденсатор и получить внешнюю RC-схему. В ситуациях, требующих большей точности, можно использовать внешний кварцевый или керамический резонатор.Наконец, если хотите, вы можете управлять PIC с существующими внешними часами.
Добавив немного больше деталей, ветви дерева снова разделяются, показывая восемь отдельных режимов. Каждому из них присвоено сокращенное название Microchip. Их стоит изучить сейчас, чтобы впоследствии упростить чтение таблицы. Давайте просканируем эти конкретные режимы слева направо. Первый — INTRC, что означает внутренний RC-генератор. Работающий на частоте около 31 кГц, это низкоскоростное устройство, встроенное в PIC.Хотя это довольно медленно по любым стандартам, у него есть то преимущество, что он прост и потребляет очень мало тока.
Следующий режим — INTOSC. Как и INTRC, он является внутренним (не требует внешних компонентов), но может работать на семи различных скоростях вплоть до 8 МГц. В некоторых PIC INTRC и INTOSC действительно независимы, но не в PIC16F88, который мы изучаем. По этой причине в таблице данных авторы иногда используют INTRC для обозначения только INTRC, а в других случаях для обозначения INTRC или INTOSC.Это только усугубляет путаницу, поэтому здесь я оставлю имена отдельно.
В любом из этих режимов линию порта A.6 можно настроить так, чтобы она следила за часами, разделенными на четыре, если это необходимо. Это обозначается символом φ / 4 — читается как «фи, деленная на четыре». Используйте этот выход, если вы хотите синхронизировать какое-то внешнее устройство с микроконтроллером. Если вам интересно, в даташите этот режим называется INTIO1. В противном случае вы можете дополнительно освободить контакт A.6 для обычного цифрового ввода / вывода, называемого режимом INTIO2.
Переходя к режимам внешнего RC, первый называется просто RC.В этом случае внешний резистор и конденсатор на выводе A.7 запускают работу. Предполагая, что источник питания +5 В, резистор должен находиться в диапазоне от 3 кОм до 100 кОм, а емкость должна быть больше 20 пФ. При наименьших значениях максимальная частота составляет около 4 МГц. Как мы видели с внутренними часами — при желании — A.6 можно заставить следовать φ / 4 (это режим RC) или же быть бесплатным для обычного использования (это RCIO). Между прочим, резистор может быть потенциометром, подключенным как реостат, который даст вам переменные часы.
Кристаллы и керамические резонаторы привлекательны тем, что они намного более точны как в краткосрочной, так и в долгосрочной перспективе, а также в отношении допусков и температуры. Здесь есть три режима. Первый, LP, что означает малое энергопотребление, предназначен для использования с кварцевым камертоном 32,768 кГц. Они обычно появляются в наручных часах и часах реального времени. Кристалл и связанные с ним нагрузочные конденсаторы подключаются к контактам A.6 и A.7. Следующий режим, называемый XT, аналогичен, но предназначен для использования с более высокочастотными кристаллами и резонаторами примерно до 4 МГц.Последний режим — HS — обозначает высокую скорость — и необходим для кристаллов или резонаторов, работающих на частотах выше 4 МГц. Просто чтобы вы знали, верхний предел для PIC16F88 составляет 20 МГц. Что интересно в этих трех режимах, так это то, что микросхема автоматически выбирает правильный коэффициент усиления внутреннего драйвера для кристалла в зависимости от того, указываете ли вы LP, XT или HS.
Последний режим — ECIO, который просто позволяет подавать внешний тактовый сигнал на вывод A.7. Это может происходить от любой схемы часов, которая выдает прямоугольные импульсы, колеблющиеся от земли до напряжения питания.
Немного забегая вперед к экспериментам, Рисунок 6 показывает задействованное оборудование. Мы увидим, как включить любой из этих восьми режимов буквально через мгновение, но сначала давайте взглянем на параметры вторичных часов.
Вторичные часы
На рисунке 2 показана ветвящаяся древовидная диаграмма для доступных вторичных часов. Напомним, что при определенных обстоятельствах любой из них может выполнять функции основных часов. В таблице данных рекомендуется сгруппировать их в категории RC_RUN и SEC_RUN, но обе указывают на вторичную синхронизацию.
РИСУНОК 2. Три режима для вторичных часов.
Есть два варианта RC_RUN. Могут использоваться внутренние часы INTRC или INTOSC, описанные ранее; единственная разница в скорости колебаний.
Или, при желании, вы можете присоединить кристалл 32,768 кГц и нагрузочные конденсаторы к B.6 и B.7. Что в этом такого крутого, так это то, что кристалл часов всегда работает — даже когда вы переводите чип в так называемый спящий режим.Этот режим, обозначенный как T1OSC, идеально подходит для приложений часов реального времени. (Обычно PIC отключает неиспользуемые часы при переходе в спящий режим).
Обратите внимание, что первичные тактовые генераторы используют A.6 и A.7 в различных комбинациях, а вторичные тактовые частоты — нет — по крайней мере, для PIC16F88. Схема на рис. 7 (для одного из предстоящих экспериментов) показывает, что здесь задействовано.
На этом мы закончили обзор первичных и вторичных часов. Почему бы не потратить несколько минут на изучение Рисунков 1 и 2 еще раз, чтобы действительно зафиксировать различия и детали в своем уме, прежде чем продолжить.
Как сделать свой выбор
Итак, вы определились, какие часы вам нужны. Теперь, как вы выразите свои пожелания КВС? Ответ кроется в битах конфигурации и трех специальных регистрах. Биты конфигурации устанавливаются во время фазы записи (мигания или программирования), в то время как биты регистра доступны во время выполнения. Вот сенсация.
На рисунке 3 показаны два набора битов конфигурации в PIC16F88. (У более простых PIC есть только один набор.) Да, здесь много всего, но когда дело доходит до настройки часов, нас беспокоит лишь небольшая часть. Например, три бита, обозначенные FOSC, обозначают первичный генератор, как описано ранее. Другими словами, они устанавливают поведение по умолчанию при включении питания.
РИСУНОК 3. Конфигурационные биты устанавливаются при записи PIC.
Во втором наборе битов конфигурации вы найдете два, которые управляют тем, что произойдет, когда вы переключитесь с первичной на вторичную частоту или наоборот.Мы сохраним это для следующего раздела.
После запуска программы вы можете управлять часами (или часами) различными способами, изменяя регистры OSCON, OSCTUNE и T1CON. Они показаны на Рисунок 4 . Давайте вдумаемся в подробности.
РИСУНОК 4. Эти регистры могут быть изменены во время выполнения.
Возможно, наиболее важными битами в OSCON являются те, которые помечены как IRCF, что означает частоту внутреннего RC-генератора. Как следует из названия, эти биты выбирают желаемую тактовую частоту внутреннего генератора (ов).Далее идут два бита SCS, обозначающие выбор системных часов. Здесь вы можете выбрать использование основных или дополнительных часов. Неудивительно, что регистр OSCTUNE позволяет точно настроить тактовую частоту INTRC или INTOSC. (На некоторых PIC затрагивается только INTOSC.) Все, что требуется, — это шестибитное дополнительное число до двух. Отрицательные числа замедляют ход часов, а положительные — ускоряют. Возможна настройка в диапазоне ± 12,5%.
Регистр T1CON занимается управлением таймером 1, который обычно синхронизируется внешним 32.Кристалл 768 кГц, который также может выполнять двойную функцию как системные часы. Вы, возможно, помните это как режим T1OSC из , рис. 2, . Важным флагом здесь является T1OSCEN, который включает кварцевый генератор Таймера 1.
На этом этапе мы познакомились с основами синхронизации PIC для наиболее распространенных ситуаций. В заключение давайте кратко рассмотрим вторичные часы и то, для чего они нужны.
Переключение часов
Может наступить день, когда вы захотите выйти за рамки простого включения основных часов и позволить им делать свое дело.Если да, то вам нужно немного узнать о переключении часов. Рисунок 5 дает общую картину. По сути, вы можете вручную переключаться между основными и дополнительными часами или делать это автоматически при определенных условиях.
РИСУНОК 5. Тактовые генераторы можно переключать между первичным и вторичным режимами.
Чтобы вручную переключиться с одного на другой, вы вернетесь к , рис. 4 , и вам просто нужно изменить несколько битов в трех описанных здесь регистрах.Например, чтобы перейти с INTRC на INTOSC, вы должны настроить биты с IRCF0 до IRCF2 по мере необходимости. Или, чтобы перейти от кварцевого генератора, скажем, к INTOSC, перейдите к SCS0 и SCS1, которые позволяют переключаться с первичного на вторичный. Вы уловили идею; переключение осцилляторов вручную — это всего лишь вопрос битрейта в вашей программе.
А как насчет автоматических переключений? Что ж, есть две ситуации, когда одни часы заменяют другие. Первый — это отказоустойчивый механизм.Представьте, что вы разрабатываете схему для работы в критических условиях, например, в медицине или при мониторинге промышленной безопасности. Если бы первичный генератор был, например, кристаллом, и он по какой-то причине вышел из строя, то PIC просто остановился бы. Нехорошо! С дополнительными часами в крыльях микросхема могла переключаться на нее почти без проблем и продолжать работать до тех пор, пока исходная неисправность не будет устранена. Как показано на рис. 5 , функция отказоустойчивости может проверять наличие проблем с любым из четырех режимов кристалла (LP, XT, HS или T1OSC).Он активируется битом FCMEN в CONFIG2.
Если важно избежать задержек, то может оказаться полезным двухскоростной пробуждение. Вот основная идея. Предположим, вы управляете схемой на кристалле. Как вы, наверное, знаете, кварцевым генераторам требуется мгновение или два, чтобы нагреться. PIC понимает это и терпеливо ждет немного, прежде чем позволить часам начать передавать инструкции по конвейеру. Другими словами, ваш проект просто сидит без дела несколько мгновений.С другой стороны, внутренние генераторы INTRC и INTOSC по существу включаются мгновенно. Так почему бы не выбрать один из них в качестве дополнительных часов?
Теперь последовательность будет такова, что внутренний осциллятор обрабатывает все (возможно, с меньшей скоростью, но, по крайней мере, он движется!), Пока кристалл не будет готов принять на себя камин системных часов. Переключение происходит автоматически, и нет мертвого времени, когда ничего не происходит.
Когда это нужно? Как указывалось ранее, PIC поддерживают команду сна.При выполнении энергоемкий компонент отключается, и микросхема простаивает с очень низким током. В частности, любой кристалл, используемый в качестве основных часов, останавливается. Различные сигналы, такие как сброс, прерывание или что-то, что называется сторожевым таймером, могут снова разбудить микросхему. Если вы хотите мгновенного действия, пока кристалл набирает обороты, подумайте об только что описанном двухскоростном пробуждении. Чтобы включить этот ответ, перейдите к биту IESO в CONFIG2.
Эксперименты
На этом мы рассмотрели основы синхронизации PIC.Есть и другие тонкости, о которых вы можете позаботиться позже, и для этого предназначены таблицы данных. На этом этапе вы, по крайней мере, сможете справиться с наиболее распространенными ситуациями и будете в гораздо лучшей форме, чтобы на самом деле прочитать эту чертову штуку!
Чтобы по-настоящему закрепить то, что вы узнали, вам предлагается попробовать дюжину экспериментов пекаря, описанных на боковой панели ниже. Вы будете буквально учиться на практике. На рисунках 6 и 7 изображена настройка оборудования, в то время как программное обеспечение PIC16F88 обслуживается исходным кодом, доступным в файлах загрузки по ссылке на статью.Программы написаны на бесплатном языке Great Cow Basic с открытым исходным кодом, но легко переносятся на PICBasic и другие языки. В каждом эксперименте исходный код включает множество комментариев, которые помогут вам, а также описывает, что делать, чтобы интерпретировать результаты.
Попробуйте и убедитесь сами, что синхронизация PIC далеко не так ужасна, как вы когда-то могли подумать! NV
Файл загрузки для этой статьи содержит исходный код для 13 экспериментов с использованием распространенного и недорогого микроконтроллера PIC16F88.В упражнениях демонстрируются все различные режимы часов. Программы хорошо документированы и содержат инструкции о том, как их настроить и что искать. Аппаратное обеспечение для экспериментов с 1 по 12 изображено на , рис. 6, , а , рис. 7, показывает, что необходимо для эксперимента 13.
РИСУНОК 6. Вот детали оборудования для основных часов.
В экспериментах 2, 4 и 6 используйте осциллограф или частотомер для контроля φ / 4.Во всех случаях мигает светодиод, чтобы ПОС чем-то занялся.
РИСУНОК 7. В режиме T1OSC в качестве временной развертки используется часовой кристалл.
Список экспериментов
# | Иллюстрированный элемент | Исходный код |
---|---|---|
1 | INTRC, A.6 бесплатно | INTRC.GCB |
2 | INTRC, A.6 следует за φ / 4 | INTRC.GCB |
3 | INTOSC, A.6 бесплатно | INTOSC.GCB |
4 | INTOSC, A.6 следует φ / 4 | INTOSC.GCB |
5 | RCIO, A.6 свободный | RC-RCIO.GCB |
6 | RC, A.6 следует за φ / 4 | RC-RCIO.GCB |
7 | LP, низкое энергопотребление, кристалл 32,768 кГц | LP.GCB |
8 | XT, кристалл средней мощности 4 МГц | XT.GCB |
9 | HS, высокая скорость 19.6608 МГц кристалл | HS.GCB |
10 | ECIO, таймер 555 внешние часы | ECIO.GCB |
11 | Failsafe, выдерните кристалл и посмотрите, как INTOSC захватит | FAILSAFE.GCB |
12 | Переключение с вторичного на первичный при сбросе | ПЕРЕКЛЮЧАТЕЛЬ.GCB |
13 | T1OSC как вторичные часы | T1OSC.GCB |
PIC18F2550 Назначение выводов микроконтроллера, конфигурация, характеристики, спецификации и техническое описание
« PIC » — это популярная серия микроконтроллеров от MICROCHIP, а PIC18F2550 — один из популярных микроконтроллеров семейства «PIC18F».PIC18F2550 — это высокопроизводительный усовершенствованный USB-микроконтроллер с флеш-памятью и технологией NANO-Watt. Это 8-битный микроконтроллер, популярный среди производителей и инженеров благодаря своим характеристикам и невысокой стоимости. PIC18F2550 поставляется в различных пакетах, таких как DIP, QPF и QPN, и может быть выбран в соответствии с требованиями проекта.
PIC18F2550 Конфигурация выводовЭто 28-контактная ИС, как показано на схеме контактов PIC18F2550 . У контроллера так много функций, что производитель не может предоставить контакты ввода-вывода для каждой из них.Так много контактов контроллера имеют несколько функций. Эти функции отключены по умолчанию и могут быть включены путем программирования. Ниже мы кратко опишем функции каждого вывода.
Номер контакта | Имя контакта | Описание |
1 | MCLR / VPP / RE3 | MCLR: Вход Master Clear (RESET) VPP: вход напряжения программирования RE3: Контакт ввода / вывода PORTE, PIN 3 |
2 | RA0 / AN0 | RA0: Контакт ввода / вывода PORTA, PIN 0 AN0: Аналоговый вход 0 |
3 | RA1 / AN1 | RA1: контакт ввода / вывода PORTA, PIN 1 AN1: Аналоговый вход 1 |
4 | RA2 / AN2 / VREF- / CVREF | RA2: контакт ввода / вывода PORTA, PIN 2 AN2: Аналоговый вход 2 VREF-: вход опорного напряжения аналогово-цифрового преобразования (низкий) CVREF: опорный выход аналогового компаратора |
5 | RA3 / AN3 / VREF + | RA3: Контакт ввода / вывода PORTA, PIN 3 AN3: Аналоговый вход3 VREF +: вход опорного напряжения A / D (высокий) |
6 | RA4 / T0CKI / C1OUT / RCV | RA4: контакт ввода / вывода PORTA, PIN 4 T0CKI: Вход внешнего тактового сигнала Timer0 C1OUT: выход компаратора 1 RCV: Вход RCV для внешнего USB-трансивера |
7 | RA5 / AN4 / SS / HLVDIN / C2OUT | RA5: Контакт ввода / вывода PORTA, PIN 5 AN4: Аналоговый вход 4 SS: вход выбора ведомого SPI HLDVIN: вход обнаружения высокого / низкого напряжения C2OUT: Выход компаратора 2 |
8 | VSS | Земля |
9 | OSC1 / CLKI | OSC1: Вывод генератора 1 CLKI: вход внешнего источника синхронизации |
10 | OSC2 / CLKO / RA6 | OSC2: Вывод 2 генератора CLKO: выход тактового сигнала RA6: Контакт ввода / вывода PORTA, PIN 6 |
11 | RC0 / T1OSO / T13CKI | RC0: контакт ввода / вывода PORTC, PIN 0 T1OSO: Выход генератора Timer1 T13CKI: Вход внешнего тактового сигнала Timer1 / Timer3 |
12 | RC1 / T1OSI / CCP2 / UOE | RC1: контакт ввода / вывода PORTC, PIN 1 T1OSI: Вход генератора Timer1 CCP2: захват 2 входа / сравнение 2 выходов / выход PWM2 UOE: Выход OE внешнего USB-трансивера |
13 | RC2 / CCP1 | RC2: контакт ввода / вывода PORTC, PIN 2 CCP1: захват 1 входа / сравнение 1 выхода / выход PWM1. |
14 | VUSB | VUSB: Внутренний USB-выход регулятора напряжения 3,3 В |
15 | RC4 / D- / VM | RC4: контакт ввода / вывода PORTC, PIN 4 D-: USB-дифференциальная минусовая линия (вход / выход) VM: Внешний USB-трансивер, вход VM |
16 | RC5 / D + / VP | RC5: контакт ввода / вывода PORTC, PIN 5 D +: дифференциальная плюсовая линия USB (вход / выход). VP: Внешний USB-трансивер, вход VP |
17 | RC6 / TX / CK | RC6: контакт ввода / вывода PORTC, PIN 6 TX: асинхронная передача EUSART CK: синхронные часы EUSART (см. RX / DT). |
18 | RC7 / RX / DT / SDO | RC7: контакт ввода / вывода PORTC, PIN 7 RX: асинхронный прием EUSART DT: синхронные данные EUSART (см. TX / CK). SDO: выход данных SPI |
19 | VSS | Земля |
20 | VDD | Положительный источник питания (+ 5 В) |
21 | RB0 / AN12 / INT0 / FLT0 / SDI / SDA | RB0: контакт ввода / вывода PORTB, PIN 0 AN12: Аналоговый вход 12 INT0: внешнее прерывание 0 FLT0: Вход неисправности расширенного ШИМ (модуль ECCP1) SDI: данные SPI в SDA: ввод / вывод данных I2C |
22 | RB1 / AN10 / INT1 / SCK / SCL | RB1: контакт ввода / вывода PORTB, PIN 1 AN10: Аналоговый вход 10 INT1: Внешнее прерывание 1 SCK: синхронный последовательный тактовый вход / выход для режима SPI SCL: синхронный последовательный тактовый вход / выход для режима I2C |
23 | RB2 / AN8 / INT2 / VMO | RB2: контакт ввода / вывода PORTB, PIN 2 AN8: Аналоговый вход 8 INT2: внешнее прерывание 2 VMO: Внешний USB-трансивер Выход VMO |
24 | RB3 / AN9 / CCP2 / VPO | RB3: контакт ввода / вывода PORTB, PIN 3 AN9: Аналоговый вход 9 CCP2: захват 2 входов / сравнение 2 выходов / выход PWM2 VPO: Внешний USB-трансивер, выход VPO |
25 | RB4 / AN11 / KBI0 | RB4: контакт ввода / вывода PORTB, PIN 4 AN11: Аналоговый вход 11 KBI0: Вывод прерывания при изменении |
26 | РБ5 / КБИ1 / PGM | RB5: контакт ввода / вывода PORTB, PIN 5 KBI1: вывод прерывания при изменении PGM: вывод разрешения программирования ICSP низкого напряжения |
27 | RB6 / KBI2 / PGC | RB6: контакт ввода / вывода PORTB, PIN 6 KBI2: вывод прерывания при изменении PGC: внутрисхемный отладчик и вывод синхронизации программирования ICSP. |
28 | РБ7 / КБИ3 / ПГД | RB7: контакт ввода / вывода PORTB, PIN 7 KBI3: вывод прерывания при изменении PGD: внутрисхемный отладчик и вывод данных программирования ICSP. |
PIC18F2550 — Упрощенные функции | |
ЦП | 8-бит |
Общее количество контактов | 28 |
Рабочее напряжение | +4.От 0 до +5,5 В (+ 5,5 В является абсолютным максимумом) |
Количество программируемых контактов ввода / вывода | 24 |
Коммуникационный интерфейс | Последовательный интерфейс USB (15,16 контактов) [Может использоваться для программирования этого контроллера] Главный / подчиненный последовательный интерфейс SPI (7,18,21,22PINS) [Может использоваться для программирования этого контроллера] Программируемый последовательный порт UART (17,18 контактов) [Может использоваться для программирования этого контроллера] Двухпроводной последовательный интерфейс (21,22PINS) [Может использоваться для подключения периферийных устройств, таких как датчики и ЖК-дисплеи] |
Модуль АЦП | 10 каналов, разрешение 10 бит АЦП |
Модуль таймера | Один 8-битный счетчик, Три 16-битных счетчика |
Аналоговые компараторы | 2 |
ШИМ каналов | 2 |
Внешний осциллятор | до 48 МГц |
Внутренний осциллятор | Откалиброванный внутренний генератор от 32 кГц до 8 МГц |
Программная память Тип | Вспышка |
Программная память / Флэш-память | 32 Кбайт [10000 циклов записи / стирания] |
Частота процессора | 12 MIPS |
RAM память | 2 КБ |
Память EEPROM | 256 байт |
Сторожевой таймер | Программируемый сторожевой таймер с отдельным встроенным генератором |
Режимы энергосбережения | В наличии |
Рабочая температура | от -40 ° C до + 85 ° C (+85 — абсолютный максимум, -40 — абсолютный минимум) |
PIC18F2455
PIC18F2550 СемьяPIC18F4455, PIC18F4550
Краткая информация о PIC18F2550PIC18F2550 — один из самых дешевых микроконтроллеров на рынке, с которым можно работать. В Интернете доступно множество учебных пособий и поддержки для начинающих.Контроллер имеет 32 Кбайт флеш-памяти, чего достаточно для многих приложений. Наряду с 24 программируемыми контактами ввода / вывода, он может легко взаимодействовать со многими периферийными устройствами. Благодаря сторожевому таймеру для автоматического сброса при ошибке контроллер можно использовать в системах без вмешательства человека. Имея функцию интерфейса USB, вы можете без проблем связываться с контроллером с любого ПК. Со многими сложенными функциями дополнительно способствует использованию микроконтроллера PIC18F2550 .
Как использовать микроконтроллер PIC18F2550PIC18F2550 используется как любой другой микроконтроллер.Микроконтроллеры не похожи на цифровые ИС, поскольку для цифровых ИС все, что вам нужно, — это подключить питание, чтобы оно работало. Перед тем, как микросхема заработала, необходимо было программировать микроконтроллер. Поэтому для работы PIC18F2550 сначала необходимо сохранить правильный программный файл во FLASH-памяти контроллера. После подачи питания контроллер выполняет этот код, сохраненный во флэш-памяти, для создания ответа.
Весь процесс с использованием PIC18F2550 выглядит следующим образом:
- Список функций, которые будут выполняться PIC18F2550
- Запишите эти функции в «программное обеспечение IDE», используя поддерживаемый язык программирования.
(MPLAB IDE для ОС Windows [www.microchip.com/mplabx-ide-windows-installer]
(для этих MPLAB IDE вы можете использовать язык «C» для написания прикладной программы)
- После написания нужной программы скомпилируйте для устранения ошибок с помощью IDE.
- После успешной компиляции приложение IDE генерирует HEX-файл для написанной программы.
- Выберите устройство программирования (обычно «PIC kit 3»), которое устанавливает связь между ПК и PIC18F2550.
- Запустите программу дампа файла HEX, которая связана с выбранным устройством программирования.
- Выбираем в программе соответствующий HEX файл.
- Запишите HEX-файл (сгенерированный для написанной программы) во флэш-память PIC18F2550 с помощью этой программы.
- Отключите программатор и подключите соответствующие периферийные устройства для контроллера.
После подключения питания контроллер выполняет этот шестнадцатеричный код (или машинный код), сохраненный в памяти, и выполняет задачи в соответствии с инструкциями.
2D МодельТермометр | Встроенная лаборатория
Последний проект Lucky Resister связан с интеллектуальным датчиком температуры на базе Arduino и контроллером вентилятора с широтно-импульсной модуляцией (ШИМ).Он может одновременно контролировать температуру окружающей среды с помощью двух датчиков DHT22 и управлять скоростью двух вентиляторов с минимальным шумом и на минимально возможной скорости, которая достаточно хороша для поддержания температуры на желаемом уровне. В проекте также используется щит регистратора данных Adafruit, который содержит микросхему часов реального времени и слот для SD-карты, для записи показаний датчиков вместе с отметками времени. ЖК-дисплей I2C обеспечивает приятный пользовательский интерфейс и отображает время, показания температуры и состояние вентиляторов.
Контроллер вентиляторов Arduino
Дисплеи на органических светодиодах (OLED) — самые крутые дисплеи из когда-либо созданных. Ознакомьтесь с инструкциями по созданию OLED-часов , управляемых Arduino, , которые используют модуль DS3231 RTC для точного отсчета времени. DS3231 — это недорогие, чрезвычайно точные часы реального времени (RTC) I2C со встроенным кварцевым генератором с температурной компенсацией (TCXO) и кварцевым резонатором.В проекте используется аккумуляторная батарея для точного хронометража во время сбоя питания. Реализация интерактивной системы меню, в которой осуществляется навигация с помощью двух тактовых переключателей, установка времени становится удобной. Модуль DS3231 использует встроенный датчик температуры для компенсации дрейфа часов из-за колебаний температуры, что помогает поддерживать точность до 1 или 2 минут в год. По умолчанию температура измеряется и обновляется DS3231 каждые 64 секунды. Тем не менее, с помощью программного обеспечения можно обновлять показания температуры и регулировку осциллятора со скоростью 5 раз в секунду.Измерения температуры также отображаются на экране часов OLED. Автор использует графическую библиотеку Adafruits для управления OLED-дисплеем с контроллером SSD1306.
Часы Arduino OLED
Эти цифровые часы DIY с термометром разработаны Джо Фарром и основаны на микроконтроллере PIC18F25K22. Полная информация о конструкции этого проекта, включая принципиальные схемы, макеты печатных плат и прошивку PIC, размещена на его веб-сайте.Он разработал свою прошивку с использованием компилятора Proton PIC BASIC, который доступен для бесплатной загрузки для этого конкретного микроконтроллера PIC. Он использует DS1302 RTC для хронометража и DS18B20 для измерения температуры. Температура и время отображаются на четырех 2-дюймовых семисегментных светодиодных дисплеях.
PIC часы и термометр
В этом беспроводном термометре на базе Arduino используются две платы Arduino для измерения температуры в помещении и на улице.Наружная плата Arduino отправляет наружную температуру, измеренную датчиком DS18B20, на внутреннюю плату Arduino с помощью недорогих радиочастотных модулей передатчика и приемника 433 МГц. Затем внутренняя плата Arduino отображает температуру в помещении и на улице на символьном ЖК-дисплее.
Arduino термометр для помещений / для улицы
В Уроке 3 мы узнали, как использовать каналы АЦП chiKIT для считывания внешнего аналогового напряжения и преобразования его в цифровое число.Мы также обсудили сопряжение стандартного символьного ЖК-дисплея на базе Hitachi 44780 с платой chipKIT Uno32 в Учебнике 4. Теперь пришло время применить полученные знания, чтобы создать наше первое практическое приложение с использованием chipKIT, который представляет собой цифровой термометр. Поскольку температура не является электрической величиной, первое, что нам нужно, это преобразователь или датчик, чтобы преобразовать ее в электрический сигнал. В этом проекте мы будем использовать для этого датчик LM34, который преобразует температуру окружающей среды в аналоговое электрическое напряжение.Аналоговый выход датчика подается на канал АЦП на chipKIT Uno32, который затем обрабатывает сигнал и отображает температуру на ЖК-дисплее в градусах Цельсия и Фаренгейта.
Термометр цифровой проект
Подробнее
Режим внешнего тактового генератора— Справка разработчика
Режим внешнего тактового генератора позволяет микроконтроллеру PIC ® работать от внешнего сигнала логического уровня, который используется в качестве источника системного синхросигнала.Когда выбран этот режим, сигнал подается на вывод OSC1. Вывод OSC2 затем доступен для синхронизации того же синхросигнала или для использования в качестве вывода ввода-вывода общего назначения. Системные часы всегда обозначаются как Fosc в таблицах данных микроконтроллера PIC ® . Тактовая частота команд выводится из Fosc через делитель, чтобы обеспечить тактовую частоту команд Fosc / 4.
Тактовая частота команд может быть экспортирована через вывод OSC2, если бит CLKOUTEN установлен в слове конфигурации (показано в разделе ниже).
В режиме EC есть три режима мощности на выбор. Режим EC выбирается в регистре конфигурации. Три режима включают:
- ECH — режим повышенной мощности, 4–32 МГц
- ECM — режим средней мощности, 0,5 МГц — 4 МГц
- ECL — режим пониженного энергопотребления, менее 0,5 МГц
Таймер запуска генератора (OST) — это задержка, встроенная в устройство микроконтроллера PIC ® , позволяющая генератору стабилизироваться. OST определяет или считает 1024 колебания от кристалла или резонатора до вывода OSC1.
OST отключается при выборе режима EC. Следовательно, нет задержки в работе после сброса при включении питания (POR) или выхода из спящего режима. Поскольку микроконтроллер PIC ® полностью статичен, остановка входа внешнего тактового сигнала при сохранении питания приведет к остановке устройства с сохранением всех данных. После перезапуска внешних часов устройство возобновит работу, как если бы не прошло времени.
Внешний RC-генератор выбирается битами Fosc в регистре конфигурации.
Бит CLKOUTEN также находится в регистре конфигурации и обычно в том же регистре, что и биты Fosc.
Примечание: На более старых устройствах опция тактового сигнала может быть недоступна для внешних часов, и вывод OSC2 по умолчанию будет выводом ввода-вывода общего назначения.
Аналоговые часы с использованием OLED и PIC микроконтроллера
Мы собираемся построить этот проект в среде моделирования Proteus и использовать микроконтроллер PIC18F.Что касается программных компонентов, нам потребуются библиотека I2C, библиотека OLED и библиотека DS1307 RTC.
Если вы следите за моими блогами, то, возможно, знаете, что эти три библиотеки уже доступны и хорошо протестированы. Ниже приведены ссылки на предыдущие сообщения, на которые вы можете ссылаться, если хотите.
Дисплей OLED I2C с использованием микроконтроллера Microchip PIC
Часы реального времени (DS1307) Взаимодействие с микроконтроллером PIC
( Все мои новые проекты будут на GitHub, и я также пытаюсь перенести все предыдущие проекты на GitHub, чтобы их можно было поддерживать хорошо.)
Ниже приведены шаги по созданию аналоговых часов.
- Создайте маленький круг с очень маленьким радиусом, например 1
- Создайте большой круг с большим радиусом, но не превышайте размер экрана.
- Сделать часовые тики
- У нас 12 часов и 360 градусов, что означает, что 1 час равен 30 градусам.
- Мы будем использовать цикл for с шагом 30 градусов, чтобы рисовать маленькие линии, представляющие отметки для каждой часовой позиции.Это делает функция draw_clock_face .
- draw_clock_face Функция использует формулы синуса и косинуса для рисования 12 знаков длиной 5 в каждой часовой позиции.
- Отображение часов, минут и секундных стрелок
- Отображение времени с помощью стрелок очень похоже на отображение меток.
- Часовая стрелка должна быть очень маленькой, минутная — средней, а секундная — самой длинной.
- Данные из RTC считываются и преобразуются в десятичный формат из формата BCD, и эти данные передаются функции display_time.
- Выполнение этой функции посекундно приведет к анимационному эффекту перемещения секундной стрелки часов.
- В проекте мы назвали это значение на 500 мс, причиной этого являются цифровые часы, так как мы хотели отображать мигание двоеточия, которое длится полсекунды.