Курсовая работа: Программно-управляемый генератор прямоугольных импульсов инфранизких частот

- 36 х 8 регистров общего использования;

- 15 специальных аппаратных регистров SFR;

- 64 x 8 электрически перепрограммируемой EEPROM памяти для данных;

- восьмиуровневый аппаратный стек;

- прямая, косвенная и относительная адресация данных и команд;

- четыре источника прерывания:

· внешний вход INT

· переполнение таймера RTCC

· прерывание при изменении сигналов на линиях порта B

· по завершению записи данных в память EEPROM

Структурная схема PIC16C84 приведена на рисунке 2.1

Высокая скорость выполнения команд в микроконтроллерах PIC достигается за счет использования двухшинной Гарвардской архитектуры вместо традиционной одношинной Фон-Неймановской. В Гарвардской архитектуре разделена память программ и память данных. Обращение к памяти по отдельным шинам адреса и данных, значительно повышает производительность процессора по сравнению с традиционной архитектурой. Набор регистров означает, что все программные объекты, такие как порты ввода/вывода, ячейки памяти и таймер, представляют собой физически реализованные аппаратные регистры.

Рисунок 2.1 – Структурная схема микроконтроллера PIC16C84

Микроконтроллеры семейства PIC имеют очень эффективную систему команд, состоящую всего из 35 инструкций. Все инструкции выполняются за один цикл, за исключением условных переходов и команд, изменяющих программный счетчик, которые выполняются за 2 цикла. Один цикл выполнения инструкции состоит из 4 периодов тактовой частоты. Таким образом, при частоте 4 МГц, время выполнения инструкции составляет 1 мксек. Каждая инструкция состоит из 14 бит, делящихся на код операции и операнд (возможна манипуляция с регистрами, ячейками памяти и непосредственными данными).

Генератор пачек прямоугольных импульсов на микроконтроллере позволяет получать пачки импульсов любой длительности с большой точностью, при этом частота следования пачек может иметь любые значения. Такой генератор позволяет получать частоты инфранизкого диапазона, что трудно обеспечить в любом другом генераторе. Программное управление даёт возможность перестройки частоты пачек и длительности импульсов в больших пределах, что не всегда возможно в обычных генераторах на RC –элементах или КМОП - микросхемах. Устройства, построенные на базе микроконтроллеров PIC16C84, характеризуются простотой схемы и дешевизной в изготовлении.

3 РАЗРАБОТКА АЛГОРИТМА РАБОТЫ УСТРОЙСТВА И СОСТАВЛЕНИЕ ПРОГРАММЫ

В основе работы генератора пачек прямоугольных импульсов лежит формирование временных задержек. Задержка логической единицы на выходе микроконтроллера соответствует положительному импульсу необходимой длительности, задержка логического нуля – паузе между импульсами. Пачка импульсов получается в результате формирования циклов, то есть однократное появление на выходе контроллера единицы-нуля является периодом импульсов, необходимое количество импульсов в пачке можно получить, формируя определённое число периодов. Пауза между пачками импульсов формируется по такому же принципу, что и пауза между импульсами, только большей длительности. Всё это легко выполняется посредством программируемого микроконтроллера PIC16C84. Блок-схема алгоритма работы устройства представлена в приложении A на формате A4 (ГЮИК 485.007).

Работа микропроцессора начинается с загрузки начального адреса программы (блок 1). По которому осуществляется вызов программы из ПЗУ.

Затем выполняется конфигурация портов контроллера на ввод\вывод (блок 2), для этого переходят на первую страницу памяти, установив бит RP0 в единицу. Загружая в регистры портов TRISA и TRISB двоичные числа 00111 и 1110000 соответственно, получаем, что первые 3 вывода порта A сконфигурированы на ввод, а первые 4 вывода порта B – на вывод. К выводам RA0, RA1, RA2 порта A подключаются кнопки выбора длительности импульсов в пачке 9мс, 10мс и 11мс соответственно. Вывод RB0 порта B является выходным, с него снимается последовательность пачек. К выводам RB1, RB2, RB3 подсоединены индикаторные светодиоды, которые зажигаются при нажатой кнопке для 9мс, 10 мс и 11мс соответственно. По окончанию выполняется возврат на нулевую страницу памяти.

Для изменения длительности импульсов контроллер должен реагировать на изменения состояния кнопок, для этого используется программа опроса клавиатуры (блок3). Если какая-то кнопка нажата (блок 4), т.е. состояние порта RA0 (RA1, RA2) сменилось на нуль, происходит переход программы на участок загрузки соответствующих констант для формирования нужных временных задержек (блок 5).

В начале порт RB1 устанавливается в единицу, светодиод загорается - так осуществляется индикация нажатой кнопки, соответствующей 9мс (для двух других режимов индикация осуществляется аналогично, управляя портами RB2, RB3). Затем в регистры общего назначения A, B, C и D загружаются константы в десятичной форме для формирования импульса, паузы между импульсами, и паузы между пачками соответственно, для длительности импульса 9мс. В регистр E загружается константа, определяющая количество импульсов в пачке (периодов следования импульсов), в данном случае это число 5 для любой длительности импульсов. Для получения на выходе контроллера импульса на порт RB0 выводится логическая единица (блок 6). Задержка единицы получается в результате декремента содержимого регистра A (блок 7). После каждого раза вычитания результат проверяется на нуль (блок 8): если результат не равен нулю, декрементирование повторяется , равен – программа выполняется далее. Вывод на порт RB0 логического нуля (блок 9) соответствует паузе между импульсами, для получения необходимой длительности выполняется задержка, декрементируя содержимое регистра B (блок 10) до получения нулевого результата (блок 11), при неравенстве нулю снова происходит вычитание. Декрементируя содержимое регистра E (блок 13), формируется последовательность из пяти импульсов: если результат вычитания не равен нулю, формирование задержки единицы-нуля повторяются снова.

После получения необходимого числа импульсов выполняется формирование паузы между пачками импульсов.

Длительность интервала между пачками импульсов имеет большую длительность по сравнению с интервалом между импульсами, то есть необходимо организовать большую временную задержку, поэтому в этом случае используются два регистра. Для этого содержимое регистра D пересылается в регистр F (блок 14), который является вспомогательным. Его содержимое декрементируется (блок 15) до нулевого результата (блок 16), после чего выполняется декремент содержимого регистра C (блок 17) и при равенстве результата нулю (блок 18) происходит переход программы на участок опроса клавиатуры. Для каждой длительности программа выполняет те же операции, разница состоит в том, что при трёх случаях в регистры разгружаются различные константы, что обеспечивается переходом программы на соответствующие участки программы при изменении состояния кнопок.

При формировании импульсов и пауз между ними перед декрементированием содержимого регистров A и B используется так называемая «пустая» операция (команда NOP). Это позволяет получить более точные временные задержки, которые определяются количеством тактов, выполняемых микроконтроллером и его тактовой частотой. Это является одним из достоинств программно-управляемого генератора пачек прямоугольных импульсов на микроконтроллере: изменяя константы, загружаемые в регистры и подбирая тактовую частоту контроллера можно получить последовательности импульсов любой длительности.

Рабочая программа для микроконтроллера PIC16C84 написана на языке ASSEMBLER и приведена в приложении Б.

4 РАЗРАБОТКА СХЕМЫ ЭЛЕКТРИЧЕСКОЙ ПРИНЦИПИАЛЬНОЙ УСТРОЙСТВА

Схема электрическая принципиальная генератора приведена на чертеже (формат А3).

Схема состоит из микропроцессора DA1, блока питания и выходного каскада. Перед включением микросхемы в устройство, она предварительно программируется – прошивается рабочей программой.

К ножкам 17, 18 и 1 микросхемы, которые являются выводами порта A(данный порт сконфигурирован на ввод), подключены выключатели S2, S3 и S1 соответственно. Данные выводы через резисторы R1,R2 и R3 подключены к шине питания, это позволяет установить на соответствующих выводах логическую единицу. При нажатии кнопки происходит замыкание вывода не общий провод, что вызывает сброс единицы в логический нуль. На это изменение состояния, на каком либо выводе, микроконтроллер реагирует, выполняя те или иные операции. Нажатию кнопки S2 соответствует установка на выходе генератора пачек с длительностью импульсов 9мс, S3 – 10мс, S1-11мс. Выводы 6, 7, 8 и 9 микросхемы DA1 являются выводами порта B, которые сконфигурированы на вывод. К ножкам 7,8 и 9 подключены светодиоды HL1, HL2 и HL3 соответственно. Светодиоды служат для индикации режимов работы генератора. При нажатии кнопки S2(длительность импульса 9мс) микроконтроллер выдает на вывод 7 логическую единицу, что вызывает свечение светодиода HL1. При нажатии кнопки S3(10мс) загорается светодиод HL2, S2(11мс) – светодиод HL3. Ножка 6 является выходом микроконтроллера, на который он выводит последовательность пачек импульсов.

К-во Просмотров: 399
Бесплатно скачать Курсовая работа: Программно-управляемый генератор прямоугольных импульсов инфранизких частот