Обработка считанных значений частоты, текущей и заданной, вычисление отклонения и выработка управляющих сигналов производится процедурой OBRAB.
Рассмотрим алгоритм этой процедуры (рис.3 приложения 1).
Сначала вычисляется отклонение, равное разности между заданной и текущей частотой. После этого выполняется процедура ANALIZ. Затем отклонение делится на заданную частоту и умножается на 100 и получается погрешность. В случае, если погрешность больше 0, то от неё отнимается 10. Если результат больше нуля, то в соответствующий бит порта 2 заносится единица и зажигается соответствующий светодиод. Если погрешность отрицательная, то к ней прибавляется 10. И если результат меньше нуля, то также в соответствующий бит порта 2 заносится единица.
Вычисление значения управляющего сигнала осуществляется процедурой ANALIZ. В данной работе реализован простейший случай, когда управляющий сигнал пропорционален измеренному отклонению. Алгоритм этой процедуры показан на рис. 3 приложения 1.
Здесь отклонение умножается на коэффициент пропорциональности и прибавляется значение, соответствующее нулевому отклонению. В данном случае это значение равно 127. Получившийся результат заносим в регистр R5.
Система команд МК КР1816ВЕ51 ориентирована на организацию гибкого ввода-вывода данных и первичную обработку информации. Особое внимание уделено операциям с битами и передаче управления по их значению.
В ассемблере 51 используются различные методы адресации, т.е. наборы механизмов доступа к операндам. В настоящей разработке использовались следующие методы адресации:
· регистровая адресация;
· косвенно-регистровая адресация;
· непосредственная адресация.
Для адресации портов, регистров специальных функций используются зарезервированные символические имена (Р0, Р1, Р2, Р3 – порты, А или АСС - аккумулятор).
Текст программы приведён в приложении 2.
В начале программы объявляются константы, выбирается банк регистров общего назначения, номер которого определяется разрядами RS0, RS1 регистра PSW. В данном случае выбирается нулевой банк (SEL RB0).
В регистр R2 заносится число каналов N. Регистр R2 далее используется для хранения номера входа мультиплексора, с которого берётся значение. Регистр R0 используется в качестве указателя на ячейку внутренней памяти данных, хранящей операнд. В начале в R0 заносится значение 20H. По этому адресу будет хранится значение с пульта оператора. По адресу 21Н будет хранится значение текущей частоты. В регистре R5 хранится значение управляющего сигнала. Отклонение заносится в регистр R4.
Большое значение в системе команд уделено операциям с битами. В программе используются следующие команды: SETB bit, CLR bit, которые устанавливают бит соответственно в 1 или в 0. Для адресации бит используются зарезервированные символические имена вида < имя РСФ или порта > . < номер бита >.
Для передачи управления использовались такие команды как АSJMP – короткий переход, JNB – переход, если бит равен 0, JB – переход, если бит равен 1, JZ – переход, если аккумулятор равен 0.
Время выполнения команд равно одному, двум или четырём машинным циклам. Цикл равен 12 периодам внешнего синхросигнала (при внешней частоте 4МГц длительность цикла составляет 3 мкс). Это позволяет не вводить дополнительные задержки при вводе данных между выдачей адреса на мультиплексор, запуском УВХ и запуском АЦП и при выводе данных между выдачей данных в порт 1 и выдачей адреса на дешифратор.
Система арифметических команд включает в себя операции сложения, вычитания, инкремент, декремент, а также умножение и деление.
Программа написана в соответствии с алгоритмами, представленными в приложении 1 и описанными в предыдущем разделе. Она включает в себя основную программу, подпрограммы INPUT, OUTPUT, OBRAB, ANALIZ. Вызов подпрограмм осуществляется командой АCALL.
Рассчитаем время ввода данных, их обработки и выдачи управляющего сигнала для одного канала. Для этого сложим время выполнения всех команд и учтём время преобразования на АЦП.
При внешней частоте в 4 МГц получим не более 672 мкс.
Для всех четырёх каналов получим не более 2.7 мс.
Частота опроса каналов не менее 0,37 кГц.
В результате курсового проектирования была разработана система автоматической подстройки частоты на основе однокристальной ЭВМ КР1816ВЕ51 со следующими параметрами: потребляемая мощность: 3,1 Вт, число обсуживаемых каналов – 4, частота опроса не менее 0,37 кГц.
Разработка системы была проведена с учетом требований, указанных в техническом задании.
Система обеспечивает индикацию канала, в котором отклонение текущей частоты от заданной превышает определённое значение.
Была разработана принципиальная схема устройства, алгоритм управления и программа на языке ассемблер для микроконтроллеров серии MCS-51.
Разработанная система может применяться регулировки частоты в различных устройствах и приборах.
1. В.Б. Бродин, М.И. Шагурин – Микроконтроллеры. Справочник. /М.; Издательство ЭКОМ, 1999 г. – 400 с.
2. Е.В. Вениаминов – Микросхемы и их применение. Справ. Пособие. / М.; Радио и связь, 1989г. – 240 с.
3. В.Г. Гусев, Ю.М. Гусев – Электроника. Учебное пособие / М.; Высшая школа, 1990 г. – 622 с.
4. Ф.В. Шульгин – Справочник по аналоговым микросхемам / М., 1997 г.
Алгоритмы управления САПЧ.
Рис.1. Главный алгоритм работы системы.
Рис.2. Алгоритмы процедуры ввода INPUT и процедуры вывода OUTPUT.
Рис.3. Алгоритм обработки входных сигналов и подготовки результатов.
Программа работы микроконтроллера.
N EQU 4
K EQU 31
INIT: SEL RB0 ;выбор банка регистров
L1: MOV R2,N ;занести номер канала
L2: MOV R0,#20H ;занести в РПД адрес памяти для данных
АCALL INPUT;чтение данных
MOV A,R2 ;
SUBB A,N ;
MOV R2,A ;R2=R2-N
INC R0 ;увеличить адрес на 1
АCALL INPUT ;чтение данных
АCALL OBRAB ;обработка данных
АCALL OUTPUT;вывод результата
MOV A,R2;
INC ;
ADD A,N ;
MOV R2,A;R2=R2+1+N
MOV A,N ;
MOV B,#2 ;
MUL AB ;A=2*N
SUBB A,R2;
JZ L1;сравнение A и R2
АJMP L2;переход на L2
RET
INPUT: MOV A,R2 ;процедура чтения данных из порта
SETB ACC.5
SETB ACC.4
OUT P0,A ;вывод в Р0 адреса
SETB PO.3 ;запуск УВХ
CLR P0.3;
CLR P0.4 ;запуск АЦП
L3: IN A,P1;чтение из Р1
JNB ACC.7 L3;проверка готовности АЦП
CLR ACC.7;ст. бит аккумулятора равен 0
SETB PO.4
MOV @R0,A;занести считанные данные в память
RET
OUTPUT: MOV A,R2;процедура вывода результатов
SETB ACC.4
OUT P1,R5;вывод в Р1
OUT P0,A ;вывод в Р0 адреса
SETB P0.5
RET
OBRAB: DEC RO;адрес значения пульта оператора
MOV A,@R0;значение пульта оператора в акк.
INC R0;адрес значения датчика
SUBB A,@R0;отклонение между пультом оператора и датчиком
MOV R4,A ;отклонение в регистр 4
АCALL ANALIZ ;процедура обработки и получения сигнала управления
MOV A,R4 ;значения отклонения в акк.
MOV B,#100;
MUL AB;умножить отклонение на 100%
DEC R0;адрес значения пульта оператора
MOV B,@R0;значение пульта оператора в В
DIV AB;разделить отклонение на значение пульта оператора
JB ACC.7 NEG;переход если погрешность <0
SUB A,#10 ;вычесть 10% из погрешности
JNB ACC.7 INDIK1;если погрешность > 10% индикация
АSJMP INDIK2
NEG: ADD A,#10
JB ACC.7 INDIK1 ;если погрешность > 10% индикация
АJMP INDIK2
INDIK1: SETB P2.R2
АJMP KON
INDIK2: CRL P2.R2
KON: RET
ANALIZ: MOV B,K;в регистр B значение коэффициента пропорциональности
MUL AB ;умножить отклонение на коэффициент
ADD A,#127;прибавить макс. зн-е результата деленное на 2 =127
MOV R5,A;занести результат в регистр 5
RET