3Автоматическое устройство для подачи звонком с использованием возможностей языка VB

Автомат для подачи школьных звонков выполнено с применением языка VB, где можно также напрямую работать с LPT портом.
В нашей школе с учетом того, что во многих средних и высших учебных заведениях выпускникам школы приходится изучать язык VB, учащиеся школы знакомятся с основами этого языка.
Основные цели работы:
Изучение языка программирования VB;
Изучение устройства компьютера;
Практическое применение своих знаний;
Автомат для подачи школьных звонков можно разделить на две составляющие: на программную часть и на аппаратную.
Программная часть второго устройства выполнена с использованием языка программирования VB.
Вначале создаем визуальную часть программы. Для этого на форме разместим следующие объекты:
Как видно из рисунка, на форме размещены 17 текстовых полей (Text1-text17), 12 надписей (Автоматическая подача школьных звонков, Уроки, начало, конец, 1,2,3,4,5,6,7, Автомат), и 2 командные кнопки (Принудительное включение звонка и Вкл.)

Здесь мы видим использование этих объектов. На текстовое поле 1 выводится текущее системное время с точностью до секунды.
Текстовое поле меняет свои свойства при звонке: фон становится красным и появляется надпись «звонок».
Текстовое поле 3 служит для вывода текста «Расписание подачи звонков»
Текстовые поля 4-17 служат для расписания занятий.
12 соответствующих надписей - Автоматическая подача школьных звонков, Уроки, начало, конец, 1,2,3,4,5,6,7, Автомат
1 командная кнопка для принудительного включения звонка.
2 командная кнопка меняет свое свойство при нажатии, меняется надпись с «Вкл» на «Выкл».
Далее ознакомимся с текстом программы:

Вначале происходит Объявление библиотеки для работы с LPT портом,"inpout32.dll"-программа-библиотека для работы с LPT портом
Option Explicit
Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
Далее идут две подпрограммы, одна из них для работы кнопки включения и выключения звонка, при этом часы работают:
Данная подпрограмма меняет значение Command1.Caption c "Выкл" на "Вкл", т.е.
Если Command1.Caption имеет значение "Вкл" то Command1.Caption принимает значение "Выкл"
иначе
Command1.Caption принимает значение "Вкл" (действия при нажатии кнопки)
Код подпрограммы:
Private Sub Command1_Click() - при нажатии кнопки
If Command1.Caption = "Вкл" Then
Command1.Caption = "Выкл”
Else
Command1.Caption = "Вкл"
End If
End Sub
Вторая подпрограмма служит для принудительного включения звонка:
При нажатии кнопки по адресу &H378 записывается 8 (00001000)
Фон текстового поля Text2 меняется на красный
На текстовом поле Text2 появляется надпись "Звонок"
Код подпрограммы:
Private Sub Command2_Click() - при нажатии кнопки
Out &H378, 8 - По адресу &H378 записывается 8 (00001000)
Text2.BackColor = &HFF& - Фон текстового поля Text2 меняется на красный
Text2.Text = "Звонок" - На текстовом поле Text2 появляется надпись "Звонок"
End Sub

Далее идет основная программа:
На текстовое поле Text1 выводится значение системного времени (Time)
Private Sub Timer2_Timer()
По адресу порта LPT записывается 0 (00000000), стирается записанная 8, т.е. обнуляется значение регистра порта
Сравниваются значение текущего времени и значения времен звонков, а также значение кнопки включения автомата
При выполнения условия по адресу порта записывается 8 (00001000),
фон текстового поля Text2 меняется на красный, 'на текстовом поле Text2 появляется надпись "Звонок"
иначе
с текстового поля Text2 убирается надпись "Звонок", 'Фон текстового поля Text2 меняется на белый

Код программы:
Text1.Text = Time -на текстовое поле Text1 выводится значение системного времени (Time)
Out &H378, 0 -по адресу порта LPT записывается 0 (00000000), стирается записанная 8
If ((Text4.Text = Text1.Text) Or (Text5.Text = Text1.Text) Or (Text6.Text = Text1.Text) Or (Text7.T
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Вкл") Then
Out &H378, 8
Text2.BackColor = &HFF& 'Фон текстового поля Text2 меняется на красный
Text2.Text = "Звонок" 'на текстовом поле Text2 появляется надпись "Звонок"
Else
Text2.Text = "" 'с текстового поля Text2 убирается надпись "Звонок"
Text2.BackColor = &HFFFFFF 'Фон текстового поля Text2 меняется на белый
End If
End Sub

Исходя из вышенаписанного, включение звонка происходит за счет записи в регистр параллельного (или LPT порта, что в компьютере один и тот же порт ввода и вывода) числа 8 в двоичной системе 00001000. Можно записать и другое число до 255, но в данном случае идет анализ этого разряда регистра порта. Звонок выключается обнулением регистра порта путем записи двоичного нуля в этот регистр.



Аппаратная часть устройства.
Так как данный LPT порт используется редко, необходимо убедится в наличии в операционной системе программы для работы с LPT портом, т.е. наличии файла inpout32.dll в папке system и при необходимости вставить этот файл (предварительно скачав из интернета).
С учетом того, что в перспективе мы хотим что-либо считывать с порта, то нам необходимо переключить режим работы порта компьютера в режим EPP (Enhanced Parallel Port - режим двунаправленной передачи данных). Это делается в BIOS. Во время загрузки компьютера когда появится надпись Press DEL to enter setup, нажать DEL, чтобы попасть в меню BIOS. Затем выбираем раздел INTEGRATED PERIPHERALS и там выбираем строку PARALLEL PORT MODE: изменяем режим работы порта на EPP или SPP/EPP. Сохраняем сделанные изменения. Если же на Вашем компьютере нет режима EPP, то Вы сможете только передавать данные, в данном случае достаточно и этого режима.
Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3). В нашем компьютере всего один  LPT порт - LPT1. Адресное пространство порта занимает диапазон &H378-&H37F (в шестнадцатеричном виде). Адрес &H378 называется базовым и служит для передачи или чтения данных (в нашей программа по этому адресу записывается число 8 (строка- Out &H378, 8 нашей программы) через контакты 2-9 разъема LPT-порта. Остальные адреса служат для передачи и приема управляющих сигналов к устройству и от устройства подключенного к этому порту (принтер, сканер и т.д.), в данном случае они не используются и нас не интересуют.
Использовались две программы: splan_7_portable_rus и SLayout-5rus. Первая позволяет рисовать принципиальные схемы, а вторая составлять печатные монтажи. Обе программы бесплатные и доступны всем.

Принципиальная схема аппаратной части, составленная с помощью программы splan_7_portable_rus.
Разберем работу схемы:
Сигнал с LPT порта поступает через ограничительные резисторы R1-R8 330 Ом на светодиоды VD1-VD, которые позволяют визуально проследить прохождение сигнала через порт. (светодиод светится).




Далее сигнал поступает на одновибратор выполненный на микрсхеме К155ЛА3, состоящий из четырех элементов 2-И-НЕ. Цепочка С1,R9 определяет длительность импульса одновибратора, при значениях с=1000 мкф и R= 1kOm длительность импульса составляет около 8 секунд.( При желании можно изменить подбором значений емкости конденсатора С и сопротивления R).

Далее сигнал соответствующей длительности поступает через ограничительный резистор
на базу транзистора КТ817А и открывает его, срабатывает реле Rel 1 и замыкает контакты. Контакты реле подсоединении параллельно кнопке включения звонка и таким образом звонок будет включен в течение времени, определяемого длительностью сигнала одновибратора.



В целях безопасности лучше все же контакты реле включить через промежуточный адаптер, состоящий из ограничительного резистора и симистра и таким образом уменьшив ток через контакты реле. (КУ208Г можно заменить на любой другой современный с подходящими параметрами)


Для правильной работы порта необходимо уточнить адреса LPT порта в БИОС. Для этого при включении компьютера заходим в БИОС, (в зависимости от компьютера клавиша «DELETE» или другая служебная клавиша), находим раздел для COM и LPT портов (Serial и Parallel портов), уточняем адрес Parallel порта, в нашем случае &378Н и выставляем режим работы порта EPP. (для чтения и записи).







Печатная плата выполненная с помощью программы SLayout-5rus

Готовый к травлению фольгированный текстолит нужного размера





Плата после травления в растворе хлорного железа

Монтажная плата с установленными деталями, за неимением реле на 5 вольт, применяется герконовое реле ( справа с доидом в качестве защиты от напряжения самоиндукции)




3.Заключение.
Несмотря на то, что LPT порт устарел и его возможности сейчас применяются редко, простота его программирования и использования в тех или иных устройствах дает возможность практического использования его возможностей при изучении раздела программирования и устройства компьютеров на уроках информатики в средней школе. Данное устройство может найти практическое применение для подачи звонков в школах, хотя его возможности не ограничиваются только этим. Сам принцип управления этим портом (запись и чтение регистра порта, а также состояния управляющих щин порта) дает возможность конструирования устройств с обратной связью, таких как автоматическое поддерживание тех или иных параметров конкретной системы. (Пример: автоматическое поддерживание температуры и влажности в замкнутой системе, автоматическое включение освещения в зависимости от
освещенности и т.д. при наличии соответствующих датчиков)
В ходе работы над данным устройством учащиеся ознакомились с практическим применением программ для рисования принципиальных схем, с программой для трассировки печатных плат, способами изготовления печатного монтажа, травления плат и с паяльными работами.
Рисунок 1Рисунок 2Рисунок 9Рисунок 32Рисунок 34Вђ Заголовок 1Вђ Заголовок 2Вђ Заголовок 3Вђ Заголовок 4Вђ Заголовок 5Вђ Заголовок 6Вђ Заголовок 7Вђ Заголовок 8Вђ Заголовок 915