Интернет страница учителя физики и астрономии Пигалицына Льва Васильевича
Школьная компьютерная физическая лаборатория
Занятие 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.