МП Сам раб. Самостоятельная работа По дисциплине Микропроцессорная система Микропроцессорная система управление стиральной машиной Выполнил студент группы 42717 Пернекулов А. А
Скачать 450.98 Kb.
|
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВО. Николайчук «x51-совместимые микроконтроллеры фирмы Silicon Laboratories (Cygnal),M.,ИД СКИМЕН,2004» Бродин В.Б., Шагурин М.И. Справочник. Микроконтроллеры: архитектура, программирование, интерфейс. М.: ЭКОМ 1991 г. «Справочник по однокристальным микроконтроллерам КМ1816ВЕ48 и КМ1816ВЕ51» (источник - http://ofap.ulstu.ru/files/REFER_BOOK_MK48&MK51/start.htm) Свободная энциклопедия «Википедия» (ресурс – http://www.wikipedia.org) Микропроцессорные средства: пособие по курсовому проектированию/ С.А. Лосев; Балт. гос. техн. ун-т, СПб., 2009. ПРИЛОЖЕНИЕ А – ПРИНЦИПИАЛЬНАЯ ЭЛЕКТРИЧЕСКАЯ СХЕМА УСТРОЙСТВА ПРИЛОЖЕНИЕ Б – КОД ПРОГРАММЫ С КОММЕНТАРИЯМИ M_BLOCK : MOV A, P1; записываем в аккумулятор значение порта P1 ANL A, #10B; обнуляем ненужные биты (оставляем только сигнал концевого датчика) JZ M_BLOCK; если дверь не закрыта (датчик разомкнут - P1.1=0) возвращаемся к началу проверки и так до тех пор пока дверца не будет зарыта SETb P2.3; закрыли замок на двери перед стиркой 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, данные выровнены по левому краю). 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 ; открыли замок |