Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вычислительная техника.-1

.pdf
Скачиваний:
4
Добавлен:
05.02.2023
Размер:
940.41 Кб
Скачать

31

ЛАБОРАТОРНАЯ РАБОТА № 5.

ФИЛЬТРАЦИЯ ДАННЫХ

1 ВВЕДЕНИЕ

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

2ОБЩИЕ ПОЛОЖЕНИЯ

2.1Цифровая фильтрация данных

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

Каждый непрерывный сигнал, изменяющийся во времени, имеет свой спектр частот. Любая частота или полоса частот может быть усилена, ослаблена, исключена или выделена фильтрацией. При фильтрации изменяется спектр частот сигнала.

Цифровым фильтром называется цифровая система для изменения частотного спектра дискретных сигналов. Для обработки аналоговых сигналов с помощью цифрового фильтра используется схема, показанная на рисунке

8.

 

X(t)

 

X(nT)

 

 

Y(nT)

 

 

Y(t)

 

Цифровой

 

АЦП

ЦАП

 

 

 

 

 

фильтр

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 8 – Схема цифрового фильтра

Рассмотрим простейший пример цифровой реализации фильтра нижних частот, показанного на рисунке 9.

 

 

 

32

 

 

 

 

 

 

 

 

R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Uвх

 

C

 

 

 

 

 

Uвых

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 9 – Фильтр нижних частот

 

Уравнение фильтра имеет вид

 

 

 

 

 

 

 

 

 

 

dU

ВЫХ

 

 

UВХ UВЫХ

RC

 

 

 

(2)

 

 

 

 

 

 

 

 

 

dt

 

 

Рассмотрим значения входного и выходного сигналов в дискретные моменты времени n t, n=0, 1,…. Заменяя производную конечной разностью

 

dUВЫХ

 

UВЫХ [n t] UВЫХ [(n 1) t]

,

 

dt

t

 

 

 

и обозначая n t как n, получаем:

 

 

 

 

 

1

 

 

 

 

 

RC

t

 

 

 

U

 

[n]

 

 

U

 

[n]

 

 

U

 

[n 1]

 

 

 

 

 

 

 

 

ВЫХ

 

 

 

ВХ

 

 

 

ВЫХ

 

1

RC

 

 

1

RC

 

 

 

 

 

t

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k1UВХ [n] k2UВЫХ [n 1]

(3)

При условии t<<RC, несложно по формуле (3) реализовать цифровой фильтр в виде программы для МП.

Обозначим Yn=UВЫХ[n], Yn-1=UВЫХ[n-1], Xn=UВХ[n] и зададим значения коэффициентов k1=0.375 и k2=0.625.

Yn 0.375 X n 0.625 Yn 1

0.375 Xn (0.625 Yn 1 Yn 1) Yn 1

0.375 X n 0.375 Yn 1 Yn 1

0.375 (Xn Yn 1) Yn 1

(4)

(5)

Формулы (4) и (5) математически эквивалентны, но требуют разного объема вычислений в вычислителе. Дробные значения чисел можно получить при сдвиге их вправо с учетом знака. Число после сдвига вправо равно 0.5 от исходного значения. Несложно получить и коэффициенты 0.625

и 0.375.

Массив данных Xn размером 100 байтов должен располагаться во внешней памяти данных ОЭВМ, начиная с 0 ячейки. Фильтрованный массив Yn нужно записывать с 200 ячейки памяти (EXT RAM).

33

3ЛАБОРАТОРНОЕ ЗАДАНИЕ

1.Составьте текст программы, выполняющей цифровую фильтрацию

массива данных Xn размером 100 байтов и создающей выходной массив Yn, с 200 ячейки памяти.

2.Введите программу, выполните ее трансляцию и создайте исполняемый двоичный файл.

3.Загрузите в отладчик FD51.EXE исполняемую программу.

4.Создайте средствами отладчика входной массив данных Xn размером 100 байтов, запишите его с адреса 0. Для проверки работы фильтра наиболее удобно использовать тестовые сигналы в виде короткой

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

5.Выполните отладку Вашей программы.

6.Продемонстрируйте преподавателю работу программы и подготовьте отчет о работе по стандартной форме. В отчете опишите текст программы

свашими комментариями. Нарисуйте в отчете графики входного сигнала и фильтрованного сигнала.

4КОНТРОЛЬНЫЕ ВОПРОСЫ

1.На что влияют значения коэффициентов К1 и К2 в формуле (3)?

2.Какой характер выходного сигнала будет для плавно нарастающего входного сигнала?

3.Сравните особенности реализации фильтра по формуле (4) и (5).

4.Определите области применения данной разработки.

34

ПРИЛОЖЕНИЕ А

(справочное)

СПИСОК КОМАНД ОЭВМ MCS-51

 

Мнемокод

Название

ай т

и кл

Операция

 

 

Группа команд передачи данных

 

 

 

MOV @Ri,#d

Пересылка в РПД константы

2

 

1

((Ri)) #d

(i=0,1)

 

 

 

 

 

 

 

 

 

MOV @Ri,A

Пересылка в РПД байта из акку-

1

 

1

((Ri)) (А)

 

мулятора

 

 

 

 

 

 

 

 

MOV @Ri,ad

Пересылка в РПД байта с

2

 

2

((Ri)) (ad)

прям.адреса ad

 

 

 

 

 

 

 

 

 

MOV A,#d

Загрузка в аккумулятор констан-

2

 

1

(А) #d

 

ты

 

 

 

 

 

 

 

 

 

MOV A,@Ri

Пересылка в аккумулятор из РПД

1

 

1

(А) ((Ri))

 

(i=0,1)

 

 

 

 

 

 

 

 

 

MOV A,ad

Пересылка в аккумулятор байта с

2

 

1

(А) (ad)

 

адреса ad

 

 

 

 

 

 

 

 

 

MOV A,Rn

Пересылка в аккумулятор байта

1

 

1

(А) (Rn)

 

из регистра (n=0 7)

 

 

 

 

 

 

 

 

 

MOV ad,#d

Пересылка константы по пря-

3

 

2

(ad) #d

 

мом.адресу

 

 

 

 

 

 

 

 

MOV ad,@Ri

Пересылка по прямому адресу

2

 

2

(ad) ((Ri))

байта из РПД (i=0,1)

 

 

 

 

 

 

 

 

 

MOV ad,A

Пересылка аккумулятора по прямому

2

 

1

(ad) (А)

 

адресу

 

 

 

 

 

 

 

 

 

MOV ad,Rn

Пересылка регистра по прямому

2

 

2

(ad) (Rn)

 

адресу

 

 

 

 

 

 

 

 

MOV add,ads

Пересылка прямоадресуемого

3

 

2

(add) (ads)

байта по прямому адресу

 

 

 

 

 

 

 

 

 

MOV

Загрузка указателя данных словом

3

 

2

(DPTR) #d16

 

DPTR,#d16

 

 

 

 

 

 

 

 

 

MOV Rn,#d

Загрузка в регистр (n=07) кон-

2

 

1

(Rn) #d

 

станты

 

 

 

 

 

 

 

 

 

MOV Rn,A

Пересылка в регистр (n=07) бай-

1

 

1

(Rn) (А)

 

та из аккумулятора

 

 

 

 

 

 

 

 

 

MOV Rn,ad

Пересылка в регистр с прямого

2

 

2

(Rn) (ad)

 

адреса

 

 

 

 

 

 

 

 

 

MOVC

Пересылка в аккумулятор байта

1

 

2

(А) ((А)+(DPTR

 

A,@A+DPTR

из ПП

 

))

 

 

 

 

 

 

35

 

Мнемокод

Название

ай т

и кл

Операция

 

MOVC

Пересылка в аккумулятор байта

1

 

2

(А) ((А)+(PC))

 

A,@A+PC

из ПП

 

 

 

 

 

 

 

MOVX

Пересылка в расшир. ВПД из

1

2

((DPTR)) (А)

 

@DPTR,A

аккумулятора

 

 

 

 

 

 

MOVX

Пересылка в аккумулятор из рас-

1

 

2

(А) ((DPTR))

 

A,@DPTR

шир. ВПД

 

 

 

 

 

 

MOVX @Ri,A

Пересылка в ВПД из аккумулято-

1

 

2

((Ri)) (А)

ра

 

 

 

 

 

 

 

MOVX A,@Ri

Пересылка в аккумулятор байта

1

 

2

(А) ((Ri))

из ВПД

 

 

 

 

 

 

 

 

POP ad

Извлечь из стека

2

 

2

(ad) ((SP))

 

 

(SP) (SP)-1

 

 

 

 

 

 

 

PUSH ad

Загрузить в стек

2

 

2

(SP) (SP)+1

 

 

((SP)) (ad)

 

 

 

 

 

 

 

XCH A,@Ri

Обмен аккумулятора с байтом из

1

 

1

(А) ((Ri))

 

РПД

 

 

 

 

 

 

 

 

XCH A,ad

Обмен аккумулятора и байта с

2

 

1

(А) (ad)

 

адреса ad

 

 

 

 

 

 

 

 

XCH A,Rn

Обмен аккумулятора с регистром

1

 

1

(А) (Rn)

 

 

Обменять младш. тетраду акку-

 

 

 

 

XCHD A,@Ri

мулятора с мл. тетрадой байта

1

 

1

0-3) ((Ri)0-3)

 

 

РПД

 

 

 

 

 

SWAP A

Обменять тетрады в аккумуляторе

1

 

1

0-3) (А4-7)

 

 

Группа арифметических операций

 

 

 

ADD A,#d

Сложить аккумулятор с констан-

2

 

1

(А) (А)+#d

 

той

 

 

 

 

 

 

 

 

ADD A,@Ri

Сложить аккумулятор с байтом из

1

 

1

(А) (А)+((Ri))

 

РПД

 

 

 

 

 

 

 

 

ADD A,ad

Сложить аккумулятор с байтом по

2

 

1

(А) (А)+(ad)

 

адресу ad

 

 

 

 

 

 

 

 

ADD A,Rn

Сложить аккумулятор с реги-

1

 

1

(А) (А)+(Rn)

 

стром

 

 

 

 

 

 

 

 

ADDC A,#d

Сложить аккумулятор с констан-

2

 

1

(А) (А)+#d+(C)

 

той и переносом

 

 

 

 

 

 

 

ADDC A,@Ri

Сложить аккумулятор с байтом из

1

 

1

(А) (А)+((Ri))+

РПД (i=0,1) и переносом

 

(C)

 

 

 

 

 

 

ADDC A,ad

Сложить аккумулятор с байтом по

2

 

1

(А) (А)+(ad)+(

 

адресу ad и переносом

 

C)

 

 

 

 

 

36

 

Мнемокод

Название

ай т

и кл

Операция

 

ADDC A,Rn

Сложить аккумулятор с реги-

1

1

(А) (А)+(Rn)+(

 

стром (n=07) и переносом

C)

 

 

 

 

 

DA A

Десятичная коррекция аккумуля-

1

1

 

 

 

тора

 

 

 

 

 

 

 

 

 

SUBB A,#d

Вычесть из аккумулятора кон-

2

1

(А) (А)-#d-(C)

 

станту и заем

 

 

 

 

 

 

 

SUBB A,@Ri

Вычесть из аккумулятора байт из

1

1

(А) (А)-((Ri))-

 

РПД и заем

(C)

 

 

 

 

 

SUBB A,ad

Вычесть из аккумулятора байт с

2

1

(А) (А)-(ad)-

 

адреса ad и заем

(C)

 

 

 

 

 

SUBB A,Rn

Вычесть из аккумулятора регистр

1

1

(А) (А)-(Rn)-

 

и заем

(C)

 

 

 

 

 

INC @Ri

Инкремент байта в РПД

1

1

((Ri)) ((Ri))+1

 

INC A

Инкремент аккумулятора

1

1

(А) (А)+1

 

INC ad

Инкремент байта по адр. ad

2

1

(ad) (ad)+1

 

INC DPTR

Инкремент указателя данных

1

2

(DPTR) (DPTR

 

)+1

 

 

 

 

 

 

 

 

INC Rn

Инкремент регистра

1

1

(Rn) (Rn)+1

 

DEC @Ri

Декремент байта в РПД

1

1

((Ri)) ((Ri))-1

 

DEC A

Декремент аккумулятора

1

1

(А) (А)-1

 

DEC ad

Декремент байта по адресу ad

2

1

(ad) (ad)-1

 

DEC Rn

Декремент регистра

1

1

(Rn) (Rn)-1

 

MUL AB

Умножение аккумулятора на ре-

1

4

(B)(A) (A)·(B)

 

гистр B

 

 

 

 

 

 

 

DIV AB

Деление аккумулятора на регистр

1

4

(A).(B) (A)/(B)

 

B

 

 

 

 

 

 

 

 

Группа логических операций

 

 

 

 

ANL A,#d

Логическое И аккумулятора и

2

1

(А) (А) #d

 

константы

 

 

 

 

 

 

 

ANL A,@Ri

Логическое И аккумулятора с

1

1

(А) (А) ((Ri))

 

байтом из РПД (i=0,1)

 

 

 

 

 

 

 

ANL A,ad

Логическое И аккумулятора с

2

1

(А) (А) (ad)

 

байтом по адресу ad

 

 

 

 

 

 

 

ANL A,Rn

Логическое И аккумулятора с

1

1

(А) (А) (Rn)

 

регистром (n=0 7)

 

 

 

 

 

 

 

ANL ad,#d

Логическое И байта по адресу ad с

3

2

(ad) (ad) #d

 

константой

 

 

 

 

 

 

 

ANL ad,A

Логическое И байта по адресу ad с

2

1

(ad) (ad) (А)

 

аккумулятором

 

 

 

 

 

 

37

 

Мнемокод

Название

ай т

и кл

Операция

 

ORL A,#d

Логическое ИЛИ аккумулятора с

2

1

(А) (А) #d

 

константой

 

 

 

 

 

 

 

 

ORL A,@Ri

Логическое ИЛИ аккумулятора с

1

1

(А) (А) ((Ri))

 

байтом из РПД (i=0,1)

 

 

 

 

 

 

 

 

ORL A,ad

Логическое ИЛИ аккумулятора с

2

1

(А) (А) (ad)

 

байтом по адресу ad

 

 

 

 

 

 

 

 

ORL A,Rn

Логическое ИЛИ аккумулятора с

1

1

(А) (А) (Rn)

 

регистром (n=0 7)

 

 

 

 

 

 

 

 

ORL ad,#d

Логическое ИЛИ байта по адресу

3

2

(ad) (ad) #d

 

ad с константой

 

 

 

 

 

 

 

 

ORL ad,A

Логическое ИЛИ байта по адресу

2

1

(ad) (ad) (А)

 

ad с аккумулятором

 

 

 

 

 

 

 

 

XRL A,#d

Исключ. ИЛИ аккумулятора с

2

1

(А) (А) #d

 

константой

 

 

 

 

 

 

 

 

XRL A,@Ri

Исключающее ИЛИ аккумулятора

1

1

(А) (А) ((Ri))

 

с байтом из РПД (i=0,1)

 

 

 

 

 

 

 

 

XRL A,ad

Исключающее ИЛИ аккумулятора

2

1

(А) (А) (ad)

 

с байтом по адресу ad

 

 

 

 

 

 

 

 

XRL A,Rn

Исключающее ИЛИ аккумулятора

1

1

(А) (А) (Rn)

 

с регистром (n=0 7)

 

 

 

 

 

 

 

 

XRL ad,#d

Исключающее ИЛИ байта по

3

2

(ad) (ad) #d

 

адресу ad с константой

 

 

 

 

 

 

 

 

XRL ad,A

Исключающее ИЛИ байта по

2

1

(ad) (ad) (А)

 

адресу ad с аккумулятором

 

 

 

 

 

 

 

 

CLR A

Сброс аккумулятора

1

1

(А) 0

 

CPL A

Инверсия аккумулятора

1

1

(А) (

 

)

 

A

 

RL A

Сдвиг аккумулятора влево по

1

1

n+1) (Аn),

 

циклу

n=0 6 (А0) (А7)

 

 

 

 

 

RR A

Сдвиг аккумулятора вправо по

1

1

n) (Аn+1),

 

циклу

n=0 6 (А7) (А0)

 

 

 

 

 

 

Сдвиг аккумулятора влево через

 

 

n+1) (Аn),

 

RLC A

1

1

n=0 6 (А0) (C)

 

перенос

 

 

 

 

(C) (А7)

 

 

 

 

 

 

 

Сдвиг аккумулятора вправо через

 

 

n) (Аn+1),

 

RRC A

1

1

n=0 6 (А7) (C)

 

перенос

 

 

 

 

(C) (А0)

 

 

 

 

 

 

 

Группа битовых операций

 

 

 

 

 

MOV bit,C

Пересылка разряда переноса в бит

2

2

(b) (C)

 

MOV C,bit

Пересылка бита в разряд переноса

2

1

(C) (b)

Мнемокод

ANL C,bit

ANL C,/bit

ORL C,bit

ORL C,/bit

CLR bit

CLR C

SETB bit

SETB C

CPL bit

CPL C

LCALL ad16

ACALL ad11

LJMP ad16

AJMP ad11

SJMP rel

CJNE

A,ad,rel

CJNE @Ri,#d,rel

CJNE

A,#d,rel

38

Название

ай т

и кл

Логическое И бита и переноса

2

2

Логическое И инверсии бита и

2

2

переноса

 

 

Логическое ИЛИ бита и переноса

2

2

Логическое ИЛИ инверсии бита и

2

2

переноса

 

 

Сброс бита

2

1

Сброс переноса

1

1

Установка бита

2

1

Установка переноса

1

1

Инверсия бита

2

1

Инверсия переноса

1

1

Группа команд передачи управления

Длинный вызов программы

3

2

Абсолютный вызов подпрограм-

2

2

мы в странице 2 Кбайта

 

 

Длинный переход

3

2

Абсолютный переход в странице

2

2

размером 2 Кбайт

 

 

Короткий относительный переход

2

2

Сравнение аккумулятора с байтом

 

 

по адресу ad и переход, если не рав-

3

2

но

 

 

Сравнение байта из РПД с констан-

3

2

той и переход, если не равно

 

 

Сравнение аккумулятора с констан-

3

2

той и переход, если не равно

 

 

Операция

(C) (C) (b)

(C) (C) ( b )

(C) (C) (b)

(C) (C) ( b )

(b) 0

(C) 0

(b) 1

(C) 1

(b) ( b )

(C) ( C )

(PC) (PC)+3, (SP) (SP)+2, (SP-1) (PC0-7),

(SP) (PC8-15), (PC) ad16

(PC) (PC)+2, (SP) (SP)+2, (SP-1) (PC0-7),

(SP) (PC8-15), (PC0-10) ad11

(PC) ad16

(PC0-10) ad11

(PC) (PC)+2+r el

(PC) (PC)+3,

если (А) (ad), то

(PC) (PC)+rel

(PC) (PC)+3, если ((Ri)) #d,

то

(PC) (PC)+rel

(PC) (PC)+3,

если (А) #d, то

(PC) (PC)+rel

39

Мнемокод

Название

ай т

и кл

Операция

CJNE

Сравнение регистра с константой

 

 

(PC) (PC)+3,

3

2

если (Rn) #d, то

Rn,#d,rel

и переход, если не равно

 

 

(PC) (PC)+rel

 

 

 

 

 

 

 

 

(PC) (PC)+2,

DJNZ ad,rel

Декремент байта по адресу ad и

3

2

(ad) (ad)-1,

переход, если не нуль

если (ad) 0, то

 

 

 

 

 

 

 

(PC) (PC)+rel

 

 

 

 

(PC) (PC)+2,

DJNZ Rn,rel

Декремент регистра и переход,

2

2

(Rn) (Rn)-1,

если не нуль

если (Rn) 0, то

 

 

 

 

 

 

 

(PC) (PC)+rel

 

 

 

 

(PC) (PC)+3,

JB bit,rel

Переход, если бит равен единице

3

2

если (b)=1, то

 

 

 

 

(PC) (PC)+rel

 

 

 

 

(PC) (PC)+3,

JBC bit,rel

Переход, если бит установлен, с

3

2

если (b)=1, то

последующим сбросом бита

(b) 0,

 

 

 

 

 

 

 

(PC) (PC)+rel

 

Переход, если перенос равен еди-

 

 

(PC) (PC)+2,

JC rel

2

2

если (C)=1, то

нице

 

 

 

(PC) (PC)+rel

 

 

 

 

JMP

Косвенный относительный пере-

1

2

(PC) (А)+(DPT

@A+DPTR

ход

R)

 

 

 

 

 

 

(PC) (PC)+3,

JNB bit,rel

Переход, если бит равен нулю

3

2

если (b)=0, то

 

 

 

 

(PC) (PC)+rel

 

Переход, если перенос равен ну-

 

 

(PC) (PC)+2,

JNC rel

2

2

если (C)=0, то

лю

 

 

 

(PC) (PC)+rel

 

 

 

 

 

Переход, если аккумулятор не равен

 

 

(PC) (PC)+2,

JNZ rel

2

2

если (А) 0, то

нулю

 

 

 

(PC) (PC)+rel

 

 

 

 

 

Переход, если аккумулятор равен

 

 

(PC) (PC)+2,

JZ rel

2

2

если (А)=0, то

нулю

 

 

 

(PC) (PC)+rel

 

 

 

 

 

 

 

 

(PC8-15) ((SP))

RET

Возврат из подпрограммы

1

2

(PC0-7) ((SP)-1)

 

 

 

 

(SP) (SP)-2

40

Мнемокод

Название

ай т

и кл

Операция

 

Возврат из подпрограммы обра-

 

 

(PC8-15) ((SP))

RETI

1

2

(PC0-7) ((SP)-1)

ботки прерывания

 

 

 

(SP) (SP)-2

 

 

 

 

NOP

Нет операции

1

1

(PC) (PC)+1