курсовой проект / СИНТЕЗАТОР ЧАСТОТЫ / Курсовик
.pdfВсе МК имеют:
-Диапазон тактовой частоты 0...20МГц.
-Одинаковое ядро.
-35 простых инструкций.
-Режим энергосбережения SLEEP.
-POR (Power On Reset) - сброс по подаче питания (при достижении Vddmin).
-OST (Oscillator Start-up Timer) - удерживает МК в состоянии сброса на время запуска и стабилизации тактового генератора.
-BOD или BOR (Brown-out Detect или Brown-out Reset) - детектор снижения
Vdd с настраиваемым порогом.
-WDT (Watchdog Timer) - сторожевой таймер с настраиваемым периодом.
-Микроконтроллеры PIC16F873…877 могут программировать свою память программ в процессе работы.
-Все 8-ми и 14-ти выводные МК, кроме режимов генератора, типичных для всех PIC16, имеют встроенный стабильный (1%) тактовый RC генератор.
Все микроконтроллеры серии PIC16F87X обладают одинаковым быстродействием, но различны по объему памяти данных и программ. Так как в процессе эксплуатации может возникнуть необходимость увеличения количества выполняемых функций, то из приведенного ряда микроконтроллеров предпочтительнее те у которых больший объем памяти программ. Этому критерию удовлетворяют микроконтроллеры PIC16F876 и PIC16F877. Микроконтроллер PIC16F877 имеет ряд избыточных характеристик не применимых в данном устройстве (8 каналов АЦП, 14 каналов прерываний) и его применение не целесообразно по экономическим соображениям.
Следовательно, по функциональным, экономическим и конструктивным условиям для устройства синтезатор частоты наиболее подходит восьмиразрядный микроконтроллер PIC16F876.
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|
4 ОПИСАНИЕ МИКРОКОНТРОЛЛЕРА
4.1 Цоколевка, наименование и назначение выводов микроконтроллера PIC16F876. Режим питания микроконтроллера.
Рисунок 6 - Цоколевка микроконтроллера PIC16F876. DIP корпус. Таблица 2 – Назначение выводов микроконтроллера PIC16F876
|
|
Обозначение выводов |
|
№ вывода |
Тип |
Описание выводов |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
2 |
3 |
4 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OSC1/CLKIN |
|
9 |
O |
Вход генератора/ выход внешне- |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
го тактового сигнала |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OSC2/CLKOUT |
|
10 |
I/P |
Выход генератора |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MCLR/VPP |
|
1 |
I/O |
Двунаправленный порт ввода/ |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
вывода PORTA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RA0/AN0 |
|
2 |
I/O |
RA0 может быть как аналоговый |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
канал 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RA1/AN1 |
|
3 |
I/O |
RA1 может быть как аналоговый |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
канал 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УИТС.421413.104 ПЗ |
|
Лист |
|||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
14 |
||||||
Изм. |
Лист |
№ документа |
Подпись |
Дата |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Продолжение таблицы 2 |
|
|
|
|
4 |
|
1 |
2 |
3 |
|
|
|
|
|
RA3 может быть настроен как аналоговый канал 3 |
|
RA3/AN3/VREF |
5 |
I/O |
|
|
|
|
|
или вход отрицательного опорного напряжения |
|
|
|
|
RA4 может использоваться в качестве входа внеш- |
|
RA4/TOCKI |
6 |
I/O |
|
|
|
|
|
него тактового сигнала TMR0. |
|
|
|
|
RA5 может быть настроен как аналоговый канал |
|
RA5/-SS/AN4 |
7 |
I/O |
|
|
|
|
|
5 или вход выбора микросхемы в режиме ведо- |
|
|
|
|
мого SPI. |
|
|
|
|
Двунаправленный порт ввода/вывода PORTB, |
|
RB0/INT |
21 |
I/O |
|
|
|
|
|
имеет программно подключаемые резисторы на |
|
|
|
|
входах. |
|
|
|
|
|
|
RB1 |
22 |
I/O |
|
|
|
|
|
|
|
RB2 |
23 |
I/O |
|
|
|
|
|
Может использоваться в качестве входа низко- |
|
RB3/PGM |
24 |
I/O |
|
|
|
|
|
вольтного программирования. |
|
|
|
|
Прерывания по изменению уровня входного |
|
RB4 |
25 |
I/O |
|
|
|
|
|
сигнала. |
|
|
|
|
Прерывания по изменению уровня входного |
|
RB5 |
26 |
I/O |
|
|
|
|
|
сигнала. |
|
|
|
|
Прерывания по изменению уровня входного |
|
RB6/PGC |
27 |
I/O |
|
|
|
|
|
сигнала или вывод для режима внутренней от- |
|
|
|
|
ладки ICD. |
|
|
|
|
Прерывания по изменению уровня входного |
|
RB7/PGD |
28 |
I/O |
|
|
|
|
|
сигнала или вывод для режима внутренней от- |
|
|
|
|
ладки. |
|
|
|
|
Двунаправленный порт ввод/вывода PORTC. |
|
RC0/T1OSO |
11 |
I/O |
|
|
|
|
|
Может использоваться в качестве выхода гене- |
|
|
|
|
ратора или входа внешнего тактового сигнала. |
|
|
|
|
|
|
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|
1 |
2 |
3 |
|
|
|
RC1/T1OSI/C |
12 |
I/O |
CP2 |
|
|
|
|
|
RC2/CCP1 |
13 |
I/O |
RC3/SCK/SCL 14 I/O
RC4/SDI/SDA 15 I/O
RC5/SDO |
16 I/O |
RC6/TX/CK 17 I/O
RC7/RX/DT 18 I/O
VSS |
19,8 P |
VDD |
20 P |
Продолжение таблицы 2
4
Может использоваться в качестве входа генератора или выводов модуля ССP2.
Может использоваться в качестве вывода модуля ССP1
Может использоваться в качестве вход/выхода тактового сигнала в режиме SPI и I2С
Может использоваться в качестве выхода данных в режиме SPI или входа/выхода в режиме I2С.
Может использоваться в качестве выхода данных в режиме SPI.
Используется в качестве выхода приемника USART в асинхронном режиме или вывода синхронизации USART в синхронном режиме.
Используется в качестве выхода приемника USART в асинхронном режиме или вывода данных USART в синхронном режиме.
Общий вывод для внутренней логики и порта ввода/вывода.
Положительные напряжения для внутренней логики и порота ввода/вывода.
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|
Таблица 3 – Режим питания микроконтроллеров PIC16F876
Описание |
min |
типовое |
max |
|
|
- |
|
Напряжение питания Vdd,B |
4,0 |
5,5 |
|
|
|
1,5 |
|
Напряжение сохранения данных в ОЗУ, |
- |
- |
|
Vdr, В |
|
|
|
|
|
- |
|
Скорость нарастания Vdd для формиро- |
0.05 |
- |
|
вания BOR, Vbor, В/мс |
|
|
|
|
|
1,6 |
|
Ток потребления IDD, мА |
- |
4 |
|
|
|
7,5 |
|
Ток потребления в режиме SLEEP, Ipd , |
- |
30 |
|
мкА |
|
|
|
|
|
85 |
|
Ток потребления BOR, Ibor, мкА |
- |
200 |
4.2 Структура микроконтроллера PIC16F876
Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (гарвардская архитектура). Шина данных и память данных (ОЗУ) – имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл, исключая команды переходов.
4.3 Арифметико-логическое устройство (АЛУ) Порты
Микроконтроллеры PIС содержат 8-разрядный универсальный арифметический модуль (АЛУ) и 8-разрядный рабочий регистр (W). АЛУ выполняет арифметические и булевы операции между рабочим регистром и любым регистром памяти данных.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|||
|
|
|
|
|
17 |
|||
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||||
|
|
|
|
|
|
|
|
|
Рисунок 7 – Структурная схема микроконтроллера PIC16F876
Восьмиразрядное АЛУ может выполнять сложение, вычитание, поразрядный сдвиг и логические операции. Арифметические операции выполняются по принципу дополнения до двух, если не указано иначе. В командах с двумя операндами: первый операнд находится в рабочем регистре W, а второй операнд рас положен в регистре памяти данных или константа. В командах с одним операндом: операндом является регистр W или регистр памяти данных.
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|
Регистр W - не адресуемый 8-разрядный рабочий регистр, который используется в операциях АЛУ. В зависимости от типа команды и результат команды АЛУ может воздействовать на следующие флаги состояния в регистре STATUS: перенос (С), не полный перенос (DC), флаг нулевого результата (Z). Биты С и DC работают как биты заема и десятичного заема при выполнении команд вычитания.
Счетчик команд PCL и PCLATH имеет разрядность 13 бит. Младший байт счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт счетчика команд не может быть напрямую записан или считан и берется из регистра PCLATH, адрес которого 0Ah. Содержимое PCLATH передается в старший байт счетчика команд, когда он загружается новым значением. В зависимости от того, загружается ли в счетчик команд новое значение во время выполнения команд CALL, GOTO, или в младший байт счетчика команд (PCL) производится запись, – старшие биты счетчика команд загружаются из PCLATH разными способами (рисунок 8).
Рисунок 8 - Загрузка старших бит счетчика команд.
Команды CALL и GOTO оперируют 11-разрядным адресным диапазоном, достаточным для смещения в пределах страницы программной памяти объемом 2К слов. Для МК подгруппы PIC16F87X этого хватает. С целью обеспечения возможности расширения памяти команд для будущих моделей МК предусмотрена загрузка двух старших бит счетчика команд из регистра PCLATH.
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|
При выполнении команды CALL или выполнении прерывания весь 13битный счетчик команд помещается в стек, поэтому для возвращения из подпрограммы не нужны манипуляции с разрядами PCLATH.
Возможность выполнять арифметические операции непосредственно над счетчиком команд позволяет очень быстро и эффективно осуществлять табличные преобразования в PIC-контроллерах.
Микроконтроллеры подгруппы PIC16F87X имеют восьмиуровневый аппаратный стек шириной 13 бит. Область стека не принадлежит ни к программной области, ни к области данных, а указатель стека пользователю недоступен. Текущее значение счетчика команд посылается в стек, когда выполняется команда CALL или производится обработка прерывания. При выполнении процедуры возврата из подпрограммы (команды RETLW, RETFIE или RETURN) содержимое счетчика команд восстанавливается из стека. Регистр PCLATH при операциях со стеком не изменяется.
Стек работает как циклический буфер. Следовательно, после того как стек был загружен 8 раз, девятая загрузка перепишет значение первой. Десятая загрузка перепишет вторую так далее. Если стек был выгружен 9 раз, счетчик команд становится таким же, как после первой выгрузки.
Признаков положения стека в контроллере не предусмотрено, поэтому пользователь должен самостоятельно следить за уровнем вложения подпрограмм Контроллер PIC16F876 имеет три порта: PORTA (5 бит) и PORTB (8 бит)
PORTС (8 бит) с побитовой индивидуальной настройкой на ввод или на вывод. Порт A (PORTA) представляет собой 5-битовый фиксатор, соответствую-
щий выводам контроллера RA. Линия RA4 имеет вход триггера Шмитта и выход с открытым стоком. Все остальные линии порта имеют ТТЛ входные уровни и КМОП выходные буферы. Адрес регистра порта А – 05h.
Каждой линии порта поставлен в соответствие бит направления передачи данных, который хранится в управляющем регистре TRISA, расположенном по адресу 85h. Если бит управляющего TRISA регистра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра-
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|
фиксатора порта. При включении питания все линии порта по умолчанию настроены на ввод.
Рисунок 9 - Схема линий RA порта А.
Операция чтения порта А считывает состояние выводов порта, в то время как запись в него изменяет состояние триггеров порта. Все операции с портом являются операциями типа «чтение-модификация-запись». Поэтому запись в порт предполагает, что состояние выводов порта вначале считывается, затем модифицируется и записывается в триггер-фиксатор. Вывод RA4 мультиплексирован с тактовым входом таймера TMR0. Схема линии RA4 порта А приведена на рисунке 10. Порт В (PORTB) – это двунаправленный 8-битовый порт, соответствующий выводам RB контроллера и расположенный по адресу 06h. Относящийся к порту В управляющий регистр TRISB расположен на первой странице регистров по адресу 86h. Если бит управляющего TRISB регистра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра защелки. При включении питания все линии порта по умолчанию настроены на ввод.
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|
Рисунок 10 - Схема линии RA4 порта А
У каждой ножки порта В имеется небольшая активная нагрузка (около 100мкА) на линию питания. Она автоматически отключается, если эта ножка запрограммирована как вывод. Более того, управляющий бит RBPU регистра OPTION может отключить (при RBPU=1) все нагрузки. Сброс при включении питания также отключает все нагрузки.
Четыре линии порта В могут вызвать прерывание при изменении значения сигнала на любой из них. Если эти линии настроены на ввод, то они опрашиваются и защелкиваются в цикле чтения. Новая величина входного сигнала сравнивается с старой в каждом командном цикле. При несовпадении значения сигнала на ножке и в фиксаторе генерируется высокий уровень сигнала. Выходы детекторов «несовпадений» RB4, RB5, RB6, RB7 объединяются по ИЛИ и генерируют прерывание RBIF (запоминаемое в регистре INTCON<0>). Любая линия, настроенная как вывод, в этом сравнении не участвует. Прерывание может вывести кристалл из режима SLEEP.
Прерывание по несовпадению и программно устанавливаемые внутренние активные нагрузки на этих четырех линиях могут обеспечить простой интерфейс, например, с клавиатурой, с выходом из режима SLEEP по нажатию клавиш.
|
|
|
|
|
УИТС.421413.104 ПЗ |
Лист |
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
Изм. |
Лист |
№ документа |
Подпись |
Дата |
||
|
|
|
|
|
|
|