Автор работы: Пользователь скрыл имя, 10 Декабря 2013 в 13:37, курсовая работа
Микроконтроллер — это электронный компонент объединяющий в себе 8-16 разрядный микропроцессор, RAM, ROM на флеше и ряд периферийных устройств: порты, ШИМ, AD/DA преобразователи и т.д.
Больше 10ти лет использования, микроконтроллеры зарекомендовали себя, как неприхотливые, дешёвые устройства для различного спектра задач.
Введение. ……………………….……………………..……………………..……3
Анализ задачи………………………….…………………………………………...5
Предварительное проектирование системы……………………………………....6
Проектирование аппаратных средств системы……………………..………….…9
Проектирование программного обеспечения.……………………………………10
Заключение………………………………………………………………………...18
Литература………………………………………………………………………….19
Приложение 1. Схема электрическая принципиальная.
Приложение 2. Перечень элементов (спецификация).
Сопротивление сток-исток
Благодаря максимально допустимому току 18А Можно управлять двигателями большой мощности.
ПРОЕКТИРОВАНИЕ АППАРАТНЫХ СРЕДСТВ СИСТЕМЫ
Проектирование в среде Proteus
Подключен внешний тактовый генератор и осциллограф
Проектирование программного обеспечения
1 Алгоритм работы устройства
Для реализации
функции построенной
Блок-схема алгоритма программы
Код программы
.include "m8def.inc"
.def tempL = r16 //присваиваем регистру R16 имя tempH
.def tempH = r17 // присваиваем регистру R17 имя tempL
.def input = r19 // -"- R19 input
.def shimL = r24 //-"- R24 shimL
.def shimH = r25 // -"- R25 shimH
.def a=r22
.def b=r23
.dseg
.eseg // сегмент ЕЕПРОМ
.cseg //сегмент программы
.org 0
ldi r26, $00 // присваиваем значения регистрам
ldi shiml,$10
ldi a, 0b00000001
ldi b, 0b00000010
ldi r18,0b11111111
out DDRd,r18 // порт D настраиваем на выход
PROG: ldi r16,$04 // Инициализируем стек
out SPH,r16
ldi r16,$5F
out SPL,r16
ldi tempH,$00 // Заносим значение $0010 в регистр OCR1A
out OCR1AH,tempH
ldi tempL,$10 //заполнение сингала, от $0000 до $03FF (0-1023)
out OCR1AL,tempL
ldi tempH,$00 // Заносим значение $0010 в регистр OCR1A
out OCR1BH,tempH
ldi tempL,$10
out OCR1BL,tempL
ldi tempL,$A7 //инициализация таймер/счетчика Т1 частота делитель на 1024
out TCCR1A,tempL
ldi tempL,$04 //делитель на 64
out TCCR1B,tempL
sbi DDRB,1 //подключаем вывод PB1 к таймер/счетчику Т1
sbi DDRB,2 // подключаем вывод PB2 к таймер/счетчику Т1
// основной код программы
main:
in input,pinc // чтение сигналов на портах С и запись в регист input
// реализация задержки
delay:
ldi r20,20
dl:
ldi r21,255
dl1:
dec r21
brne dl1
dec r20
brne dl
// реализация отображения
mov r30, shimL //младший регистр shimL записываем в R30 (пример 10110101)
mov r31, shimH //страший регистр shimР записываем в R31 (00000011)
lsr r30 // свигаем вправо побитно R30 4 раза (010110101)
lsr r30 // 00101101
lsr r30 // 00010110
lsr r30 // 00001011 - результат, старшие 4 бита освободились
lsl r31 //свигаем влево побитно R31 4 раза (00000110)
lsl r31 // 00001100
lsl r31 //00011000
lsl r31 //00110000
or r31,r30 //логической командой или обеденяем
// R31 и R30 (00111011) в R31
// преобразование чтобы
lsl r31 // сдвигаем влево на один бит
ldi r30, $00 // обнуляем R30
mov r30, r31
lsr r30
add r31,r30
lsr r31
subi r31,-5
ldi r30, 0
// преобразование в десятичное число
dec_sis:
inc r30
subi r31, 10
brpl dec_sis
subi r31, -10
dec r30
lsl r30
lsl r30
lsl r30
lsl r30
or r31,r30
out portd, r31
// Изменение скважности путем нажания на кнопки
mov tempL, input
mov tempH, input
and tempH,a // определяем, какая кнопка нажата
and tempL,b
// увеличение заполненности
mov r28, shimL
mov r29, shimH
ldi r20,$F5 // максимально значение, при котором
ldi r21,$03 //заполнение приближается к 100%
sub R20,shimL // вычитание двухбайтовых чисел
sbc R21,shimH //R19:R18 = R19:R18 - R17:R16
brmi subm //Переход при N=1 (отрицательный результат)
lsr tempL
sbrc tempL,0
rjmp subm
sbrs shimH,2
add shimL, tempH
adc shimH, r26
out OCR1AH,shimH
out OCR1AL,shimL
rjmp main
// увеличение скважности
subm:
mov r28, shimL
mov r29, shimH
sbiw r28,10 // декрементируем счётчик R25:R24
brmi main // переход в main если отрицательный результат
sub shimL,templ // вычитание двухбайтовых чисел
sbc shimH,r26 // R19:R18 = R19:R18 - R17:R16
out OCR1AH,shimH
out OCR1AL,shimL
rjmp main
Заключение
В данном курсовом проекте было разработано микропроцессорное устройство измерения и инициализации скорости вращения вала двигателя постоянного тока(ДПТ). Оно позволяет измерять и наблюдать за скоростью двигателя в реальном времени.
Электродвигатели постоянного тока применяют в тех электроприводах, где требуется большой диапазон регулирования скорости, большая точность поддержания скорости вращения привода, регулирования скорости вверх от номинальной.
В результате курсового проектирования были получены практические навыки в разработке микропроцессорной системы, функциональные возможности которой позволяют дистанционно управлять двигателем постоянного тока.
Основой данной
системы является
Применение микропроцессора позволяет добиться высокой надёжности и точности устройства.
Литература
Пер. с англ. – М. Мир, 1986.