Курсовая работа: Обработка сигналов на основе MCS-51
Пример
43.
Устранение дребезжания контактов. Дребезжание состоит в том, что благодаря
упругим свойствам контактов возможен отрыв контактов, который приводит к
переходному процессу. При этом сигнал может быть прочитан многократно как
случайная последовательность нулей и единиц. Это можно устранить с помощью триггера
(рис. 6).
Чаще
всего с помощью MCS51 это делается программно так, как показано на рис. 7
и рис. 8.
Реализация
первого метода, количество совпадений задано в R3.
DBNC: MOV R3,#3 ; инициализация
счетчика
DBNC1: JB P3.4, DBNC; если контакт замкнутый,
; то начать отсчет опрашиваний
; сигнала сначала
DJNZ R3, DBNC1 ; повторять, пока значение в R3
; не станет равным 0
JB P3.4, DBNC; конечная проверка
Временная
задержка подбирается экспериментальное (1–10 мс) в зависимости от типа датчика.
Пример
44.
Формирование импульсных сигналов делается по принципу включен / выключен с
необходимой временной задержкой:
PULLS:ON: ANL P1,#11110111B; выдача импульса в линию 3 порта
1
CALL DELAY ; временная задержка
OFF: ORL Р1,#00001000В; сброс
Пример
45.
Считывание данных из таймера. Для устранения возможных сбоев при считывании
сначала читается старший байт, потом – младший, после чего подтверждается, что
старший байт за это время не изменился.
RDTIME: MOV A, TH0
MOV R0, TL0
CJNE A, TH0, RDTIME
MOV R1, А
RET
Пример
46.
Подсчет числа импульсов, например, радиодеталей, которые движутся по конвейеру,
зафиксированных фотоэлементом (рис. 9).
MOV TMOD,#01000000B; настройка счетчика 1
MOV TH1,#00H ; сброс счетчика
WAIT0: JB P3.4, WAIT0; ожидание включения транспортера
SETB TCON.6 ; запуск счетчика 1
WAITC: JNB P3.4, WAITC; ожидание отключения транспортера
CLR TCON.6 ; остановка счетчика 1
MOV A.TH1 ; A ¬ число деталей
EXIT: ; выход
Максимальное
число радиодеталей – 255.
Пример
4
Реализация функций времени на основе таймеров.
В MCS-51 при частоте
генератора тактовых импульсов 12 МГц таймер / счетчик изменяет свое
значение с частотой 1 Мгц (в режиме таймера), или при поступлении сигнала от
внешнего источника через счетный вход T0, T1 (в режиме счетчика).
Если
использовать таймер / счетчик в режиме 1 полного формата (16 бит), то получим
задержки в границах (1 – 65536 мкс).
Программа
задержки на 50 мс в MCS-51, прерывание разрешено. Организация перехода к метке
NEXT при переполнении Т/С0:
ORG 0ВН ; адреса вектора прерываний от Т/С0
CLR TCON.4 ; остановка Т/С0
RETI ; выход из подпрограммы обработки
прерываний
ORG 100H ; начальный адрес программы
MOV TMOD, #01Н; настройка Т/С0
MOV TL0, #LOW (NOT(50000) – 1); загрузка таймера
MOV TH0, #HIGH (NOT(50000) – 1)
SETB TCON.4 ; старт Т/С0
SETB IE.1 ; разрешение прерываний от Т/С0
SETB PCON.0 ; перевод в режим холостого хода
NEXT: ; продолжение программы.
Пример
48.
Организация задержки программным путем:
DELAY: MOV R2, Х ; (R2)¬(Х)
COUNT: DJNZ R2, COUNT; декремент R2 и цикл, если не нуль
RET ; возвращение из подпрограммы
Пример
49.
Подпрограмма задержки на 50 мс, используя Т/С0, погрешность не превышает 2 мкс.
DELAY: MOV TMOD,#00000001B; настройка Т/С0
MOV TH0,#HIGH (NOT(50000–16))
MOV TL0,#LOW (NOT(50000–16))
SETB TCON.4 ; запуск Т/С0
JNB TCON.5,$ ; ожидание
ANL TCON,#NOT(30H); остановка Т/С0, сброс TF0
RET ; возвращение из подпрограммы
Пример
50.
Подпрограмма задержки на 1 секунду. Погрешность не больше, чем 123 мкс.
OS: MOV R3,#20D ; счетчик циклов
S1: ACALL DELAY ; задержка на 50 мс
DJNZ R3, S1 ; организация цикла
RET ; возвращение из подпрограммы
Пример
51.
Измерение временных интервалов. При применении таймера используется вход
разрешения счетчика ( ). Тогда
измеренный сигнал подается на вход , а
измерение продолжительности выполняется в Т/С0.
«Положительный»
импульс:
MOV TMOD,#00001001В; настраивание Т/С0
MOV TH0,#0 ; сбрасывание таймера
MOV TL0,#0
SETB TCON.4 ; запуск Т/С0
WAIT0: JNB P3.2, WAIT0; ожидание единичного уровня
WAITC: JB P3.2, WAITC; ожидание нулевого уровня
CLR TCON.4 ; остановка Т/С0
RET ; выход из процедуры
Управление
программе должно передаваться при условии =0.
Прерывание от Т/С0 и внешние от –
должны быть запрещены. По завершению программы в Т/С0 будет находиться число,
пропорциональное продолжительности импульса на входе . Максимальная
продолжительность импульса 65536 мкс, погрешность 1 мкс.
Если необходимо измерять большую
продолжительность импульса, то можно программным путем подсчитывать число
переполнений от таймера.
Пример
52.
Преобразование параллельного кода в последовательный в MCS-51 сводится к
передаче одного байта в буфер приемо-передатчика:
MOV SBUF, А
Пример
53.
Обратное преобразование последовательного кода в параллельный инициируется
стоповым битом и выполняется аппаратно без участия программы. Основная
программа должна выполнить команду
MOV A, SBUF.
Пример
54.
Преобразование однобайтовых чисел в дополнительный код и наоборот. Числа со
знаком можно представить в дополнительном коде в границах от -128 к +12 Алгоритмы
перевода чисел из прямого кода со знаком в дополнительный и обратное
преобразование одинаковы:
DOD-PR: JNB А.7, EXIT; проверка знакового разряда
CPL А ; инверсия аккумулятора
ADD A, #1 ; добавление единицы
SETB А.7 ; установление знака
EXIT: ; выход
Пример
55.
Преобразование чисел из одной системы исчисления в другую методом «двух
счетчиков». При этом методе из начального кода отнимается, а к новому коду
прибавляется единица до обнуления начального кода. Причем отнимание
осуществляется в старой системе счисления, а добавление – в новой.
Программа
перевода двоичного числа в двоично-десятичное.
MOV R5, А ; передача начального числа в R5
CLR А ; сброс аккумулятора
REV: ADD A,#1 ; добавление единицы
DA A ; десятичная коррекция
DJNZ R5, REV ; декремент начального кода и цикл, если не нуль
Результат
преобразования находится в аккумуляторе.
Пример
56.
Подсчет числа импульсов за заданный промежуток времени. Решается 4-я способами:
1.
Программная реализация временного интервала и программный подсчет числа импульсов.
2.
Программная реализация временного интервала и аппаратный подсчет числа
импульсов (на внутреннем таймере / счетчике).
3.
Аппаратная реализация временного интервала и программный подсчет числа
импульсов.
4.
Аппаратная реализация временного интервала и аппаратная реализация подсчета
импульсов.
Реализация
на MCS-51: в таймере-счетчике Т/С1 осуществляется подсчет числа импульсов; в
Т/С0 заданный временной интервал. Датчик импульсов должен быть подключен к Т1.
TIME: EQU NOT(10000)+1; определение константы TIME для
отсчета времени в 10 мс
MOV TMOD,#01010001B; настройка таймеров-счетчиков:
1-й – счетчик 16 бит, 0-й – таймер
CLR A ; сброс аккумулятора
MOV ТН1, А ; сброс Т/С1
MOV ТL1, А;
MOV ТН0,#НІGH(ТIМE); загрузка в Т/С0 константы TIME
MOV TL0,#LOW (TIME);
ORL TCON,#50H; запуск Т/С1 и Т/С0
WAIT: JBC TCON.5, EXIT; проверка переполнения Т/С0
SJMP WAIT ; цикл, если TF=0
EXIT: MOV В, ТН1 ; (В) – (А), число импульсов за
время 10 мс
MOV A, TL1
программный команда управление микроконтроллер
6.
Реализация ЦАП и АЦП
Пример
5
Преобразование информации из цифровой формы в аналоговую осуществляется с
помощью подключения интегральных микросхем цифроаналогового преобразователя
(ЦАП) к одному из портов MCS-51. Выдача информации при этом
осуществляется с помощью одной команды, например: MOV P1, А.
Если
необходимо генерировать какую-то сложную функцию, то лучше записать ее таблично
и передавать с соответствующим периодом в заданный порт.
Пример 58. Аналого-цифровой преобразователь (АЦП) последовательного приближения
(рис. 10).

Рисунок 10 – Реализация АЦП
последовательного приближения
МК
выдает через порт P1 байт данных, что превращается в аналоговую форму и
сравнивается с входным сигналом компаратора, после чего анализируется результат
сравнения. В зависимости от значения сигнала на входе Т0 MCS-51 или оставляет
старший бит в единичном состоянии, или сбрасывает в 0. Потом аналогично проверяются
все остальные биты.
R4 –
регистр цифрового эквивалента;
Страницы: 1, 2, 3, 4, 5, 6 |