1. 1. Общее описание
|
4
|
2. 2. Функциональное описание
|
5
|
3. 3. Разработка программы
|
6
|
4. Программирование
|
7
|
5.
Заключение.
6.
Приложение А. Листинг программы
|
8
9
|
1.
Общее описание.
Устройство
представляет из себя цифровой термометр и обеспечивает
получение 8-битных температурных
отсчетов, отражающих температуру устройства. Прибор можно использовать в
качестве термостата, при определенных пользователем значениях температуры, верхнего
и нижнего уровней. Если текущая температура становится больше верхнего уровня
или равна температуре верхнего уровня, высвечивается сообщение, отключается
нагревательный прибор или включается холодильник; если текущая температура
становится меньше нижнего уровня или равна температуре нижнего уровня,
высвечивается сообщение, включается нагревательный прибор или отключается
холодильник.
Особенности:
* Измеряет
температуру от 0 до 250 градусов с шагом в 1 градус.
* Значение
температуры считывается в виде 8-битного кода.
* Преобразовывает
температуру за 1 секунду.
* Параметры
режима термостата задаются пользователем.
* Данные читаются
и записываются на паралельный порт LPT1.
* Применяется для
термостатического контроля, в индустриальных, любых чувтвительных системах.
Максимальные
значения параметров и режимов:
Напряжение на
любом выводе относительно земли . . . . . . . . 0.5...+7.0В
Рабочая
температура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 0
...+200 С
Температура хранения. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . ..0 ...+200 С
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;
asm
{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 датчик }
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.