Datasheet pic16f628a-i/p — microchip даташит 8- бит микроконтроллеры (mcu) 3.5 кб 224 ram 16 i/o

Введение

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

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

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

Программа

При установке компилятора 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 – это PICkit V3, является наиболее распространенным. Программный код загружается в чип с помощью ПО, которое есть на диске, он идёт в комплекте с программатором. IDE имеет название MPlab. Является официальной средой разработки от производителя, между прочим, бесплатной. Для изучения устройств есть отличная книга на русском языке «Pic-микроконтроллеры. Полное руководство» автор её Сид Катцен. Кроме этой книги вы найдете огромное количество видео-уроков и текстовых материалов, которые вам помогут.

Применение микроконтроллеров PIC весьма широко, многие радиолюбители собирают металлоискатели и счетчики Гейгера на этих МК.

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

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

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

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

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

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

Подробное описание

Производитель: 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: да

Варианты написания:

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 по запросу Купить

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

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

Принципиальная схема термометра на 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

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

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

Виды микроконтроллеров PIC и их архитектура

Пожалуй, среди начинающих очень распространены микроконтроллеры пик младших моделей, а именно семейств:

  • Pic10;
  • Pic12;
  • Pic16.

Эти микроконтроллеры 8-битные, при этом различают две архитектуры:

  1. Baseline с 10-битными инcтрукциями с 35-ю ассемблерными командами.
  2. 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-битные:

  1. PIC24x
  2. DsPIC30/33F – для цифровой обработки сигналов.

Они способны выполнять 16 MIPS (миллионов итераций в секунду), что обеспечивает весьма высокое быстродействие вашей системы при 2 при двухтактном машинном цикле, такая скорость обеспечивается частотой в 32 МГц. 40 MIPS достигается при 80 МГц соответственно.

32-битные микроконтроллеры PIC32MX имеют большую производительность и превосходящий объём памяти, если сравнивать с 16-битными моделями, и работают на частоте в 80 МГц.

Заключение

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector