Параллельный порт - тип интерфейса, разработанный для подключения различных
периферийных устройств к компьютеру.
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 этот код передается устройству.