Принципиальная электрическая схема

Рисунок 7

 

КД – концевой датчик блокировки двери

ДТ – датчик температуры

КЗ – клапан залива

 



Алгоритм работы

 



Вывод

 

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

 



Литература

 

1. О. Николайчук «x51-совместимые микроконтроллеры фирмы Silicon Laboratories (Cygnal),M.,ИД СКИМЕН,2004»

2. Бродин В.Б., Шагурин М.И. Справочник. Микроконтроллеры: архитектура, программирование, интерфейс. М.: ЭКОМ 1991 г.

3. «Справочник по однокристальным микроконтроллерам

4. КМ1816ВЕ48 и КМ1816ВЕ51» (источник - http://ofap.ulstu.ru/files/REFER_BOOK_MK48&MK51/start.htm)

5. Свободная энциклопедия «Википедия» (ресурс – http://www.wikipedia.org)

 



Приложение А

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

Вход концевого датчика P 1.1 показывает закрыта ли дверца, если закрыта – необходима её заблокировать перед началом стирки

M_BLOCK:

MOV A, P1 // записываем в аккумулятор значение порта P1

ANL A, #10B // обнуляем ненужные биты (оставляем только сигнал концевого датчика)

JZ M_BLOCK // если дверь не закрыта (датчик разомкнут - P1.1=0) возвращаемся к началу проверки и так до тех пор пока дверца не будет зарыта

SETb P2.3 // закрыли замок на двери перед стиркой

Процедура работы таймера:

Для каждого этапа работы определена длительность:

Набор воды – 30 сек (R2 = 10B)

Вращение барабана – 10 мин (R2 = 100100B)

Нагрев воды – 2 мин (R2 = 111B)

Слив воды – 30 сек (R2 = 10B)

Отжим – 20 мин (R2 = 1001000B)

TIMER:MOV TMOD, #1B

XRL TH0, TH0

SETB TR0

MOV A, #R2// посчитанное значение для текущего режима работы

MOV R2, #0B

MAIN:MOV R1, #0B

INC R2

SEC:INC R1

CICLE: JNB TF0, CICLE

CLR TF0

CJNE R1, #11111111B, MAIN

CJNE R2, A, END

SJMP SEC

END:RET

ACPCONF:// Конфигурирование АЦП для использования AIN0 в однопроводном режиме

MOV ADC0CF, #10000101b // Тактовая частота преобразование SAR0 = 941кГц,коэф. усиления = 16

MOV AMX0CF, #00H// 8 входов в однопроводном режиме

MOV AMX0SL, #00H// Выбор входа AIN0

MOV ADC0CN, #10001101b // Разрешение АЦП0 (режим непрерывной выборки, преобразование инициализируется по переполнению Таймера 2, данные выровнены по левому краю).

RET

После того как дверца заблокирована можно приступать к работе. Режим работы определяется битами 0 и 1 порта P2, бит 2 порта P2 определяет температуру для стирки в выбранном режиме. При проверке установленного режима в случае если он не равен нулю происходит уменьшение значения режима на единицу – в таком случае на каждом следующем шаге мы точно знаем какой режим установлен.

Список режимов работы (биты указаны по убыванию – второй, первый, нулевой):

000 – «обычна стирка при температуре 30 градусов Цельсия»

100 – «обычна стирка при температуре 60 градусов Цельсия»

001 – «полоскание при температуре 30 градусов Цельсия»

101 – «полоскание при температуре 60 градусов Цельсия»

010 – «быстрая стирка при температуре 30 градусов Цельсия»

110 – «быстрая стирка при температуре 60 градусов Цельсия»

011 - «отжим»

MOV R0, P2 // запись режима работы в регистр R0

ANL R0, #00000011B // обнуление ненужных бит (несмотря на обнуление второго бита, отвечающего за температуру, со входа P2.2 мы всегда сможем его считать)

MOV A, R0 // переносим в аккумулятор (для команды условного перехода)

JZ M_NABOR // если режим 0 (простая стирка) переходим к стирке

DEC R0 // уменьшаем значение режима для последующего сравнения с нулём

MOV A, R0 // переносим в аккумулятор (для команды условного перехода)

JZ M_PredNabor // если режим "полоскание" переходим к установке режима "отжим" чтобы не стирать дважды

DEC R0 // уменьшаем значение режима для последующего сравнения с нулём

MOV A, R0 // переносим в аккумулятор (для команды условного перехода)

JZ M_BezOtzhima // если режим "без отжима" (10, уже равен 00) переходим

SJMP M_OTZHIM // если режим "отжим" (11, уже равен 01) переходим

M_BezOtzhima:

Mov R0, #11111111B // устанавливаем любое значение кроме выбранных режимов, для того чтобы в последствии пропустить этап «отжим»

SJMP M_NABOR // пропускаем установку режима "отжим" и переходим к стирке

M_PredNabor:

MOV R0, #00000011B // Устанавливаем режим "отжим"

Блок набора воды:

M_NABOR:

ANL P0, #0B // гасим светодиоды

SETb P0.0 // включаем светодиод "набор воды"

SETb P1.2 // включение насоса

MOV R2, #10B// запись времени работы в данном режиме

CALL TIMER // включение таймера

CLR P1.2 // по истечению заданного времени залива происходит отключение насоса

Блок нагрева воды:

ANL P0, #00000000B // гасим светодиоды

JB P2.2, M_TEMP// проверка температурного режима

MOV R3, #11110B// записали температуру 30 градусов

M_TEMP:

MOV R3, #111100B// записали температуру 60 градусов

SETb P0.1 // включем светодиод "нагрев воды"

SETb P1.0 // включаем тэн

Считываем показания датчика температуры:

CALL ACPCONF// конфигурирование ацп

M_NSTEP:

MOV A, ADCOH//старшие биты

SWAP A// обмен тетрад

ANL A, #0F0H// получили старший полубайт

MOV R5, A// временно записываем в R5

MOV A, ADC0L// считываем младший байт

SWAP A// обмен тетрад

ANL A, #0FH// получили младший полубайт

ADD A, R5// суммирование полубайт

CJNE A, R3, M_NSTEP // если требуемая температура достигнута идем дальше, если нет проверяем снова

CLR P1.0 // выключили тэн

Блок вращения барабана при стирке:

ANL P0, #0B // гасим светодиоды

SETb P0.2 // включаем светодиод "стирка"

MOV P1, #10000000B // Установка скорости оборотов (режим 000)

SETb P1.7 //включение двигателя (старший бит=1)

MOV R2, #100100B// запись времени работы в данном режиме

CALL TIMER // Включение таймера

CLR P1.7 // выключение двигателя по истечении времени

Блок выпуска воды:

ANL P0, #0B // гасим светодиоды

SETb P0.3 // включем светодиод "выпуск воды"

SETb P1.3 // открытие клапана

MOV R2, #10B// запись времени работы в данном режиме

CALL TIMER // вызываем процедуру работы таймера

CLR P1.3 // закрытие клапана по истечении времени

CJNE R0, #0B, M_PredNabor // если первый режим (первые два бита порта P2 равны нулю) то переход

CJNE R0, #11111111B, M_END // если режим «быстрая стирка» то переход к окончанию работы

Блок отжима (проходит во всех режимах работы кроме режима «быстрой стирки»):

M_OTZHIM:

ANL P0, #0B // гасим светодиоды

SETb P0.4 // включаем светодиод "отжим"

MOV A, P2 // передача скорости двигателя в аккумулятор

ANL A, #01110000B // обнуление ненужных битов (оставляем только те, которые используются двигателем)

MOV P2, A

SETb P1.7 // включение двигателя

MOV R2, #1001000B// запись времени работы в данном режиме

CALL TIMER // включение таймера

CLR P1.7 // выключение двигателя по истечении времени

Блок окончания работы:

M_END:

ANL P0, #0B // гасим светодиоды

SETb P0.5 // включаем светодиод "конец работы"

CLR P2.3 // открыли замок

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: