- •Содержание
- •1. Текст задания (вариант 11)
- •2. Разработка программы, реализующей цифровой эквивалент непрерывной передаточной функции
- •Операция умножения.
- •Операция сложения.
- •3. Текст программы, реализующий цифровой эквивалент передаточной функции
- •Принцип работы системы
- •5. Схемы согласования
- •5.1. Расчет входных усилителей.
- •5.2. Расчет усилителя обратной связи.
- •5.3. Расчет выходного усилителя.
- •5.4. Расчет делителя напряжений.
- •5.5. Расчет цепи светодиода для сигнала «авария»
- •6. Выводы по работе
- •7. Список литературы
Операция сложения.
|
Первый операнд |
Второй операнд |
Результат операции |
Целая часть |
RW1 |
RW3 |
RW4 |
Дробная часть |
RW0 |
RW2 |
RW5 |
Рисунок 4 – Блок-схема алгоритма операции сложения
3. Текст программы, реализующий цифровой эквивалент передаточной функции
.PROGRAM KURSOVAYA ;Имя програмного модуля
#include C:\Softune\bin\MyLab1\Mb90V590.h ;Включение заголовочного файла
.EXPORT _main ;Объявление общедоступным имени программы
.SECTION DATA_MAIN, DATA, ALIGN=2 ;Описание сегмента данных программы
A1 .RES.W 1 ;Резервирование памяти для переменных B1 .RES.W 1
P .RES.W 1
Y1 .RES.W 1
Y2 .RES.W 1
P1 .RES.W 1
P2 .RES.W 1
X .RES.W 1
.SECTION CODE_MAIN, CODE, ALIGN=2;Описание сегмента данных программы
_main: ;начало прикладной программы
MOVW A1,#9973 ;запись в А1 9973
MOVW B1,#53 ;запись в В1 53
MOVW Y2,#00 ;обнуление Y2
MOVW Y1,#00 ;обнуление Y1
;НАСТРОЙКА РАБОТЫ ТАЙМЕРА
MOV A,#2000 ;запись в аккумулятор 2000
MOV TMRLR0,A ;запись в регистр перезагрузки данных из аккумулятора
MOV TMCSR0,#H'0013 ;настройка регистра управления таймера
;НАСТРОЙКА РАБОТЫ ПОРТОВ
MOV DDR8,#H'FF ;настройка всех портов на вывод данных
MOV PDR8,#00 ;обнуление регистра данных PDR8
;НАСТРОЙКА РАБОТЫ АЦП
MOV ADCS0,#H'00 ;настройка регистров ADCS0, ADCS1, ADCR1, ADER
MOV ADCS1,#H'00
MOV ADCR1,#H'E8
MOV ADER,#H'FF
;ВЫПОЛНЕНИЕ АНАЛОГО-ЦИФРОВОГО ПРЕОБРАЗОВАНИЯ
METKA2: SETB ADCS1:1 ;установка бита запуска АЦП
WBTC ADCS1:7 ;ожидание подтверждения запуска
CLRB ADCS1:6 ;обнуление флага прерывания
MOV A,ADCR0 ;запись в аккумулятор данных из ADCR0
MOV X,A ;пересылка аккумулятора в Х
;ВЫЧИСЛЕНИЕ ПРОИЗВЕДЕНИЯ УхА1
MOVW RW1,Y2 ;пересылка Y2 в RW1
MOVW RW0,Y1 ;пересылка Y1 в RW0
MOVW RW3,#00 ;обнуление RW3
MOVW RW2,A1 ;пересылка A1 в RW2
CALL PROIZ ;вызов подпрограммы умножения
;ЗАПИСЬ ПОЛУЧЕННОГО РЕЗУЛЬТАТА
MOVW P2,RW4 ;пересылка RW4 в P2
MOVW P1,RW5 ;пересылка RW5 в P1
;ВЫЧИСЛЕНИЕ ПРОИЗВЕДЕНИЯ ХхВ1
MOVW RW1,X ;пересылка X в RW1
MOVW RW0,#00 ;обнуление RW0
MOVW RW3,#00 ;обнуление RW3
MOVW RW2,B1 ;пересылка B1 в RW2
CALL PROIZ ;вызов подпрограммы умножения
;ВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ У НА ДАННОМ ШАГЕ
MOVW A,P2 ;пересылка P2 в аккумулятор
ADDW A,RW4 ;суммирование аккумулятора с RW4
MOVW RW4,A ;запись результата в RW4
MOVW A,P1 ;пересылка P1 в аккумулятор
ADDW A,RW5 ;суммирование аккумулятора с RW5
MOVW RW5,A ;запись результата в RW5
MOVW A,#9999 ;запись в аккумулятор 9999
CMPW A,RW5 ;сравнение аккумулятора с RW5
BHS METKA3 ;если аккумулятор >=RW5 переход по метке METKA3
INCW RW4 ;RW4=RW4+1
MOVW A,RW5 ;пересылка RW5 в аккумулятор
MOVW RW5,#10000 ;запись 10000 в RW5
SUBW A,RW5 ;А=A-RW5
MOVW RW5,A ;пересылка аккумулятора в RW5
METKA3: MOVW Y2,RW4 ;пересылка RW4 в Y2
MOVW Y1,RW5 ;пересылка RW5 в Y1
MOVW RW6,Y2 ;пересылка Y2 в RW6
MOVW RW7,Y1 ;пересылка Y1 в RW7
;ВЫВОД У НА ДАННОМ ШАГЕ
MOV A,Y2 ;пересылка Y2 в аккумулятор
MOV PDR8,A ;пересылка аккумулятора в регистр данных PDR8
;ОРГАНИЗАЦИЯ ЗАДЕРЖКИ
WBTS TMCSR0:2 ;ожидание установки бита флага прерывания
CLRB TMCSR0:2 ;сброс бита флага прерывания
JMP METKA2 ;переход на метку METKA2
;ПОДПРОГРАММА УМНОЖЕНИЯ RW1.RW0 НА RW3.RW2
;РЕЗУЛЬТАТ ПОМЕЩАЕТСЯ В RW4.RW5
PROIZ: MOVW A,RW2 ;пересылка RW2 в аккумулятор
MULW A,RW1 ;A=A*RW1
MOVW P,#10000 ;запись 10000 в P
DIVW A,P ;A=A/P (A-частное, P-остаток)
MOVW RW4,A ;пересылка аккумулятора в RW4
MOVW RW5,P ;пересылка Р в RW5
MOVW A,RW2 ;пересылка RW2 в аккумулятор
MULW A,RW0 ;A=A*RW0
MOVW P,#10000 ;запись 10000 в P
DIVW A,P ;A=A/P (A-частное, P-остаток)
ADDW A,RW5 ;A=A+RW5
MOVW RW5,A ;Пересылка аккумулятора в RW5
MOVW A,#9999 ;запись в аккумулятор 9999
CMPW A,RW5 ;сравнение аккумулятора с RW5
BHS METKA1 ;если аккумулятор >=RW5 переход по метке METKA1
INCW RW4 ;RW4=RW4+1
MOVW A,RW5 ;пересылка RW5 в аккумулятор
MOVW RW5,#10000 ;запись 10000 в RW5
SUBW A,RW5 ;А=A-RW5
MOVW RW5,A ;пересылка аккумулятора в RW5
METKA1: RET ;Возврат из подпрограммы
.END ;Конец программы
С помощью MathCad построим переходные процессы по передаточной функции и по полученному выше разностному уравнению.
Рисунок 5 – Графики переходных процессов
Как видно, переходные процессы по передаточной функции и по разностному уравнению совпадают.
Результаты выполнения программы при входном воздействии в 1 В (после преобразования в АЦП оно соответствует числу 48) представлены в таблице 1.
Таблица 1
Номер цикла № |
Время, с |
Значение |
Номер цикла № |
Время |
Значение |
0 |
0 |
0 |
67 |
0.067 |
16 |
1 |
0,001 |
0 |
… |
… |
… |
… |
… |
… |
72 |
0.072 |
17 |
2 |
0.002 |
1 |
… |
… |
… |
… |
… |
… |
77 |
0.077 |
18 |
6 |
0.006 |
2 |
… |
… |
… |
… |
… |
… |
81 |
0.081 |
19 |
10 |
0.01 |
3 |
… |
… |
… |
… |
… |
… |
86 |
0.086 |
20 |
15 |
0.015 |
4 |
… |
… |
… |
… |
… |
… |
91 |
0.091 |
21 |
19 |
0.019 |
5 |
… |
… |
… |
… |
… |
… |
96 |
0.096 |
22 |
23 |
0.023 |
6 |
… |
… |
… |
… |
… |
… |
101 |
0.101 |
23 |
27 |
0.027 |
7 |
… |
… |
… |
… |
… |
… |
107 |
0.107 |
24 |
31 |
0.031 |
8 |
… |
… |
… |
… |
… |
… |
112 |
0.112 |
25 |
35 |
0.035 |
9 |
… |
… |
… |
… |
… |
… |
117 |
0.117 |
26 |
40 |
0.040 |
10 |
… |
… |
… |
… |
… |
… |
123 |
0.123 |
27 |
44 |
0.044 |
11 |
… |
… |
… |
… |
… |
… |
128 |
0.128 |
28 |
49 |
0.049 |
12 |
… |
… |
… |
… |
… |
… |
134 |
0.134 |
29 |
53 |
0.053 |
13 |
… |
… |
… |
… |
… |
… |
139 |
0.139 |
30 |
58 |
0.058 |
14 |
… |
… |
… |
… |
… |
… |
145 |
0.145 |
31 |
Номер цикла № |
Время, с |
Значение |
Номер цикла № |
Время |
Значение |
… |
… |
… |
… |
… |
… |
151 |
0,151 |
32 |
260 |
0,260 |
48 |
… |
… |
… |
… |
… |
… |
157 |
0,157 |
33 |
268 |
0,268 |
49 |
… |
… |
… |
… |
… |
… |
163 |
0,163 |
34 |
276 |
0,276 |
50 |
… |
… |
… |
… |
… |
… |
169 |
0,169 |
35 |
285 |
0,285 |
51 |
… |
… |
… |
… |
… |
… |
176 |
0,176 |
36 |
293 |
0,293 |
52 |
… |
… |
… |
… |
… |
… |
182 |
0,182 |
37 |
302 |
0,302 |
53 |
… |
… |
… |
… |
… |
… |
188 |
0,188 |
38 |
311 |
0,311 |
54 |
… |
… |
… |
… |
… |
… |
195 |
0,195 |
39 |
320 |
0,320 |
55 |
… |
… |
… |
… |
… |
… |
202 |
0,202 |
40 |
330 |
0,330 |
56 |
… |
… |
… |
… |
… |
… |
208 |
0,208 |
41 |
339 |
0,339 |
57 |
… |
… |
… |
… |
… |
… |
215 |
0,215 |
42 |
349 |
0,349 |
58 |
… |
… |
… |
… |
… |
… |
222 |
0,222 |
43 |
359 |
0,359 |
59 |
… |
… |
… |
… |
… |
… |
230 |
0,230 |
44 |
370 |
0,370 |
60 |
… |
… |
… |
… |
… |
… |
237 |
0,237 |
45 |
381 |
0,381 |
61 |
… |
… |
… |
… |
… |
… |
245 |
0,245 |
46 |
392 |
0,392 |
62 |
… |
… |
… |
… |
… |
… |
251 |
0,251 |
47 |
403 |
0,403 |
63 |
Номер цикла № |
Время, с |
Значение |
Номер цикла № |
Время |
Значение |
… |
… |
… |
663 |
0,663 |
79 |
415 |
0,415 |
64 |
… |
… |
… |
… |
… |
… |
687 |
0,687 |
80 |
427 |
0,427 |
65 |
… |
… |
… |
… |
… |
… |
714 |
0,714 |
81 |
440 |
0,440 |
66 |
… |
… |
… |
… |
… |
… |
742 |
0,742 |
82 |
453 |
0,453 |
67 |
… |
… |
… |
… |
… |
… |
771 |
0,771 |
83 |
467 |
0,467 |
68 |
… |
… |
… |
… |
… |
… |
805 |
0,805 |
84 |
481 |
0,481 |
69 |
… |
… |
… |
… |
… |
… |
841 |
0,841 |
85 |
496 |
0,496 |
70 |
… |
… |
… |
… |
… |
… |
881 |
0,881 |
86 |
510 |
0,510 |
71 |
… |
… |
… |
… |
… |
… |
9278 |
0,927 |
87 |
527 |
0,527 |
72 |
… |
… |
… |
… |
… |
… |
978 |
0,978 |
88 |
543 |
0,543 |
73 |
… |
… |
… |
… |
… |
… |
1038 |
1,038 |
89 |
561 |
0,561 |
74 |
… |
… |
… |
… |
… |
… |
1109 |
1,109 |
90 |
579 |
0,579 |
75 |
… |
… |
… |
… |
… |
… |
1197 |
1,197 |
91 |
598 |
0,598 |
76 |
… |
… |
… |
… |
… |
… |
1314 |
1,314 |
92 |
619 |
0,619 |
77 |
… |
… |
… |
… |
… |
… |
1485 |
1,485 |
93 |
640 |
0,640 |
78 |
… |
… |
… |
… |
… |
… |
1812 |
1,812 |
94 |