- •Содержание
- •1. Задание № 22
- •2. Принцип действия проектируемого устройства
- •3. Разработка алгоритма работы устройства
- •4. Разработка программы реализации цифрового фильтра
- •4.1 Математическая модель цифрового фильтра
- •4.2 Разработка программы цифрового фильтра-подпункт не может называться так же как пункт.
- •Выполнение операции умножения.
- •4.3 Тестирование программы
- •5. Разработка и расчет функциональных и принципиальных схем узлов устройства.(разработка функциональных схем и расчет принципиальных)
- •5.1. Расчет входных усилителей.
- •5.2. Расчет величины пульсаций на выходе усилителя.
- •5.3. Программируемый усилитель.
- •5.3. Расчет выходного усилителя мощности.
- •5.5. Выбор звукоизлучателя
- •6. Выводы по работе
- •7. Список литературы
3. Разработка алгоритма работы устройства
Нужен текст, по которому можно будет потом восстановить иллюстрацию.
Рисунок
2. Блок-схема алгоритма работы системы
4. Разработка программы реализации цифрового фильтра
4.1 Математическая модель цифрового фильтра
Для реализации цифрового эквивалента передаточной функции перейдем от непрерывной передаточной функции к разностному уравнению. Непрерывная передаточная функция имеет вид:
От передаточной функции перейдем к дифференциальному уравнению:
Так
как
,
то:
,где коэффициенты вычисляются по следующим формулам:
-
это время выполнения одного цикла
программы и вывода одного текущего
значения
.
Выберем интервал дискретизаци.
при Δt=100мс: b1=0.9346; a0=0.1144
4.2 Разработка программы цифрового фильтра-подпункт не может называться так же как пункт.
Так как микроконтроллер может работать только с целыми числами, то будем рассматривать у вещественного числа отдельно целую часть и дробную. Для операций с целой и дробной части будем используются 16-битовые регистры. Максимальные значения целой и дробной части составляют по 4 знака, что обеспечивает достаточно высокую точность вычислений. В результате выполнения программы в порт выводится только целая чаcть Y, но все вычисления проводятся с дробными значениями.
Рисунок 3 – Блок схема алгоритма программы, реализующей цифровой эквивалент передаточной функции
Выполнение операции умножения.
Операнды и результат хранятся в 16 битных регистрах:
1 операнд: RW1.RW0
2 операнд: RW3.RW2
Результат: RW4.RW5
Так как коэффициенты –дробные числа с целой частью равной 0, то в RW1 всегда записываем 0 и при умножении ей пренебрежем.
Рисунок 4 – Блок-схема алгоритма операции умножения
Текст программы, реализующий цифровой эквивалент передаточной функции
.PROGRAM KURSOVAYA // Имя програмного модуля
#include C:\Mb90V590.h // включение заголовочного файла
.EXPORT _main // Объявление общедоступным имени программы
.SECTION DATA_MAIN, DATA, ALIGN=2 // Сегмент данных
A1 .RES.W 1
B .RES.W 1
P .RES.W 1
P1 .RES.W 1
P2 .RES.W 1
Y1 .RES.W 1
Y2 .RES.W 1
YN .RES.W 1
XN .RES.W 1
.SECTION CODE_MAIN, CODE, ALIGN=2; // Сегмент кода
_main: // Начало программы
// ЗАПИСЬ НАЧАЛЬНЫХ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ
MOVW A1,#1144
MOVW B,# 9346
MOVW YN,#00
MOVW Y1,#00
MOVW Y2,#00
MOVW XN,#00
// НАСТРОЙКА ПОРТОВ НА ВЫВОД
MOV DDR8,#H'FF
MOV PDR8,#00
// НАСТРОЙКА РАБОТЫ АЦП
MOV ADCS0,#H'00
MOV ADCS1,#H'00
MOV ADCR1,#H'E8
MOV ADER,#H'FF
// НАСТРОЙКА ТАЙМЕРА НА ОТСЧЕТ 100 мс
MOVL A,#50000
MOVL TMRLR0,A
MOV TMCSR0,#H'0413
// ВЫПОЛНЕНИЕ АНАЛОГОВО-ЦИФРОВОГО ПРЕОБРАЗОВАНИЯ
M2: SETB ADCS1:1 // Установка бита запуска АЦП
WBTC ADCS1:7 // Ожидание конца преобразования
CLRB ADCS1:6 // Обнуление флага прерывания
MOV A,ADCR0 // Запись результата
MOV XN,A
// ВЫЧИСЛЕНИЕ ПРОИЗВЕДЕНИЯ Y[n-1]*B
MOVW RW1, #00
MOVW RW0,B
MOVW RW3,Y1
MOVW RW2,Y2
CALL PROIZ // Вызов подпрограммы умножения
MOVW P1,RW4 // Запись целой части результата
MOVW P2,RW5 // Запись дробной части результата
// ВЫЧИСЛЕНИЕ ПРОИЗВЕДЕНИЯ X[n]*A1
MOVW RW3,XN
MOVW RW2,#0
MOVW RW1,#0
MOVW RW0,A1
CALL PROIZ // Вызов подпрограммы умножения
// ВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ Y[n]=Y[n-1]*B+X[n]*A1
// ПЕРВОЕ СЛАГАЕМОЕ ЗАПИСАНО В ПЕРЕМЕННЫХ Р1(целая часть), Р2(дробная часть);
// ВТОРОЕ СЛАГАЕМОЕ ЗАПИСАНО В РЕГИСТРАХ RW4(целая часть), RW5(дробная часть);
MOVW A,P1
ADDW A,RW4 // Суммирование целых частей
MOVW RW4,A // Запись целой части результата
MOVW A,P2
ADDW A,RW5 // Суммирование дробных частей
MOVW RW5,A
MOVW A,#9999
CMPW A,RW5
BHS M1 // Переход, если 9999>=RW5
INCW RW4 // Иначе, RW4=RW4+1 и
MOVW A,RW5
MOVW RW5,#10000
SUBW A,RW5
MOVW RW5,A // RW5=RW5-10000
M1: MOVW YN,RW4 // Запись результата
//ВЫВОД Y[n] НА ДАННОМ ШАГЕ
MOVW A,RW4
MOVw PDR8,A
// ПЕРЕПРИСВАИВАНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ: Y[n-1]=Y[n]
MOVW A,RW4
MOVW Y1,A
MOVW A,RW5
MOVW Y2,A
// ЗАДЕРЖКА
WBTS TMCSR0:2
CLRB TMCSR0:2
JMP M2
// ПОДПРОГРАММА УМНОЖЕНИЯ RW1.RW0 НА RW3.RW2, РЕЗУЛЬТАТ В RW4.RW5
PROIZ:
MOVW A,RW3
MULW A,RW0 // Умножение RW3*RW0
MOVW P,#10000
DIVW A,P // А=А/Р (А-частное, Р-остаток)
MOVW RW4,A
MOVW RW5,P
MOVW A,RW2
MULW A,RW0 // Умножение RW2*RW0
MOVW P,#10000
DIVW A,P // А=А/Р (А-частное, Р-остаток)
ADDW A,RW5
MOVW RW5,A // RW5=RW5+A
MOVW A,#9999
CMPW A,RW5
BHS L1 // Переход, если 9999>RW5
INCW RW4 // Иначе, RW4=RW4+1 и
MOVW A,RW5
MOVW RW5,#10000
SUBW A,RW5
MOVW RW5,A // RW5=RW5-10000
L1: RET
.END
