Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ ЦТ и МК для стенда 2013.doc
Скачиваний:
20
Добавлен:
01.05.2015
Размер:
3.21 Mб
Скачать

9.3 Задание на выполнение

Разработайте программу, автоматизации окрасочной камеры, согласно варианту задания из таблицы 9.1. Для уменьшения паразитных наводок необходимо все клеммы клавиатуры соединить с выводами PORTDи на битыRD4…RD7 подать напряжение.

Т а б л и ц а 9.1 – Варианты заданий

Вариант

Биты подключения S1, D1, D2 L1, L2.

Кнопка Pusk

Кнопка Stop

Вариант

Биты подключения S1, D1, D2 L1, L2.

Кнопка Pusk

Кнопка Stop

1

1, 2, 3, 4, 5

1или 2

5 или 6

6

6, 7, 0, 1, 2

6 или 7

9 или 0

2

2, 3, 4, 5, 6

2 или 3

6 или 7

7

7, 0, 1, 2, 3

7 или 8

3 или 4

3

3, 4, 5, 6, 7

3 или 4

7 или 8

8

0 ,1 ,2 ,3, 4

8 или 6

4 или 2

4

4, 5, 6, 7, 0

4 или 2

6 или 8

9

1, 3, 5, 7, 0

9 или 0

2 или 3

5

5, 6, 7, 0, 1

5 или 6

1или 2

10

2, 4, 6, 0, 1

0 или 9

7 или 6

Время работы S1,D1,D2,L1 иL2 и биты их подключения кPORTCпринять как в лабораторной работе №8.

Продемонстрируйте работу программы преподавателю.

9.4 Контрольные вопросы

  1. Расскажите, какую реальную задачу решает ваша программа

  2. Назначение клавиатуры.

  3. Зачем разряды PORTDнастраивают на ввод и на вывод?

  4. Как инициализируется PORTD?

  5. Как проверяется нажатие кнопки клавиатуры?

  6. Почему каждая кнопка клавиатуры не имеет отдельной клеммы?

  7. Что выполняет инструкция BTFSSPORTD, 2?

  8. Что выполняет инструкция BTFSCPORTD, 2?

  9. Как подключить кнопки «1» и «2» параллельно по схеме ИЛИ?

  10. Что записано в файле p16F877.inc?

  11. Назначение сигнализации в программе.

  12. Можно ли кнопку Stopразместить вне подпрограммыTimer.

10 Автоматизация упаковки

Цель работы: разработка автоматизации упаковочной машины.

10.1 Задание на автоматизацию упаковочной машины

При подаче напряжения на установку включить лампочку L2 на пульте оператора и предупреждающую звуковую сигнализацию на 3 секунды, затем включить конвейерD1. По нему движутся изоляторы, фотодатчик фиксирует попадание изолятора в коробку. После попадания двух изоляторов включить лампочкуL1. После попадания четырех изоляторов включить на две секунды упаковочный механизм, который заменяет полную коробку на пустую коробку. Количество упакованных коробок должно быть пересчитано. Срабатывание лазерных датчиков будем имитировать кнопкамиK5 иK6 клавиатуры. Временная диаграмма работы упаковщика показана на рисунке 10.1.

Рисунок 10.1 – Временная диаграмма работы упаковщика

10.2 Исходные данные

В таблице 10.1 показано назначение битов PORTCи клавиатуры.

Т а б л и ц а 10.1 – Назначение битов PORTCи контактов клавиатуры

Регистр PORTC

Кнопки клавиатуры

Действия кнопок

0 разряд - предупреждающая звуковая сигнализация S1

5 или 6

Фотодатчики

1 разряд – двигатель конвейера D1

2 разряд – двигатель D2 упаковочного механизма

3 разряд – световая сигнализация L1

7 разряд – световая сигнализация работы L2 на пульт

Блок – схема программы для упаковочной машины приведена на рисунке 10.1.

Рисунок 10.1 – Блок-схема

Фрагменты программы.

include<p16F877.inc>

Sch_in EQU H'22'; счетчик внутреннего цикла задержки.

Sch_out EQU H'23'; счетчик внешнего цикла задержки.

Sch3 EQU H'24'; счетчик третьего цикла задержки.

KOL_IZOL EQU h'25'; регистр для записи количества изоляторов.

KOL_KOROB EQU h'28'; регистр для хранения количества коробок.

; Инструкции по настройке МК опущены.

MOVLW b'00001111'

MOVWF TRISD; настраиваем PORTD: биты 0-3 на ввод, 4-7 на вывод.

BCF STATUS, 5

MOVLW b'11110000'

MOVWF PORTD; подаем питание на клавиатуру.

CLRF PORTC; очищаем PORTC от мусора.

CLRF KOL_KOROB

; Рабочая часть программы

MOVLW B'10000001'

MOVWF PORTC; включаем сигнализацию L2 на пульт и сирену S1.

MOVLW d'60'; время работы предупредительной сирены.

CALL Timer

BCF PORTC, 0; выключаем сирену S1.

BSF PORTC, 1; включаем транспортер D1.

M1 CLRF KOL_IZOL

Prov_dat

BTFSS PORTD, 2; проверяем срабатывание датчиков (кнопки "5", "6").

GOTO Prov_dat

MOVLW D'10'

Call Timer; убираем дребезг контактов клавиатуры.

INCF KOL_IZOL, F; фиксируем поступление изолятора в коробку.

MOVLW D'2';

XORWF KOL_IZOL, W; W=KOL_IZOL XOR B'00000010'.

BTFSC STATUS, Z; проверяем Z = 0?

BSF PORTC, 3; только при Z=1, включаем лампочку L1.

MOVLW D'4';

SUBWF KOL_IZOL, W; W=KOL_IZOL-4.

BTFSS STATUS, Z; проверяем разность KOL_IZOL-4=0?

GOTO Prov_dat; выполняется только при Z=0.

MOVLW b'10000110'; при Z=1, заменить коробку и выключить L1.

MOVWF PORTC; пересылаем информацию в PORTC.

INCF KOL_KOROB, F; фиксируем заполнение очередной коробки.

MOVLW d'50'; время смены коробок.

CALL Timer

BCF PORTC, 2; выключаем механизм замены коробок.

GOTO M1; начинаем заполнение новой коробки.

GOTO$

Timer; Подпрограмма Timer. Приведены только три строки.

MOVWF Sch3

; RETURN; включить команду при отладке программы в режиме F7.

M3 MOVLW D'150' . . .

RETURN; конец подпрограммы Timer.

END; конец текста всей программы.

В приведенной программе не используется кнопка Stop, поскольку она здесь не будет срабатывать.