Интернет страница учителя физики и астрономии Пигалицына Льва Васильевича

Школьная компьютерная физическая лаборатория

    

     Занятие 2. Ввод информации в LPT порт ПК    .

 

   Для проведения физических экспериментов с помощью ПК необходимо в него ввести информацию или наоборот, вывести информацию. Для этого можно использовать GAME, LPT и СОМ порты ПК. Чтобы компьютер « понимал » вводимую информацию и выводил на внешние приборы нужную нам информацию необходимо написать специальные программы и загрузить их в ПК. Программы мы будем писать на Бейсике ( QB 4.5 ) или на Паскале ( TP-7.0). Эти языки программирования созданы для  операционной системы MS- DOS.  Для компьютеров РС-АТ 386 и 486  это «родная» операционная система, в то время как на Pentium 1 ( 2,3,4) пользователи ПК работают в операционной системе Windows ( 95, 98 или ХР ). Поэтому, если у вас такие ПК, то для проведения наших экспериментов вы должны загрузить в ваш ПК операционную систему MS-DOS.

      Для того чтобы ваш ПК в MS-DOS понимал кириллицу необходимо загрузить программу русификатор, например,  keyrus.com. Если будут проблемы, то пишите по адресу  levp@rambler.ru.   Имейте ввиду, что VC и NC не понимают кириллицу, поэтому имена всех ваших рабочих папок и файлов на диске С должны быть на латинице.

  Некоторые ПК последних моделей даже при установке Win 98 не переходит в режим MS DOS. Здесь возможны два варианта. Первый заключается в том, что многие компьютеры хорошо работают с QB и ТР-7 в файловом менеджере FAR, а второй в том, что загрузить ПК необходимо с загрузочной дискеты, которая создается при инсталляции Win 98.

 Для того чтобы разобраться в дальнейшем, потребуется немного знаний из области информатики. 

Наименьшей единицей информации в вычислительной технике  является 1 бит. Он имеет два значения  - 0 и 1. В вычислительных устройствах, к которым относится и компьютер, бит представляется наличием или отсутствием напряжения. Значение бита 0 называют логическим нулем, а значение 1 – логической единицей. Напряжение соответствующее логическому нулю и логической единице для различных типов микросхем может быть различным.

   В компьютерах IBM PC напряжение логического нуля и логической единицы соответствует, так называемому, ТТЛ уровню: выходной уровень логического нуля не более 0,4 В, а логической единицы – от 2,4 до 5В. Почему так ? Дело в том, что в проводах, соединяющих ПК с различными устройствами, наводятся индукционные токи и на их концах возникают разности потенциалов,  достигающие значений до 0,2 В. Поэтому для повышения надежности работы цифровых устройств и решили, что максимальное значение логической единицы будет соответствовать 0, 4 В. С этой же целью значение напряжения логической единицы было взято в интервале от 2,4 до 5 В.

  Справка. ТТЛ – это транзисторно-транзисторная логика. На основе этой логики создано большое количество интегральных микросхем на биполярных транзисторах, у которых  выходной уровень логического нуля 0… 0,4 В ( типовое значение 0,1..0,2 В), а логической единицы – не менее 2,4 В (типовое значение 3,2…5 В ).

Поскольку биты записываются нулями и единицами, их группы позволяют кодировать двоичные числа в двоичной системе исчисления.

Совет. Познакомьтесь в любом школьном учебнике по информатике с двоичной системой исчисления и переводом чисел из двоичной системы исчисления в десятиричную и наоборот.

 Чтобы научить компьютер оперировать числами , двоичная система то, что нужно !  Но если использовать только 1 бит, то можно будет работать только с нулем и единицей. Поэтому кроме бита мы будем использовать и более крупную единицу 1 байт, который равен 8 битам.

  Ввод в LPT порт осуществляется 1 байтом по адресу &H379. Номера битов, их значения, номера контактов в разъеме LPT порта и их назначения представлены в таблице. Первые три бита являются служебными,  поэтому контакты этих битов даже не подключены к разъему LPT порта. Поэтому ввод информации может быть осуществлен только с помощью 5 битов. 

LPT порт  &Н379

      Бит

Значение бита

в двоичном коде

Значение бита

в десятичном коде

№ контакта

Назначение

20

00000001

1

-

Не используется

21

00000010

2

-

Не используется

22

00000100

4

-

Не используется

23

00001000

8

15

Ввод

24

00010000

16

13

Ввод

25

00100000

32

12

Ввод

26

01000000

64

10

Ввод

27

10000000

128

11

Ввод

 

 

 

18 –25

Общая шина

 Для  ввода информации в LPT порт нужно использовать 5 стандартных входов LPT порта - контакты 10, 11, 12, 13 и 15, как это указано в таблице. Первоначальное состояние входов – логическая единица, т.е. на них напряжение 5 В.  Если замкнуть один из входов порта ( 10, 11, 12, 13 и 15 ) на общий провод (выводы 18-25), то мы переведем его в состояние логического нуля, т.е. напряжение на нем будет равно 0. Но замыкать вход прямо на землю нельзя, так как через него потечет большой ток и LPT порт можно вывести из строя. Необходимо соединять его с землей через резистор 360 – 510 Ом. 

 Итак, начнем.    Соберите на макетной плате схему, изображенную на рисунке. Для ее сборки вам понадобится разъем-розетка DB-25F,  5 резисторов 360 - 510 Ом  и 5 кнопок.  Присоедините к эту схему и к LPT порту ПК.

Загрузите и запустите программу на Бейсике :

1 CLS                   ‘Очистка экрана

OUT &H379,0     ‘ Сброс LPT порта

x = INP(&H379)  ‘Чтение данных из порта

LOCATE 10, 20: PRINT 120 – x           ‘Вывод значение бита в десятичном коде

IF INKEY$ = "" GOTO 1 ELSE END

 ‘ Переход на метку 1 или выход из программы

   Во время выполнения программы на экран будут выводиться значения битов в десятичном коде, соответствующие контактам, замыкаемым соответствующими кнопками в соответствии с таблицей.

Для любознательных. В строке LOCATE 10, 20: PRINT (120 – x)  на экран оператором PRINT выводится число (120-х) вот почему. При включении компьютера на служебных входах соответствующих первым трем битам ( 0,1,2) появляются логические 0. Также логический 0 появляется на 7 бите. Но если вы измерите напряжение на 11 контакте, соответствующему 7 биту, то оно будет соответствовать  логической 1. Дело в том, что внутри ПК между контактом микросхемы,  реализующей LPT порт и контактом 11 разъема DB-25M поставлен инвертор. Таким образом,  логические 1 появляются только на контактах 10, 12, 13 и 15 разъема  LPT порта, что соответствует сумме битов  этих входов равной 120. Если нажимаем кнопку SB1, то сумма всех битов уменьшается на 8 ( на значение бита, соответствующего кнопке SB1). Поэтому чтобы увидеть на экране значение 4 бита в данной демонстрационной программе  и выводится на экран 120-х ( 120 - 112 = 8).  Аналогично дело обстоит и с другими битами .

 Для тех кто работает на Паскале представлена аналогичная программа.

program inputLPT;                   { Имя программы }

uses crt;                       { Подключение модуля Crt }

var x, y : byte;           { Описание переменных x,y }

label m1;                              { Описание метки m1 }

begin                                     { Начало программы }

m1: { Метка. На неё будет переход после goto m1}

clrscr;                                           { Очистка экрана }

port[$379]:=0;                         { Сброс LPT порта }

x:=port[$379];               { Чтение данных из порта }

y:=120 - x; writeln (y);                { Вывод значение бита в десятичном коде }

while not keypressed do    { для выхода из программы нажмите любую клавишу }

goto m1;                            { Переход на метку  m1 }

end.                                          { Конец программы }

   Сначала проверим 4-й бит. Нажмите 5-ю кнопку. На экране должно появиться число 8. Аналогично проверяете 5 - 8 биты, нажимая кнопки 4, 3, 2 и 1. На экране должны появляться числа – 16, 32, 64, 128.

   Подведем итоги. Итак, на открытых цифровых входах LPT порта всегда присутствуют логические единицы. При замыкании их на общий провод  с помощью кнопок, на них появляются логические нули и это фиксировали наши программы, выдавая на экран значения этих битов в десятичной системе исчисления.

  На этом работу по вводу информации в LPT порт мы закончим. Как это будет применяться в физическом эксперименте, вы узнаете на следующих занятиях .

 Имейте ввиду, что эти программа будут работать и с Game и СОМ портами. Необходимо ввести только адрес нужного порта. Для Game порта адрес 201, а для СОМ порта - 3FE.


 

Hosted by uCoz