Автор работы: Пользователь скрыл имя, 06 Декабря 2013 в 21:22, курсовая работа
Не для кого не секрет, що в наш час техніка набрала шаленої швидкості розвитку і є підстави стверджувати, що ця швидкість і далі буде зростати. Технологія нашої цивілізаціїї досягла грандіозного рівня. Зараз людство може керувати астрономічними за величиною енергіями, починаючи від потужності ядерної енергетики, закінчуючи можливістю впливати на проходження процесів в середині власної планети і навіть інших космічних тіл.
Вступ 3
1 Аналітичний огляд існуючих рішень термостабілізаторів 5
2 Аналіз вихідних даних та розробка структурної схеми термостабілізатора 13
3 Розробка функціональної схеми термостабілізатора 15
4 Вибір елементної бази термостабілізатора 17
5 Розробка, розрахунок та опис принципової схеми термостабілізатора 21
6 Розробка програмного забезпечення термостабілізатора 27
7 Розрахунок потужності споживання термостабілізатора 32
8 Розрахунок надійності термостабілізатора 34
9 Інструкція з експлуатації термостабілізатора 37
Висновки 38
Література
Технічні характеристики приладу, отримані з розрахунків, відповідають завданню на курсовий проект.
Література
(обов¢язковий)
Текст програми для мікроконтролера.
;Програма для термостабілізатора на PIC16F84 4МГц с датчиком температури DS18B20
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LIST P=16F84
;Опис вбудованих в контролер ресурсів
#include <P16F84.INC>
__config _XT_OSC & _WDT_OFF & _PWRTE_ON
F0 EQU 0
RTIF equ 2
;Опис змінних і констант
NumL EQU 0x0C
NumH EQU 0x0D
Thou EQU 0x0E
Hund EQU 0x0F
Tens EQU 0x10
Ones EQU 0x11
I EQU 0x13
A EQU 0x14
BACKUPW EQU 0x15
BACKUPS EQU 0x16
RAZR0 EQU 0x17 ;Три комірки, містять семисегментний код
RAZR1 EQU 0x18 ;для виводу на індикатор
RAZR2 EQU 0x19
;В змінній FLAGS кожен біт сигналізує про:
;0 – натиснкта кнопка 1
;1 - натиснкта кнопка 2
;2 – необхідність оновлення екранного буфера
;5 - раз в секунду сигналізує про необхідність зчитування паказників DS1820
;6 - необхідність виводу
FLAGS EQU 0x1A
J EQU 0x1B
K EQU 0x1C
TIME0 EQU 0x1D
TIME1 EQU 0x1E
PA EQU 0x1F
T7SEG0 EQU 0x20
T7SEG1 EQU 0x21
T7SEG2 EQU 0x22
T_IND EQU 0x23
TEMP_READH EQU 0x24
TEMP_READL EQU 0x25
TL EQU 0x26
TH EQU 0x27
TIME2 EQU 0x28
I_BYTE EQU 0x29
_N EQU 0x2A
TEMP EQU 0x2B
O_BYTE EQU 0x2C
LOOP1 EQU 0x2D
LOOP2 EQU 0x2E
T_ALARM EQU 0x2F
DT_ALARM EQU 0x30
CONSTANT DATA_PIN=7
;************ Початкова ініціалізація контролера и програмы ************
BSF STATUS, RP0 ;Встановлюємо сторінку пам’яті 1
CLRF TRISA ;Налаштовуємо усі лінії порту А і В на вивід
CLRF TRISB
GOTO BEGIN_PROG
;************ Точка входу в процедуру
обробки переривань від
BCF INTCON, GIE ;Забороняєм переривання
MOVWF BACKUPW ;Зберігаєм вміст акумулятора
MOVF STATUS, 0 ;і регістра STATUS
MOVWF BACKUPS
;Програмні таймери
INCF TIME0, 1
MOVF TIME0, 0
SUBLW .81 ;122
BTFSC STATUS, C
GOTO L22
CLRF TIME0
INCF TIME2, 1
L18 MOVF TIME2, 0
SUBLW .2 ;Встановлюєм період вимірювання температури рівним 1 сек.
BTFSC STATUS, C
GOTO L26
CLRF TIME2
BSF FLAGS, 5
L26 BTFSS FLAGS, 0
;Зміна заданої температури
GOTO L22 ;натиснення кнопки 1
BTFSS FLAGS, 1 ;Якщо натисната кнопка 1
GOTO L22
BCF FLAGS, 2
BSF FLAGS, 7
INCF T_ALARM, 1
MOVF T_ALARM, 0
SUBLW 0x7D ;Якщо досяг 125 градусів, скидаємо до -55 градусів
BTFSS STATUS, Z
GOTO L22
MOVLW 0xC9
MOVWF T_ALARM
;Опитування стану кнопок
L22 BCF PA, 0 ;Прапорці, які показують
BCF FLAGS, 1 ;стан кнопок.
BCF PA, 1 ;Вмикаєм індикатори
BCF PA, 2
BSF PA, 4
MOVF PA, 0
MOVWF PORTA
BSF STATUS, RP0 ;Встановлюємо сторінку пам’яті 1
BSF TRISB, 5 ;Розряди порту В, подключені до кнопок налаштовуєм
BSF TRISB, 6
BCF STATUS, RP0 ;Встановлюємо сторінку пам’яті 0
BTFSC PORTB, 6 ;Встановлюємо прапорці в залежності від стану кнопок
GOTO L23
BSF FLAGS, 0
MOVLW .255
MOVWF T_IND
L23 DECFSZ T_IND
GOTO L24
BCF FLAGS, 0
BTFSC FLAGS, 7
CALL SEEPROM
BCF FLAGS, 7
L24 BTFSS PORTB, 5
BSF FLAGS, 1
BSF STATUS, RP0 ;Встановлюємо сторінку пам’яті 1
BCF TRISB, 5 ;Розряди порту В, подключені до кнопок налаштовуєм
BCF TRISB, 6
BCF STATUS, RP0 ;Встановлюємо сторінку пам’яті 1
;Динамічна індикація вмісту RAZR0, RAZR1, RAZR2
MOVLW .0 ;Показуємо розряд 0
SUBWF I, 0
BTFSS STATUS, Z
GOTO L2
MOVLW B'10000000'
ANDWF PORTB, 1 ;Очищуєм розряди порту, подключені до індикатора
MOVF RAZR0, 0
IORWF PORTB, 1 ;Виводимо цифру
BSF PA, 0 ;Включаємо відповідний розряд індикатора
MOVF PA, 0
MOVWF PORTA
GOTO L4
L2 MOVLW .1 ;Показуємо розряд 1
SUBWF I, 0
BTFSS STATUS, Z
GOTO L3
MOVLW B'10000000'
ANDWF PORTB, 1 ;Очищуєм розряди порту, подключені до індикатора
MOVF RAZR1, 0
IORWF PORTB, 1 ;Виводимо цифру
BSF PA, 1
BTFSC FLAGS, 6
BCF PA, 4
BTFSS FLAGS, 6
BSF PA, 4
MOVF PA, 0
MOVWF PORTA
GOTO L4
L3 MOVLW B'10000000'
ANDWF PORTB, 1 ;Очищуєм розряди порту, подключені до індикатора
MOVF RAZR2, 0
IORWF PORTB, 1 ;Виводимо цифру
BSF PA, 2
MOVF PA, 0
MOVWF PORTA
L4 INCF I, 1
MOVLW .3 ;Обнулення лічильника розрядів, коли досяг 3
SUBWF I, 0
BTFSC STATUS, Z
CLRF I
;Завершення обробки
IRET BCF INTCON, RTIF
;Скидання прапорця
MOVF BACKUPS, 0
MOVWF STATUS
MOVF BACKUPW, 0 ;Відновлення вмісту акумулятора
BSF INTCON, GIE ;Дозвіл переривань
RETFIE
;Повернення з обробки
;************ Продовження початкової ініціалізації ************
BEGIN_PROG
MOVLW B'01000011'
;Підключаемо попередній
MOVWF OPTION_REG ;коеффициєнт ділення 1:16, сигнал на таймер від
BCF STATUS, RP0 ;Встановлюємо сторінку пам’яті 0
CLRF PORTB
MOVLW B'00000111'
MOVWF PA
MOVF PA, 0
MOVWF PORTA
CLRF I ;Ініціалізуємо змінні
CLRF FLAGS
CALL START_DS
CLRF TMR0
CLRF TEMP_READL
CLRF TEMP_READH
CALL LEEPROM
MOVLW 0x02
MOVWF DT_ALARM
CLRF TIME0
CLRF TIME2
CLRF TMR0
MOVLW B'10100000' ;Дозволяєм переривання від переповнення таймера
MOVWF INTCON
BCF FLAGS, 5
BCF FLAGS, 3
MOVLW B'10111111' ;(три риски при включенні)
MOVWF RAZR0
MOVWF RAZR1
MOVWF RAZR2
CALL START_DS
;Пауза до отримання першого
достовірного результату
L0 BTFSS FLAGS, 5
GOTO L0
CALL START_DS
BCF FLAGS, 5
L00 BTFSS FLAGS, 5
GOTO L00
;************ Основний цикл програми ************
L10 CLRWDT
L25 BTFSS FLAGS, 0
GOTO L12 ;Необхідний вивід температури
BTFSC FLAGS, 2
GOTO L10
BSF FLAGS, 2
BCF FLAGS, 6 ;Відключення коми
BTFSC T_ALARM, 7 ;Обчислювання цілої частини
GOTO L70 ;Температура нижче нуля
MOVF T_ALARM, 0
MOVWF NumL
GOTO L71
L70 MOVLW 0xFF
MOVWF NumL
MOVF T_ALARM, 0
SUBWF NumL, 1
L71 CLRF NumH
CALL Convert
MOVF Ones, 0
CALL DS7SEG
MOVWF RAZR0
MOVF Tens, 0
CALL DS7SEG
MOVWF RAZR1
MOVF Hund, 0
CALL DS7SEG
MOVWF RAZR2
BTFSC T_ALARM, 7
BCF RAZR2,
6 ;Включення
знаку мінус при відємній
GOTO L10
L12 BCF FLAGS, 2 ;Вивід температуры
BTFSC FLAGS, 3
CALL CONV_T
BCF FLAGS, 3
BTFSS FLAGS, 5
GOTO L10
;Передається керування кожну секунду
BCF FLAGS, 5
BSF FLAGS, 3
CALL READ_T
CALL START_DS
ANDLW 0xFF
BTFSS STATUS, Z
GOTO L10
MOVLW B'00000001'
MOVWF RAZR0
MOVWF RAZR1
MOVWF RAZR2
BCF FLAGS, 3
GOTO L10 ;Повертаємось на початок циклу
;*****************************
;Процедура перетворення
DS7SEG
ADDWF PCL, 1
RETLW B'01000000' ;0
RETLW B'01111001' ;1
RETLW B'00100100' ;2
RETLW B'00110000' ;3
RETLW B'00011001' ;4
RETLW B'00010010' ;5
RETLW B'00000010' ;6
RETLW B'01111000' ;7
RETLW B'00000000' ;8
RETLW B'00010000' ;9
RETLW B'01111111' ;Пробіл
RETLW B'00111111' ;Мінус
;*****************************
;Процедура переводу числа
;(змінні Thou, Hund, Tens, Ones)
Convert
swapf NumH,w
IORLW B'11110000'
movwf Thou
addwf Thou, 1
addlw 0xE2
movwf Hund
addlw 0x32
movwf Ones
movf NumH, 0
andlw 0x0F
addwf Hund, 1
addwf Hund, 1
addwf Ones, 1
addlw 0xE9
movwf Tens
addwf Tens, 1
addwf Tens, 1
swapf NumL, 0
andlw 0x0F
addwf Tens, 1
addwf Ones, 1
rlf Tens, 1
rlf Ones, 1
comf Ones, 1
rlf Ones, 1
movf NumL, 0
andlw 0x0F
addwf Ones, 1
rlf Thou, 1
movlw 0x0A
Lb1: addwf Ones, 1
decf Tens, 1
btfss 3, 0
goto Lb1
Lb2: addwf Tens, 1
decf Hund, 1
btfss 3, 0
goto Lb2
Lb3: addwf Hund, 1
decf Thou, 1
btfss 3, 0
goto Lb3
Lb4: addwf Thou, 1
btfss 3, 0
goto Lb4
MOVLW Thou ;Видалення незначачих нулей
MOVWF FSR
MOVLW 3
MOVWF I
L54 MOVF F0, 0
ANDLW 0x0F
BTFSS STATUS, Z
RETURN ;Розряд не дорівнює 0
Информация о работе Розробка мікроконтролерного термостабілізатора