Разработка часов на микроконтроллере PIC16F84

Автор работы: Пользователь скрыл имя, 09 Ноября 2012 в 22:26, курсовая работа

Описание

Последние годы отмечены массовым наполнением рынка всевозможной автоматизированной аппаратурой самого различного назначения и самой различной сложности от пластиковой платежной карточки до холодильника, автомобиля и сложнейших установок. Это стало возможным благодаря микроконтроллерам (МК) Микроконтроллеры входят во все сферы жизнедеятельности человека, их насыщенность в нашем окружении растет из года в год.

Содержание

Введение
1.Разработка структурной схемы устройства
2.Выбор элементной базы
3.Разработка схемы электрической принципиальной
4.Разработка программного обеспечения
5.Программирование микроконтроллера
Заключение
Список литературы

Работа состоит из  1 файл

проект1.doc

— 369.00 Кб (Скачать документ)

 

Область ОЗУ организована как 128 х 8. К ячейкам ОЗУ можно адресоваться прямо или косвенно, через регистр указатель FSR (04h). 
Это также относится и к EEPROM памяти данных-констант.

В регистре статуса (03h) есть биты выбора страниц, которые позволяют  обращаться к четырем страницам  будущих модификаций этого кристалла. Однако для PIC16F84 память данных существует только до адреса 02Fh. Первые 12 адресов используются для размещения регистров специального назначения. Регистры с адресами 0Ch-2Fh могут быть использованы, как регистры общего назначения, которые представляют собой статическое ОЗУ. Некоторые регистры специального назначения продублированы на обеих страницах, а некотрые расположены на странице 1 отдельно. Когда установлена страница 1, то обращение к адресам 8Ch-AFh фактически адресует страницу 0. К регистрам можно адресоваться прямо или косвенно. В обоих случаях можно адресовать до 512 регистров.

Watchdog таймер представляет  собой полностью независимый  встроенный RC генератор, который  не требует никаких внешних  цепей. Он будет работать, даже если основной генератор остановлен, как это бывает при исполнении команды SLEEP. Таймер вырабатывает сигнал сброса. Выработка таких сбросов может быть запрещена путем записи нуля в специальный бит конфигурации WDTE. Эту операцию производят на этапе программирования  микросхем.


Номинальная выдержка WDT составляет 18 мс (без использования  делителя). Она зависит от температуры, напряжения питания, от особенностей типов  микросхем. Если требуются большие  задержки, то к WDT может быть подключен  встроенный делитель с коэффициентом деления до 1:128; который программируется путем записи в регистр OPTION. Здесь могут быть реализованы выдержки до 2.5 секунд. 
Команды "CLRWDT" и "SLEEP" обнуляют WDT и делитель, если он подключен к WDT. Это запускает выдержку времени сначала и предотвращает на некоторое время выработку сигнала сброс. Если сигнал сброса от WDT все же произошел, то одновременно обнуляется бит "TO" в регистре статуса (f3). В приложениях с высоким уровнем помех, содержимое регистра OPTION подвержено сбою. Поэтому регистр OPTION должен обновляться через равные промежутки времени. Следует учесть, что наихудшей комбинацией является: Vdd=min, температура=max и max коэффициент деления делителя,- это приводит к самой большой выдержке времени, она может достигать нескольких секунд.

Также в устройстве будет  использован цифро-буквенный индикатор  с высотой цифр 7,5 мм из семи сегментов  с децимальной точкой АЛС324А, его  графическое изображение приведено  на рисунке 4.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.Разработка схемы  электрической принципиальной

 

 

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

Кристаллы PIC16F84 могут работать с четырьмя типами встроенных генераторов. Пользователь может запрограммировать два конфигурационных бита (FOSC1 и FOSC0) для выбора одного из четырех режимов: RC, LP, XT, HS. Кристаллы PIC16... могут также тактироваться и от внешних источников. Генератор, построенный на кварцевых или керамических резонаторах, требует периода стабилизации после включения питания. Для этого, встроенный таймер запуска генератора держит устройство в состоянии сброса примерно 18 мс после того, как сигнал на /MCLR ножке кристалла достигнет уровня логической единицы. Таким образом, внешняя цепочка RC , связанная с ножкой /MCLR во многих случаях не требуется.

Встроенные генераторы работоспособны при определенных номиналах  питающего напряжения:

Vdd

OSC mode

Max Freq

2..3V

RC

2 MHz

LP

200 kHz

3..6V

RC, XT

4 MHz

LP

200 kHz

4,5..5,5

HS

10 MHz


При частотах ниже 500 кГц, внутренний генератор может генерировать сбойный импульс на гармониках, когда  переключается бит 0 порта A. Этого  не происходит при использовании  внешнего генератора или при встроенном RC генераторе. PIC16F84-XT, -HS или -LP требуют подключения кварцевого или керамического резонатора к выводам OSC1 и OSC2. Маркировка следующая: XT - стандартный кварцевый генератор, HS - высокочастотный кварцевый генератор, LP - низкочастотный генератор для экономичных приложений. Резистор Rs может потребоваться для генератора "HS", особенно при частотах ниже 20 МГц для гашения гармоник. Он также может потребоваться в режиме XT с резонатором типа AT strip-cut. Необходимые значения конденсаторов для разных частот приведены в таблице.

Более высокая емкость будет  увеличивать стабильность генератора, но также будет увеличивать время  запуска. Значения приведены для  ориентировки. В режимах HS и XT, чтобы  избежать гармоник может потребоваться  последовательный резистор Rs.

Таблица    Выбор конденсатора для кварцевого генератора

Тип генератора

Частота

Конденсатор С1

Конденсатор С2

LP

32 КГц

30 пФ

30 - 50 пф

100 КГц

15 пф

15 пФ

200 КГц

0- 15 пФ

0 - 15 пФ

XT

100 КГц

15 - 30 пФ

200 - 300 пФ

200 КГц 

15- 30 пФ

100 - 200 пФ

455 КГц

15 - 30 пФ

15 -100 пФ

1 МГц

15 - 30 пФ

15 - 30 пФ

2 МГц

15 пФ

15 пФ

4МГц

15 пФ

15 пФ

HS

4 МГц

15 пФ

15 пФ

10 МГц

15пФ

15 пФ


 

 

Ввод информации для  управления электронными часами осуществляется через 2 кнопки подключенных к портам RB0 и RA0 микроконтроллера. Схема подключения показана на рисунке 6. Меры по предотвращению дребезга контактов могут реализоватся програмным метадом. Сопротивление резисторов выбирается  из расчета протикания наименьшего  тока  необходимого для фиксации логической 1 на входах микрокантроллера при неактивных позициях кнопок и в данном случае составляют 10 Ком.

 

Рисунок 6 . Подключение  клавиатуры управления

 

Рисунок 7. Схема подключения  устройства индикации

Также в устройстве присутствует блок индикации состоящий из 4-х индикаторов АЛС324А которые управляются микропроцессором через токоограничивающие резисторы R4...R10 номеналом 180 ом. Индикация осуществляется динамическим способом т.е вывод осуществляется по порядку 1,2,3,4 - индикатор по 10мс на каждый индикатор. Схема подключения индикаторов показана на рисунке 7.

       Электрическая  принципиальная схема устройства  приведена на чертеже 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.Разработка программного  обеспечения

 

 

При разработке и отладке программы была использована бесплатная программа Mplab предоставляемая фирмой Microchip.

MPLAB - это интегрированная среда  разработки (IDE) для семейства микроконтроллеров  PICmicro фирмы Microchip Technology Incorporated. MPLAB позволяет  писать, отлаживать и оптимизировать программы для Ваших разработок. MPLAB включает текстовый редактор, симулятор (виртуальный отладчик), менеджер проектов и поддерживает эмуляторы (внутрисхемные отладчики) MPLAB-ICE и PICMASTER , программаторы PICSTART Plus и PRO MATE II и другие средства и инструменты разработок фирмы Microchip и других фирм.

Инструментальные средства MPLAB, организованные как ниспадающие меню и определяемые быстрые клавиши, позволяют:- ассемблировать, компилировать исходный текст;- отлаживать логику работы, наблюдая с помощью симулятора или, в реальном времени, с эмулятором MPLAB-ICE ;- просматривать переменные в окнах просмотра;- программировать кристаллы с помощью программаторов PICSTART Plus или PRO MATE II- и многое другое.

 

Рисунок 8. Блок схема  программы

 

 

 

MPLAB работает под Microsoft Windows 3.1x, Windows 95, 98, NT, 2000 (начиная с версии 5.00.00). Правда не все дополнительное  оборудование, такое как внутрисхемные  эмуляторы и программаторы будет  функционировать под всеми операционными системами. Для более подробного описания обращайтесь к специализированной литературе и техническим описаниям фирмы Microchip.

Описание программы можно найти  на интернет сайте фирмы Microchip

Блок схема разрабатываемой  программы приведена на рисунке 8.Она состоит из блока началиных установок в который входят процедуры обнуления переменных используемых в программе, установки направления портов, установки нужного коэффициента предделителя, тест работоспособности индикаторов. Блока вывода на идикацию в катором осуществляется преодразование двоичного кода в код семисегментных индикаторов, формируются необходимые задержки времени для динамической индикации, также контроль вывода выбронного пользователем режима индикации (режим часы : минуты и минуты : секунды ). Участок программы сканирования клавиатуры отвечает за выбор режима индикации и установку времени вводимых с клавиатуры, в следующей последовательности в режиме (часы : минуты ) кропкой установки времени может быть изменено только значение раздела часов а в режиме (минуты : секунды) только минут.

Самая ответственная часть программы  это обработка прерывания полученного  от встроенного таймера микроконтроллера от неё зависит точность хода часов  т.е ошибки в этой части программы  приводят к значительному отстованию или опережению хода часов тамже может быть осуществлена точная подстройка. Рассмотрим получение интервала в 1 секунду с помощью таймера, при конфигурации таймера его надо подключить к внутреннему генератору который по заданию вырабатывает частоту 4,00 Мгц после такого подключения в данном микроконтроллере на таймер будет подаватся частота генератора (Fг)/4 и будет равна 1000000 гц с помощью встроенного предделителя она делится на 64 и на таймер приходит уже 15625 гц. После этого нам необходимо разделить это число на такоеже чтобы получить частоту колебаний в 1гц. Из за небольшой разрядности таймера (8) эта процедура делается в два этапа длем на 125 и еще раз на столько же. Сразу после этого прибавляем 1 к регистру секунд (в программе sek).Результат приведен ниже :

1. F(г)=4 мГц/4=1000000

2. 1000000/64=15625

3. 15625/125=125

4. 125/125=1 Гц      

 

 

 

 

LIST    p=16F84A  ; указатель процессора

include <p16F84A.inc>

org 0x00  ; Вектор сброса

Goto Start

;*************************************************************** 

org 004  ;Начало процедуры обработки прерывания

movwf temp  ; Сохранение рабочего регистра W в регистре temp

clrwdt   ;Очистка сторожевого таймера для предотврашения

call Int1  ; сброса процессора каждый 18мс

movlw   b'10100000' ; Разрешаем прерывания от таймера

movwf   INTCON  ;

movf temp,w  ;Востанавливаем значение рабочего регистра

clrwdt    ;Очистка сторожевого таймера

return    ;Выход из процедуры обработки прерывания

 

;**************************************************************** 

org 0x10

segment  ; Таблица преобразования DEC -> семисегментный код.

      CLRF   PCLATH

ADDWF  PCL, F

dt 07E, b'00001100', 0B6, 09E, 0CC, 0DA, 0FA, 00E, 0FE, 0DE

Data1 ;*************десятки

CLRF   PCLATH

ADDWF  PCL, F

         ;0 1 2 3 4 5 6 7 8 9 

dt 0,0,0,0,0,0,0,0,0,0

dt 1,1,1,1,1,1,1,1,1,1 

dt 2,2,2,2,2,2,2,2,2,2 

dt 3,3,3,3,3,3,3,3,3,3

dt 4,4,4,4,4,4,4,4,4,4

dt 5,5,5,5,5,5,5,5,5,5

 

Data2 ;***********единицы

 

CLRF   PCLATH

ADDWF  PCL, F

       ;0 1 2 3 4 5 6 7 8 9 

dt 0,1,2,3,4,5,6,7,8,9 ;0 

dt 0,1,2,3,4,5,6,7,8,9 ;10

dt 0,1,2,3,4,5,6,7,8,9 ;20 

dt 0,1,2,3,4,5,6,7,8,9 ;30

dt 0,1,2,3,4,5,6,7,8,9 ;40 

dt 0,1,2,3,4,5,6,7,8,9 ;50

; Программные регистры:

 

skan1 equ 20 ;рег хранения RB1,2

clok1 equ 21 ; хранение часов

sek equ 22 ;регистр хранения секунд

min equ 23 ;регистр хранения минут

cl_k equ 24  

 

Dig_x  equ 25 ; Значение X0:00 для индикации.

Dig_y  equ 26 ; Значение 0X:00 для индикации.

Dig_z  equ 27 ; Значение 00:X0 для индикации.

Dig_exp  equ 28 ; Значение 00:0X для индикации. 

cnt1     equ 29 ;переменная исп для задержки времени

Информация о работе Разработка часов на микроконтроллере PIC16F84