Datasheet pic16lf628a-i/so — microchip даташит 8- бит микроконтроллеры (mcu) 3.5 кб 224 ram 16 i/o
Содержание
Введение
DHT11 – это датчик температуры и влажности воздух, который использует один провод для передачи 40 бит данных. Первые 16 бит – это целая и дробная части значения влажности, следующие 16 бит – целая и дробная части значения температуры, и последние 8 бит – это контрольная сумма.
Чтобы DHT11 и микроконтроллер начали общаться друг с другом, их необходимо засинхронизировать. Чтобы засинхронизировать их, микроконтроллер посылает сигнал старта, который представляет собой импульс длительностью 20 мкс на выводе данных. После импульса, микроконтроллер ждет получения данных. В программе мы должны изменить направление вывода данных. Вы можете прочитать подробности о DHT11 в техническом описании. У вас может быть датчик, как в 4-выводном, так и в 3-выводном корпусе; но мы используем 3-выводную версию. Между этими версиями нет никакой разницы, а дополнительный вывод ни к чему не подключен.
Датчик температуры и относительной влажности воздуха DHT11
Подробное описание
Производитель: Microchip
Описание: 8- бит микроконтроллеры (MCU) 3.5 Кб 224 RAM 16 I/O
Краткое содержание документа:PIC16F627A/628A/648A Data SheetFlash-Based, 8-Bit CMOS Microcontrollers with nanoWatt Technology 2009 Microchip Technology Inc.DS40044GNote the following details of the code protection feature on Microchip devices: · · · Microchip products meet the specification contained in their particular Microchip Data Sheet.
Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions. There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property. Microchip is willing to work with the customer who is concerned about the integrity of their code. Neither Microchip nor any other semiconductor manufacturer can g
Спецификации:
- Supply Voltage — Max: 5.5 В
- Supply Voltage — Min: 3 В
- Вид монтажа: Through Hole
- Встроенный в чип АЦП: нет
- Высота: 3.3 мм
- Длина: 22.86 мм
- Интерфейс: USART
- Количество линий ввода/вывода: 16
- Количество таймеров: 3
- Рабочее напряжение питания: 3 В … 5.5 В
- Рабочий диапазон температрур: — 40 C … + 85 C
- Размер ОЗУ: 224 B
- Размер ПЗУ данных: 128 B
- Размер памяти программ: 3.5 Кб
- Серия процессора: PIC16
- Тактовая частота максимальная: 20 МГц
- Тип корпуса: PDIP-18
- Тип памяти программ: Flash
- Упаковка: Tube
- Шина данных: 8 бит
- Ширина: 6.35 мм
- Ядро: PIC16
- RoHS: да
Принципиальная схема
Принципиальная схема разделена на блоки.
Принципиальная схема термометра на PIC16F628 и DHT11
- Блок питания
- Приводит входное напряжение к значению 5 вольт. Использует стабилизатор напряжения LM7805.
- ICSP
- Это 5-пиновый разъем, подключенный к выводам программирования микроконтроллера. Мы используем этот разъем для прошивки микроконтроллера.
- DHT11
- Это 3-пиновый разъем, к которому подключен датчик. Средний вывод подключен к микроконтроллеру для передачи данных.
- MCU
- Это PIC16F628, который принимает данные от DHT11 и выводит их на LCD дисплей.
- Дисплей
- LCD дисплей (2 строки по 16 символов), который показывает влажность и температуру воздуха.
Микроконтроллер у нас будет работать от внутреннего тактового генератора с частотой 4 МГц. Поэтому на схеме нам не нужен кварцевый резонатор.
Eagle сгенерировала нам следующий перечень элементов:
Позиционное обозначение | Номинал | Элемент | Корпус | Библиотека | Лист |
---|---|---|---|---|---|
C1 | 0.1uF | C-EU025-050X050 | C025-050X050 | rcl | 1 |
C2 | 100uF | CPOL-EUE2.5-5 | E2,5-5 | rcl | 1 |
C3 | 0.1uF | C-EU025-050X050 | C025-050X050 | rcl | 1 |
C4 | 100uF | CPOL-EUE2.5-5 | E2,5-5 | rcl | 1 |
C5 | 0.1uF | C-EU025-050X050 | C025-050X050 | rcl | 1 |
D1 | 1N4004 | 1N4004 | DO41-10 | diode | 1 |
IC2 | 7805TV | 7805TV | TO220V | linear | 1 |
IC3 | PIC16F628 | DIL18 | DIL18 | ic-package | 1 |
JP1 | ICSP | PINHD-1X5 | 1X05 | pinhead | 1 |
JP2 | 16×02 LCD | PINHD-1X16 | 1X16 | pinhead | 1 |
JP3 | DHT11 | PINHD-1X3 | 1X03 | pinhead | 1 |
R1 | 10K | R-EU_0204/7 | 0204/7 | rcl | 1 |
R2 | 5K | TRIM_EU-LI10 | LI10 | pot | 1 |
R3 | 4K7 | R-EU_0204/7 | 0204/7 | rcl | 1 |
S1 | Reset | TAC_SWITCHPTH | TACTILE-PTH | SparkFun | 1 |
X1 | 7-35vDC | W237-10 | W237-102 | con-wago-500 | 1 |
Теперь, когда мы разобрались с аппаратной частью, пришло время заняться программным обеспечением.
Варианты написания:
PIC16F628AI/P, PIC16F628A I/P
На английском языке: Datasheet PIC16F628A-I/P — Microchip 8- bit Microcontrollers (MCU) 3.5 Kb 224 RAM 16 I/O
37 предложений от 25 поставщиков
Микропроцессор PIC, Ядро 8bit, 3.5K-Flash 224B-SRAM 128B-EPROM, 20MHz, 3.0V…5.5V, -40°C…85°CМикроконтроллеры PIC (Peripheral Interface Controller) — это программируемые ППЗУ, имеют малое энергопотребление,…
РИВ ЭлектрониксРоссия | PIC16F628A-I/PMicrochip | 100 ₽ | Купить |
AliExpressВесь мир | 1 шт. PIC12F683-I/P PIC16F1827-I/P PIC16F505-I/P PIC16F627A-I/P PIC16F628-04/P PIC16F628A-I/P PIC16F630-I/P PIC16F648A-I/P DIP | 30 ₽ | Купить |
ТаймЧипсРоссия | PIC16F628AI/PMicrochip | по запросу | Купить |
ИнтерияРоссия и страны СНГ | PIC16F628A-I/P | по запросу | Купить |
Как прошивать микроконтроллер? С чего начать изучение?
Официальный программатор для семейств PIC – это PICkit V3, является наиболее распространенным. Программный код загружается в чип с помощью ПО, которое есть на диске, он идёт в комплекте с программатором. IDE имеет название MPlab. Является официальной средой разработки от производителя, между прочим, бесплатной. Для изучения устройств есть отличная книга на русском языке «Pic-микроконтроллеры. Полное руководство» автор её Сид Катцен. Кроме этой книги вы найдете огромное количество видео-уроков и текстовых материалов, которые вам помогут.
Применение микроконтроллеров PIC весьма широко, многие радиолюбители собирают металлоискатели и счетчики Гейгера на этих МК.
Виды микроконтроллеров PIC и их архитектура
Пожалуй, среди начинающих очень распространены микроконтроллеры пик младших моделей, а именно семейств:
- Pic10;
- Pic12;
- Pic16.
Эти микроконтроллеры 8-битные, при этом различают две архитектуры:
- Baseline с 10-битными инcтрукциями с 35-ю ассемблерными командами.
- Mid-range с 14-битными инструкциями и 35 или 49 команд на языке ассемблера в зависимости от конкретной модели.
В разработках радиолюбителей очень часто встречается модель 16f628. Конфигурация этого pic-микроконтроллера следующая, в нём есть:
- встроенный тактовый генератор может быть настроен на частоту 4 или 8 МГц;
- 18 ножек – портов, из которых 16 может использоваться для ввода-вывода данных, 2 задействованы под питание;
- возможность использовать кварцевый резонатор для работы на тактовых частотах до 20 МГц (тогда задействуют еще 2 ноги для него);
- буква F в маркировке говорит о памяти типа Flash, объёмом на 2048 слов;
- гарвардская архитектура, с 14-битными инструкциями, всего их 35 штук;
- длина машинного цикла 4 такта (1 действие выполняется за 4 такта кварцевого резонатор или внутреннего генератора);
- 224 байта ОЗУ;
- 128 байт EEPROM;
- USART – последовательный порт;
- внутренний источник опорного напряжения;
- питается от 3.3 до 5 В.
PIC16 имеют низкую цену и достаточно развитую аналоговую периферию, что и обеспечивает их популярность. При этом модели могут выпускаться в корпусах с количеством ножек от 18 до 40. Это позволяет делать более сложные системы, чем возможно на вышеприведенном примере.
Существуют и более мощные модели, например, 16-битные:
- PIC24x
- DsPIC30/33F – для цифровой обработки сигналов.
Они способны выполнять 16 MIPS (миллионов итераций в секунду), что обеспечивает весьма высокое быстродействие вашей системы при 2 при двухтактном машинном цикле, такая скорость обеспечивается частотой в 32 МГц. 40 MIPS достигается при 80 МГц соответственно.
32-битные микроконтроллеры PIC32MX имеют большую производительность и превосходящий объём памяти, если сравнивать с 16-битными моделями, и работают на частоте в 80 МГц.
Аппаратная часть
Первая умная вещь, которую стоит сделать при создании гаджета, это нарисовать его структурную схему. Это поможет вам увидеть, что вам необходимо, и как это реализовать. Ниже приведена структурная схема нашего термометра.
Структурная схема термометра на PIC16F628, DHT11 и LCD
(может показаться избыточным, составлять структурную схему для каждой мелочи, но это может быть полезно)
Мы хотим, чтобы DHT11 передавал данные микроконтроллеру.
Мы хотим, чтобы микроконтроллер обрабатывал данные и отображал их на LCD дисплее.
Мы хотим, чтобы у нас была возможность прошивать микроконтроллер через ICSP.
USART в PIC16F628A
Одна из самых больших вкусностей PIC16F628A – является последовательный порт. С его помощью контроллер можно сопрягать с компьютером, с другими контроллерами и различной периферией, его можно легко преобразовывать в другие интерфейсы RS-232/422/485. Его можно использовать как для постоянной связи с компьютером, так и только на стадии отладки. В данной статье рассмотрим простой пример связи микроконтроллера с компьютером.
Фото сопрягаемой платы
В качестве простого примера мы подключим контроллер к компьютеру со скоростью 9600 бод в асинхронном режиме. Для отображения принимаемой информации будем использовать LCD знакогенерирующий дисплей, а для отправки сообщения в компьютер всего одну кнопку.
Схема
На схеме виден микроконтроллер PIC16F628A, преобразователь интерфейса USART-RS232, знакогенерирующий 16×2 LCD дисплей, кнопка и немного обвязки. Конденсаторы C1-C4 по спецификации должны быть на 1 мкф, хотя, вполне хватит и 0,1 мкф.
Теперь рассмотрим регистры, которые отвечают за работу модуля USART:
Скорость обмена зависит от частоты используемого кварца Fosc и режима скоростного режима BRGH, вычисляется и устанавливается в регистре SPBRG. Также на значение регистра SPBRG влияет выбранный режим: асинхронный или синхронный (рассмотрен не будет). Значение регистра SPBRG вычисляется по формулам приведённым:
Или можно воспользоваться готовыми расчётами, для некоторых случаев, из таблице приведённой ниже:
Таблица скоростей
Из всего перечисленного в большинстве случаев интересен выбор скорости. Обычно используется асинхронный 8 битной режим без проверки целостности, который будет рассмотрен, или 9 битный режим с программной проверкой чётности.
Перейдём к программе, начнём с инициализации:
void low_init() { CMCON=0x07; // отключение компаратора TRISA=0x04; // кнопка подключена к RA2 TRISB = 0x06; // Биты 1 и 2 (RB1 и RB2), которые принадлежат Usart // 76543210 // TXSTA : CSRC TX9 TXEN SYNC --- BRGH TRMT TX9D TXSTA=0b00100000; // Asynch,8bits,tx enb // RCSTA : SPEN RX9 SREN CREN ADEN FERR OERR RX9D RCSTA=0b10010000; // Cont receive enb SPBRG=32; // asinhron BRGH=0 ->32;BRGH=1 ->129 for 9600 }
В данном примере используется 8 битная (TX9=0, RX9=0), асинхронная (SYNC=0), передача (TXEN=1) и приём (CREN=1) в низкоскоростном режиме (BRGH=0) со скоростью 9600 бод (SPBRG=32).
unsigned char getch_Usart(void)// Получение байта { while(!RCIF) // Устанавливается, когда регистр не пуст. continue; return RCREG; } void send_Usart(unsigned char c) // Отправка байта { while(TXIF!=1) // Устанавливается, когда регистр свободен {} TXREG = c; }
Функция getch_Usart ожидает прихода байта в порт, по его приходу возвращает его значение. Функция send_Usart ожидает, когда освободиться порт, после чего передаёт байт, далее возвращает управление программе. Следует помнить, что эти функции не вернут управление, пока не будут выполнены, и если будет выполняться ещё какое-либо действие необходимо предварительно проверять бит RCIF или TXIF, что бы исключить зависания прошивки.
void main() { unsigned char c,var=0; low_init(); InitLCD(); delay1000(250); send_Usart('O'); send_Usart('k'); send_Usart(13); while(1==1) { if(RCIF) { ShowChar(getch_Usart()); } if(BUTTON==0) { send_Usart(var+'0'); var++; if(var==10)var=0; delay1000(250); } } }
Вот основной код программы. В нём после инициализации контроллера и дисплея отправляется сообщение «Ok», далее прошивка зацикливается в главном цикле программы. В этом цикле отслеживаются всего два события: приход байта в USART с последующим выводом его на дисплей и нажатие кнопки, после которого контроллер отправляет цифру от 0 до 9, записанную в переменной var, после чего значение переменой увеличивается на единицу. Также для устранения дребезга кнопки и чтобы кнопка не заспамила порт добавлена задержка, примерно равная секунде.
Для отладки устройств на макетке или в устройствах, где штатно COM порт не предусмотрен, но есть USART – будет удобно применять отдельный RS232 – USART преобразователь.
RS232 – USART преобразователь
Alex_EXE | 04.12.2010 | Микроконтроллеры |
Программа
При установке компилятора XC8 вы также добавили и некоторые заголовочные и исходные файлы. В этом руководстве мы используем файлы библиотеки по работе с LCD, которые идут с компилятором XC8: XLCD.H и несколько исходных файлов. Чтобы всё немного упростить, я скопировал содержимое всех исходных файлов в один файл. На моей установке Ubuntu исходные файлы XLCD находятся в каталоге:
/opt/microchip/xc8/v1.34/sources/pic18/plib/XLCD
Там было 10 файлов, bysyxlcd.c, openxlcd.c, putrxlcd.c и т.д.. Я поместил содержимое всех этих файлов в один файл и назвал его my_xlcd.c. Этот файл теперь содержит все функции. Файлы my_xlcd.c и xlcd.h необходимо скопировать в каталог проекта (файл xlcd.h находился в каталоге /opt/microchip/xc8/v1.34/include/plib). Файл xlcd.h – это стандартный файл, который нуждается в небольшом редактировании. Нам необходимо изменить данные о подключении LCD к микроконтроллеру, чтобы они совпадали с нашей схемой:
Теперь связь между LCD дисплеем и микроконтроллером задана. С этими двумя файлами (my_xlcd.h и my_xlcd.c) больше ничего делать не требуется.
Далее основная программа. Она начинается с включения нескольких заголовочных файлов, битов конфигурации, определений, объявления переменных и функций:
Чтобы заставить LCD дисплей работать с нашим микроконтроллером, нам необходимо создать несколько функций задержек. В начале вашего файла XLCD.H говорится, что:
Пользователь должен обеспечить три функции задержки:
- обеспечивает задержку в 18 циклов;
- обеспечивает задержку в 15 мс;
- обеспечивает задержку в 5 мс.
Мы должны добавить еще и четвертую функцию задержки,
Ниже приведены функция инициализации LCD и функции задержек:
Далее на очереди функции подачи стартового сигнала, чтения байта и проверки ответа:
Чтобы узнать, когда микроконтроллер передает сигнал старта, и когда DHT11 закончил передачу своих 40 бит, нам нужна функция прерывания:
И наконец, основная часть программы:
Это был один из способов использования DHT11 совместно с PIC контроллером и LCD дисплеем.
Сфера применения PIC-микроконтроллеров
Как уже было сказано, семейство PIC16 очень любят радиолюбители. К тому же оно хорошо описано в большом количестве литературы. По количеству учебников с семейством PIC, на момент написания статьи, может посоревноваться только семейство AVR.
Давайте рассмотрим несколько схем с применением микроконтроллеров семейства PIC.
Таймер для управления нагрузкой на PIC16f628
Простейшая автоматика на микроконтроллерах PIC – это стихия 8-битного семейства. Их объём памяти не позволяет делать сложных систем, но отлично подходит для самостоятельного выполнения пары поставленных задач. Так и эта схема трёхканального таймера на Pic16f628, поможет вам управлять нагрузкой любой мощности. Мощность нагрузки зависит только от установленного реле/пускателя/контактора и пропускной способности электросети.
Настраивается прибор с помощью набора из 4-х кнопок SB1-SB4, на HG1 выводятся параметры, это дисплей типа LCD на 2 строки по 16 символов. В схеме используется внешний кварцевый резонатор на 4 МГц, а KV1 – это реле, с питанием катушки в 24 В, вы можете использовать любое реле, лишь бы оно подходило по напряжению катушки к вашему БП. МК питается от 5 В стабилизированного источника.
Вы можете использовать от 1 до 3 каналов в управлении нагрузкой, стоит только продублировать схему, добавив реле к выводам RA3, RA4 микроконтроллера.
Часы-будильник на МК PIC16f628A
Такие часы, согласно заявлениям разработчика, получились весьма точными, их погрешность весьма мала – порядка 30 секунд в год.
С незначительными переделками вы можете использовать любые 7-мисегментные индикаторы. Питаются от блока питания на 5В, при этом, при отключении от сети продолжают работать от батареек, что вы можете увидеть в правом верхнем углу схемы.
Регулятор мощности паяльника на PIC16f628A
У начинающих радиолюбителей не всегда есть возможность купить паяльную станцию. Но они могут собрать её сами. На схеме ниже представлен регулируемый блок питания на PIC16f628, для работы паяльника. В основу схемы вложено фазоимпульсное управление. Это, по сути, доработанный и осовремененный аналог классического тиристорного регулятора, но с микроконтроллерным управлением.
Схема довольно простая, в нижней части реализация светодиодной индикации. Главный силовой элемент – тиристор BT139, а MOC3041 – нужен для гальванической развязки МК от сети и управления тиристором с помощью логического уровня в 5 В.
Заключение
Мы использовали микроконтроллер PIC16F628A совместно с датчиком DHT11 и отобразили значения температуры и относительной влажности воздуха на LCD дисплее. Вы можете, приложив немного усилий, преобразовать/подстроить код для какого-либо другого микроконтроллера. Программа занимает в микроконтроллере 32% памяти данных и 55% памяти программ. Это потому, что микросхема довольно низкого класса.
Разница между PIC16F628 и PIC16F628A в том, что версия с буквой «A» обладает внутренним тактовым генератором. Версия без буквы «A» нуждается во внешнем кварцевом резонаторе или RC цепи. Если вы покупаете PIC16F628, то убедитесь, что он с буквой «A». Другой контроллер является устаревшим.