Рефераты. Разработка системы управления кондиционером

Подпрограмма wr1LAN предназначена для передачи по шине одного бита в режиме записи. Эта подпрограмма очень похожа на wr8LAN. Отличие только в отсутствии цикла. Бит информации, предназначенный для передачи по шине 1-Wire, передается в подпрограмму через ячейку CY. В зависимости от значения этого бита выполняется либо подпрограмма mwhi, либо mwlow.

Подпрограмма rd8LAN предназначена для чтения одного байта по шине 1-Wire. Программа возвращает прочитанный байт в аккумулятор. Основная часть подпрограммы — это цикл ввода битов. В качестве параметра цикла используется регистр r1. Первая команда, выполняемая в теле цикла — вызов подпрограммы чтения слота. Она помещает прочитанный бит в ячейку CY. Затем бит помещается в аккумулятор методом сдвига. Сдвиг производится при помощи команды rrс. После каждого такого сдвига в аккумулятор «вдвигается» очередной прочитанный бит. После восьми циклов сдвига аккумулятор будет содержать полноценный прочитанный байт. Оператор djnz служит для организации всего этого цикла.

Подпрограмма rdlLAN предназначена для чтения одного бита из линии 1-Wire. Она вызывает подпрограмму чтения слота mrslot.

В ОЗУ микроконтроллера температура записана в двоичном виде. Перед нами стоит задача: перевести это значение из двоичной системы в десятичную. И лишь затем вывести его на экран.

Для двоично-десятичного преобразования удобно использовать команду целочисленного деления div. Для того, чтобы осуществить двоично-десятичное преобразование, нужно выполнить целочисленное деление исходного числа на 10. После такой операции аккумулятор будет содержать частное, а регистр b — остаток от деления. Частное будет соответствовать количеству десятков, а остаток — количеству единиц в десятичном представлении числа.

Затем можно просто вывести на экран два этих числа. Сначала содержимое аккумулятора, а затем содержимое регистра b. В результате, на экране мы получим изображение целой части значения температуры в десятичном виде. Такой простой метод преобразования будет правильно работать только в том случае, если целая часть числа не превышает значения 99. При большем значении температуры в старшем разряде полученного десятичного числа будут появляться буквы: частное от деления будет больше 10. Однако для измерения температуры помещения диапазона (0...60)°С вполне достаточно. Для реализации описанного алгоритма разработана подпрограмма prtmp. Подпрограмма prtmp читает два байта температуры из буфера bufLAN и выводит значение целой части температуры на экран в десятичном виде.

Подпрограмма reoh обеспечивает режим охлаждения работы кондиционера. Она дискретно (с интервалом в 3мин.) вклычает и выключает компрессор и вентилятор и анализирует разницу Туст и Тпм. Если Тпм меньше Туст на 2 градуса в течении двух циклов работы кондиционера в режиме охлаждения, то кондиционер переходит в режим обогрева (подпрограмма reoh с помощью аккумулятора переходит к метке in4 основной программы). Если нет, то кондиционер остается в режиме охлаждения (переходит к метке in5). Подпрограмма reoh так же вызывает подпрограмму zader ( если клавиша нажата, то переход с помощью аккумулятора к метке in1).

Подпрограмма reob обеспечивает режим обогрева работы кондиционера. Она не представлена в приложении 1, но работает аналогично подпрограмме reoh (включает и выключает не компрессор, а нагревательный элемент).


ЗАКЛЮЧЕНИЕ


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

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

В процессе выполнения работы был выбран термодатчик с 1-Wire интерфейсом, который оптимально подходит для решения задач курсового проекта. Была разобрана работа 1-Wire интерфейса на разных уровнях программной реализации. Выбраны типичные исполнительные устройства кондиционера, такие, как компрессор, вентилятор, нагревательный элемент по таким критериям, как низкая стоимость, простоту в использовании и минимальные затраты на эксплуатацию. Был выбран микроконтроллер семейства МК51 по тем же критериям.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


1.   В.В.Коляда. Кондиционеры – М.: СОЛОН-Пресс, 2002 – с. 233.

2.   А.В.Белов. Конструирование устройств на микроконтроллерах – СПб.: Наука и техника, 2005 – с. 255.

3.   www.inrost.ru - научно-техническая библиотека сайта фирмы ИНРОСТ.

4.   А.В.Логинов. Программирование микро-ЭВМ семейства МК51: Учеб. Пособие – СПб.: Балт. гос. тех. ун-т, 1996 – 72с.

5.   www.atmel.ru - официальный сайт корпорации Atmel.


ПРИЛОЖЕНИЕ


Приложение 1 ;основная программа


bank0          EQU  00000000B  ;коды банков памяти

bank1          EQU  00001000B

bank1          EQU  00010000B

bank2          EQU  00110000B

                   DSEG

                   ORG 30H

LoopCnt:     DS     1                 ;счетчик задержки

bufLAN:      DS     8                 ;буфер для приема данных из MicroLAN

bufLAN2:    DS     8                 ;буфер для Туст

bufLAN3:    DS     1                 ;счетчик рабочих циклов кондиционера

                   ORG 60H             ;начало стека

stack:           DS     20H             ;глубина стека

main:  mov bufLAN2, #18H                ;начальное значение Туст=24 градуса Цельсия

          call inkl

          jz in3                               ;если клавиши не нажаты переход

in1:    cjne a, #11B, in2             ;если обе клавиши нажаты переход

          inc bufLAN                     ;Туст увеличить на 1

          jmp in3

in2:    dec bufLAN2

in3:    call eclr1                         ;вывод Туст

          mov a, #2

          call ecur1

          call prtmu                        ;Туст на ЖКИ №1

          call eclr2

          mov a, #2

          call ecur2

          call sttmp                        ;запуск преобразования Тпм

          call rdtmp                       ;чтение Тпм

          call prtmp                       ;вывод Тпм на ЖКИ     №2

          mov a, bufLAN+1           ;записьТпм в аккумулятор

          swap a

          anl a, #0F0H

          mov R5, a

          mov a, bufLAN

          swap a

          anl a, #0FH

          add a, R5                        ;в аккумуляторе байт Тпм

          mov a, #LE(a, bufLAN2)          ;сравнение Тпм<=Туст

          mov bufLAN3, #0           ;обнуление счетчика циклов работы кондиционера

          cjne a, #0FFFFH, in5                ;обработкаусловия Тпм<=Туст

in4:    call reob

          jmp in6

in5:    call reoh

in6:    mov b, a

          mov a, EQ(b, #1)

          cjne a, #0FFFFH, in7

          jmp in1

in7:    mov a, EQ(b, #4)

          cjne a, #0FFFFH, in5

          jmp in4

;Подпрограмма ввода с клавиатуры (0 бит аккумулятора – за S2, 1 бит – за S1)

inkl:    setb P0.0                        ;установка 1 на линиях клавиатуры

          setb P0.1

mov a, P0                       ;считывание порта p0

anl a, #00000011B           ;обнуление лишних разрядов

xrl a, #00000011B           ;инвертирование

ret

;подпрограмма сброса ЖКИ №1

eres1: mov P2, #0FH                          ;засылаем адрес регистра блокировки

setb P2.4

clr P2.4

mov P2, #01000001B                ;записываем код снятия блокировки

setb P2.4

clr P2.4

mov P2, #0                     ;устанавливаем адрес на первый разряд

setb P2.4

clr P2.4

ret

; подпрограмма сброса ЖКИ №2

eres2: mov P3, #0FH

setb P3.4

clr P3.4

mov p3, #01000001B

setb P3.4

clr P3.4

mov P3, #0

setb P3.4

clr P3.4

ret

;подпрограмма очистки ЖКИ №1

eclr1:  call eres1                         ;сброс экрана

mov P2, #01000000B                ;установка управляющего кода

mov R0, #20                            ;инициализация счетчика разрядов

c11:   set P2.4                          ;импульс записи

clr P2.4

          djnz R0, c11                             ;оператор цикла

          ret

; подпрограмма очистки ЖКИ №2

eclr2:  call eres2

mov P3, #01000000B

mov R0, #20

c21:   set P3.4

clr P3.4

          djnz R0, c21

          ret

;подпрограмма установки курсора для ЖКИ №1 по аккумулятору

ecur1: anl a, #0FH                     ;отделяем биты адреса

mov P2, a                       ;устанавливаем адрес на первый разряд

setb P2.4

clr P2.4

ret

; подпрограмма установки курсора для ЖКИ №2 по аккумулятору

ecur2: anl a, #0FH

mov P3,a

setb P3.4

clr P3.4

ret

;таблица символов

          ORG 0600H

ts:      DB     0EEH                    ;0

          DB     060H                     ;1

          DB     02FH                    ;2

DB     06DH                    ;3

DB     0E1H                    ;4

DB     0CDH                             ;5

DB     0CFH                    ;6

DB     068H                     ;7

DB     0EFH                    ;8

DB     0EDH                    ;9

DB     0EBH                    ;A

DB     0C7H                    ;b    

DB     08EH                    ;C

DB     067H                     ;d

DB     08FH                    ;E

DB     08BH                    ;F

DB     000H                     ;

DB     0A9H                    ;°

DB     001H                     ;-

DB     003H                     ;r

DB     047H                     ;o

;подпрограмма вывода символа на ЖКИ №1 через аккумулятор

prch1:          push DPL                       ;сохранение регистров в стеке

push DPH

push b

mov DPTR, #ts              ;начало таблицы символов

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.