![]() |
РУБРИКИ |
Разработка часов на микроконтроллере PIC16F84 |
РЕКОМЕНДУЕМ |
|
Разработка часов на микроконтроллере PIC16F84Разработка часов на микроконтроллере PIC16F84Министерство образования Российской Федерации Северокавказский Государственный Технический Университет Кафедра электроники и микроэлектроники КУРСОВОЙ ПРОЕКТ По предмету : Микропроцессорные системы управления и диагностики На тему "Разработка часов на микроконтроллере PIC16F84 " Выполнил: студент 5 курса группы УПЭ-991 Козидубов Е.Н Принял: Якушев В.М. Ставрополь 2002 Задание Разработать часы реального времени на микроконтроллере PIC16F84, программное обеспечения для него на языке ассемблер, рассмотреть вопросы программирования микроконтроллера.
Минуты Секунды Содержание
Введение Последние годы отмечены массовым наполнением рынка всевозможной
автоматизированной аппаратурой самого различного назначения и самой
различной сложности от пластиковой платежной карточки до холодильника,
автомобиля и сложнейших установок. Это стало возможным благодаря
микроконтроллерам (МК) Микроконтроллеры входят во все сферы
жизнедеятельности человека, их насыщенность в нашем окружении растет из
года в год. То что казалось нам 5 лет назад сказкой сейчас вполне
возможно благодаря стремительному развитию технологии производства
электронных компонентов. Да пять лет назад мы уже знали про суперкомпьютеры
суперпроцессоры суперАЦП и т.д. Ну а что же сейчас а сейчас "ВСЕ В ОДНОМ Вернемся к теме "в одном корпусе" раньше К155ХХ 50 штук а сейчас Ну хватит о грустном за работу! В данной проекте будет разработано устройство на современном микроконтроллере, написана программа и рассмотрены инструментальные средства. Также будит применены знания полученные на занятиях. 1.Разработка структурной схемы устройства Структурная схема электронных часов на микропроцессоре приведена на рисунке 1. Она состоит из 4 основных блоков. Тактовый генератор предназначен для генерации прямоугольных импульсов частотой 4 Мгц для тактирования микропроцессора и программируемого таймера . Микропроцес- Рисунок 1. Структурная схема устройства сорный блок состоит из микропроцессора, постоянного и оперативного запоминающего устройств предназначен для управления всеми другими блоками часов. Он осуществляет обработку прерывания полученного от таймера предварительно делает его установку на нужное значение, готовит данные полученные от таймера, выводит значение на индикатор и считывает значение с клавиатуры. Контроллер клавиатуры и дисплея предназначен для дешифрации значений полученных от микропроцессора и усиления сигналов для индикатора также осуществляет предварительную обработку сигналов полученных от клавиатуры. Дисплей предназначен для вывода реального времени в графическом виде понятном для человека. Клавиатура электронных часов служит для ввода управляющих сигналов таких как установка режима индикации дисплея и установка времени. 2.Выбор элементной базы Данное устройство может быть выполнено на разной элементной базе
включая микросхемы серии 155,176,561 также различные микропроцессорные
комплекты 580,1816,1830 и на специализированных микросхемах например 1901
что предпочтительней с экономической точки зрения т.к в их состав входят
контроллер клавиатуры и дисплея тактовый генератор, устройство управления,
таймер и многое другое необходимое для электронных часов. В данной работе в
учебных целях это устройство будет разработано на микроконтроллере фирмы PIC16F84 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1K x 14 бит EEPROM для программ, 8-битовые данные и 64байт EEPROM памяти данных. При этом отличаются низкой стоимостью и высокой производительностью. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс). PIC16F84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8- битным программируемым предварительным делителем (фактически 16 - битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16F84 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором. Серия PIC16F84 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.). Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает PIC16F84 привлекательным даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры. Cледует добавить, что встроенный автомат программирования EEPROM кристалла PIC16F84 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования. Структурная схема микроконтроллера приведена на рисунке 2. [pic] Рисунок 2. Структурная схема микроконтроллера PIC16F84 Архитектура основана на концепции раздельных шин и областей памяти для
данных и для команд (Гарвардская архитектура). Шина данных и память данных Условно графическое обозначение микроконтроллера приведено на рисунке
Если установлена защита, то бит CP можно стереть только вместе с содержимым кристалла. Сначала будет стерта EEPROM программная память и память данных и в последнюю очередь бит защиты кода CP. Кристалл PIC16C84 имеет четыре слова, расположенные по адресу (2000h- Если кристалл защищен, пользователю рекомендуется использовать для идентификации только младшие семь бит каждого ID слова, а в старший бит записывать `0`. Тогда ID слова можно будет прочитать даже в защищенном варианте. Вход в режим SLEEP осуществляется командой SLEEP. По этой команде,
если WDT разрешен, то он сбрасывается и начинает счет времени, бит "PD" в
регистре статуса (f3) сбрасывается, бит "TO" устанавливается, а встроенный
генератор выключается. Порты ввода/вывода сохраняют состояние, которое они
имели до входа в режим SLEEP. Для снижения потребляемого тока в этом
режиме, ножки на вывод должны иметь такие значения, чтобы не протекал ток
между кристаллом и внешними цепями. Ножки на ввод должны быть соединены
внешними резисторами с высоким или низким уровнем, чтобы избежать токов
переключения, вызываемых плавающими высокоомными входами. То же и про RTCC. |Обозн|Нормальный режим |Режим записи | Выход параметров за данные пределы может привести к повреждению микросхемы. Область ОЗУ организована как 128 х 8. К ячейкам ОЗУ можно адресоваться прямо или косвенно, через регистр указатель FSR (04h). Это также относится и к EEPROM памяти данных-констант. В регистре статуса (03h) есть биты выбора страниц, которые позволяют
обращаться к четырем страницам будущих модификаций этого кристалла. Однако
для PIC16F84 память данных существует только до адреса 02Fh. Первые 12
адресов используются для размещения регистров специального назначения. Watchdog таймер представляет собой полностью независимый встроенный Номинальная выдержка WDT составляет 18 мс (без использования делителя). Она зависит от температуры, напряжения питания, от особенностей типов микросхем. Если требуются большие задержки, то к WDT может быть подключен встроенный делитель с коэффициентом деления до 1:128; который программируется путем записи в регистр OPTION. Здесь могут быть реализованы выдержки до 2.5 секунд. Команды "CLRWDT" и "SLEEP" обнуляют WDT и делитель, если он подключен к Также в устройстве будет использован цифро-буквенный индикатор с высотой цифр 7,5 мм из семи сегментов с децимальной точкой АЛС324А, его графическое изображение приведено на рисунке 4. 3.Разработка схемы электрической принципиальной Применение микроконтроллеров PIC16F84 приводит к резкому уменьшению размеров устройства потребляемой мощности и количества используемых элементов. При разработке устройств на микроконтроллерах разработчику электронной схемы необходимо выбрать частоту тактового генератора для поставленной задачи и следить чтобы максимальная нагрузка на порты ввода вывода не превышала допустимую. Кристаллы PIC16F84 могут работать с четырьмя типами встроенных
генераторов. Пользователь может запрограммировать два конфигурационных бита
Более высокая емкость будет увеличивать стабильность генератора, но
также будет увеличивать время запуска. Значения приведены для ориентировки. Ввод информации для управления электронными часами осуществляется через 2 кнопки подключенных к портам RB0 и RA0 микроконтроллера. Схема подключения показана на рисунке 6. Меры по предотвращению дребезга контактов могут реализоватся програмным метадом. Сопротивление резисторов выбирается из расчета протикания наименьшего тока необходимого для фиксации логической 1 на входах микрокантроллера при неактивных позициях кнопок и в данном случае составляют 10 Ком. [pic] Рисунок 6 . Подключение клавиатуры управления [pic] Рисунок 7. Схема подключения устройства индикации Также в устройстве присутствует блок индикации состоящий из 4-х
индикаторов АЛС324А которые управляются микропроцессором через
токоограничивающие резисторы R4...R10 номеналом 180 ом. Индикация
осуществляется динамическим способом т.е вывод осуществляется по порядку Электрическая принципиальная схема устройства приведена на чертеже 4.Разработка программного обеспечения При разработке и отладке программы была использована бесплатная программа Mplab предоставляемая фирмой Microchip. MPLAB - это интегрированная среда разработки (IDE) для семейства
микроконтроллеров PICmicro фирмы Microchip Technology Incorporated. MPLAB
позволяет писать, отлаживать и оптимизировать программы для Ваших
разработок. MPLAB включает текстовый редактор, симулятор (виртуальный
отладчик), менеджер проектов и поддерживает эмуляторы (внутрисхемные
отладчики) MPLAB-ICE и PICMASTER , программаторы PICSTART Plus и PRO MATE [pic] Рисунок 8. Блок схема программы MPLAB работает под Microsoft Windows 3.1x, Windows 95, 98, NT, 2000 Описание программы можно найти на интернет сайте фирмы Microchip Блок схема разрабатываемой программы приведена на рисунке 8.Она
состоит из блока началиных установок в который входят процедуры обнуления
переменных используемых в программе, установки направления портов,
установки нужного коэффициента предделителя, тест работоспособности
индикаторов. Блока вывода на идикацию в катором осуществляется
преодразование двоичного кода в код семисегментных индикаторов, формируются
необходимые задержки времени для динамической индикации, также контроль
вывода выбронного пользователем режима индикации (режим часы : минуты и
минуты : секунды ). Участок программы сканирования клавиатуры отвечает за
выбор режима индикации и установку времени вводимых с клавиатуры, в
следующей последовательности в режиме (часы : минуты ) кропкой установки
времени может быть изменено только значение раздела часов а в режиме Самая ответственная часть программы это обработка прерывания
полученного от встроенного таймера микроконтроллера от неё зависит точность
хода часов т.е ошибки в этой части программы приводят к значительному
отстованию или опережению хода часов тамже может быть осуществлена точная
подстройка. Рассмотрим получение интервала в 1 секунду с помощью таймера,
при конфигурации таймера его надо подключить к внутреннему генератору
который по заданию вырабатывает частоту 4,00 Мгц после такого подключения в
данном микроконтроллере на таймер будет подаватся частота генератора (Fг)/4
и будет равна 1000000 гц с помощью встроенного предделителя она делится на 1. F(г)=4 мГц/4=1000000 2. 1000000/64=15625 3. 15625/125=125 4. 125/125=1 Гц LIST p=16F84A ; указатель процессора
include org 0x00 ; Вектор сброса ;**************************************************************** org 0x10 segment ; Таблица преобразования DEC -> семисегментный код. CLRF PCLATH ADDWF PCL, F dt 07E, b'00001100', 0B6, 09E, 0CC, 0DA, 0FA, 00E, 0FE, 0DE 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 для индикации. ;********клавишы установки режима индикации и времени******* call Delay btfss PORTA,4 ;сканируем клавишу установки режима RA4 вывод 3 incf temp1,1 ;прибавляем к темпу 1 btfss PORTB,0 ;клавиша установки времени RB0 вывод 6 call Min_clk goto Start1 Min clrf sek incfsz min movf min,0 sublw .60 btfsc STATUS,Z call Clok retfie Clok clrf min incfsz cl_k movf cl_k,0 sublw .24 btfsc STATUS,Z clrf cl_k retfie Int1 ;процедура обработки прерывания movlw .131 ;записываем 131 т.к 256-125=131 addwf TMR0,1 ;256(максимальное значение таймера) incfsz clok1 ;125(нужный коэффициен деления) return call Sek return movf Dig_y, W ; Значение ед.часов для индикации. call segment ; Преобразование DEC -> семисегментный код. movwf PORTB ; Вывод цифры на индикатор. bcf PORTA,1 ; Активизировать индикатор. call Delay ; Задержка времени для сканирования. bsf PORTA,1 ; Отключить индикатор. movf Dig_z, W ; Значение десят.минут для индикации. call segment; Преобразование DEC -> семисегментный код. movwf PORTB ; Вывод цифры на индикатор. bcf PORTA,2 ; Активизировать индикатор. call Delay ; Задержка времени для сканирования. bsf PORTA,2 ; Отключить индикатор. movf Dig_exp, W ; Значение ед.минут. call segment; Преобразование DEC -> семисегментный код. movwf PORTB ; Вывод цифры на индикатор. bcf PORTA,3 ; Активизировать индикатор. call Delay ; Задержка времени для сканирования. bsf PORTA,3 ; Отключить индикатор. return 5.Программирование микроконтроллера
Схема электрическая принципиальная приведена на чертеже.Протокол
работы микросхемы при программировании рассмотрен в диаграммых на рисунке
Устройство входит в режим программирования Удержанием низкого уровня на выводах RB6, RB7 во время перехода сигнала на выводе MCLR/Vpp из нижнего уровня в высокий. После этого RB6 становится тактовым сигналом, а RB7- данными программирования. После входа в режим программирования можно послать 6-ти битную команду. В зависимостии от нее можно записать или считать 14-битные данные. [pic] Заключение По полученному заданию была проделана работа в полном объеме, разработаны электронные часы на микроконтроллере, написана программа для него рассмотрены вопросы программирования МК. При выполнении данной работы был получен ценный опыт разработки подобных устройств получены навыки в разработке програм на языке ассемблер также был закреплены знания полученные на занятиях. Список литературы 1. Радио №1 2001г. с.21 "Частотомер на PIC-контроллере" Internet - Ресурсы http://www.microchip.ru:8101/
http://www.paguo.ru/
http://www.disall.narod.ru/picpro.htm
http://www.chipnews.ru/html.cgi/arhiv/index.htm
Микропроцессор-ный блок Программируемый таймер Контроллер клавиатуры и дисплея Дисплей ХХ.ХХ Клавиатура [pic] [pic] [pic]
|
|
© 2010 |
|