Разработка и описание работы устройства на PIC-контроллере
Однокристальные микроконтроллеры стремительно занимают ведущее место в электронной аппаратуре. И если каких-нибудь десять лет назад они могли быть использованы при проектировании только профессионалами тАФ слишком много требовалось дорогостоящих средств для их программирования, тАФ то сегодня ВлоднокристалкиВ» используют даже радиолюбители.
Именно микроконтроллер сегодня формирует облик бытовой аудиотехники, видеотехники, средств связи. С передних панелей радиоприемников, магнитол, телевизоров исчезли шкальные индикаторы, ручки настройки, ползунковые регуляторы, переключатели. Их заменили жидкокристаллические табло и кнопки. Десятки разнообразных микросхем, составляющих электронное ВлнутроВ» аппаратуры, должны согласованно функционировать, обеспечивая наилучшие технические характеристики и удобство эксплуатации. Решая задачу сопряжения цифровых устройств, разработчики компьютерной техники связали их между собой посредством шин, а способы передачи информации назвали протоколами и стандартизировали их основные принципы. Каждое устройство было снабжено интерфейсом, посредством которого стало возможным подключать его к шине.
Если говорить об аналоговой технике, то специализированные аналоговые микросхемы испокон веков имели уникальные собственные выводы для подключения элементов, с помощью которых устанавливались их рабочие режимы или осуществлялись регулировки в процессе эксплуатации. Объединять эти выводы с целью выполнения универсальной регулировки не представлялось возможным. Современные микросхемы, предназначенные для использования в новой аппаратуре, снабжены цифровым интерфейсом, ВлспряталиВ» настроечные выводы внутрь микросборок, а управлять их режимами программно.
Осуществлять управление одной микросхемой очень просто, для этого даже не всегда нужен внешний цифровой интерфейс. А если микросхем несколько, если они должны взаимодействовать друг с другом, обмениваться информацией? Решая эти вопросы, разработчики перспективных микросхем пришли к мысли о необходимости введения общей шины и протокола обмена информацией по ней. Известные по компьютерной технике шины оказались здесь совершенно негодными в силу своей сложности.
Для этих целей фирмой Philips была разработана шина Inter-Integrated Circuit Bus (сокращенно I2С). Принадлежа к классу шин с последовательным способом передачи данных, отличаясь чрезвычайной простотой реализации, шина стала быстро развиваться. Сегодня и другие фирмы, оценившие по достоинству возможности шины, поддерживают ее своей продукцией.
Темой данного курсового проекта, является разработка ВлТермометраВ» на основе микроконтроллера.
1 Составление схемы электрической структурной
На основании анализа схемы электрической принципиальной были выделены основные функциональные элементы, и разработана схема электрическая структурная, представленная на рисунке 1.1
Рисунок 1.1 - Схема электрическая структурная
Схема электрическая структурная содержит: микроконтроллер, контакты прерывателя, переключатель пределов, светодиодный индикатор, генератор тактовой частоты и источник питания.
Этот тахометр предназначен для использования при регулировке холостого хода карбюраторов двигателей внутреннего сгорания. Его можно применять и для контроля частоты вращения вала автомобильных или лодочных двигателей во время движения.
Тахометр имеет три разряда индикации с пределом измерения от 60 мин"1 до 7800 мин-1. Погрешность измерения на пределе 1 секунда равна 30 мин-1, а на пределе 3 секунды тАФ 10 мин-1. Нижний предел ограничен погрешностью измерения, а верхний тАФ количеством прерываний между индикацией. Из-за чего индикация разрядов становится прерывистой.
2 Составление схемы электрической функциональной
Схема электрическая функциональная представлена на рисунке 2.1
Рисунок 2.1 - Схема электрическая функциональная
3 Описание элементной базы
3.1 Резисторы
(номиналы см. принципиальную схему)
R3-R10 тАУ резисторы С2-23 не проволочные постоянного сопротивления, мощностью 0,125Вт с номинальными сопротивлениями R3-R9 430 Ом, R2 10 кОм с допуском В±10%. R1- не проволочный постоянного сопротивления, мощностью 0,5 Вт с номинальным сопротивлением 34 кОм.
3.2 Конденсаторы
С1 и С2 тАУ конденсаторы К10-17 керамические не полярные постоянной емкости с группой по ТКЕ тАУ Н90, с номинальным напряжением 25В, номинальной емкостью 30 пФ с допуском В±10%. C3 тАУ 0,01 мкФ.
3.3 Резонатор
ZQ тАУ кварцевый резонатор, работающий на частоте параллельного резонанса 32768 Гц.
3.4 Светодиодный индикатор АЛ304Г
АЛ304А, АЛ304Б, АЛ304В, АЛ304Г
Индикаторы знакосинтезирующие, на основе соединения арсенид тАУ фосфид тАУгаллий, эпитаксиально тАУ планарные [41, стр. 475 тАУ 478]. Предназначены для отображения цифровой информации. Индикаторы имеют 7 сегментов и децимальную точку. Выпускаются в пластмассовом корпусе. Высота знака 3 мм.
Масса прибора не более 0,25 г.
Рисунок 3.1 тАУ Структурная схема и монтажные размеры модулей
АЛ304Г: 1 тАУ катод e; 2 тАУ катод d; 3, 8 тАУ анод общий; 4 тАУ катод c; 5 тАУ катод h; 6 тАУкатод b; 7 тАУ катод a; 9 тАУ катод g; 10 тАУ катод f.
3.5 Диоды
VD1 тАУ стабилитрон КС147А Uст. = 4,23-5,17ВВаВаВаВаВаВа Iст. = 58мА, VD2 тАУ диод КД102.
Таблица 3.1- Электрические параметры КД102
Uоб/Uимп В/В | Iпр/Iимп А/А | Uпр/Iпр В/А | Io(25)Ioм мкА/мкА | Fmax кГц |
250/250 | 0.1/2 | 1.0/0.05 | 0.1/50 | 4 |
3.6 Микросхемы
3.6.1 Микроконтроллер PIC16F84
Контроллеры PIC16F84, как и все микроконтроллеры с торговой маркой PICmicroтДв основаны на развитой RISC-архитектуре. Они имеют расширенные опции ядра, восьмиуровневый стек и различные внутренние и внешние прерывания. 14-битные слова команд и 8-битные данные передаются независимо, по разделенным шинам памяти и данных. Большинство команд исполняется за один машинный цикл кроме команды переходов, которые исполняются за два цикла. Набор команд состоит из 35 инструкций с интуитивно понятной мнемоникой.
На кристалле расположены 64 байта EEPROM памяти констант с гарантированным сроком хранения данных более 40 лет при отключенном питании, до 68 байт памяти данных (рабочие регистры для хранения переменных). Кристаллы выпускаются с максимальными тактовыми частотами 4МГц и 10МГц, имеют 13 портов ввода/вывода, встроенный таймер/счетчик TMR0, сторожевой таймер WDT, экономичный режим засыпания SLEEP.
Тактовую частоту можно задавать при помощи RC-цепочки, недорогого керамического резонатора или кварцевого резонатора. Может быть подключен также внешний генератор тактовой частоты. Встроенного тактового генератора, тактирующего процессор, нет. От встроенного на кристалл RC-генератора могут тактироваться только таймер/счетчик TMR0 или сторожевой таймер, по выбору.
Варианты корпуса 18-pin DIP, SOIC.
Рисунок 3.2 - Расположение выводов PIC16F84
Таблица 3.2 - Назначение выводов PIC16F84
Обозначение | № | Тип (I/O/P) | Тип буфера | Назначение |
OSC1/CLKIN | 16 | I | ST/CMOS(3) | Вход для подключения кварцевого резонатора, либо RC-цепочки, либо вход для внешнего тактового генератора |
OSC2/CLKOUT | 15 | О | - | Выход для подключения кварцевого резонатора в режиме работы с кварцем, в ре- жиме RC-генератора на выходе присутствуют импульсы с частотой 1/4 от OSC1 |
MCLR | 4 | I/Р | ST | Сброс по низкому уровню на входе. При программировании кристалла - вход напряжения программирования |
RA0 RA1 RA2 RA3 RA4/T0CKI | 17 18 1 2 3 | I/O I/O I/O I/O I/O | TTL TTL TTL TTL ST | Выводы двунаправленного порта А RA4/T0CKI может быть настроен как вход импульсов для таймера-счетчика TMR0. Выход с открытым стоком |
RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 | 6 7 8 9 10 11 12 13 | I/O I/O I/O I/O I/O I/O I/O I/O | TTL/ST(1) TTL TTL TTL TTL TTL TTL/ST(2) TTL/ST(2) | Выводы двунаправленного порта В. К выводам порта могут быть программно подключены внутренние подтягивающие резисторы с Vdd. RB0/INT может быть также программно настроен как вход внешнего прерывания. RB4тАжRB7 могут быть также программно настроены как входы прерывания по изменению уровня на любом из этих входов. Направление изменения задается программно. При программировании кристалла RB6 используется как тактовый, RB7 как вход/выход данных. |
Vss | 5 | Р | тАФ | Общий провод |
Vdd | 14 | Р | тАФ | Положительное напряжение питания |
Обозначения: I - Вход, О - Выход, I/O - Вход/Выход, Р - вывод питания,
TTL - стандартный TTL вход, ST - вход с триггером Шмитта.
Примечания:
1. Триггер Шмитта на входе применяется, только если вывод сконфигурирован, как вход внешнего прерывания.
2. Триггер Шмитта на входе применяется только в режиме последовательного программирования кристалла.
3. Триггер Шмитта на входе применяется только если включен режим RC-генератора, в остальных случаях как CMOS вход.
Микроконтроллеры PIC16F84 могут программироваться непосредственно на плате устройства, что позволяет отлаживать программу либо записывать константы и калибровочные данные. Для программирования на плате необходимо максимум пять проводов: питание +5В, напряжение программирования, последовательные данные, тактирующие импульсы и общий. Память программ только встроенная.
Таблица 3.3 - Электрические параметры
Параметр | Значение | Примечание |
Рабочая температура Та,В°С | 0 .. +40 -40.. +85 | Коммерческое исполнение. Индустриальное исполнение |
Максимальная тактовая частота Fosc, МГц | 4 10 | PIC16F84-4 PIC16F84-10 |
Напряжение питания Vdd,B | 2,0.. 6,0 4,0.. 6,0 | PIC16LF84 PIC16F84 |
Потребляемый ток в стандартном режиме Idd, мА | 1,8 ..4,5 5.. 10 | Fosc=4 МГц, Vdd=5.5 В Fosc=10MГц, Vdd=5.5B |
Потребляемый ток в стандартном режиме Idd, мA | 1 ..4 15.. 45 | Fosc=2 МГц, Vdd=5.5 В Fosc=32 кГц, Vdd=2.0 В, WDT отключен |
Потребляемый ток в режиме SLEEP Ipd, мкА для PIC16F84 | 7.. 28 1 .. 16 1 .. 14 | Vdd=4 В, WDT вкл., инд. Vdd=4 В, WDT выкл., инд. Vdd=4 В, WDT выкл., комм. |
Потребляемый ток в режиме SLEEP Ipd, мкА для PIC16LF84 | 3.. 16 0,4 ..9 0,4.. 7 | Vdd=2 В, WDT вкл., инд. Vdd=2 В, WDT выкл., инд. Vdd=2 В, WDT выкл., инд. |
Максимальный втекающий ток для любого вывода, мА | 25 | Управление светодиодами без дополнительного буфера (но с резистором!) |
Максимальный вытекающий ток для любого вывода, мА | 20 | Управление светодиодами без дополнительного буфера (но с резистором!) |
Количество циклов стирание/запись для флэш-памяти программ, не менее | 1000 | |
Количество циклов стирание/запись для памяти данных EEPROM, не менее | 10.000.000 |
Организация памяти.
В микроконтроллерах PIC16F84 существует два блока памяти - память программ и память данных. Каждый блок имеет собственную шину, таким образом, доступ к блокам может происходить одновременно.
Память данных, в свою очередь, разделена на специальные регистры и регистры общего применения (ОЗУ пользователя). Специальный регистры применяются для хранения битов состояния, определяющих работу портов вода/вывода, таймеров и других периферийных модулей контроллера.
Кроме специальных регистров и ОЗУ, пространство памяти данных содержит ячейки EEPROM. Эта область памяти не может быть адресована непосредственно, и доступ к ней получают через специальный регистр косвенной адресации EEADR, в который записывают порядковый номер ячейки. 64 байта EEPROM имеют номера с 00h по 3Fh. Обычно EEPROM используется для хранения констант, значения которых не должны пропадать при отключении питания, например кодов управления, индивидуальных номеров и т.п. Важным достоинством EEPROM является то, что данные в ней могут быть изменены даже после занесения программы в однократно программируемый кристалл.
Память программ.
Микроконтроллеры PIC16F84 имеют 13-битный программный счетчик, позволяющий адресовать до 8К х 14 памяти программ. В PIC16F84 доступны первые 1024 (0000h-03FFh) ячеек памяти. Обращение к старшим адресам, лежащим за пределами указанного диапазона физически равносильно обращению к соответствующим адресам внутри диапазона, например, адреса 30h, 430h, 830h, C30h, 1030h, 1430h, 1830h и 1C30h равносильны и адресуют одну и ту же команду.
Старт по сбросу происходит с адреса 0000h, вектор прерывания один и расположен по адресу 0004h. Обычно по адресу 0004h располагают подпрограмма распознавания и обработки прерываний, а по адресу 0000h команду перехода на метку, расположенную за подпрограммой обработки прерывания.
Память данных.
В микроконтроллерах PIC16F84 память данных разбита на две части - специальные регистры и регистры общего применения (ОЗУ пользователя). Кроме этого, память данных разделена на два банка.
Таблица 3.4 - Организация памяти данных
Адрес | Адрес | ||
00h | Косвенный адрес | Косвенный адрес | 80h |
0lh | TMR0 | OPTION | 81h |
02h | PCL | PCL | 82h |
03h | STATUS | STATUS | 83h |
04h | FSR | FSR | 84h |
05h | PORTA | TRISA | 85h |
06h | PORTB | TRISB | 86h |
07h | Недоступен | Недоступен | 87h |
08h | EEDATA | EECON1 | 88h |
09h | EEADR | EECON2 | 89h |
0Ah | PCLATH | PCLATH | 8Ah |
0Bh | INTCON | INTCON | 8Bh |
0Ch 4Fh | 68 регистров общего применения (SRAM) | Отображается на пространство банка 0 | 8Ch CFh |
50h 7Fh | D0h FFh | ||
Банк 0 | Банк 1 |
Переключение банков происходит при помощи задания 5-го бита в регистре STATUS. Если бит установлен в 0, адресуется нулевой банк, если в 1, соответственно, первый.
Специальные регистры
Специальные регистры представляют собой статическое ОЗУ.
Регистр STATUS (Адрес 03Н, 81Н)
Регистр STATUS хранит арифметические флаги АЛУ, информацию о сбросе и бит выбора банка памяти данных.
bit7 IRP - регистр выбора банка памяти, применяемый при косвенной адресации. Это бит не применяется в PIC16F84 и должен всегда оставаться сброшенным.
Ва0 = bank 0,1 (00h-FFh)
Ва1 = bank 2,3(100h-1FFh)
bit6-5 RP1, RP0 - регистр выбора банка памяти, применяемый при прямой адресации.
Ва00 = bank 0 (00h-7Fh)
Ва01 = bank 1 (80h-FFh)
bit4 TO - флаг срабатывания сторожевого таймера. Устанавливается в 1 при включении питания и командами CLRWDT и SLEEP. Сбрасывается в 0 по завершении выдержки сторожевого таймера.
bit3 PD - режим хранения данных. Устанавливается в 1 при включении питания или выполнении команды CLRWDT. Сбрасывается в 0 командой SLEEP.
bit2 Z - флаг нулевого результата. Устанавливается в 1, если результат арифметической или логической операции равен нулю. Сохраняет свое значение до следующей операции.
bit1 DC - флаг десятичного переноса. Используется для команд ADDWF, ADDLW, SUBWF и SUBLW. Отслеживает перенос из четвертого разряда результата.
Ва1 = Произошел перенос при сложении
Ва0 = Не произошел перенос при сложении
ВаВычитание в АЛУ выполняется сложением кода первого операнда с дополнительным кодом второго операнда. Значение бита контекстно зависит от того, какая операция выполнялась. Для операции вычитания значения бита инвертированы.
bit0 С - флаг переноса. Используется для команд ADDWF, ADDLW, SUBWF и SUBLW. Отслеживает перенос из старшего разряда в бит переноса при сложении.
Ва1 = произошел перенос при сложении
Ва0 = не произошел перенос при сложении
ВаВычитание в АЛУ выполняется сложением кода первого операнда с дополнительным кодом второго операнда. Значение бита контекстно зависит от того, какая операция выполнялась. Для операции вычитания значения бита инвертированы.
Используя флаги ТО и PD можно определить, чем был вызван сброс.
TO | PD | Событие, вызвавшее состояние "сброс" |
1 | 1 | Сброс по включению питания |
0 | 1 | Сработал сторожевой таймер (не в режиме SLEEP) |
1 | 0 | Сброс по входу MCLR в режиме SLEEP или выход из SLEEP по внешнему прерыванию |
0 | 0 | Выход из SLEEP по сигналу сторожевого таймера |
X | X | Сброс по входу MCLR в обычном режиме |
х - состояние битов не изменилось. Сброс по входу MCLR в обычном режиме не меняет текущие значения битов ТО и PD.
Регистр OPTION_REG (АДРЕС 81Н)
Специальный регистр OPTION_REG представляет собой полностью доступный для записи и чтения регистр, в котором находятся биты, управляющие работой предварительного делителя, источниками внешних прерываний, встроенным таймером TMR0 и подтягивающими резисторами для порта В.
bit7 RBPU - включение встроенной нагрузки порта В
Ва1 = нагрузка отключена
Ва0 = нагрузка включена
bit6 INTEDG - выбор фронта прерывающего сигнала
Ва1 = прерывание по нарастанию сигнала на выводе RB0/INT
Ва0 = прерывание по спаду сигнала на выводе RB0/INT
bit5 TOGS - выбор источника тактирования для таймера TMR0
Ва1 = импульсы со входа RA4/T0CKI
Ва0 = внутренняя тактовая частота (CLKOUT)
bit4 T0SE - выбор фронта сигнала для таймера TMR0, если в качестве источника выбран вход RA4/T0CKI (T0CS=l)
Ва1 = инкремент по спаду на выводе RA4/T0CKI
Ва0 = инкремент по нарастанию на выводе RA4/T0CKI
bit3 PSA - бит, управляющий подключением предварительного делителя
Ва1 = предварительный делитель подключен к WDT
Ва0 = предварительный делитель подключен к TMR0
bit2-0 PS2-PS0 - управление коэффициентом деления предварительного делителя в зависимости от подключения
Биты | для TMR0 | для WDT |
000 | 1:2 | 1:1 |
001 | 1:4 | 1:2 |
010 | 1:8 | 1:4 |
011 | 1:16 | 1:8 |