Выдержка из текста работы
получение 8-битных температурных отсчетов, отражающих температуру устройства. Прибор можно использовать в качестве термостата, при определенных пользователем значениях температуры, верхнего и нижнего уровней. Если текущая температура становится больше верхнего уровня или равна температуре верхнего уровня, высвечивается сообщение, отключается нагревательный прибор или включается холодильник; если текущая температура становится меньше нижнего уровня или равна температуре нижнего уровня, высвечивается сообщение, включается нагревательный прибор или отключается холодильник.
Особенности:
* Измеряет температуру от 0 до 250 градусов с шагом в 1 градус.
* Значение температуры считывается в виде 8-битного кода.
* Преобразовывает температуру за 1 секунду.
* Параметры режима термостата задаются пользователем.
* Данные читаются и записываются на паралельный порт LPT1.
* Применяется для термостатического контроля, в индустриальных, любых чувтвительных системах.
Максимальные значения параметров и режимов:
Напряжение на любом выводе относительно земли . . . . . . . . 0.5…+7.0В
Рабочая температура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 0 …+200 С
Температура хранения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..0 …+200 С
Температура пайки . . . . . . . . . . . . . . . . . . . . . . . . ..250 С в течении 10 с
2. Функциональное описание
Считывание температурных значений:
Устройство измеряет температуру с помощью схемы измерения температуры. Значение температуры представлены в 8-битном формате. Данные передаются последовательно на паралельный порт LPT1, начиная с младшего байта. Устройство может измерять температуру в диапазоне от 0 до +200 С с шагом в 1 градус. Так как данные передаются последовательно, начиная с младшего байта, температурные данные могут быть считаны в виде передачи двух 8-битных слов, старшие 4 бита которых либо игнорируются либо установлены в нуль. После передачи старшего байта, считываются данные со следующего датчика, по аналогичной схеме.
Когда температура, измеренная прибором, становится равна или поднимается выше сохраненного значения высокого порога температуры, высвечивается сообщение и остается до пор, пока температура не станет ниже, сохраненного значения высокого порога температуры. А когда температура, измеренная прибором, становится равна или опускается ниже, сохраненного значения низкого порога температуры, высвечивается сообщение и остается до пор, пока температура не станет выше, сохраненного значения низкого порога температуры.
3. Разработка программы
Для того чтобы нам реализовать программу, необходимо компьютером считывать сигналы. Считывать сигналы будем с помощью параллельного порта LPT1.
Pin In/Out Signal Name Pin In/Out Signal Name
——————————————
1 I/O -STROBE 14 O -AUTO FEED XT
2 I/O Data Bit 0 15 I -ERROR
3 I/O Data Bit 1 16 O -INIT
4 I/O Data Bit 2 17 O -SLCT IN
5 I/O Data Bit 3 18 na Ground
6 I/O Data Bit 4 19 na Ground
7 I/O Data Bit 5 20 na Ground
8 I/O Data Bit 6 21 na Ground
9 I/O Data Bit 7 22 na Ground
10 I -ACK 23 na Ground
11 I BUSY 24 na Ground
12 I PE 25 na Ground
13 I SLCT
Подсоединим выходы к 10,11,12,13-му соединению (Pin) кабеля LPT, т.е. сигналы закодированой температуры будут приходить на 10,11,12,13 Pin порта принтера LPT1. Затем последовательно считываем два 8-битных слова, старшие 4 бита которых либо игнорируются, либо установлены в нуль. После передачи старшего байта, считываются данные со следующего датчика, по аналогичной схеме, в течении полминуты. И выводим значение температуры на экран монитора.
4. Программирование.
Программа, написанная на языке Pascal 7.0 со встроенным Ассемблером, является главной программой. Ее листинг приведен в приложении А.
Программа “Измерение температуры” работает следующим образом:
Запускается скомпилированная программа Kp_rks.exe .
При поступлении импульсов на порт LPT1 мы считываем эти импульсы прерыванием 17h функции 02h в регистр Аh. В этом регистре находится число размером в 8 бит. Каждый бит является результатом состояния устройства подключенного к параллельному порту.
7 6 5 4 3 2 1 0
x . . . . . . . Printer not busy (0=busy)
. x . . . . . . Acknowledgement from printer
. . x . . . . . нет бумаги (12 Pin)
. . . x . . . . Printer selected
. . . . x . . . I/O error
. . . . . 0 . . не используется
. . . . . . 0 . не используется
. . . . . . . x Time-out error
Т.е. в регистре Ah старшие 4-бита являют собой первую половину в коде температуры, сдвигаем их на 4 вправо и записываем в Bh, принимаем следующий 8-битный код сдвигаем мх вправо на 4, затем сдвигаем влево на 4 и складываем с Bh получаем результат измеренной температуры в Ah, первого датчика. Затем последовательно считываем остальные 3 датчика, аналогичным образом. Далее сравниваем эти значения температур с min и max допустимым значением температуры, если значение текущей температуры выходит за пределы допустимой температуры, высвечивается сообщение о нарушении режима работы измеряемого объекта.
5. Заключение
В данном курсовом проекте спроектировано устройство контроля температуры в холодильных установках. В ходе выполнения курсового проекта закрепили знания полученные при теоретическом изучении данного курса и приобрели навыки проектирования сложных систем.
Спроектировали схему содержащую минимум функциональных звеньев, простую и дешевую, обеспечили требуемую точность, разработали программное обеспечение, для простоты обслуживания данной системы.
Приложение
Листинг программы Kp_rks
program Kurs;
uses crt;
var t1,t2,t3,t4:byte;
i,j:longint;
begin;
for i:=1 to 1000 do
begin
clrscr;
{1 датчик}
xor bx,bx
mov ah,02h
mov dx,00h
int 17h
shr ah,4
mov bh,ah
mov ah,02h
mov dx,00h
int 17h
shr ah,4
shl ah,4
add ah,bh
mov t1,ah
{2 датчик }
xor bx,bx
mov ah,02h
mov dx,00h
int 17h
shr ah,4
mov bh,ah
mov ah,02h
mov dx,00h
int 17h
shr ah,4
shl ah,4
add ah,bh
mov t2,ah
{3 датчик }
xor bx,bx
mov ah,02h
mov dx,00h
int 17h
shr ah,4
mov bh,ah
mov ah,02h
mov dx,00h
int 17h
shr ah,4
shl ah,4
add ah,bh
mov t3,ah
{4 датчик }
xor bx,bx
mov ah,02h
mov dx,00h
int 17h
shr ah,4
mov bh,ah
mov ah,02h
mov dx,00h
int 17h
shr ah,4
shl ah,4
add ah,bh
mov t4,ah
end;
writeln (‘ ‘Температура первого датчика ‘,t1,’ градусов по С `’);
writeln(»);
writeln (‘ ‘Температура второго датчика ‘,t2,’ градусов по С `’);
writeln(»);
writeln (‘ ‘Температура третьего датчика ‘,t3,’ градусов по С `’);
writeln(»);
writeln (‘ ‘Температура четвертого датчика ‘,t4,’ градусов по С `’);
writeln(»);
if t1>200 then writeln(‘ Выключить первый обогреватель ‘);
if t1<55 then writeln(‘ Включить первый обогреватель ‘);
if t2>200 then writeln(‘ Выключить второй обогреватель ‘);
if t2<55 then writeln(‘ Включить второй обогреватель ‘);
if t3>200 then writeln(‘ Выключить третий обогреватель ‘);
if t3<55 then writeln(‘ Включить третий обогреватель ‘);
if t4>200 then writeln(‘ Выключить четвертый обогреватель ‘);
if t4<55 then writeln(‘ Включить четвертый обогреватель ‘);
for j:=1 to 100000 do;
end;
end.