Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовой ШИП-ДПТ.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
911.87 Кб
Скачать

8 Расчет временных диаграмм

Рисунок 16 – Временные диаграммы системы

9 Разработка программы управляющего устройства

.include "m8535def.inc"

.org 0 ; Таблица векторов прерывания

rjmp reset

.org 3

rjmp c_T2 ; По совпадению

.org 4

rjmp o_T2 ; По переполнению

.def dest=r19 ; Переименование регистров

.def sot=r20

.def tis=r21

.def HG=r22

reset:

ldi r16, $5F ;Инициализация стека

out spl, r16

ldi r16, $2

out sph, r16

ldi r16, $EF FF ;Инициализация портов

out DDRB, r16

ldi r16, $10

out PORTB, r16

ldi r16, $FF

out DDRC, r16

out PORTA,r16

clr r16

out DDRD, r16

out DDRA, r16

out TCCR2, r16 ; Инициализация таймера

ldi r16, $FF

out TCNT2, r16

ldi r16, $4A

out TCCR2, r16

ldi r16, $FF

out OCR2, r16

ldi r16, $40

out TIMSK, r16 ; Таймер Т2 по переполнению

ldi HG, 1 ; Начальное состояние регистров

clr dest

clr sot

ldi tis, $A

ldi r31, 2

sei ;Разрешение прерывания

main:

sbic PINA, 4 ; Ожидание разрешения

rjmp nachalo

ldi r16, $40

out TIMSK, r16 ; Таймер Т2 по переполнению

clr dest

clr sot

ldi tis, $A

clr r16

out DDRD, r16 ; Отключаем ключи

rjmp main

nachalo:

ldi r16, $C0

out TIMSK, r16 ; Таймер Т2 по совпадению и переполнению

ldi r16, $FF

out DDRD, r16

in r16, PINA ; Снимаем задание по скорости

swap r16 ; Преобразуем

lsr r16

andi r16, 7

cpi r16, 0

brne m1

ldi r18, $F ;Скорость=400

ldi dest, 4 ;Задание для индикации

ldi sot, $A

rjmp m8

m1:

cpi r16, 1

brne m2

ldi r18, $1C ;Скорость=800

ldi dest, 8

ldi sot, $A

rjmp m8

m2:

cpi r16, 2

brne m3

ldi r18, $2C ;Скорость=1200

ldi dest, 2

ldi sot, 1

rjmp m8

m3:

cpi r16, 3

brne m4

ldi r18, $3B ;Скорость=1600

ldi dest, 6

ldi sot, 1

rjmp m8

m4:

cpi r16, 4

brne m5

ldi r18, $48 ;Скорость=2000

ldi dest, 0

ldi sot, 2

rjmp m8

m5:

cpi r16, 5

brne m6

ldi r18, $57 ;Скорость=2400

ldi dest, 4

ldi sot, 2

rjmp m8

m6:

cpi r16, 6

brne m7

ldi r18, $66 ;Скорость=2800

ldi dest, 8

ldi sot, 2

rjmp m8

m7:

cpi r16, 7

brne m8

ldi r18, $75 ;Скорость=3200

ldi dest, 2

ldi sot, 3

m8:

out OCR2, r18 ;Задание согласно положению тумблеров задания

rjmp main

c_T2: ;Прерывание по совпадению

clk ;Запрет прерываний

sbic PINA, 1 ;Проверка направления

rjmp rever

ldi tis, $B ;Зажигаем «темноту» на месте «-»

ldi r16, 8

out PORTB, r16 ;Отключаем верхний ключ, нижний выключен

nop ;Ключ в диагонали снизу включен

nop ;Бестоковая пауза

nop

nop

nop

nop

nop

nop

ldi r16, $A ;Включаем нижний ключ в мосту

out PORTB, r16

sei ;Разрешение прерываний

reti ;Выход из прерывания

rever: ;При обратном направлении

ldi tis, $A ;Зажигаем «-»

ldi r16, 2

out PORTB, r16

nop

nop

nop

nop

nop

nop

nop

nop

ldi r16, $A

out PORTB, r16

sei

reti

o_T2:

clk ;Запрет прерываний

sbic PINA, 1 ;Проверка направления

rjmp revers

ldi tis, $B ; Зажигаем «темноту» на месте «-»

ldi r16, 8

out PORTB, r16 ;Отключаем нижний ключ, верхний выключен

nop ;Ключ в диагонали снизу включен

nop ;Бестоковая пауза

nop

nop

nop

nop

nop

nop

ldi r16, 9 ;Включаем верхний ключ в мосту

out PORTB, r16

rjmp indic ;Уходим на индикацию

revers: ;При обратном направлении

ldi tis, $A ;Зажигаем «-»

ldi r16, 2

out PORTB, r16

nop

nop

nop

nop

nop

nop

nop

nop

ldi r16, 6

out PORTB, r16

indic: ;Динамическая индикация

cpi HG, 1 ;Зажигаем индикатор в зависимости от цикла

breq ind1

cpi HG, 2

breq ind2

cpi HG, 4

breq ind3

mov r30, tis ;Формируем адрес Z-регистра

rjmp vivod

ind1:

clr r30

rjmp vivod

ind2:

mov r30, dest

rjmp vivod

ind3:

mov r30, sot

vivod:

lpm r16, z ;Выгружаем в регистр код цифры

out PORTC, r16 ;Выводим цифру на индикатор

out PORTD, HG ;Зажигаем соответствующий индикатор

cpi HG, $8 ;Сравниваем для предотвращения «переполнения»

breq obn

lsl HG ;Сдвигаем регистратор зажженного индикатора

sei ;Разрешение прерываний

reti ;Выход из прерывания

obn: ;Устанавливаем в начальное состоянии

ldi HG, $1

sei ;Разрешение прерываний

reti ;Выход из прерывания

.org $100 ;Записываем коды цифр в флеш с 100ячейки

.db 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40,0x00

ЗАКЛЮЧЕНИЕ

В данном курсовом проекте необходимо было спроектировать микропроцессорную систему управления электроприводом.

Для заданного двигателя были выбраны: управляющие элементы, силовые ключи, активные элементы, также были выбраны необходимые источники питания для всей системы.

Были разработаны функциональная и принципиальные схемы.

Была разработана программа для управляющего устройства.

Была произведена проверка работоспособности системы на лабораторных стендах кафедры «ЭПА» Энергетического факультета.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1 Хусаинов, Р. З. Программирование микроконтроллеров ATmega8535: методические указания к выполнению лабораторных работ/Хусаинов, Р. З., Садов, В. Б. Челябинск: 2008. − 123 с.

2 Белов, А. В. Самоучитель разработчика устройств на микроконтроллерах AVR./ Белов, А. В. СПб: Наука и Техника, 2008. − 544 с.