PSN 1000 рублей PlayStation Network
PSN 1000 рублей PlayStation Network


Разблокировка Билайн Смарт 3
Разблокировка Билайн Смарт 3


Xbox Live Gold - Карта на 12 месяцев
Xbox Live Gold - Карта на 12 месяцев


В начало

Курсовой проект

на тему:

«Контроллер управления стиральной машиной»

 

Задание на курсовой проект

 

Разработать принципиальную схему и текст программы управления контроллером на базе микроконтроллера PIC16F83. Объект управления – стиральная машина. Отсчет времени осуществляется аппаратно, посредством встроенного модуля 8-битного таймера TMR0. Блоки RAM (36 байт), Flash-ROM (512 байт) и EEPROM (64 байта) входят в состав данного контроллера.

 

Алгоритм работы контроллера управления стиральной машиной

 

1.      После закладки белья и стирального порошка осуществляется программирование устройства:

-         Ввести время предварительной стирки (замачивания), ввод подтверждается клавишей «ENTER»;

-         Ввести время основной стирки;

-         Ввести температуру стирки;

-         Ввести время отжима белья;

-         Ввести скорость отжима белья (выбор из 3 вариантов);

2.      Работа устройства:

а)   начало работы после нажатия клавиши «ENTER»;

б)   открывается клапан воды и вода заливается до нужного уровня (до датчика уровня воды);

в)   начинается процесс замачивания, при этом каждые 2 минуты осуществляется вращение барабана (2 оборота в одном направлении и 2 в обратном);

г)   после окончания замачивания открывается клапан выпуска воды и насос до сигнала от датчика воды об ее отсутствии; идет отжим белья в течении 2 минут на низшей скорости, при этом клапан и насос включены;

д)   Стирка. Процесс начинается впуском  воды до нужного уровня (отличается от замачивания), после чего процессор дает команду на нагрев воды до нужной температуры (задается в двоично-десятичном коде). В течение стирки температура поддерживается на заданном уровне ± 5 % включением/выключением нагревателя при изменении температуры ниже/выше заданного уровня. Включается мотор для подачи воды для смыва порошка из контейнера и работает 2 минуты. Во время стирки барабан вращается 3 минуты в одну сторону и столько же в противоположную.

е)   Слив воды (См. п. г));

ж) Полоскание (См. п. б), в), г));

з)   Отжим. Открывается клапан выпуска воды и насос до сигнала от датчика воды об ее отсутствии; идет отжим белья в течение 2 минут на указанной скорости, при этом клапан и насос включены;

3.        После окончания стирки звучит звуковой сигнал из динамика устройства в течение 1 минуты. Частота сигнала 1кГц.

 

Входы и выходы блока стиральной машины

 

1.      Вход для клавиатуры

Клавиатура состоит из: кодовых кнопок и кнопки «Enter»

Рис. 1. Клавиатура

При нажатии, каждая кодовая кнопка возвращает 2-битный код.

код

значение

0

0

12 мин

30 °

1-я скорость

0

1

24 мин

40 °

2-я скорость

1

0

36 мин

50 °

3-я скорость

1

1

48 мин

60 °

---------------

 

При нажатии, кнопка Enter возвращает лог. «1»

 

2.      Вход датчика воды

Подача на вход лог. «1» означает, что вода достигла уровня датчика.

Сигнал лог. «0» означает, что вода не достигла уровня датчика.

 

3.      Выходы на двигатель

Выходы на двигатель имеют 3-битный формат:

 

код

значение

0

0

0

сигнал «СТОП»

0

0

1

вращение вперед 1-я скорость

0

1

0

вращение вперед 2-я скорость

0

1

1

вращение вперед 3-я скорость

1

0

0

сигнал «СТОП»

1

0

1

вращение назад 1-я скорость

1

1

0

вращение назад 2-я скорость

1

1

1

вращение назад 3-я скорость

 

 

4.      Выход на клапан залива

При подаче на выход лог «1» клапан открывается и включается насос залива.

Сигнал лог. «0» подает команду на закрытие клапана и отключает насос.

 

5.      Выход на клапан слива

При подаче на выход лог «1» клапан открывается и включается насос слива.

Сигнал лог. «0» подает команду на закрытие клапана и отключает насос.

 

6.      Выход на цифровой нагреватель

Выходы на нагреватель имеют 2-битный формат:

 

код

значение

0

0

30 °

0

1

40 °

1

0

50 °

1

1

60 °

 

 

7.      Выход на динамик

При подаче лог. «1» динамик издает звук 1кГц.

При подаче лог. «0» динамик не издает звук.

 

Блок-схема работы устройства

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Овал: 2
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Структурная схема устройства

Микропроцессорная система (МПС)

Объект управления

 


Аппаратная часть контроллера

Процессор Microchip PIC 16F83

Разрядность данных: 8 бит

Максимальная частота работы: 10 МГц

Максимальная емкость адресуемой памяти: 8K x 14

Память ROM (Flash Program Memory): 512 байтов

Память RAM (Program Memory): 36 байтов

Память Data EEPROM: 64 байта

Таймер: TMR0

Напряжение питания: 2,0-6,0 В

 

 


Распределение разрядов портов за внешними устройствами

 

В микроконтроллере имеются 2 порта: PORTA (5-бит) и PORTB (8-бит).

Порт А используется для ввода, Порт В используется для вывода.

PORTA

RA0

Клавиша Enter

RA1

1 бит кода клавиш

RA2

2 бит кода клавиш

RA3

Датчик воды

RA4

Не используется

PORTB

RB0

1 бит кода температуры

RB1

2 бит кода температуры

RB2

1 бит кода работы двигателя

RB3

2 бит кода работы двигателя

RB4

3 бит кода работы двигателя

RB5

Клапан залива

RB6

Клапан слива

RB7

Динамик

 

 

 


Распределение памяти и устройств ввода/вывода

             


Программа управления контроллером

;Приложение к курсовому проекту

 

;Программа работы контроллера управления стиральной машиной

 

;Говоров Д.Н. С-63

 

list      p=16f873            ; list directive to define processor

#include <p16f873.inc>        ; processor specific variable definitions

               

__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _CPD_OFF

 

 

;Описание переменных

 

timeZ                      EQU        0x22                          ; время замачивания

timeS                      EQU        0x23                          ; время стирки

tempS                     EQU        0x24                          ; температура стирки

timeO                      EQU        0x25                          ; время отжима

spdO                      EQU        0x26                          ; скорость отжима

2min                        EQU        0x20

3min                        EQU        0x21

1min                        EQU        0x27

 

 

;Стандартный рекомендуемый код инициализации

 

                                ORG     0x000             ; processor reset vector

                                clrf    PCLATH            ; ensure page bits are cleared

                                goto    main              ; go to beginning of program

 

main

 

; начало процедуры main

 

; инициализация PORTA

 

                                clrf          PORTA

                                bsf          STATUS, RP0

                                movlw    0x0F

                                movwf    TRISA                      ; установка порта на ввод

 

; инициализация PORTB

 

                                clrf          PORTB

                                bsf          STATUS, RP0

                                movlw    0x00

                                movwf    TRISB                      ; установка порта на вывод

 

; 1. Ввод параметров

 

; нажимаем на кнопку, не отпускаем её и подтверждаем клавишей Enter

 

; время замачивания

 

L1:                           movlw    PORTA

                                btfss       PORTA, RA0          ; проверка на "enter"

                                goto        L1

                                movwf    timeZ

 

; время стирки

 

L2:                           movlw    PORTA

                                btfss       PORTA, RA0          ; проверка на "enter"

                                goto        L1

                                movwf    timeS

 

; температура стирки

 

L3:                           movlw    PORTA

                                btfss       PORTA, RA0          ; проверка на "enter"

                                goto        L1

                                movwf    tempS

 

; время отжима

 

L2:                           movlw    PORTA

                                btfss       PORTA, RA0          ; проверка на "enter"

                                goto        L1

                                movwf    timeO

 

; скорость отжима

 

L4:                           movlw    PORTA

                                btfss       PORTA, RA0          ; проверка на "enter"

                                goto        L1

                                movwf    spdO

 

; decode values

 

; timeZ

 

                                movlw    timeZ

                                bcf          W, 1

                                bcf          W, 4

                                rrf            W, 1

                                btfsc       W, 1

                                btfsc       W, 2

                                goto        Lz1

                                btfsc       W, 1

                                btfss       W, 2

                                goto        Lz2

                                btfss       W, 1

                                btfsc       W, 2

                                goto        Lz3

                                btfss       W, 1

                                btfss       W, 2

                                goto        Lz4

 

Lz1:                         movf       timeZ, 12d

                                goto        Lz_end

 

Lz2:                         movf       timeZ, 24d

                                goto        Lz_end

 

Lz3:                         movf       timeZ, 36d

                                goto        Lz_end

 

Lz4:                         movf       timeZ, 48d

                                goto        Lz_end

 

; timeS

 

Lz_end:                  movlw    timeS

                                bcf          W, 1

                                bcf          W, 4

                                rrf            W, 1

                                btfsc       W, 1

                                btfsc       W, 2

                                goto        Ls1

                                btfsc       W, 1

                                btfss       W, 2

                                goto        Ls2

                                btfss       W, 1

                                btfsc       W, 2

                                goto        Ls3

                                btfss       W, 1

                                btfss       W, 2

                                goto        Ls4

 

Ls1:                         movf       timeS, 12d

                                goto        Ls_end

 

Ls2:                         movf       timeS, 24d

                                goto        Ls_end

 

Ls3:                         movf       timeS, 36d

                                goto        Ls_end

 

Ls4:                         movf       timeS, 48d

                                goto        Ls_end

 

; tempS

 

                                movlw    tempS

                                bcf          W, 1

                                bcf          W, 4

                                rrf            W, 1

                                movwf    tempS

 

; timeO

 

                                movlw    timeO

                                bsf          W, 1

                                bsf          W, 4

                                rrf            W, 1

                                btfsc       W, 1

                                btfsc       W, 2

                                goto        Lo1

                                btfsc       W, 1

                                btfss       W, 2

                                goto        Lo2

                                btfss       W, 1

                                btfsc       W, 2

                                goto        Lo3

                                btfss       W, 1

                                btfss       W, 2

                                goto        Lo4

 

Lo1:                        movf       timeO, 12d

                                goto        Lo_end

 

Lo2:                        movf       timeO, 24d

                                goto        Lo_end

 

Lo3:                        movf       timeO, 36d

                                goto        Lo_end

 

Lo4:                        movf       timeO, 48d

                                goto        Lo_end

 

                                movf       timeZ2, timeZ

 

; spdO

 

                                movlw    spdO

                                bsf          W, 1

                                bsf          W, 4

                                rlf            W, 2

                                movwf    spd0

 

; 2. Начало работы

 

L5:                           movlw    PORTA

                                btfss       PORTA, RA0          ; проверка на "enter"

                                goto        L1

 

; открыть клапан залива, до тех пор, пока не получен сигнал от датчика

 

L6:                           movlw    00000010b         ; код клапана

                movwf    PORTB                     ; посылаем на порт вывода

                                movlw    PORTA                    ; считываем порт ввода

                                btsff        PORTA, RA3          ; проверка сигнала от датчика

                                goto        L6                              ; если нет, то клапан открыт

 

; 3. Замачивание

 

; инициализация таймера TMR0

 

                                clrf          TMR0                       ; сброс TMR0

                                movlw    0xC7                          ; выключить подтягивающие ризисторы,

                                movf       OPTION_REG         ; на PORTB, TMR0 - от внутреннего сигнала,

                                                                                  ; предделитель 1:256

                                bcf          STATUS, RP0         ; банк 0

 

; --------------------------

 

L7:                           clrw                                           ; проверка, закночилось ли время

                                decf        timeZ

                                decf        timeZ

                                cmpw      timeZ

                                goto        L10

 

                                clrf          2min                          ; установка интервала=2мин

                                movlw    26b

                                movwf    2min

                                clrf          TMR0

 

L7xx:                       movlw    000001000b              ; вращение барабана вперед, скорость=1

                movwf    PORTB

                                btfss       INTCON, T0IF

                        goto                L7xx

                                goto        L7

L7x:                         decf        2min

                                clrw        

                                cmpw      2min

                                goto        L8

 

L8:                           clrw

                                decf        timeZ

                                decf        timeZ

                                cmpw      timeZ

                                goto        L10

 

                                clrf          2min                          ; установка интервала=2мин

                                movlw    26b

                                movwf    2min

                                clrf          TMR0

 

L9:                           movlw    001001000b              ; вращение барабана назад, скорость=1

                movwf    PORTB

                                btfss       INTCON, T0IF

                                decf        2min

                                clrw        

                                cmpw      2min

                                goto        L9

                                goto        L7

 

; открыть клапан слива, до тех пор, пока не получен сигнал от датчика

 

L10:                         movlw    00000100b         ; код клапана

                movwf    PORTB                     ; посылаем на порт вывода

                                movlw    PORTA                    ; считываем порт ввода

                                btsff        PORTA, RA3          ; проверка сигнала от датчика

                                goto        L10                            ; если нет, то клапан открыт

 

                                clrf          2min                          ; установка интервала=2мин

                                movlw    26b

                                movwf    2min

                                clrf          TMR0

 

L11:                         movlw    000001000b              ; вращение барабана вперед, скорость=1

                movwf    PORTB

                                btfss       INTCON, T0IF

                        goto                L11x

                                goto        L11

L11x:                       decf        2min

                                clrw        

                                cmpw      2min

                                goto        L13

; 4. Стирка

 

; открыть клапан залива, до тех пор, пока не получен сигнал от датчика

 

L12:                         movlw    00000010b         ; код клапана

                movwf    PORTB                     ; посылаем на порт вывода

                                movlw    PORTA                    ; считываем порт ввода

                                btsff        PORTA, RA3          ; проверка сигнала от датчика

                                goto        L12                            ; если нет, то клапан открыт

 

; -------------

 

L13:                         clrw                                           ; проверка, закночилось ли время

                                decf        timeS

                                decf        timeS

                                cmpw      timeS

                                goto        L10

 

                                clrf          3min                          ; установка интервала=3мин

                                movlw    39b

                                movwf    3min

                                clrf          TMR0

 

L14:                         movlw    000001000b              ; вращение барабана вперед, скорость=1

                                addlw     tempS                       ; установим температуру

                movwf    PORTB

                                btfss       INTCON, T0IF

                        goto                L14

                                goto        L15

L15:                         decf        3min

                                clrw        

                                cmpw      3min

                                goto        L16

 

L16:                         clrw

                                decf        timeS

                                decf        timeS

                                cmpw      timeS

                                goto        L10

 

                                clrf          3min                          ; установка интервала=3мин

                                movlw    39b

                                movwf    3min

                                clrf          TMR0

 

L17:                         movlw    001001000b              ; вращение барабана назад, скорость=1

                                addlw     tempS             ; установим температуру

                movwf    PORTB

                                btfss       INTCON, T0IF

                                decf        3min

                                clrw        

                                cmpw      3min

                                goto        L17

                                goto        L13

 

; 5. Слив воды

 

; открыть клапан слива, до тех пор, пока не получен сигнал от датчика

 

L18:                         movlw    00000100b         ; код клапана

                movwf    PORTB                     ; посылаем на порт вывода

                                movlw    PORTA                    ; считываем порт ввода

                                btsff        PORTA, RA3          ; проверка сигнала от датчика

                                goto        L10                            ; если нет, то клапан открыт

 

; 6. Полоскание

                       

; открыть клапан залива, до тех пор, пока не получен сигнал от датчика

 

pL6:                        movlw    00000010b         ; код клапана

                movwf    PORTB                     ; посылаем на порт вывода

                                movlw    PORTA                    ; считываем порт ввода

                                btsff        PORTA, RA3          ; проверка сигнала от датчика

                                goto        pL6                           ; если нет, то клапан открыт

 

; вращение барабана...

 

pL7:                        clrw                                           ; проверка, закночилось ли время

                                clrf          TMR0

                                decf        timeZ2

                                decf        timeZ2

                                cmpw      timeZ2

                                goto        pL10

 

                                clrf          2min                          ; установка интервала=2мин

                                movlw    26b

                                movwf    2min

                                clrf          TMR0

 

pL7xx:                     movlw    000001000b              ; вращение барабана вперед, скорость=1

                movwf    PORTB

                                btfss       INTCON, T0IF

                        goto                pL7xx

                                goto        pL7

pL7x:                       decf        2min

                                clrw        

                                cmpw      2min

                                goto        pL8

 

pL8:                        clrw

                                decf        timeZ2

                                decf        timeZ2

                                cmpw      timeZ2

                                goto        pL10

 

                                clrf          2min                          ; установка интервала=2мин

                                movlw    26b

                                movwf    2min

                                clrf          TMR0

 

pL9:                        movlw    001001000b              ; вращение барабана назад, скорость=1

                movwf    PORTB

                                btfss       INTCON, T0IF

                                decf        2min

                                clrw        

                                cmpw      2min

                                goto        pL10

                                goto        pL7

 

; 5. Отжим

 

; открыть клапан слива, до тех пор, пока не получен сигнал от датчика

 

pL10:                      movlw    00000100b         ; код клапана

                                mov

                movwf    PORTB                     ; посылаем на порт вывода

                                movlw    PORTA                    ; считываем порт ввода

                                btsff        PORTA, RA3          ; проверка сигнала от датчика

                                goto        pL10                         ; если нет, то клапан открыт

 

; вращение барабана

 

                                clrf          2min                          ; установка интервала=2мин

                                movlw    26b

                                movwf    2min

                                clrf          TMR0

 

pL11:                      movlw    000001000b              ; вращение барабана вперед, скорость=spd0

                                addlw     spd0

                movwf    PORTB

                                btfss       INTCON, T0IF

                        goto                pL11x

                                goto        pL11

pL11x:                     decf        2min

                                clrw        

                                cmpw      2min

                                goto        pL13

 

; 6. Звуковой сигнал

 

                               

                                clrf          1min                          ; установка интервала=2мин

                                movlw    13b

                                movwf    1min

                                clrf          TMR0

 

sndL11:                  movlw    000000001b              ; сигнал

                movwf    PORTB

                                btfss       INTCON, T0IF

                        goto                sndL11x

                                goto        sndL11

sndL11x:                                decf        2min

                                clrw        

                                cmpw      1min

                                goto        sndL13

                                                               

sndL13:                  END                                          ; directive 'end of program'