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

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































































































































































































































































































































































Формат Зона Поз Обозначение Наименование кол Примечание
Резистор
R1,R2,R6,R4 МЛТ
0,125 2 Ком +/- 10%
4
R7 МЛТ
0,125 780 ом +/- 10%
1
R3,R5 МЛТ
0,125 10 Ком +/- 10%
2
Конденсатор
С1,С4 К50-16
100 Мкф +- 10%
2
С2,С3 КМ3-16
0.2 Мкф +- 10%
2
Транзисторы
VT2,VT3 КТ315Г 2
VT1 КТ361Г 3
Микросхемы
DD1 К1533АП5 1
DD2 К142ЕН5А 1
Диод
VD1 КД522 1
































































































































































































































































































































































Формат Зона Поз Обозначение Наименование кол Примечание
Резистор
R1,R2 МЛТ
0,125 10 Ком +/- 10%
2
R3-R10 МЛТ
0,125 180 ом +/- 10%
8
Конденсатор
С1,С2 К5-16
30 пф +- 10%
2
Микросхемы
DD1 PIC16F84A-04
ip
1
Индикатор
HG1-HG4 АЛС324А1 4
Кварцевый
резонатор
Qz1 РК-853
4.000 Мгц
1


Министерство
образования
Российской
Федерации



Северокавказский
Государственный
Технический
Университет


Кафедра
электроники
и микроэлектроникиКУРСОВОЙ
ПРОЕКТПо предмету
: Микропроцессорные
системы управления
и диагностики


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

Выполнил:
студент 5 курса
группы
УПЭ-991

Козидубов
Е.Н


Принял: Якушев
В.М.


Ставрополь
2002


Задание


Разработать
часы реального
времени на
микроконтроллере
PIC16F84, программное
обеспечения
для него на
языке ассемблер,
рассмотреть
вопросы программирования
микроконтроллера.


Напряжение
пипания устройства 5В
+/-1В



Частота
тактового
генератора
МК 4 Мгц



Количество
отображаемых
цифр на идикаторе
4



Количество
кнопок управления
2


Единицы
измерения
времени Часы



Минуты



Секунды


Содержание

Введение


1.Разработка
структурной
схемы устройства


2.Выбор
элементной
базы


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


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


5.Программирование
микроконтроллера


Заключение


Список
литературы


Введение





Последние
годы отмечены
массовым наполнением
рынка всевозможной
автоматизированной
аппаратурой
самого различного
назначения
и самой различной
сложности от
пластиковой
платежной
карточки до
холодильника,
автомобиля
и сложнейших
установок. Это
стало возможным
благодаря
микроконтроллерам
(МК) Микроконтроллеры
входят во все
сферы жизнедеятельности
человека, их
насыщенность
в нашем окружении
растет из года
в год. То что
казалось нам
5 лет назад сказкой
сейчас вполне
возможно благодаря
стремительному
развитию технологии
производства
электронных
компонентов.
Да пять лет
назад мы уже
знали про
суперкомпьютеры
суперпроцессоры
суперАЦП и т.д.
Ну а что же сейчас
а сейчас "ВСЕ
В ОДНОМ КОРПУСЕ"
и это жестокая
правда. Раньше
, изобретателю
электронных
схем приходилось
иметь дело с
"кучей" электронных
компонентов
, размещая с
огромным трудом
все на печатной
плате размером
метр на метр
и при испытании
кипятить чайник
на тойже плате
(это про расходуемую
энергию), в наше
время разработчику
электронной
аппаратуры
не грозят выше
указанные
сложности,
точнее чем
больше денег
тем меньше
сложностей.
Но появляются
новые неудобства
информационного
общества такие
как :



Фирмы производящие
микроконтроллеры
ATMEL,INTEL,ZILOG,MICROCHIP,
"и с радостью
для патриотов"
АНГСТРЕМ,
scenix,
кажется
можно продолжать
бесконечно.
Каждая из
перечисленных
фирм кроме
АНГСТРЕМ имеет
более 100 видов
различных по
назначению
микроконтроллеров,
а каждый микроконтроллер
не менее 200 страниц
технических
описаний и
характеристик
плюс к этому
на английском
языке, кроме
АНГСТРЕМ. Выбери
свой девиз
современного
общества.



Средства
разработки
программного
обеспечения
для микроконтроллеров
у каждой фирмы
свое, а что касается
языков программирования
конечно ассемблер
самый старый,
добрый, всем
понятный, ну
а что через год
перечислим
некоторые, "C,
PASCAL,
JAVA,
DELPHI,C++,
+TURBO,+VISUAL"
опять можно
продолжать
бесконечно.



Вернемся
к теме "в одном
корпусе" раньше
К155ХХ 50 штук а
сейчас PIC16F84
и просто
в подарок ПЗУ,
ОЗУ, таймер,
система прерываний,
аналогово-цифравой
преобразователь,
встроенный
генератор,
корпус с 20 ножками
и т.д.



Ну хватит
о грустном за
работу!



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




1.Разработка
структурной
схемы устройства


Структурная
схема электронных
часов на микропроцессоре
приведена на
рисунке 1. Она
состоит из 4
основных блоков.
Тактовый генератор
предназначен
для генерации
прямоугольных
импульсов
частотой 4 Мгц
для тактирования
микропроцессора
и программируемого
таймера . Микропроцес-



Рисунок 1.
Структурная
схема устройства


сорный блок
состоит из
микропроцессора,
постоянного
и оперативного
запоминающего
устройств
предназначен
для управления
всеми другими
блоками часов.
Он осуществляет
обработку
прерывания
полученного
от таймера
предварительно
делает его
установку на
нужное значение,
готовит данные
полученные
от таймера,
выводит значение
на индикатор
и считывает
значение с
клавиатуры.
Контроллер
клавиатуры
и дисплея
предназначен
для дешифрации
значений полученных
от микропроцессора
и усиления
сигналов для
индикатора
также осуществляет
предварительную
обработку
сигналов полученных
от клавиатуры.
Дисплей предназначен
для вывода
реального
времени в графическом
виде понятном
для человека.
Клавиатура
электронных
часов служит
для ввода управляющих
сигналов таких
как установка
режима индикации
дисплея и установка
времени.


2.Выбор элементной
базы




Данное устройство
может быть
выполнено на
разной элементной
базе включая
микросхемы
серии 155,176,561 также
различные
микропроцессорные
комплекты
580,1816,1830 и на специализированных
микросхемах
например 1901 что
предпочтительней
с экономической
точки зрения
т.к в их состав
входят контроллер
клавиатуры
и дисплея тактовый
генератор,
устройство
управления,
таймер и многое
другое необходимое
для электронных
часов. В данной
работе в учебных
целях это устройство
будет разработано
на микроконтроллере
фирмы Microchip.inc.



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.



Рисунок 2.
Структурная
схема микроконтроллера
PIC16F84


Архитектура
основана на
концепции
раздельных
шин и областей
памяти для
данных и для
команд (Гарвардская
архитектура).
Шина данных
и память данных
(ОЗУ) - имеют ширину
8 бит, а программная
шина и программная
память (ПЗУ)
имеют ширину
14 бит. Такая
концепция
обеспечивает
простую, но
мощную систему
команд, разработанную
так, что битовые,
байтовые и
регистровые
операции работают
с высокой скоростью
и с перекрытием
по времени
выборок команд
и циклов выполнения.
14- битовая ширина
программной
памяти обеспечивает
выборку 14-битовой
команды в один
цикл. Двухступенчатый
конвейер обеспечивает
одновременную
выборку и исполнение
команды. Все
команды выполняются
за один цикл,
исключая команды
переходов. В
PIC16F84
программная
память объемом
1К х 14 расположена
внутри кристалла.
Исполняемая
программа может
находиться
только во встроенном
ПЗУ.


Условно
графическое
обозначение
микроконтроллера
приведено на
рисунке 3.




Программный
код, который
записан в кристалл,
может быть
защищен от
считывания
при помощи
установки бита
защиты (CP) в слове
конфигурации
в ноль. Содержимое
программы не
может быть
прочитано так,
что с ним можно
было бы работать.
Кроме того, при
установленном
бите защиты
становится
невозможным
изменять программу.
То-же относится
и к содержимому
памяти данных
EEPROM.Если установлена
защита, то бит
CP можно стереть
только вместе
с содержимым
кристалла.
Сначала будет
стерта EEPROM программная
память и память
данных и в последнюю
очередь бит
защиты кода
CP.



Кристалл
PIC16C84 имеет четыре
слова, расположенные
по адресу
(2000h-2003h) Они предназначены
для хранения
идентификационного
кода (ID) пользователя,
контрольной
суммы или другой
информации.
Как и слово
конфигурации,
они могут быть
прочитаны или
записаны только
с помощью
программатора.
Доступа по
программе к
ним нет.Если
кристалл защищен,
пользователю
рекомендуется
использовать
для идентификации
только младшие
семь бит каждого
ID слова, а в старший
бит записывать
`0`. Тогда ID слова
можно будет
прочитать даже
в защищенном
варианте.



Вход
в режим SLEEP осуществляется
командой SLEEP. По
этой команде,
если WDT разрешен,
то он сбрасывается
и начинает счет
времени, бит
"PD" в регистре
статуса (f3) сбрасывается,
бит "TO" устанавливается,
а встроенный
генератор
выключается.
Порты ввода/вывода
сохраняют
состояние,
которое они
имели до входа
в режим SLEEP. Для
снижения
потребляемого
тока в этом
режиме, ножки
на вывод должны
иметь такие
значения, чтобы
не протекал
ток между кристаллом
и внешними
цепями. Ножки
на ввод должны
быть соединены
внешними резисторами
с высоким или
низким уровнем,
чтобы избежать
токов переключения,
вызываемых
плавающими
высокоомными
входами. То же
и про RTCC. Ножка
/MCLR должна быть
под напряжением
Vihmc.






























































Обозначение



Нормальный
режим



Режим
записи EEPROM


RA0 - RA3 Двунаправленные
линии ввода/вывода.Входные
уровни ТТЛ.
-
RA4/RTCC Вход
через триггер
Шмитта. Ножка
порта ввода/вывода
с открытым
стоком или
вход частоты
для таймера/счетчика
RTCC
-
RB0/INT Двунаправленная
линия порта
ввода/вывода
или внешний
вход прерывания.
Уровни ТТЛ.
-
RB1 - RB5 Двунаправленные
линии ввода/вывода.
Уровни ТТЛ.
-
RB6 Двунаправленные
линии ввода/вывода.
Уровни ТТЛ.
Вход
тактовой частоты
для EEPROM
RB7 Двунаправленные
линии ввода/вывода.
Уровни ТТЛ.
Вход/выход
EEPROM данных.
/MCLR/Vpp/ Низкий
уровень на
этом входе
генерирует
сигнал сброса
для контроллера.
Активный низкий.
Сброс контроллера.
Для
режима EEPROM - подать
Vpp.
OSC1 /CLKIN Для
подключения
кварца, RC или
вход внешней
тактовой частоты.
-
OSC2 /CLKOUT Генератор,
выход тактовой
частоты в режиме
RC генератора,
в остальных
случаях - для
подкл.кварц
-
Vdd Напряжение
питания
Напряжение
питания
Vss Общий(земля) Общий(земля)


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






























































Интервал
рабочих температур
-55 ... +125С
Температура
хранения
-65 ... +150С
Напряжение
на любой ножке
относительно
Vss (земли) (исключая
Vdd и /MCLR)
-0.6...Vdd +0.6 В
Напряжение
Vdd относительно
Vss
0 ... +7.5 В
Напряжение
на /MCLR относительно
Vss
0...+14 В
(Прим.2)
Общая
рассеиваемая
мощность
800 мВт
(Прим.1)
Макс.
ток в ножку
Vss
150 мА
Макс.
ток в ножку
Vdd
100 мА
Макс.
ток в любую
ножку ввода
+- 500 мкА
Макс.
> втекающий
ток (любая ножка
Вывода)
25 мА
Макс.
вытекающий
ток (любая ножка
Вывода)
20 мА
Макс.
сумарный
вытекающий
ток для всех
ножек порта_А
80 мА
Макс.
сумарный
вытекающий
ток для всех
ножек порта_В
50 мА
Макс.
сумарный
втекающий
ток для всех
ножек порта_А
50 мА
Макс.
сумарный
втекающий
ток для всех
ножек порта_В
100 мА


Область ОЗУ
организована
как 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


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 ;переменная
исп для задержки
времени


cnt2
equ 2A ;переменная
исп для задержки
времени


cnt_r equ 2B ;переменная
исп для задержки
времени


temp equ 2C


clok2 equ 2D


temp1 equ 2E


n1 equ 2f


n2 equ 30


Start ;
Начальная
инициализация.



clrw


bsf
STATUS,RP0 ; Обращение
к банку 1.


clrf
PORTA ; Обнулить
порт А.


clrf
PORTB ; Обнулить
порт В.


movlw
b'00010000'


movwf
TRISA ; RA0 - RA3 выходы, RA4
вход.


movlw
b'00000001'


movwf
TRISB ; RB1 - RB7 выходы.RB0
вход


movlw
b'00000101' ;коэффициен
предделителя
64


movwf
OPTION_REG


bcf
STATUS,RP0 ; Обращение
к банку 0.


movlw
b'10100000'


movwf
INTCON


clrf min


clrf sek


clrf cl_k


movlw 0


movwf TMR0


movlw 01 ;
Для контроля
дисплея


movwf Dig_x


movlw 02 ;
загрузить во
все регистры
индикации 8.


movwf Dig_y


movlw 03


movwf Dig_z


movlw 04


movwf Dig_exp


movlw
.131


movwf
clok1


movwf
TMR0


movlw
.1


movwf
temp1


Start1 ;
Основной цикл
программы.


movlw
19 ; Установить
счетчик циклов
индикации.


movwf
cnt_r


loop1
clrwdt


call
refresh ;индикаторы.


decfsz
cnt_r, f


goto
loop1


;***присвоение
значения регистрам
индикации в
зависимости
от режима
;индикации******


clrwdt


btfss temp1,0


call Temp_min


btfsc temp1,0


call Temp_clk


;******присвоение
значения регистрам
индикации


movf n1,0


call Data1


movwf Dig_x


movf n1,0


call Data2


movwf Dig_y


movf n2,0


call Data1


movwf Dig_z


clrwdt


movf n2,0


call Data2


movwf Dig_exp


;********клавишы
установки
режима индикации
и времени*******


call Delay



btfss PORTA,4 ;сканируем
клавишу установки
режима RA4 вывод
3


incf temp1,1 ;прибавляем
к темпу 1


btfss PORTB,0 ;клавиша
установки
времени RB0 вывод
6


call Min_clk


goto Start1


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


Temp_min


movf min,0


movwf n1


movf sek,0


movwf n2


return


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


Temp_clk


movf cl_k,0


movwf n1


movf min,0


movwf n2


return


;****************выбор
прибавить
минуты(0) или
часы(1)***********


Min_clk


clrwdt


btfss temp1,0


incf min,1


btfsc temp1,0


incf cl_k


;*******проверка
60 мин 24 часа*****************


movf min,0


sublw .60


btfsc STATUS,Z


clrf min


movf cl_k,0


sublw .24


btfsc STATUS,Z


clrf cl_k


clrwdt


return


Sek ;*****************деление
на125


movlw
.131 ;записываем
131 т.к 256-125=131


movwf
clok1


incfsz sek


movf sek,0


sublw .60


btfsc STATUS,Z


call Min


return

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


;***********************Вывод
на индикатор*************


refresh ;
Процедура
сканирования
индикации.


movf
Dig_x, W ; Значение
деситых.часов
для индикации.


call
segment ; Преобразование
DEC -> семисегментный
код.


movwf
PORTB ; Вывод цифры
на индикатор.


bcf
PORTA, 0 ; Активизировать
индикатор.


call
Delay ; Задержка
времени для
сканирования.


bsf
PORTA, 0 ; Отключить
индикатор.

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


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


Delay ;
Подпрограмма
задержки времени


clrwdt


movlw
.5 ; для сканирования
индикации.



movwf cnt1


nop


beta
movlw .150



movwf cnt2


Alfa nop


nop


decfsz
cnt2, f


goto
Alfa


nop


nop


decfsz
cnt1, f



goto beta


nop


return


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


end


5.Программирование
микроконтроллера







Конструкция
представляет
из себя очень
простое и дешевое
устройство
для программирования
и последующего
чтения внутренней
памяти PIC контроллеров
типа PIC16C84 /83, PIC16F84 /83,
PIC16CE625 /624/623. В отличие
от многих
аналогичных
конструкций,
программатор
допускает
внутрисхемное
программирование.
При разработке
за основу была
взята схема
, рекомендуемая
фирмой "Microchip" .


Программатор
питается от
источника
напряжением
12…13v с током до
100ma и подключается
к порту LPT1 персонального
компьютера.
Управляющая
программа
разрабатывалась
для MS DOS, поэтому
при работе в
среде «Windows» для
соблюдения
необходимых
временных
соотношений
при программировании
ее необходимо
запускать в
режиме эмуляции
MS DOS. Хотя сама
программа
прекрасно
работает и в
оконном режиме,
попытка программирования
в этом случае
ни к чему хорошему
не приведет.
Алгоритм
программирования
большинства
PIC контроллеров
одинаков, поэтому
не составит
труда расширить
их номенклатуру.
Интерфейс
программы
прост и интуитивно
понятен.



Схема
электрическая
принципиальная
приведена на
чертеже.Протокол
работы микросхемы
при программировании
рассмотрен
в диаграммых
на рисунке 9,
вывод данных
из микроконтроллера
и рисунке 10 ввод
данных в микроконтроллер.


PIC16F84
может быть
запрограммирован
в готовом изделии
по последовательному
каналу. Это
реализовано
с помощью двух
линий тактового
сигнала и данных,
ка также трех
других линий:
питание , земля,
напряжение
программирование
. Это позволяет
производить
платы с незапрограммированными
устройствами
и программировать
микроконтроллер
непосредственно
перед поставкой
продукции. Это
также позволяет
снабжеть устройство
самым свежим
программным
обеспечением
или настраивать
программное
обеспечение
для кристалла.



Устройство
входит в режим
программирования
Удержанием
низкого уровня
на выводах RB6,
RB7 во время перехода
сигнала на
выводе MCLR/Vpp
из нижнего
уровня в высокий.
После этого
RB6 становится
тактовым сигналом,
а RB7-данными
программирования.



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





Заключение


По полученному
заданию была
проделана
работа в полном
объеме, разработаны
электронные
часы на микроконтроллере,
написана программа
для него рассмотрены
вопросы программирования
МК. При выполнении
данной работы
был получен
ценный опыт
разработки
подобных устройств
получены навыки
в разработке
програм на
языке ассемблер
также был закреплены
знания полученные
на занятиях.


Список литературы


1. Радио №1 2001г.
с.21 "Частотомер
на PIC-контроллере"



2. Угрюмов
Е.П. Цифровая
схемотехника.-СПб.:БХВ-Санкт-Петербург,2000.-528
с.: ил.


3.
Микроконтроллеры.
Выпуск 2:Однокристальные
микроконтроллеры
PIC12c5x, PIC16x8x, PIC14000, M16C/61/62. Перевод
с англ.Б.Я.. Прокопенко/
Под ред.Б. Я.
Прокопенко.-
М.: ДОДЭКА, 2000.- 336 с.


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


Микроконтроллеры.
Выпуск 2:


Однокристальные
микроконтроллеры
PIC12c5x, PIC16x8x, PIC14000,

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:6150
Символов:61458
Размер:120.04 Кб.