Смекни!
smekni.com

Разработка устройства, предназначенного для формирования импульсных сигналов с заданным периодом и скважностью - ШИМ-регулятор (стр. 4 из 4)

Таблица 6.Контакты DD2

Таблица 7.Контакты DD3

Таблица 8.Контакты LPT

4 Программа управления

4.1 Логика работы

Программа осуществляет управление ШИМ-регулятором через LPT порт ЭВМ.

Для доступа к порту используются адреса 378H, 379H и 37AH. По адресу 378H осуществляется запись в регистр Data, по адресу 379H- в регистр Status и по адресу 37AH – в регистр Control.

В нашем случае, так как предполагается чтения из порта, а только запись в порт, то регистр Status не используется. Регистр Data используется для передачи байта в программируемый таймер-счётчик, а биты 0,1 и 2 регистра Control для выставления строба записи и выбора режима записи в таймер-счётчик.

На рисунке 12 изображены контакты LPT порта и их принадлежность тому или иному регистру.

Рисунок 12

Для формирования на выходе ШИМ- регулятора импульсов с заданной скважностью и периодом, таймер-счётчик КР580ВИ53 был запрограммирован в режим работы 2 и 1 – соответственно таймер-счётчик 1 и 0 . Таймер-счётчик 2 не использовался.

В режиме 2 таймер выполняет функцию делителя входной частоты CLK на n. Таким образм мы получаем импульсы с определённым периодом и подаём их на вход таймера-счётчика 0, который работает в режиме 1, то есть в режиме программируемого мультивибратора. В результате на выходе таймера-счётчика 0 мы получаем импульсы с заданным периодом и скважностью. Для реализации данного алгоритма была написана программа. Теакт программы представлен в приложении А.

Заключение

В результате проделанной работы были получены знания в области макетирования и сборке платы ШИМ-регулятора, также были получены теоретические знания в области микропроцессорных средств. Была разработана электрическая схема ШИМ – регулятора и программа для управления через LPT порт ЭВМ. По результатам проделанной работы можно сделать вывод, что ШИМ – регулятор достаточно прост с точки зрения схемотехнического решения, а значит экономичен как с точки зрения элементной базы, так и с точки зрения денежных затрат. У него высокий коэффициент полезного действия и он упрощает работу транзистора, тем самым, обеспечивая его сохранность. Эти достоинства делают предпочтительным применение ШИМ – регулятора там, где необходима надёжность и простота реализации.


Приложение А

Текст программы

programlpt;

uses dos,crt;

var

addr_d,addr_c: word;

e:integer;

in_t,in_tau:byte;

input_t,input_tau: String;

procedure set_kanal_0(value: byte);{процедураустановкирежимаработысчётчика-таймера 0}

var

PSW_strobe_0: byte;

PSW_strobe_1: byte;

N0_strobe_0: byte;

N0_strobe_1: byte;

psw_set: byte;

begin

PSW_strobe_1:=7;{00000111}

PSW_strobe_0:=6;{00000110}

N0_strobe_1:=1;{00000001}

N0_strobe_0:=0;{00000000}

psw_set:=50;{00110010}

{set mode}

Port[addr_c]:=PSW_strobe_1;

Port[addr_d]:=psw_set;

Port[addr_c]:=PSW_strobe_0;Port[addr_c]:=PSW_strobe_1;

{data => 8253}

Port[addr_d]:=value;

Port[addr_c]:=N0_strobe_0;Port[addr_c]:=N0_strobe_1;

end;

procedure set_kanal_1(value: byte); {процедураустановкирежимаработысчётчика-таймера 1}

var

var

PSW_strobe_0: byte;

PSW_strobe_1: byte;

N1_strobe_0: byte;

N1_strobe_1: byte;

psw_set: byte;

begin

PSW_strobe_1:=7;{00000111}

PSW_strobe_0:=6;{00000110}

N1_strobe_1:=3;{00000011}

N1_strobe_0:=2;{00000010}

psw_set:=116;{01110100}

{set mode}

Port[addr_c]:=PSW_strobe_1;

Port[addr_d]:=psw_set;

Port[addr_c]:=PSW_strobe_0;Port[addr_c]:=PSW_strobe_1;

{data => 8253}

Port[addr_d]:=value;

Port[addr_c]:=N1_strobe_0;Port[addr_c]:=N1_strobe_1;

end;

begin

{считывание адреса LPT порта}

addr_d:=MemW[$0040:$0008];

{вычисление адреса регистра ControlLPT порта}

addr_c:=addr_d+2;

whiletruedobegin {считывание значений скважности и периода в цикле}

write('Период [q - для выхода]: ');

readln(input_t);

if input_t='q' then break;

val(input_t,in_t,e);

set_kanal_1(in_t);

write('Скважность [q - длявыхода]: ');

readln(input_tau);

if input_tau='q' then break;

val(input_tau,in_tau,e);

set_kanal_0(in_tau);

writeln('==========================================');

end;{цикл выполняется до тех пор, пока не введена буква q}

end.