Последовательность выполнения работы
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

1. Набрать текст программы;

2. Откомпилировать программу;

3. Запустить отладчик FDSAB;

4. Загрузить в память bin файл, запустить программу на выполнение;

5. Снять зависимость изменения частоты вращения от подаваемой нагрузки;

6. Сделать вывод о проделанной работе;

7. Составить отчет.

Внимание! При приложении больших усилий торможения двигателя он может остановится что приведет к резкому увеличению тока в выходной цепи ИМС управления и возможно выход ее из строя.

Заключение.

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

При разработке дипломного проекта было опробовано два способа автоматического регулирования частоты вращения двигателя: измерение частоты (за определенное время подсчитывалось количество импульсов от датчика), измерение периода (измерялась длительность периода импульсов поступающих от датчика). Первый способ измерения частоты показал плохую стабильность частоты вращения регулирующей системы, т. к. из-за большой длительности измерения (при уменьшении длительности измерения увеличивалась погрешность) и быстрого изменения характера нагрузки система не успевала отслеживать это изменение, а следовательно и регулировать входную величину. Второй способ регулирования с измерением длительности периода показал хорошую стабильность автоматической системы управления. Это достигается увеличение числа прорезей на вращающемся диске оптопары, измерение длится короткое время, за которое система автоматического регулирования не успевает отклониться от установленного значения. Небольшое отклонение частоты вращения за короткий промежуток времени (времени измерения одного периода) сразу контролируется и происходит модификация выходного параметра.

Литература.

1. Григорьев В. Л. Программное обеспечение микропроцессорных систем. – М.: Энергоатомиздат, 1983.

2. Щелкунов Н. Н., Дианов А. П. Микропроцессорные средства и системы. – М.: Радио и связь, 1989.

3. Сташин В. В. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М.: Энергоатомиздат, 1990.

4. Иванов В. И. Полупроводниковые оптоэлектронные приборы: Справочник – 2-е изд., перераб. И доп. – М.: Энергоатомиздат, 1989

5. Хвощ С. Т. Микропроцессоры и микроЭВМ в системах автоматического управления. Справочник. Л.: Машиностроение. Ленингр. отд-ние, 1987.

Приложение.

Текст программы.

; присваивание имен

          p4 data 0e8h

          p5 data 0f8h

          ip0 data 0a9h

          ip1 data 0b9h

          ien0 data 0a8h

          ien1 data 0b8h

          adcon data 0d8h

          addat data 0d9h

          darp data 0dah

          st1 data 52h

          n_sd data 53h

          obor data 54h

          chi_3 data 55h

          chi_2 data 56h

          chi_1 data 57h

          chi_t data 58h

          zn_h data 59h

          zn_l data 5ah

          rez_h data 5bh

          rez_l data 5ch

          rezul data 5dh

          dli_i_l data 5eh

          dli_i_h data 5fh

          dli_l data 60h

          dli_h data 61h

          temp data 62h

          indik data 63h

          flag bit 00h

          f_ind bit 01h

          f_rev bit 02h

          f_nap bit 03h

          f_sta bit 04h

          f_rab bit 05h

          f_rez bit 06h

          f_rezind bit 07h

; определение векторов прерываний

          org 0000h

          sjmp start

          org 0003h

          ljmp klav

          org 013h

          ljmp int_1

; начальная инициализация

start:  mov darp,#00h

          mov adcon,#0fh

          clr f_rezind

          clr f_rab

          clr f_rev

          clr f_sta

          setb f_nap

          setb f_rez

          mov n_sd,#0bh

          mov st1,#3fh

          mov ip0,#04h

          mov ip1,#04h

          mov sp,#65h

          mov ien0,#81h

          inizial:mov r0,#47h

          mov r1,#03h

; начальное обнуление индикатора

numb: mov @r0,#00h

          inc r0

          djnz r1,numb

; определение режима работы и его индикация

          jnb f_sta,re1

          jb f_rez,re1

          mov 4ah,#19h

          sjmp re2

re1:    mov 4ah,#10h

re2:    clr f_ind

beg:   jb f_ind,beg2

; определение режима работы

          jnb f_rezind,na2

          clr f_rezind

          jb f_nap,na1

          mov 4ah,#0fh

          sjmp na2

na1:   mov 4ah,#0ah

; запуск двигателя с проверкой направления вращения

na2:   jnb f_rev,beg2

          jb f_nap,napr1

          clr p3.5

          mov 4ah,#0fh

          jb f_rez,napr

          mov 4ah,#19h

          sjmp napr

napr1: clr p3.4

          mov 4ah,#0ah

          jb f_rez,napr

          mov 4ah,#19h

napr: clr f_rev

          clr flag

          setb f_rab

          mov ien0,#85h

; остановка двигателя

beg2: jnb f_ind,beg1

          djnz st1,beg1

          mov st1,#05fh

; сдвиг индикационных ячеек вправо

          mov r0,#0ahov r1,#49h

          mov 40h,#10h

sdvig: mov a,@r1

          inc r1

          mov @r1,a

          mov a,r1

          subb a,#02h

          mov r1,a

          djnz r0,sdvig

          djnz n_sd,beg1

          mov n_sd,#0bh

          ljmp inizial

; процедура индикации

beg1: mov r4,#0feh

          mov dptr,#tabcod

          mov r0,#47h

cycl:  mov p4,#0ffh

          mov a,@r0

          movc a,@a+dptr

          mov p5,a

          mov a,r4

          mov p4,a

          rl a

          mov r4,a

          inc r0

          lcall del

          cjne r0,#4bh,cycl

          ljmp beg

del:    mov r1,#10

st_2:  mov r2,#10

st_1:  nop

          nop

          nop

          djnz r2,st_1

          djnz r1,st_2

          ret

tabcod: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

          db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0ffh

          db 0c6h,0f8h,0c0h,0c8h,88h,8ch,86h,80h,89h,0ceh,91h,0b0h,82h

; клавиатура

klav:  push acc

          push p4

          push psw

          setb psw.3

          mov r4,#00h

          mov r7,#04h

          mov r6,#0feh

loop:  mov a,r6

          mov p4,a

          rl a

          mov r6,a

          mov a,p4

          mov r5,#04h

          swap a

rotate: rrc a

          jnc dbnc

          inc r4

          djnz r5,rotate

          djnz r7,loop

          ljmp quit

dbnc: mov r2,#0ah

m1:    mov r3,#55h

m2:    djnz r3,m2

          djnz r2,m1

          mov a,#0f0h

wait:  mov p4,#0f0h

          cjne a,p4,wait

          mov r2,#0ah

m3:    mov r3,#55h

m4:    djnz r3,m4

          djnz r2,m3

          mov a,#09h

          subb a,r4

          jc func

rel:     mov r0,#03h

          mov r1,#48h

new:  mov a,@r1

          inc r1

          mov @r1,a

          mov a,r1

          subb a,#02h

          mov r1,a

          djnz r0,new

          mov r1,#47h

          mov 47h,r4

          ljmp quit

; определение режима по функциональной клавише

func:  jb f_ind,quit

          cjne r4,#0ah,g2

          ljmp bakesp

g2:     cjne r4,#0bh,g3

          ljmp sta

g3:     cjne r4,#0ch,g4

          ljmp stop

g4:     cjne r4,#0dh,g5

          ljmp rezim

g5:     cjne r4,#0eh,g6

          ljmp rezim

g6:     ljmp revers

quit:   clr psw.3

          pop psw

          pop p4

          pop acc

          reti

; удаление символа

bakesp: jb f_rab,quit

          mov 47h,48h

          mov 48h,49h

          mov 49h,#00h

          ljmp quit

; старт. DEC->BIN

sta:    jb f_rab,quit

          mov 4ah,#0ah

          mov b,#0ah

          mov a,49h

          mul ab

          add a,48h

          mov b,#0ah

          mul ab

          add a,47h

          mov obor,a

; BIN*24

          mov b,#18h

          mov a,obor

          mul ab

          mov zn_l,a

          mov zn_h,b

; деление1000000 на полученное значение

          lcall div24

          mov dli_l,rez_l

          mov dli_h,rez_h

; старт измерение

          mov tl0,#00h

          mov th0,#00h

          clr flag

          mov indik,#00h

          mov tmod,#10h

          mov tcon,#04h

          mov 4ah,#10h

          mov 49h,#10h

          mov 48h,#10h

          mov 47h,#10h

          mov 46h,#11h

          mov 45h,#12h

          mov 44h,#15h

          mov 43h,#16h

          mov 42h,#12h

          mov 41h,#10h

          setb f_ind

          setb f_rev

          setb f_sta

          ljmp quit

; стоп

stop:  jnb f_rab,quit

          mov ien0,#81h

          setb p3.4

          setb p3.5

          clr f_rab

          mov 4ah,#10h

          mov 49h,#10h

          mov 48h,#10h

          mov 47h,#10h

          mov 46h,#10h

          mov 45h,#11h

          mov 44h,#12h

          mov 43h,#13h

          mov 42h,#14h

          mov 41h,#10h

          setb f_ind

          clr f_sta

          ljmp quit

; реверс

revers: jnb f_rab,out2

          mov ien0,#81h

          setb p3.4

          setb p3.5

          mov 4ah,#10h

          mov 49h,#10h

          mov 48h,#10h

          mov 47h,#10h

          mov 46h,#16h

          mov 45h,#17h

          mov 44h,#18h

          mov 43h,#17h

          mov 42h,#16h

          mov 41h,#11h

          jb f_nap,n1

          mov adcon,#0eh

          sjmp n2

n1:     mov adcon,#0fh

n2:     setb f_rev

          cpl f_nap

          setb f_ind

out2:  ljmp quit

; режим обороты двигателя/нагрузка

rezim: jnb f_rab,out

          cpl f_rez

          jb f_rez,rez1

          mov 4ah,#10h

          mov 49h,#10h

          mov 48h,#10h

          mov 47h,#10h

          mov 46h,#19h

          mov 45h,#15h

          mov 44h,#1ah

          mov 43h,#16h

          mov 42h,#1bh

          mov 41h,#1ch

          setb f_ind

out:    ljmp quit

rez1:  mov 4ah,#10h

          mov 49h,#10h

          mov 48h,#10h

          mov 47h,#10h

          mov 46h,#13h

          mov 45h,#1dh

          mov 44h,#13h

          mov 43h,#16h

          mov 42h,#13h

          mov 41h,#12h

          setb f_rezind

          setb f_ind

          ljmp quit

; процедура деления 3-х байт на 2-ва

div24: push psw

          push acc

          mov chi_3,#0fh

          mov chi_2,#42h

          mov chi_1,#40h

          mov rez_h,#00

          mov rez_l,#10h

          mov a,zn_h

          mov b,#10h

          mul ab

          mov zn_h,a

          mov a,zn_l

          mov b,#10h

          mul ab

          mov zn_l,a

          mov a,b

          add a,zn_h

          mov zn_h,a

 

lp24:  mov a,rez_l

          rlc a

          mov rez_l,a

          mov a,rez_h

          rlc a

          mov rez_h,a

          push psw

 

          clr c

          mov a,chi_1

          rlc a

          mov chi_1,a

          mov a,chi_2

          rlc a

          mov chi_2,a

          mov a,chi_3

          rlc a

          mov chi_3,a

          push psw

 

          clr c

          mov a,chi_2

          subb a,zn_l

          mov chi_t,a

          mov a,chi_3

          subb a,zn_h

          jc nosav

          pop psw

sav:   mov chi_3,a

          mov chi_2,chi_t

          inc rez_l

          sjmp qsav

nosav: pop psw

          jc sav

qsav: pop psw

          jnc lp24

          pop acc

          pop psw

          ret

; прерывание от датчика

int_1: jb flag,iz2

          setb flag

          setb tr1 ; первое вхождение. запустить таймер

          reti

iz2:    push psw ; второе вхождение

          push acc

          clr tr1

          mov ien0,#80h

          mov dli_i_l,tl1 ; сохранить измеренное значение

          mov dli_i_h,th1 ;

; регулировка

          clr c

          mov a,dli_i_l

          subb a,dli_l

          mov a,dli_i_h

          subb a,dli_h

          jc mot_1

          jb f_nap,nap11

          setb p3.4

          sjmp mot_0

nap11: setb p3.5

          sjmp mot_0

mot_1: jb f_nap,nap01

          clr p3.4

          sjmp mot_0

nap01: clr p3.5

mot_0:

; индикация

          jb f_ind,inizdp

          djnz indik,inizdp

          mov indik,#2fh

 

          jb f_rez,chas

; индикация нагрузки

azp0: jnb adcon.4,azp0

          mov a,addat

          mov b,#0ah

          div ab

          mov 47h,b

          mov b,#0ah

          div ab

          mov 48h,b

          mov 49h,a

inizdp: ljmp iniz

; индикация частоты вращения

chas: jb f_nap,i_nap1

          mov a,4ah

          cjne a,#0ah,in_ob2

          mov 4ah,#10h

in_ob2: dec 4ah

          sjmp i_nap2

i_nap1: mov a,4ah

          cjne a,#0fh,in_ob1

          mov 4ah,#09h

in_ob1:inc 4ah

i_nap2: mov zn_l,dli_i_l

          mov zn_h,dli_i_h

          lcall div24 ; деление 3 байт на 2 байт

          mov rezul,#01h ; деление 2 байт на 24

lp16:  clr c

          mov a,rezul

          rlc a

          mov rezul,a

          push psw

          clr c

          mov a,rez_l

          rlc a

          mov rez_l,a

          mov a,rez_h

          rlc a

          mov rez_h,a

          push psw

          clr c

          mov a,rez_h

          subb a,#18h

          jc nosav16

          pop psw

sav16: mov rez_h,a

          inc rezul

          sjmp qsav16

nosav16: pop psw

          jc sav16

qsav16: pop psw

          jnc lp16

; BIN->DEC

          mov a,rezul

          mov b,#0ah

          div ab

          mov 47h,b

          mov b,#0ah

          div ab

          mov 48h,b

          mov 49h,a

; инициализация нового запуска программы измерения

iniz:    mov tl1,#00h

          mov th1,#00h

          clr flag

port_0: jb p3.3,port_0

port_1: jnb p3.3,port_1

          mov ien0,#85h;84

          pop acc

          pop psw

          reti

          end

Дата: 2019-05-29, просмотров: 160.