| Статьи | - Работа с LPT |
Работа с LPT
Предупреждение
Внимание! При работе с LPT портом нужна хоть какая-то осторожность! Поэтому перед повторением того, что написано в статье вы соглашаетесь с тем, что за любые повреждения оборудования, которые вы можете нанести по небрежности - отвечаете сами. Конечно современные контроллеры, установленные на материнских платах содержат защиту от дурака, но тем не менее лишний раз испытывать ее не стоит.
Разбираем шаг за шагом
Чтобы что-то усвоить и в чем-то разобраться, нужно как известно сделать это самому и увидеть своими глазами. Поэтому разберем возможности компонента LPT на простом примере, чтобы затем вы не испытывали никаких трудностей при работе с ним:
Шаг0 | Первое знакомство с компонентом (а может и с LPT портом вообще) лучше всего начинать с простого примера без лишних замуток и никому ненужных тонкостей. Поэтому мы разберем пример, схема которого изображена на рисунке слева. Смысл тут таков: при замыкании ключа K будет происходить переключение диодов D1 - D4, отображающих число от 0 до 15 в шестнадцатеричном виде. Т.е. при 0 - все диоды не горят, при 1 - горит D1, при 2 - горит D2, при 3 - горят D1 и D2, при 4 - горит D3 и т.д. | |
Шаг1 | Для начала убедитесь, что у вас есть стандартный LPT разъем на 25 пинов к нему мы и будем припаивать провода. | |
Шаг2 | Так же нам понадобятся: 4 резистора (сопротивления) номиналом 200 - 600Ом. Если таковых нет, то можно обойтись и без них, хотя это крайне нежелательно, потому что не очень хорошо брать из порта такую мощность (хотя я при экспериментах подключал именно так и все отлично работало), 4 светодиода с напряжением питания в 5 вольт, 1 кнопка (если нет, то можно просто замыкать два провода) | |
Шаг3 | Теперь припаяйте (или оголите, если они уже есть) следующие провода: пины 2-5: для 4-х диодов, пин 10: для кнопки, пин 18: общая для диодов и кнопки земля (на схеме они соединены одним проводом). Нумерация выводов LPT кабеля приведена слева, хотя почти на всех современных разъемах она есть на нем самом. | |
Шаг4 | Теперь припаяйте( или прикрутите )положительные ножки диодов D1 - D4 к проводам, идущим с пинов 2 - 5 соответственно. Отрецательные ножки припаяйте к проводу с пина 18. И наконец кнопку K присоедините к проводам, идущим с пинов 10 и 18. Все. Схема готова к использованию в программе. | |
Шаг5 | Прежде всего убедитесь, что драйвера для работы с LPT портом установленны. Для этого зайдите на вкладку Integration и нажмите кнопку "LPT drivers". Откройте пример из стандартного пакета HiAsm LPT . Запустите программу и если вы все собрали верно, то нажатия на кнопки с именами "Диод" будут зажигать соответствующие светодиоды на выходе LPT порта. После этого понажимайте кнопку и убедитесь, что диоды переключаются по принципу двоичного счетчика( описано выше ). Для дальнейшего программирования LPT порта, используйте таблицу внизу. |
Назначение выводов порта LPT и их эквивалент в HiAsm
Пин | Сигнал | Направление | Регистр | HiAsm |
1 | Строб | ввод/вывод | Управляющий | нет |
2 | Бит 0 | вывод | Данные | doD0 |
3 | Бит 1 | вывод | Данные | doD1 |
4 | Бит 2 | вывод | Данные | doD2 |
5 | Бит 3 | вывод | Данные | doD3 |
6 | Бит 4 | вывод | Данные | doD4 |
7 | Бит 5 | вывод | Данные | doD5 |
8 | Бит 6 | вывод | Данные | doD6 |
9 | Бит 7 | вывод | Данные | doD7 |
10 | Опрос | ввод | Статус | onACK |
11 | Занят | ввод | Статус | onBUSY |
12 | Конец бумаги | ввод | Статус | onPE |
13 | Выбор | ввод | Статус | onSLCT |
14 | Автоперевод строки | ввод/вывод | Управляющий | нет |
15 | Ошибка | ввод | Статус | onERR |
16 | Инициализация | ввод/вывод | Управляющий | нет |
17 | Выбор принтера | ввод/вывод | Управляющий | нет |
18-25 | Земля | ---- |
Примеры
Add(MainForm,9531,392,274)
{
Left=312
Top=284
Width=283
Height=141
Caption="Тестирование LPT порта"
}
Add(Counter,29880,270,376)
{
Max=1
link(onNext,64187:doD3,[(366,382)(366,257)])
}
Add(Button,24416,220,376)
{
Left=10
Top=85
Width=75
Font=[Arial,8,0,0,1]
Caption="Диод 4"
link(onClick,29880:doNext,[])
}
Add(Button,67137,220,296)
{
Left=10
Top=35
Width=75
Font=[Arial,8,0,0,1]
Caption="Диод 2"
Data=Integer(1)
link(onClick,10142:doNext,[])
}
Add(Button,66041,220,336)
{
Left=10
Top=60
Width=75
Font=[Arial,8,0,0,1]
Caption="Диод 3"
link(onClick,31125:doNext,[])
}
Add(Button,63340,220,256)
{
Left=10
Top=10
Width=75
Font=[Arial,8,0,0,1]
Caption="Диод 1"
Data=Integer(1)
link(onClick,71320:doNext,[])
}
Add(Counter,49544,270,216)
{
Max=15
link(onNext,64187:doData,[])
}
Add(Counter,31125,270,336)
{
Max=1
link(onNext,64187:doD1,[(359,342)(359,250)])
}
Add(Timer,6474,313,167)
{
Interval=50
link(onTimer,64187:doCheck,[(370,173)(370,229)])
}
Add(Counter,10142,270,296)
{
Max=1
link(onNext,64187:doD2,[(353,302)(353,243)])
}
Add(Counter,71320,270,256)
{
Max=1
link(onNext,64187:doD0,[(348,262)(348,236)])
}
Add(LPT,64187,395,216)
{
Port=1
Point(doD0)
Point(doD2)
Point(doD1)
Point(doD3)
}
BB-code статьи для вставки
Всего комментариев: 0
(комментарии к статье еще не добавлены)