Даташит pic16f628 pdf ( datasheet )

Введение

DHT11 – это датчик температуры и влажности воздух, который использует один провод для передачи 40 бит данных. Первые 16 бит – это целая и дробная части значения влажности, следующие 16 бит – целая и дробная части значения температуры, и последние 8 бит – это контрольная сумма.

Чтобы DHT11 и микроконтроллер начали общаться друг с другом, их необходимо засинхронизировать. Чтобы засинхронизировать их, микроконтроллер посылает сигнал старта, который представляет собой импульс длительностью 20 мкс на выводе данных. После импульса, микроконтроллер ждет получения данных. В программе мы должны изменить направление вывода данных. Вы можете прочитать подробности о DHT11 в техническом описании. У вас может быть датчик, как в 4-выводном, так и в 3-выводном корпусе; но мы используем 3-выводную версию. Между этими версиями нет никакой разницы, а дополнительный вывод ни к чему не подключен.

Датчик температуры и относительной влажности воздуха DHT11

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 | Микроконтроллеры |

STM32F429 + IL9341 = LVGL, DOOM1

Tutorial

Продолжил поднимать элементы на своей плате и тестировать. Первым делом после того как запустился дисплей провел тест Lvgl графической библиотеки. Результаты показались удовлетворительным. Около 20 FPF. Иногда были просадки но в целом, без использования DMA и контроллера Chrom-ART, который есть на борту, получилось неплохо. ART использовать не получится, потомучто мой дисплей подключен по SPI интерфейсу. Это было не первое ограничение с которым я столкнулся на пути оптимизации с целью увеличения FPS.

Статья скорее надо рассматривать в образовательных или исследовательских целях. Я пришел к выводу, что если разрабатывать устройство то надо использовать все фичи. Получился такой испытательный стенд. На котором не работает Chrom-ART.

Newer Device Available PIC16F18444

Status: In Production

View Datasheet View Comparisons

Features:

  • Low voltage programming
  • Low speed Clock mode
  • Programmable BOR
  • 4MHz internal oscillator
  • Programmable VREF
  • 128 bytes of EEPROM
  • Data Memory
  • ICD

View More

  • ProgrammingServices Available
  • SamplingOptions
  • BuyNow

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip’s powerful PIC architecture into an 18-pin package and is upwards compatible with the PIC16F628, PIC16C62XA, PIC16C5X and PIC12CXXX devices. The PIC16F628A features 4MHz internal oscillator, 128 bytes of EEPROM data memory, a capture/compare/PWM, a USART, 2 Comparators and a programmable voltage reference that make it ideal for analog/integrated level applications in automotive, industrial, appliances and consumer applications.

For product comparison, please consider: PIC16F18444

  • Low voltage programming
  • Low speed Clock mode
  • Programmable BOR
  • 4MHz internal oscillator
  • Programmable VREF
  • 128 bytes of EEPROM
  • Data Memory
  • ICD

User Guides

  • Integrated Development Environments
  • Compilers
  • Programmers
  • Demo & Evaluation Boards
  • Code Examples

MPLAB X Integrated Development Environment (IDE) is an expandable, highly configurable software program that incorporates powerful tools to help you discover, configure, develop, debug and qualify embedded designs for most of Microchip’s microcontrollers, microprocessors and digital signal controllers. MPLAB X IDE works seamlessly with the MPLAB development ecosystem of

Available as free, unrestricted-use downloads, our award-winning MPLAB XC C Compilers are comprehensive solutions for your project’s software development. Finding the right compiler to support your device is simple:

  • MPLAB XC8 supports all 8-bit PIC and AVR microcontrollers (MCUs)
  • MPLAB XC16 supports all 16-bit PIC MCUs and dsPIC Digital

Fast programming, increased functionality, at the same price as its predecessor, the PICkit 3.

The MPLAB PICkit 4 now has Programmer-to-Go functionality for 8-bit, 16-bit and 32-bit PIC MCUs and dsPICs and also SAM MCU devices . The firmware update comes with MPLAB X IDE v5.30. AVR is expected soon!

The MPLAB PICkit 4 In-Circuit

The MPLAB ICD 4 In-Circuit Debugger/Programmer is Microchip’s fastest, cost-effective debugging and programming tool for PIC and SAM Microcontrollers (MCUs), dsPIC Digital Signal Controllers (DSCs), and CEC flash microcontrollers. This speed is provided by a SAME70 MCU with 300 MHz, 32-bit MCU with 2MB of RAM and a high-speed FPGA to yield

The MPLAB PM3 Universal Device Programmer is easy to use and operates with a PC or as a stand-alone unit, and programs Microchip’s entire line of PIC devices as well as the latest dsPIC DSC devices. When used standalone, data can be loaded and saved with the SD/MMC card (not included).

Сфера применения 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 В.

8-значная цифровая шкала — частотомер на PIC — PLJ-8LED-H

Частотомер c цифровой 8-значной шкалой PLJ-8LED-H можно использовать для измерения частот во многих устройствах. В качестве встраиваемого генератора и счётчика импульсов (цифровой шкалы с АПЧ генератора плавного диапазона) лучше применять для измерения частот в радиолюбительских трансиверах.

Измерение частоты происходит автоматически. Граница «frequency» для переключения между каналами — 60 МГц. Восьмиэлементный индикатор с изменяемой яркостью свечения отображает требуемый цифровой ряд. Значение последнего измерения сохраняется и может быть отображено при повторном включении.

Структурная схема цифрового частотомера, выполненного на микрочипе PIC16F648A, работает на высокой частоте — 2,4 ГГц, что дает возможность специфического управления входами, с алгоритмом без прерывания по таймеру. Частота меняется по времени от 0,01 до 1 с.

Три режима

Частотомер из Китая имеет один вход, но структурная схема цифрового частотомера поддерживает три режима измерения: низкочастотный, высокочастотный и автоматический. Режим двойного измерения IF позволяет менять значение смещения частот вверх и вниз, причём, независимо. Ненужные нули в начале и конце отображаемого результата подавляются.

Стабилизация точности измерений

Прибор для измерения частоты содержит управляемый кварцевый генератор (1,3 ГГц). Он имеет температурную компенсацию дрейфа опорной частоты — VC-TCXO. Стабильность равна 0,0025.

Вопросы при работе с приемо-передающей аппаратурой и ответы на них

  • К каким точкам подключается прибор? — К выходу гетеродина или любым контрольным точкам.
  • Не изменяет ли подключение частотомера на режим работы гетеродина? — У прибора высокий импеданс. Нагрузка минимальна.
  • Не создает ли счётчик помехи в трансивере при его установке на переднюю панель? — Уровень помех низок, но в случае обнаружения их влияния надо экранировать прибор или изменить его расположение.
  • Каковы причины нестабильности отображаемой частоты? — Пульсации на источнике питания или работающий мощный генератор вблизи.
  • Как отобразить частоту в сотни МГц? — Включить функцию LSD в меню.

Видеообзоры:

Частотомеры ТОП 4. Проблемы на низкой частоте!?Частотомеры ТОП 4. Проблемы на низкой частоте!?

Аппаратная часть

Первая умная вещь, которую стоит сделать при создании гаджета, это нарисовать его структурную схему. Это поможет вам увидеть, что вам необходимо, и как это реализовать. Ниже приведена структурная схема нашего термометра.

Структурная схема термометра на PIC16F628, DHT11 и LCD
(может показаться избыточным, составлять структурную схему для каждой мелочи, но это может быть полезно)

Мы хотим, чтобы DHT11 передавал данные микроконтроллеру.

Мы хотим, чтобы микроконтроллер обрабатывал данные и отображал их на LCD дисплее.

Мы хотим, чтобы у нас была возможность прошивать микроконтроллер через ICSP.

Принципиальная схема

Принципиальная схема разделена на блоки.

Принципиальная схема термометра на PIC16F628 и DHT11

Блок питания
Приводит входное напряжение к значению 5 вольт. Использует стабилизатор напряжения LM7805.
ICSP
Это 5-пиновый разъем, подключенный к выводам программирования микроконтроллера. Мы используем этот разъем для прошивки микроконтроллера.
DHT11
Это 3-пиновый разъем, к которому подключен датчик. Средний вывод подключен к микроконтроллеру для передачи данных.
MCU
Это PIC16F628, который принимает данные от DHT11 и выводит их на LCD дисплей.
Дисплей
LCD дисплей (2 строки по 16 символов), который показывает влажность и температуру воздуха.

Микроконтроллер у нас будет работать от внутреннего тактового генератора с частотой 4 МГц. Поэтому на схеме нам не нужен кварцевый резонатор.

Eagle сгенерировала нам следующий перечень элементов:

Термометр на PIC16F628 и DHT11. Перечень элементов
Позиционное обозначение Номинал Элемент Корпус Библиотека Лист
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

Теперь, когда мы разобрались с аппаратной частью, пришло время заняться программным обеспечением.

Заключение

Мы использовали микроконтроллер PIC16F628A совместно с датчиком DHT11 и отобразили значения температуры и относительной влажности воздуха на LCD дисплее. Вы можете, приложив немного усилий, преобразовать/подстроить код для какого-либо другого микроконтроллера. Программа занимает в микроконтроллере 32% памяти данных и 55% памяти программ. Это потому, что микросхема довольно низкого класса.

Разница между PIC16F628 и PIC16F628A в том, что версия с буквой «A» обладает внутренним тактовым генератором. Версия без буквы «A» нуждается во внешнем кварцевом резонаторе или RC цепи. Если вы покупаете PIC16F628, то убедитесь, что он с буквой «A». Другой контроллер является устаревшим.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий