Разработка термометра на основе микроконтроллера pic 16xx

Автор работы: Пользователь скрыл имя, 21 Ноября 2013 в 16:43, курсовая работа

Описание работы

В курсовой работе предложено разработать нерегулируемый выпрямитель напряжения постоянного тока со следующими характеристиками: – период изменения температуры 1 секунда; – погрешность измерения температуры 0,5 °C;
– дискретность отображения 0,5 °C; – количество программируемых пороговых значений 0..127,5 °C; –дискретность установки пороговых значений 0,5 °C; –напряжения питания 5 в; –максимальное напряжение, подводимое к выходам LOAD1 и LOAD2- ограничено максимально допустимыми U1 и U2 примененных VT1 и VT2.

Файлы: 1 файл

электронный термометр.docx

— 249.96 Кб (Скачать файл)

При частотах ниже 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. Схема подключения устройства индикации.

 

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

      


 

 

 

 

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


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

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

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

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

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

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


 

 

 

 Заключение

                   В результате выполнения курсового проекта был разработан

электронный термометр, соответствующий следующим условиям:

– период изменения температуры 1секунда;

– погрешность измерения температуры 0,5 °C;

– дискретность отображения 0,5 °C;

– количество программируемых  пороговых значений 0..127,5 °C;

–дискретность установки  пороговых значений  0,5 °C;

–напряжения питания 5 в;

–максимальное напряжение, подводимое к выходам LOAD1 и LOAD2-

  ограничено максимально  допустимыми U1 и U2 примененных VT1 и   

  VT2.

 

 

 

 

 

 

 

 


 

 

Список использованных источников

 

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

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

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

4. http://www.cxema.at.ua

5. http://www.microchip.ru//


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержание


 

  1. Введение…………………………………………………………………….4
  2. Обзор литературы и обоснование выбора схемы………………………...4
  3. Разработка электрической схемы принципиальной……………………12
  4. Программирование микроконтроллера………………………………….16
  5. Заключение ……………………………………………………………….18
  6. Список использованных источников……………………………………19
  7. Листинг программы………………………………………………………20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Листинг программы


--- Константы  ---

--- Макрокоманды ---

jnz MACRO metka1             ; условный переход,

btfss STATUS,Z           ; если не 0

goto metka1

endm

jz MACRO metka2             ; условный переход,

btfsc STATUS,Z           ; если 0

goto metka2

endm

jnc MACRO metka3             ; условный переход,

btfss STATUS,C    ; если нет переноса

goto metka3

endm

jc MACRO metka4             ; условный переход,

btfsc STATUS,C    ; если перенос

goto metka4

endm

mov     MACRO   DEST1,SOURCE1      ; пересылка регистр-регистр

movf    SOURCE1,W

movwf   DEST1

endm

mvi     MACRO   DEST2,CONST2       ; пересылка константы в регистр

movlw   CONST2

movwf   DEST2

endm;                        

 

 

 

 

--- ОПИСАНИЕ РЕГИСТРОВ  ---

W_copy  EQU 020h   ; В этих регистрах будет

ST_copy  EQU 021h   ; сохраняться контекст

FSR_copy EQU 022h

 

ADDRESS  EQU 023h   ; Хранение адреса ячейки, 

                                                                                                    задающей состояние светодиодов

SELECTOR EQU 024h   ; Код выбора знакоместа (т.е зажигаемого разряда)

 

TH  EQU 025h   ; Температура - старший байт

TL  EQU  026h   ; Температура - младший байт

CRCPIC  EQU 027h   ; Контрольная сумма, подсчитанная

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

TRY  EQU 028h   ; Попытки чтения по 1-Wire

COUNTER  EQU 029h   ; Счетчик (используется при

                                                                                                   передаче данных по 1-Wire)

FIGX000  EQU 02Ah   ; Ячейки для хранения

FIG000X  EQU 02Bh   ; разрядов

FIG00X0  EQU 02Ch   ; двоично-десятичных цифр,

FIG0X00  EQU 02Dh   ; выводимых на индикатор

 

OUTA  EQU 02Eh   ; Хранение состояний защелок

                                                                         порта


TEMP1            EQU      03Ch              ;          Ячейки  для временного

TEMP2            EQU      03Dh              ;           хранения  данных

FLAGS   EQU      03Fh      ;     Флаги пользователя

 

--- ПУСК ---

ORG 0    ;Вектор сброса

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

bcf STATUS,RP1

goto    Begin   ;Обходим обработчик прерываний и

                                                                         подпрограммы

--- ОБРАБОТЧИК ПРЕРЫВАНИЙ ---

ORG 4             ;Вектор прерываний

Interrupt movwf W_copy   ;Сохраняем контекст

mov ST_copy,STATUS

mov FSR_copy,FSR

 

movlw B'00010000'                ;Маска для сохранения состояния бита 4

andwf OUTA,F   ;Обнуляем биты, управляющие светодиодами (PORTA)

movf OUTA,W    ;Гасим

movwf PORTA                              ;индикатор

movf SELECTOR,W                 ;Подготавливаем к зажиганию текущий

iorwf OUTA,F   ;разряд индикатора

 

movf ADDRESS,W  ;Адрес ячейки с требуемыми на данном шаге данными


movwf FSR   ;заносим в FSR (косвенная адресация)

movf INDF,W   ;Переносим данные из ячейки с

                                                                         указанным адресом в W

movwf PORTB            ;И выдаем через PORTB на 

                                                                          сегменты индикатора

 

movf OUTA,W     ;Зажигаем текущий

movwf PORTA              ;разряд индикатора

 

bcf STATUS,C

rrf SELECTOR,F

;Далее ветвление, посчитаем  шаги и уравняем пути (a,b)

btfss STATUS,C  ;Цифра была последней в этом цикле, пропускаем переход (1)

goto Int_label  ;Цифра еще не последняя, переход (2a) / nop(1b)

 

movlw FIGX000  ;Снова заносим адрес ячейки (1b)

movwf ADDRESS  ;в ячейку ADDRESS - начался

                                                                        следующий цикл (1b)

movlw B'00001000'  ;Снова готовимся к      (1b)

movwf SELECTOR  ;выводу начальной цифры (1b)

 

goto End_int   ;(2b)  Путь по b: 1b+1b+1b+1b+1b+2b = 7 шагов

 

Int_label incf      ADDRESS,F             ;В следующем прерывании будем

                                                                    выводить следующий байт (1a)


nop

nop

goto      End_int               ;(2a)  Путь по а: 2a+1a+1a+1a+2a = 7

                                                                       шагов

End_int  bcf INTCON,T0IF  ;Сбрасываем флаг запроса на

                                                                                  прерывание от таймера TMR0

mov FSR,FSR_copy

mov STATUS,ST_copy  ;Восстанавливаем контекст

swapf W_copy,F                  ;Тут приходится хитрить, чтобы

                                                                               сохранить бит Z в STATUS

swapf W_copy,W  ;(movf его может изменить, а swapf - нет)

retfie    ;Возврат из обработчика с установкой бита GIE

--- ПОДПРОГРАММЫ ---

;Подпрограмма дешифрации  для 7-сегм. индикатора

 

DC7   clrwdt

clrf      PCLATH

addwf     PCL,F   ;Табличная конвертация

 retlw     B'00100100'   ; 0

retlw     B'11100111'   ; 1

retlw     B'01001100'   ; 2

retlw     B'01000101'   ; 3

retlw     B'10000111'   ; 4


retlw     B'00010101'   ; 5

retlw     B'00010100'   ; 6

retlw     B'01100111'   ; 7

retlw     B'00000100'   ; 8

 retlw     B'00000101'   ; 9

retlw     B'00010101'           ; точка

Конец подпрограммы дешифрации для  7-сегм. индикатора

 

                Подпрограмма паузы (используется  ячейка TEMP1)

 

Pause            clrwdt

movwf     TEMP1            ;Длительность паузы задается  числом в W (примерно в мс)

movf      TEMP1,F          ;Проверка на 0

btfsc     STATUS,Z         ;Если длительность не равна  0, то Z=0 и пропускаем return

return                     ;Если же длительность равна  0, то сразу возврат

clrw                       ;Очищаем W

P_label          addlw     01h              ;Внутренний цикл по W

jnz       P_label

                 decfsz    TEMP1,F          ;Внешний цикл по TEMP1

                 goto      P_label          ;

Информация о работе Разработка термометра на основе микроконтроллера pic 16xx