НАЗАД

3.3. УПРАВЛЕНИЕ ВНЕШНИМ УСТРОЙСТВОМ С ПОМОЩЬЮ ПЭВМ

1. Управление линейкой светодиодов. С помощью ПЭВМ можно управлять внешними устройствами. Для этого удобно задействовать параллельный порт LPT, который позволяет выдавать восьмиразрядное двоичное слово. Чтобы вывести требуемую совокупность лог. 0 и лог. 1 необходимо записать в ячейку памяти с адресом 37816=88810 соответствующее число. При этом используется команда OUT {адрес}, {число}. Например, команда OUT &H378, 15 записывает в ячейку ОЗУ 37816 число 000011112. На выводах 2, 3, 4, 5 LPT--порта появится лог. 1 , а на остальных --- лог. 0 .

Рис. 1. Подключение светодиодов к LPT-порту.

Рис. 1. Подключение светодиодов к LPT-порту.

Для того чтобы визуализировать состояние параллельного порта ПЭВМ, к нему следует подключить матрицу из 8 светодиодов (рис. 29.1). В случае записи в ячейку ОЗУ 37816 числа 110= 000000012 будет гореть первый светодиод, если записать число 6410=010000002, загорит седьмой светодиод. Если записать число 1510=000011112, загорят первые четыре светодиода и т.д.

Запустите среду программирования QBasic. Введите программу Пр -- 1 и изучите ее работу. При ее запуске сначала загорается первый светодиод, затем он гаснет, --- загорается второй светодиод и т.д. Время свечения пропорционально числу оборотов цикла в подпрограмме.

WHILE INKEY$ = ""                               'Пр - 1
x = 0 : OUT &H378, x: GOSUB 10                  'QBASIC
x = 1 : OUT &H378, x: GOSUB 10
x = 2 : OUT &H378, x: GOSUB 10
x = 4 : OUT &H378, x: GOSUB 10
x = 8 : OUT &H378, x: GOSUB 10
x = 16: OUT &H378, x: GOSUB 10
x = 32: OUT &H378, x: GOSUB 10
x = 64: OUT &H378, x: GOSUB 10
x =128: OUT &H378, x: GOSUB 10
WEND
'======= подпрограмма =========
10 FOR i = 1 TO 200: PRINT x: NEXT: RETURN

Можно написать программу, вызывающую свечение а) пятого и восьмого светодиодов; б) всех светодиодов кроме третьего; в) восьмого, седьмого и шестого светодиодов; г) всех четных светодиодов; д) всех нечетных светодиодов.

На основе Пр -- 1 возможно написать программу, работающую так: а) загорается первый светодиод, затем гаснет и одновременно с этим загорается второй светодиод, и т.д. (слева на право); б) загорается восьмой светодиод, затем гаснет и одновременно загорается седьмой светодиод, и т.д. (справа на лево); в) загорается первый и второй светодиоды; гаснет первый, загорается третий; гаснет второй, загорается четвертый; гаснет третий, загорается пятый и т.д.


ВВЕРХ