Параллельный порт - тип интерфейса, разработанный для подключения различных
периферийных устройств к компьютеру.
LPT расшифровывается как line print terminal, что в переводе на русский
означает построчный терминал принтера. Параллельный порт - это уже довольно
старая технология, но она используется до сих пор иногда используется для
подключения принтеров к компьютеру. На новых современных материнских платах
такой разъем можно уже не встретить. Тем не менее, не лишнийм будет
знать как это работает и возможно использовать, например для подключения
к ардуино старенького матричного принтера.
LPT появился в начале 1970-ых годов. Разработкой кабеля занималась фирма
Centronics, потому еще можно встретить название Centronics порт.
Затем этим портом заинтересовалась компания IBM и интерфейс начал активно
использоваться в персональных компьютерах.
№ контакта (25-контактный) |
Обозначение | Направление | Бит регистра | Инвертирование |
---|---|---|---|---|
1 | Strobe | In/Out | Control-0 | Да |
2 | Data0 | Out | Data-0 | Нет |
3 | Data1 | Out | Data-1 | Нет |
4 | Data2 | Out | Data-2 | Нет |
5 | Data3 | Out | Data-3 | Нет |
6 | Data4 | Out | Data-4 | Нет |
7 | Data5 | Out | Data-5 | Нет |
8 | Data6 | Out | Data-6 | Нет |
9 | Data7 | Out | Data-7 | Нет |
10 | Ack | In | Status-6 | Нет |
11 | Busy | In | Status-7 | Да |
12 | Paper-Out | In | Status-5 | Нет |
13 | Select | In | Status-4 | Нет |
14 | Linefeed | In/Out | Control-1 | Да |
15 | Error | In | Status-3 | Нет |
16 | Reset | In/Out | Control-2 | Нет |
17 | Select-Printer | In/Out | Control-3 | Да |
18-25 | Ground | - | - | - |
void setup() { pinMode(2, OUTPUT); // str - сигнал строб. pinMode(3, OUTPUT); // D0 pinMode(4, OUTPUT); // D1 pinMode(5, OUTPUT); // D2 pinMode(6, OUTPUT); // D3 pinMode(7, OUTPUT); // D4 pinMode(8, OUTPUT); // D5 pinMode(9, OUTPUT); // D6 pinMode(10, OUTPUT); // D7 } void loop() { delay(500); // отправляем код символа A (65h) digitalWrite(2, HIGH); // строб в высокий уровне digitalWrite(3, HIGH); //D0 1 digitalWrite(4, LOW); //D1 2 digitalWrite(5, LOW); //D2 4 digitalWrite(6, LOW); //D3 8 digitalWrite(7, LOW); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, HIGH); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); // строб в высокий уровень // отправляем код символа R (82h) digitalWrite(2, HIGH); // строб в высокий уровень digitalWrite(3, LOW); //D0 1 digitalWrite(4, HIGH); //D1 2 digitalWrite(5, LOW); //D2 4 digitalWrite(6, LOW); //D3 8 digitalWrite(7, HIGH); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, HIGH); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); // строб в высокий уровень // отправляем код символа D (68h) digitalWrite(2, HIGH); // строб в высокий уровень digitalWrite(3, LOW); //D0 1 digitalWrite(4, LOW); //D1 2 digitalWrite(5, HIGH); //D2 4 digitalWrite(6, LOW); //D3 8 digitalWrite(7, LOW); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, HIGH); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); //строб в высокий уровень // отправляем код символа U (85h) digitalWrite(2, HIGH); // строб в высокий уровень digitalWrite(3, HIGH); //D0 1 digitalWrite(4, LOW); //D1 2 digitalWrite(5, HIGH); //D2 4 digitalWrite(6, LOW); //D3 8 digitalWrite(7, HIGH); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, HIGH); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); //строб в высокий уровень // отправляем код символа I (73h) digitalWrite(2, HIGH); // строб в высокий уровень digitalWrite(3, HIGH); //D0 1 digitalWrite(4, LOW); //D1 2 digitalWrite(5, LOW); //D2 4 digitalWrite(6, HIGH); //D3 8 digitalWrite(7, LOW); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, HIGH); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); //строб в высокий уровень // отправляем код символа N (78h) digitalWrite(2, HIGH); // строб в высокий уровень digitalWrite(3, LOW); //D0 1 digitalWrite(4, HIGH); //D1 2 digitalWrite(5, HIGH); //D2 4 digitalWrite(6, HIGH); //D3 8 digitalWrite(7, LOW); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, HIGH); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); //строб в высокий уровень // отправляем код символа O (79h) digitalWrite(2, HIGH); // строб в высокий уровень digitalWrite(3, HIGH); //D0 1 digitalWrite(4, HIGH); //D1 2 digitalWrite(5, HIGH); //D2 4 digitalWrite(6, HIGH); //D3 8 digitalWrite(7, LOW); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, HIGH); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); //строб в высокий уровень // отправляем код 10h digitalWrite(3, LOW); //D0 1 digitalWrite(4, HIGH); //D1 2 digitalWrite(5, LOW); //D2 4 digitalWrite(6, HIGH); //D3 8 digitalWrite(7, LOW); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, LOW); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); //строб в высокий уровень // отправляем 13h digitalWrite(3, HIGH); //D0 1 digitalWrite(4, LOW); //D1 2 digitalWrite(5, HIGH); //D2 4 digitalWrite(6, HIGH); //D3 8 digitalWrite(7, LOW); //D4 16 digitalWrite(8, LOW); //D5 32 digitalWrite(9, LOW); //D6 64 digitalWrite(10, LOW); //D7 128 delay(500); // ждем 0,5 с digitalWrite(2, LOW); // строб в низкий уровень delay(500); // ждем 0,5 с digitalWrite(2, HIGH); //строб в высокий уровень }Принцип работы программы очень простой, сначала выставляем на линии данных код символа (см. ASKI), затем отрицательным импульсом по линии /STROBE этот код передается устройству.