МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Разработка часов на микроконтроллере PIC16F84

    Применение микроконтроллеров 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 Ком.

    [pic]

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

    [pic]

    Рисунок 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- и многое другое.

    [pic]

    Рисунок 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 ввод данных в

    микроконтроллер.

    [pic] PIC16F84 может быть запрограммирован в готовом изделии по

    последовательному каналу. Это реализовано с помощью двух линий тактового

    сигнала и данных, ка также трех других линий: питание , земля, напряжение

    программирование . Это позволяет производить платы с незапрограммированными

    устройствами и программировать микроконтроллер непосредственно перед

    поставкой продукции. Это также позволяет снабжеть устройство самым свежим

    программным обеспечением или настраивать программное обеспечение для

    кристалла.

    Устройство входит в режим программирования Удержанием низкого уровня

    на выводах RB6, RB7 во время перехода сигнала на выводе MCLR/Vpp из нижнего

    уровня в высокий. После этого RB6 становится тактовым сигналом, а RB7-

    данными программирования.

    После входа в режим программирования можно послать 6-ти битную

    команду. В зависимостии от нее можно записать или считать 14-битные данные.

    [pic]

    Заключение

    По полученному заданию была проделана работа в полном объеме, разработаны

    электронные часы на микроконтроллере, написана программа для него

    рассмотрены вопросы программирования МК. При выполнении данной работы был

    получен ценный опыт разработки подобных устройств получены навыки в

    разработке програм на языке ассемблер также был закреплены знания

    полученные на занятиях.

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

    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,

    -----------------------

    Генератор тактовой частоты с кварцевой стабилизацией

    4 Мгц

    Микропроцессор-ный блок

    Программируемый таймер

    Контроллер клавиатуры и дисплея

    Дисплей

    4х1

    ХХ.ХХ

    Клавиатура

    2х1

    [pic]

    [pic]

    [pic]

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.