Текст
                    Пей Ан

·--~-~ f.11 ГJ clp CJ.1v1?.11Ь.l-JЬJfJ

Mlllli_.'.1 1 3_,!".}':JEc113.11ЬJ-JЬJfJ ГlCJpfЬJ
,

rpcJ1yJJ'JJЫ уг1рсJэ.1 ~ эг1.У1.;1

',( с;гJ 3 p.YJ1\;J Э.l-JJCJ.1 1 ЬJ-JЬJ1yJyJ

ГJ.1 1 CJJCJ1'.JJ.YJ

YJ1\;JЭpЭJ-Jyj3 CJJ-JCJ.11CJfCJEЬJ_/~ EЭ.1 1.YJ!..jyjj-J
с; ГJCJ1\;JCJ_!__!_JЫCJ E.l-13.!.ll.l-J.YJ_/~ yc;JpCJf.Jc;J3


Pei An РС INTERFACING Practical Guide to Centronic RS232 and Game Ports @Newnes
Пей Ан СОПРЯЖЕНИЕ ПК С ВНЕШНИМИ УСТРОЙСТВАМИ - Москва,2001
ББК 32.973.26-02 А64 АнП. А64 Сопряжение ПК с внешними устройствами: Пер. с англ. 2001. - 320 - М.: ДМК Пресс, с.: ил. ISBN 5-94074-076-6 Данная книга посвящена возможностям персонального IВМ-совместимо­ го компьютера по сопряжению с внешними устройствами через параллель­ ный, последовательный и игровой порты, которые имеются практически в любом современном ПК. В качестве внешних устройств выступают ЦАП и АЦП, схемы управления электромоторами, трансиверы, 1\юдеl\IЫ, различ­ ные индикаторы, датчики и пр.; приводятся тексты программ управления с подробными комментариями. Книга предназначена для широкого круга читателей, интересующихся ин­ форматикой, электроникой и вычислительной техникой. Она будет полезна студентам технических вузов и колледжей в качестве учебного пособия при изучении аппаратной части ПК, а также радиолюбителям, которые стремят­ ся наиболее полно использовать возможности домашнего компьютера. На­ чинающие программисты найдут здесь большое количество исходных текстов прбграмм, а инженеры-электронщики почерпнут новые идеи для красивой ре­ ализации своих профессиональных проектов. ББК 32.973.26-02 Все права защищены. Любая часть этой кш1г11 не может быть воспро!!зведена в какой бы то ш1 было форме и какими бы то ни было средствами без письменного разрешения вла;1ельцев автор­ ских прав. Материал, изложеаный в данной книге, ыногократно проверен. Но, поскольку вероятность технических ощибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответствен­ ности за возможные ощибки, связанные с использованием книги. РС lпtcгfaciпg, Pгactical Guide to ISBN 0-24051-448-3 (англ.) ISBN 5-94074-076-6 (рус.) Centronic R.S232 ancl Gаше Poгts \1у Pei Ап. © Reed Edнcational & Pгofessional PuЬlishing Ltd, 1998 © Перевод на русскнi1 язык, офоршrе1111е. ДМК Пресс, 2001
СОДЕРЖАНИЕ Предисловие 1. ................................................................................................................ 9 Параллельный, последовательный и игровой порты ........................ 13 1.1. Параллельный порт ..................................................................................... 13 1.1.1. Разъемы .................................................................................................. 14 1.1.2. Внутреннее устройство .......................................................................... 15 1.1.3. Программное управление ..................................................................... 19 1.2. Последовательный интерфейс RS232 ..................................................... 26 1.2.1. Последовательная передача данных .................................................... 26 1.2.2. Разъем и кабель порта RS232 ................................................................ 28 1.2.3. Внутреннее аппаратное устройство ...................................................... 29 1.2.4. Программное управление .................................................................... 35 1.3. Игровой порт ............................................................................................... 41 1.3.1. Разъем .................................................................................................... 42 1.3.2. Внутреннее аппаратное устройство ...................................................... 42 1.3.3. Программное управление ................................................................... 44 2. Необходимое оборудование ........................................................................ 49 2.1. Источники питания ..................................................................................... 49 2.1.1. Источник питания постоянного тока ..................................................... 49 2.1.2. Источники питания +5, -5, +12, -12 В .................................................. 50 2.1.3. Опорные напряжения ........................................................................... 54 2.1.4. Преобразователи напряжения ............................................................. 55 2.1.5. Схемы источников питания с гальванической развязкой ................... 56 2.2. Логические пробники ............................................................................... 57 2.3. Цифровые и аналоговые генераторы сигналов ................................... 57 2.3.1. Цифровые генераторы сигналов .......................................................... 58 2.3.2. Аналоговые генераторы сигналов ....................................................... 60 2.4. Экспериментальные платы параллельного, последовательного и игрового портов .................................................. 62 2.4.1. Экспериментальная плата параллельного порта ................................ 62 2.4.2. Экспериментальная плата последовательного порта ......................... 65 2.4.3. Экспериментальная плата игрового порта .......................................... 67 2.4.4. Устройство экспериментальных плат .................................................. 69 2.5. Средства разработки плат ......................................................................... 71 3. Программы управления экспериментальными платами ................ 75 3.1. Программное обеспечение для экспериментальной платы параллельного порта .......................... 76 3.1.1. Описание программы CENTEXP.PAS ..................................................... 76 3.1.2. Описание программы CENTEXP ............................................................ 79
[!] СОПРЯЖЕНИЕ ПК С ВНЕШНИМИ УСТРОЙСТВАМИ 3.2. Программное обеспечение для экспериментальной платы последовательного порта """""".". 84 3.2.1. Описание программы RS232EXP.PAS """"""""""""""""""""""""". 84 3.2.2. Описание программы RS232EXP """"".""""""""""""""""""."""". 88 3.3. Программное обеспечение для экспериментальной платы игрового порта"""""""""""""""""" 93 3.3.1. Описание программы GAMEEXP.PAS """""""""""""""""".""""""" 94 3.3.2. Описание программы GAMEEXP """".""""""""""""""""""""""". 98 3.4. Программные библиотеки ресурсов """""""""""""""""".""""""" 100 4. Расширение возможностей параллельного, последовательного и игрового портов"""""".".""."""""""""". 113 4.1. Расширение возможностей параллельного порта""""""""""""""" 113 4.1.1. Увеличение количества линий ввода/вывода при помощи микросхем с малой степенью интеграции 4.1.2. """""""""" 113 Увеличение количества линий ввода/вывода при помощи микросхемы 8255 """""""""""""""."".""""""""""". 116 4.2. Расширение возможностей последовательного порта """""""""". 123 4.2.1. Преобразователи уровней RS232/ТТЛ """"""""""""""""""""""""123 4.2.2. Увеличение количества линий ввода/вывода с помощью UART "". 124 4.2.3. Микросхема ITC232-A для сопряжения с последовательным портом """"" """"""""""""""""""""""""". 130 4.3. Увеличение количества линий игрового порта """""""""."."""""" 132 4.4. Последовательно-параллельные преобразователи """.""""""""". 132 4.5. Параллельно-последовательные преобразователи"""""""""""". 134 4.6. Шифраторы и дешифраторы данных """"""""""""""""""""""""".135 4.7. Шина 1 2 С " ... "" ... "" ...... " ... ".".""." .. """""" ... """".""""."".""".""""".". 143 4.7.1. Принцип работы .... "" .. "" ... """ .... "" ... "." .... "." .... "" .. " ... " .. "."."" .. ". 144 4.7.2. Временные диаграммы работы шины 1 2 С """"""""""""""""""""" 145 4.7.3. Реализация на базе параллельного и последовательного портов ". 146 4.7.4. Микросхемы, поддерживающие стандарт 1 2 С """"""""""""""""". 147 4.8. Последовательный периферийный интерфейс """""""""""""""".147 4.9. Шина MicroLAN " ... "" .... " .... " ... " .... " ... "" ... "" ....... "" ... "."."".""""."."" .. 147 4.10. Сопряжение между схемами ТТЛ и КМОП .""""""""""""""""""" 148 4.11. Защита цифровых линий ввода/вывода "".""""""""""""""""""" 149 5. Управление внешними устройствами"""""""""""""""""""""""""". 152 5.1. Мощные устройства коммутации """"".""""""""""""""""""""""""152 5.1.1. Устройства коммутации на оптопарах """""""""""""""""""""""".152 5.1.2. Транзисторные устройства коммутации """""""""""""""""""."""152 5.1.3. Устройства коммутации на основе схемы Дарлингтона """""""""".153 5.1.4. Устройства коммутации на полевых транзисторах """"""""""""""153 5.1.5. Устройства коммутации на МОП транзисторах с защитой"""""""" 154
СОДЕРЖАНИЕ [IJ 5.2. Устройства управления светодиодами ................................................ 155 5.2.1. Стандартные светодиоды .......................... " ... " .................................. 155 5.2.2. Маломощные светодиоды ............ " ................................................... 156 5.2.3. Многоцветные светодиоды .. " .......................................................... " 156 5.2.4. Инфракрасные светодиоды .. " ................................................... " .... ". 157 5.3. Устройства управления реле ................................................................. 158 5.3.1. Реле с сухими контактами ................................................................... 158 5.3.2. Транзисторные устройства управления реле .................................... 159 5.4. Мощные управляющие интегральные микросхемы ......................... 159 5.4.1. Многоканальные управляющие интегральные микросхемы ........... 159 5.4.2. Буферные устройства управления с защелками ............................... 160 5.5. Оптоэлектронные полупроводниковые реле на тиристорах ........... 163 5.6. Устройства управления двигателями постоянного тока." ........ "" .. " 164 5.7. Устройства управления шаговыми двигателями ." .. """ ... " ... """ .... " 166 5.7.1. Устройства управления четырехфазными шаговыми двигателями .. " 166 5.7.2. Устройства управления двухфазными шаговыми двигателями .. " ... 168 5.8. Управление звуковыми устройствами ........... " .... " ............ " .... " ... """ 169 5.8.1. Устройства управления пьезоэлектрическими динамиками, зуммерами и сиренами .... " ...... " ......................................................... 170 5.8.2. Устройства управления громкоговорителями ... " .. "." ......... " .. " .... " .. 170 5.9. Устройства управления дисплеями"" .... "" .. " .... "." .......... " .............. " .. 172 5.9.1. Многоразрядные светодиодные дисплеи со встроенными схемами управления .. """" ... " .......... " ... " ......... " ..... 172 5.9.2. Растровые светодиодные дисплеи со встроенными схемами управления ""." .. """ .. " ... " ................. """ 176 5.9.3. Многоразрядные светодиодные растровые дисплеи со встроенными схемами управления "" ... " .. " .. " .. """ ... " ....... " ..... ". 178 5.9.4. Жидкокристаллические растровые дисплейные модули .......... " ... ". 181 5.10. Устройства управления мускульными кабелями" ......... " .... " .......... 186 6. Измерение аналоговых величин """."""" .. """ .. "."" .... ""." .. """""""" .. 188 6.1. Аналого-цифровые преобразователи ......... " .. " ... " .. "." ... " .. " ... " ..... " .. 188 6.1.1. АЦП с параллельным интерфейсом ввода/вывода ."" .. " ................. 188 6.1.2. АЦП с последовательным интерфейсом ввода/вывода." ............. ". 205 6.1.3. Аналоговый процессор АЦП TSC500 " ... "" .. " ... "." .. " .. " ... " ... " ... " .... " 217 6.2. Преобразователи напряжение-частота .... "" ......... " ...................... " .. " 221 6.2.1. Принципы преобразования напряжение-частота " .. " .. " .... " ... " ... " ... 221 6.2.2. Преобразователь напряжение-частота LM331 ..... " .. " ................... ". 222 6.3. Цифровые датчики интенсивности света" ... " ... "." ..................... " .... " 224 6.3.1. Линейная матрица световых детекторов TSL215 .. " .. " .. "."" .. " ... " ...... 227 6.3.2. Другие цифровые оптоэлектронные датчики ........... " .. "."" ... " ... " .... 231 6.4. Цифровые датчики температуры ........ """ ............... " .. " .. " ... " .. " ......... 232 6.4.1. Термометр 051620 .......... " .................................................................. 233 6.4.2. Цифровой температурный датчик" ...... "" .. ""." .. """ .. " .. "."" ...... "". 238 6.4.3. Жидкокристаллические температурные модули ........ " .... " .. "" .. " .... 240
Ш 6.5. 6.6. 6.7. СОПРЯЖЕНИЕ ПК С ВНЕШНИМИ УСТРОЙСТВАМИ Цифровые датчики влажности ............................................................. 243 ................................................ 245 магнитного поля ................................................... 247 Цифровые датчики расхода жидкости Цифровые датчики 6.7.1. Цифровой датчик FGM-3 индукции магнитного поля ....................... 247 6.7.2. Цифровой датчик магнитного поля ................................................... 248 6.8. Радиосистемы точного времени ........................................................... 248 6.9. Клавиатура ................................................................................................ 253 7. Сопряжение компьютера с другими цифровыми устройствами ..................................................... 254 7.1. Цифро-аналоговые преобразователи .................................................. 254 7.1.1. Простой ЦАП R-2R ............................................................................... 254 7.1.2. ЦАП с параллельным вводом ZN428 ................................................. 254 7.1.3. ЦАП DAC0854 с последовательным интерфейсом ввода/вывода ... 257 7.2. Цифровые потенциометры ..................................................................... 261 7.3. Модули памяти ......................................................................................... 264 7.3.1. Модуль EEPROM объемом 2 Кб с последовательным вводом/выводом ST93C56C ............................ 264 7.3.2. EEPROM с шиной 1 2 С. ........................................................................... 270 7.4. Системы отсчета реального времени ................................................... 275 7.5. Генераторы сигналов с цифровым управлением .............................. 281 7.5.1. Программируемый таймер/счетчик 8254 ......................................... 282 7.5.2. Генератор с числовым программным управлением HSP45102 ......... 288 7.5.3. Программируемый генератор синусоидальных колебаний ML2036 ................................................. 292 8. Сетевые приложения и удаленный доступ .......................................... 293 8.1. Телекоммуникационные схемы ............................................................. 293 8.2. Интегральные схемы модемов ............................................................. 294 8.3. Радиосвязь ................................................................................................ 295 8.3.1. FM передатчик и приемник TMX/SILRX ............................................. 296 8.3.2. АМ передатчик и приемник AM-TX1/AM-HHR3 ............................... 299 8.3.3. Эксперименты по передаче данных с помощью радиосвязи ........... 299 8.4. Модули приемопередатчиков .............................................................. 302 8.4.1. Приемопередатчик BiM-418-F ............................................................ 302 8.4.2. Требования к передаваемым последовательным данным .............. 304 8.5. Модем для работы в бытовой электросети LM1893 ......................... 305 8.6. Интерфейс RS485 .................................................................................... 306 8.7. Инфракрасные линии передачи данных ........................................... 307 Список литературы ................................................................................................ 312 Предметный указатель ........................................................................................ 313
ПРЕДИСЛОВИЕ Книга посвящена проблемам сопряжения персонального компьютера с современ­ ными электронными устройствами при помощи параллельных, последовательных и игровых портов. В ней приведено мпоrо примеров, показывающих, как ПК мо­ жет собирать информацию из окружающего мира и управлять внешними устрой­ ствами. Кроме того, предлагается программное обеспечение, написанное на язы­ ках Turbo Pascal и Visual Basic. Это сочетание аппаратной и программной части и раскрывает суть понятия «сопряжение компьютера>.>. Наиболее известны параллельный, последовательный и игровой порты, которые встроены практически в каждый ПК. Поэтому схемы, рассмотренные в данной кни­ ге, можно использовать со всеми типами компьютеров: настольными, портативны­ ми, карманными IBM РС и совместимыми с ними, Macintosh, Amiga, PSIO№ и др. Книга предназначена для широкого круга читателей, в числе 1юторых: о специалисты, использующие компьютер для взаимодействия с внешним мирш1; о программисты, которые разрабатывают аналогичное ПО; о инженеры, мечтающие соединить цифровые электронные устройства с ПК; о студенты, желающие на практике усвоить, как компьютер сопрягается с внеш- ними устройствами; о все, кто изучает новейшие способы применения компьютеров. Структурно книга разделена на восемь глав. Глава 1 знакомит читателя с устройством параллельного, последовательного и игрового портов. В ней приводится необходимая техническая информация, рас­ сказывается, как использовать программное обеспечение для управления портами. В главе 2 речь идет о некоторых практических инструментах для проведения экспериментов по сопряжению компьютера. В частности, в ней описываются 1 Программы, представленные в книге, не будут работать на компьютерах и'PSION. - Прим.11ауч.ред. Macintosh, Amiga
l.JOJ СОПРЯЖЕНИЕ ПК С ВНЕШНИМИ УСТРОЙСТВАМИ конструкции экспериментальных плат для параллельного, последовательного и иг­ рового портов. Платы обеспечивают визуальное отображение состояния контактов портов, что дает возможность проследить процессы ввода/вывода информации через порты. Экспериментальные платы использованы во всех опытах, описанных в книге. В главе 3 приведено программное обеспечение для этих плат на языках про­ граммирования ТuгЬо Pascal версии 6 для DOS (ТР6), ТuгЬо Pascal для Windows (TPW) и Visual Basic версии 3 (VВЗ). Предлагаемое ПО вы можете применять в собственных разработках. В главе излагаются основные методы расширения возможностей портов. 4 Здесь приведены некоторые электрические схемы и примеры программ. В главе 5 рассмотрены многочисленные способы управления внешними устрой­ ствами, в частности реле, светодиодами, двигателями постоянного тока, шаговыми двигателями, модулями визуального отображения информации, приборами, рабо­ тающими от бытовой сети, и др. Даны электрические схемы и примеры программ. Глава 6 посвящена вводу данных. Здесь обсуждаются вопросы, связан~ые с управлением аналого-цифровыми преобразователями, конверторами напряже­ ния в частоту, различными датчиками. Экспериментальные схемы обеспечивают возможность считывания компьютером информации о температуре, скорости по­ тока жидкости, интенсивности света, магнитных полях и т.д. В главе 7 рассказывается, как соединить компьютер с другими устройствами, такими как цифро-аналоговые преобразователи, часы, модули памяти и генерато­ ры сигналов. Глава 8 посвящена вопросам удаленного доступа и сетевым приложениям. Здесь речь идет о модемах, радиоприемниках, радиопередатчиr<ах и радиоретрансляторах. Книга содержит большое количество практических схем и управляющих про­ грамм по сопряжению компьютера с внешними устройствами, изготовленными в основном компанией RS Components (http://www.rs-components.com/rs/). Фир­ менное обозначение компонентов, указанных в тексте, поможет читателям при проведении экспериментов. Облегчить работу призваны и листинги управляющих программ с комментариями. Программное обеспечение можно найти в Internet по адресу http://www,newnespress.com (архив ioexp.zip ). При написании книги были предприняты все необходимые проверки для того, чтобы обеспечить правильную и безопасную работу любой схемы или програм­ мы. Однако автор не несет ответственности за ошибки в принципиальных схе­ мах и программах, которые могут функционировать некорректно и/или вызвать повреждение другого оборудования, к которому подсоединены эксперименталь­ ные устройства. Будьте осторожны: некоторые устройства, представленные в этой книге, могут использовать опасные для человека напряжения. Соблюдайте правила техники безопасности.
ПРЕДИСЛОВИЕ DIJ Благодарности Прежде всего хотелось бы поблагодарить мистера Дункана Энрайта (Duncan Enгight) за идею написания этой книги. Также выражаю признательность докто­ ру Шуишенгу Хе (Shuisheng Не), доктору Йанкангу Ли Uiankang Li), доктору Джинг Зао Uing Zhao), доктору Фейбьао Зоу (FeiЬiao Zhou), доктору Ксиаохон­ гу Пенг (Xiaohong Peng) и доктору Синди Куи (Cindy Qiu) за то, что они прочи­ тали рукопись. Кроме того, я очень благодарен за помощь в написании книги, а также за обеспечение примерами и соответствующей документацией следую­ щим компаниям: Со. Ltd. RS Components, UCC Inteгnational, Three Five Systems и Speak and Исп<;>льзуемые обозначения Чтобы упростить восприятие материала, в книге приняты следующие обозна­ чения: о Курсивом в тексте выделены базовые термины и определения. о Моноширинным шрифтом в книге набраны все листинги (фрагменты программного кода), выделены названия команд, адреса регистров, ячейки памяти ОЗУ. о Полужирным начертанием отмечены названия элементов интерфейса (окон, пунктов меню, опций) при описании работы программ, а также кнопок неко­ торых электронных устройств. Зарегистрированные торговые марки В табл. 1 представлены сведения о фирмах-производителях электронного обору­ дования, упоминаемых на страницах этой книги. Таблица 1. Фирмы-производители электронного оборудования Торговая марка и их торговые марки Компания Am1ga Commodore Business Machines Corporation Analog Dev1ces Analog Devices lnc. Allegro M1cr0Systems Allegro MicroSystems lnc. Cystal Semiconductors Cystal Sem1conductors lnc. Dallas Semiconductor Dallas Semiconductor Corporation GEC Plessey Sem1conductors Ltd GEC Plessey Semiconductors Нагпs Semiconductors Hewlett Packard Harris Corporation Hewlett Packard Corporation H1tachi Holtek Hitachi Ltd Holtek Microelectronics lnc. lnternational Business Machines IBM
@] СОПРЯЖЕНИЕ ПК С ВНЕШНИМИ УСТРОЙСТВАМИ Таблица 1. Фирмы-производители электронного оборудования и их торговые марки (окончание) Торговая марка Компания lsocom lsocom Ltd Mapliп Mapliп Maxim Maxim lntegгated Products lпс. plc Microchip Microchip Techпology lпс. MS-DOS, Visual Basic, Windows Microsoft Corporation National Semicoпductors Natioпal Semicoпductors lпс. NEC NEC Newport Compoпeпts Corpoгation Newport Compoпeпts lпс. Optek Optek Techпology lпс. Phil1ps Semicoпductors Philips Semicoпductors PSION PSION plc Quality Techпologies Quality Technologies Radio Solutions Radio Solutioпs Ltd Radюmetrix Radiometrix Ltd RS RS Compoпeпts Ltd SGS-Thomson SGS-Thomsoп Siemeпs Siemens AG Sharp Sharp Coгporation Speake & Со. Ltd lпstruments Microelectronics Speake & Со. Ltd Texas lпstruments lпс. Three Five Systems Тhгее Five Systems Timely Timely Techпology Ltd Toshiba Toshiba Согрогаtiоп Turbo Pascal Borland Texas lпс. lпternatioпal lпс. ucc UCC lпterпatioпal Ltd Xicor Хiсог Semicoпductor lnc.
1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ Параллельный, последовательный и игровой порты - это наиболее распростра­ ненные порты ввода/вывода. В некоторых портативных компьютерах может не быть пгрового порта, но параллельный и последовательный входят в стандартную комплектацию для всех типов ПК. Изначально каждый из этих портов разрабатывался для определенного приме­ нения. Параллельные предназначались для соединения компьютеров с принтера­ ми, последовательные вые - - для подключения принтеров, модемов и мыши, а игро­ для присоединения джойстиков. Однако они могут использоваться и для других приложений, связанных с сопряжением компьютера с внешними устрой­ ствами. Периферийные устройства, созданные для этих портов, легко подключа­ ются к IBM РС-совместимому компьютеру. ПринципиаЛьные схемы отличаются мобильностью и могут применяться для решения проблем сопряжения с любым оборудованием, которое оснащено указанными портами. Таким образом, полезно узнать, как они работают и каким образом обеспечивается наиболее эффектив­ ное их использование. 1.1. Параллельный порт Порт Centronic, или параллельный, - это промышленный стандарт для подсоеди­ нения принтеров к компьютеру. Компьютер имеет по крайней мере один такой порт, встроенный в материнскую плату или представляющий собой отдельную интерфейсную карту ввода/вывода. Увеличить количество параллельных портов просто и недорого, можно установить четыре параллельных порта с логическими именами от ваются. LPT1 до LPT4. Команды управления принтером подробно не описы­
СЕ] 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ 1.1.1. Разъемы Разъемы порта для компьютера и принтера отличаются друг от друга. Первый это 25-контактная розетка D-типа (рис. 1.1а), а второй параллельного типа (рис. а) - 36-контактная розетка - 1.16). @@@0®00000 @@@@@@@@@@@ Гнезgобь~е конmакmь~ Разьем б) в) Номера конmакmоб комnью- на npuнme- mepax рах 1 2 3 1 2 3 4 5 6 7 8 Напрабленuе ( оmносumельно 9 9 10 10 8t<xog Bt<xog Bt<xog Bt<xog Bt<xog 8t<xog Bt>xog 8t>xog 8t>xog 8xog 11 12 13 14 11 12 13 14 Bxog 8xog 8xog Bt>xog 15 16 17 18 25 32 31 36 19 30, 33 18, 34 16 17 8xog 8t>xog Bt>xog 4 5 6 7 8 НаuменоОонuе Нозначенuе ПК) STR08E 080 081 082 083 084 085 086 087 АСК Сmроб goннtjx Бum gоннь~х о Бum gоннь~х 1 Бum gоннь~х 2 Бum gоннь~х 3 Бum gаннь~х 4 Бum gaннt::tx 5 Бum gоннь~х 6 Бum gоннь~х 7 Поgmбержgенuе 2оmобносmь Рис. 1. 1. npueмa gaннt::tx, npuнmepa 8USY Поgmбержgенuе РЕ Hem SLCT Прuнmер nоgключен к лuнuu Aбmoмom-.JчecкuCJ перебоg cmpoкu после бозбраmо кареmкu U7CR ERROR INITIALIZE SLIN GNO Не зoнs:imocmu npuнmepa бума2u о"'~бка б Усmанобко Вt>бор Buma~ npuнmepe парамеmроб ПО умолчанuю npuнmepa пара, соеguненнш~ с " землео uспользуеmсs:~ LOGiC GNO CHASSIS GNO Логuческаs:~ Заземленuе зем лs:i но waccu Контакты на разъемах параллельного порта компьютера и принтера а - блочная часть 25-контактного гнездового разъема D-типа, вид со стороны задней стенки компьютеро, 6 - блочная часть 36-контактного разъема параллельного типа, вид со стороны задней стенки принтеро, в - но­ значение контактов разъемов пароллельного порта
1.1. ПАРАЛЛЕЛЬНЫЙ ПОРТ О!) Назначение контактов обоих разъемов представлено на рис. 1.1в. Для соедине­ ния компьютера с принтером используется принтерный кабель (рис. 1.2) длиной не более 5 м. -----------~13 о 14 Coeguн)1er-.tt:)U 36-конmакmн\:ju Рис. с С'оеguн)1емtш npuнmepoм u.Jm!:jpeбou 25-конmакmнt:)О разьем о 000000000000 с комnьюmером wmi:;peбou разьем 0-muna 1.2. Кабель принтера 1.1.2. Внутреннее устройство Общая схема параллельного порта внутри ПК представлена на рис. битовые данные заносятся в 1.3. Восьми­ во время записи в регистр с адресом базовый DD1 адрес+ О. Операция осуществляется командой WRIТE_DATA. Эти данные образуют группу. Они считываются компьютером из того же регис­ тра через DD2 с помощью команды READ_DATA. Во время чтения выход DD1 должен иметь высокий уровень сопротивления, что достигается подачей на контакт ход разрешен) DD1 1 (вы­ высокого уровня напряжения. Шестибитовое управляющее слово записывается в DDЗ через регистр с адресом базовый адрес команды WRIТE_CONTROL. Биты с О по 3 подаются + 2 при помощи на выход разъема и образуют груп­ пу управления. Некоторые биты инвертируются микросхемами с открытыми кол­ лекторами на выходе +5 (DD6 и DD7). Все выходные линии подключены к питанию 4,7 кОм. Состояние этих линий считывается через регистр адрес + 2 через DD4 посредством команды READ_CONlROL. Четвер­ В через резисторы с адресом базовый тый бит управляющего байта разрешает прерывание, а пятый бит открывает или закрывает выход DD1. Состояние пяти контактов разъема порта (группа состоя­ ния) компьютер считывает через DD4 с помощью команды READ_STATUS через ре­ гистр с адресом базовый адрес + 1. Входы линии подключены к питанию резисторы 4,7 +5 В через кОм, два входа пнвертируются. В первых конструкциях IBM РС контакт «выход разрешен» DD1 соединялся с «Землей» для постоянного открывания выходов. Это была однонаправленная версия параллельного порта. Начиная с IBM PS/2, указанный контакт соединили
[Ю 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ Лuнu>i gаннr:;х DBO 8i:;xog разрешен +58 +58 Лuнuu уnробленu>i >-=--+=с~~-' ~~~"-"'"----+--+-+-1-<~STROBE f~--t-"='~-~--j-=-J С~:Н~-~-+-+-• LF/CR Г--+=~~---+--'---+=J :x:r4~+--t--<~ INIТIALIZE t--+-------+---1 Ju--r-<.--+--~>-1~SLIN DDб +58 READ_ >----~ DATA Лuнuu cocmo~нu>=1 >-=--+--+-~=----__.-+-1---+--+-- BU SY t--+--+-~=~-----+-1---+--+-- РЕ SCLT 1-"---+--+--"-'=-"'------'"<f !-0---__.-+- ER RО R .~=~-----~-+--+-- АСК Прuмечонu>-l IRQ DD1 DD2, DD4 DD3 DD5 DDб DD7 >-+--3=-j Все WRITE DATA READ DATA READ STATUS WRITE CONTROL READ_CONTROL Рис. 1.3. Общая схема параллельного порта peзucmopt:) 74LS374 74LS244 74LS174 74LS125 74LS105 - 4, ?кОм б бозобtJО ogpec + О Чmенuе uз бозобого ogpeco + Чmенuе uз бозобо20 ogpeco + Заnuсь б базобt:JСJ ogpec + 2 Чmенuе uз базобого agpeco + Зоnuсь О 1 2 087
1.1. ПАРАЛЛЕЛЬНЫЙ ПОРТ с пятым битом регистра управления DDЗ (см. рис. 1.3), @] и порт стал двунаправлен­ ным. Следует отметить, что многие параллельные порты, поставляемые со встро­ енными картами ввода/вывода, двунаправленные. Для любого контакта следует избегать короткого замыкания и/или соединения с шиной питания. Скорость пе­ редачи данных через параллельный порт превышает 1 Мб/с. В этой главе детально рассматривается однонаправленный параллельный порт. Контакты порта образуют три группы: данных, управления и состояния. На рис. 1.4 представлена логическая структура параллельного порта. Группа данных Посылает данные от ПК на внешние устройства. Имеет восемь выходных ли­ ний и ассоциируется с байтом в адресном пространстве ввода/вывода процессо­ ров х86. Адрес: базовый адрес. Лuнuu со uнmepcpeOca cmopoнt:) комnьюmеро Бum Порm gоннt:)Х (б~хоg) бозоб~u ogpec о Б"m 1 Бum 2 082 Бum 3 083 Бum 4 084 Бum 5 085 Бum 6 086 Бum 7 087 Бum О ~----! 081 Инберmор~ Порm конmрОЛR (б~хоg) базоб~u ogpec + 2 Лuнuu Бum 1 Бum 2 >-------1 Бum 3 ~----! ;;r>--·-11~ Бu m 3 ------u. Бum 4 ---------+--{ LF/CR INITIALIZE Лuнuu Порm cocmo\.lнu~ (бхоg) базоб~о agpec + Бu 1 конmрОЛ\.1 STR08E Х>----1~ г------t--< SLCT m 5 ----------+----< Бum 6 Бum 7 -----------t----< cocmo1-1нuo ERROR РЕ АСК -----п 8USY GNO Комnьюmер 25-конmокmн\:jо 2незgобоО gл\.1 Рис. 1.4. Логическая разьем nороллельно20 структура параллельного порта D-muna nopmo
О!] 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ Группа управления Контролирует внешнее устройство. Имеет четыре инвертированные выходные линии и INIТIALIZE). Адрес группы управления: базо­ ( STROBE, LF/CR, SLIN вый адрес + 2. Группа состояния Группа может использоваться компьютером для получения текущего состояния внешнего устройстtза, ее адрес: базовый адрес+ 1. Имеет пять линий ( ERROR, SLCT, РЕ, АСК и BUSY). Линии ERROR и АСК инвертированы, остальные - нет. Назначения регистров параллельного порта приведены в табл. Таблица 1.1. Назначения 1.1. регистров параллельного порта Группа данных Биты 0-7 Биты от О до 7, бит О - младший Группа управления Бит о Бит (STROBE) 1 (LF/CR) Строб-импульс данных Данные фиксируются по низкому уровню сигнала Автоматический перевод строки. При низком уровне принтер, получив символ CR (Сагпаgе Returп - возврат каретки), автоматически выполняет LF (L1пе Feed - перевод строки) и функцию Бит 2 (INITIALIZE) Инициализация принтера. При низком уровне восстанавливаются параметры, принятые по умолчанию, каретка возвращается к началу строки Бит 3 (SLIN) Бит 4 (IRQ) Выбор принтера. При высоком уровне принтер нечувствителен к остальным сигналам интерфейса Разрешение аппаратных прерываний. При высоком уровне разрешается прерывание по спаду сигнала на линии (АСК) - сигнала запроса следующего байта Бит 5 (Data 1/0) Управление направлением передачи (для PS/2 и выше). Запись единицы переводит порт в режим ввода. При чтении состояние бита не определено Биты 6, 7 Не используются Группа состояния Биты 0-2 Бит 3 ( ERROR) Бит 4 (SLCТ) Бит 5 (РЕ) Бит 6 (АСК) Не используются Ошибка. Низкий уровень свидетельствует о том, что бумага закончилась, о состоянии off-l1пe или о внутренней ошибке принтера Выбор принтера. Высокий уровень показывает, что принтер включен и готов к работе Нет бумаги Высокий уровень означает, что бумага закончилась Импульс подтверждения приема байта (низким уровнем) и запрос на прием следующего. Может использоваться для формирования запроса на прерывание Бит? (BUSY) Принтер занят Прием данных возможен только при низком уровне сигнала
1. 1. ПАРАЛЛЕЛЬНЫЙ ПОРТ Базовые адреса портов LPT1: 956 (ЗВСh) LPT2: 632 (278h) или Базовый адрес для LPT1 и LPT2 DIJ следующие: 888 {378h) LPT1 зависит от конфигурации оборудования компьютера. Существует два способа получения базового адреса: проверка конфигурации оборудования вашего компьютера или нахождение адреса непосредственно из пользовательских программ с помощью средств, предлагаемых базовой системой ввода/вывода ра BIOS компьютера. При включении или перезагрузке компьюте­ (BIOS) проверяет наличие параллельных портов. Если они обнаруживаются, их базовые адреса (двухбайтовые слова) помещаются в определенные ячейки па­ мяти ОЗУ. Для ший, вторая - LPT1 это ячейки 0000h:0408h и 0000h:0409h. Первая содержит млад­ старший байт адреса. Базовый адрес LPT1 можно получить, счи­ LPT1 - LPT 4 приведены тав содержимое этих ячеек. Ячейки памяти для портов ниже: LPT1: 0000:0408h - 0000:0409h LPT2: 0000: 040Ah - 0000: 040Bh LРТЗ: 0000: 040Ch - 0000: 040Dh LPT 4: 0000: 040Eh - 0000: 040Fh Кроме того, используется еще одна ячейка памяти: 0000:4011h. Она содержит сведения об общем количестве параллельных портов, установленных на компью­ тере. Эта информация хранится в битах бит бит бит бит 7 = О, 7 = О, 7 = 1, 7 = 1, бит бит бит бит 6= О 6= 1 6= О 6= 1 6 и 7: параллельные порты не установлены установлен один параллельный порт установлено два параллельных порта установ.'1еrю три параллельных порта 1.1.З. Программное управление В данном разделе приводится информация, необходимая для программирования параллельного порта, и даются начальные сведения по логическим операциям над битами. Получение базового адреса параллельного порта Следующая программа написана на языке QBASIC. Она выводит общее количество LPT1 до LРТЗ. Строка 20 считывает байт, находящийся в ячейке памяти 0000:0411h, используя команду РЕЕК(). Биты 7 и 6 выделяются с помощью маски AND (128 + 64). Затем результат сдвигается на 6 бит по направлению к младшему разряду с помощью деления на 64. Строка 30 параллельных портов и их базовые адреса от считывает два байта из двух ячеек памяти, содержащих младший и старший байты базового адреса LPT 1. Строки 40 и 50 делают то же самое для LPT2 и LРТЗ.
l10J 1. ПАРАЛЛЕЛЬНЫЙ, f10СЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ 10 DEF SEG = О 20 PRINT "Number of Centronic ports:", (РЕЕК(&Н411) AND (128 + 64))/64 30 PRINT "Address of LPT1:", РЕЕК(&Н408)+256•РЕЕК(&Н409) 40 PRINT "Add ress of LPT2: ", РЕЕК( &Н40А)+256• РЕЕК( &Н40В) 50 PRINT "Address of LРТЗ: ", PEEK(&H40C)+256•PEEK(&H40D) 60 INPUT х Следующая процедура на языке ТР6 определяет количество установленных па­ раллельных портов и присваивает полученное значение переменной Number _of _LPT. Затем она считывает их базовые адреса из ячеек памяти, где хранятся адреса портов LPT1 - LPT4. Далее программа предлагает указать тот LРТ-порт, к которому будет присоединено внешнее устройство. И наконец, она присваивает выбранный базо­ вый адрес переменной Centronic_address. В Turbo Pascal 6 для считывания содержи­ мого ячеек памяти используются функции mem( основание: смещение) и memw( основание: смещение). Функция mem(".) считывает байт из ячейки памяти, а memw(".) - двухбайтовое слово из указанной ячейки памяти и одной ячейки выше. (•-Библиотека ресурсов № А1 (определение базовых адресов LРТ-портов)-.•) Procedure Ceпtroпic_Address ( • $000: $0408 содержит базовый адрес для $000:$040А содержит базовый адрес для LPT1, LPT2, $000:$040С содержит базовый адрес для LРТЗ, $000:$040е содержит базовый адрес для $000:$0411 содержит количество var lpt:array[l . . 4] of iпteger; LPT4. параллельных портов.•) пumber_of_lpt, LPT_пumber,code:1пteger; kbcha г: cha r; begiп clrscr; (•Для установки принтера по умолчанию.•) LPT_пumber:=1: пumber_of_lpt:=mem($0000:$0411); (•Считывает количество установленных параллельных портов.•) пumber_of_lpt:=(пumber_of_lpt апd (128+64)) shr 6; lpt[1]:=memw($0000:$0408); lpt[ 2]: =memw( $0000: $040А): (•Манипуляции с битами.•) (•Процедура считывания из памяти. •) lpt[З]:=memw($0000:$040C); lpt[4]:=memw($0000:$040e); textbackgrouпd ( Ыuе); cl rscr; textcolo r( yellow); textbackg rouпd ( red); wiпdow( 10, 22, 70, 24); cl rscr; writelп('Number of LPT installed: ·,пumber_of_lpt:2): writelп('Addresses for LPT1 to LPT4: ', lpt[1]:3, · ',lpt[2]:3, · ',lрt[З]:З, · . 'lpt[4]:3); write('Select LPT to Ье used(1,2,3,4): '); delay(1000): if number_of_lpt>1 then {Выбор порта. если установлено несколько портов.} begiп repeat kbchar: =readkey: val(kbchar, LPT_пumber,code); (•Считывание значения нажатой клавиши.•) (•Преобразование символа в число.•) uпtil (LPT_пumber>=l) апd (LPT_пumber<=4) апd (lpt[LPT_пumber]<>O); епd; clrscr; P_address:=lpt[LPT_Number]:
1.1. ПАРАЛЛЕЛЬНЫЙ ПОРТ ~ wп telп( · You r selected priпter iпte rface: LPT ·, LPT _пumber: 1); write( 'LPT address: ·, P_address:З); delay(1000); textbackgrouпd(Ьlack); wiпdow(1, 1, 80, 25); clrscr; епd; Функция centronic(x) написана на языке Turbo Pascal для Windows. Она может быть вызвана программой, написанной на другом языке программирования для Windows, например Visual Basic или Visual С, если ее. оформить в виде библиоте­ ки динамической компоновки ленных LРТ-портов, рес LPT2 DLL. Centronic(O) возвращает количество установ­ Centronic( 1) - базовый адрес LPT1, Cent ronic(2) - базовый ад­ и т.д. export; LPT1, для LPT2, Fuпctioп Ceпtroпic(x: iпteger): iпteger; ( * $000: $0408 содержит базовый адрес для $000:$040А содержит базовый адрес $000:$040С содержит базовый адрес для LРТЗ, $000:$040е содержит базовый адрес для $000:$0411 var LPT4, содержит количество параллельных портов.•) пumber_of_LPT,LPT1,LPT2,LPTЗ,LPT4:iпteger; lpt1,lpt2,lpt3,lpt4: iпteger; begiп number_of_LPT:=mem($40:$11): (•Считывает количество number_of_LPT:=( number_of_LPT and (128+64)) shr 6; lpt1:=0; lpt2:=0; lptЗ:=O; lpt4:=0; lpt1 :=memw($40:$08); (•Процедура считывания lpt2:=memw($40:$0A); lpt3:=memw($40:$0C); lpt4:=memw($40:$0e); case х of О: centronic:=Number_of_LPT; 1: Centronic:=lpt1; 2: Centronic:=lpt2; 3: Centron1c:=lptЗ; 4: Centronic:=lpt4; end; end; LРТ-портов.•) из памяти.*) Ввод/вывод данных через параллельный порт Существует несколько способов записи информации в параллельный порт. Команды принтера и процедуры прерываний В QBASIC команда вывода на печать - PRINT, BIOS в ТРб - wri teln(lst). Другой способ управления принтером заключается в использовании прерывания BIOS - INT 17h. Временные диаграммы вывода данных через па]Jаллельный порт показаны на рис. 1.5. Сначала компьютер проверяет, готов ли принтер к приему новых данных. Для этого необходимо проконтролировать состояние линии BUSY. Когда на ней низ­ кий уровень («Нс занят»), ПК записывает данные в регистр данных. Через компьютер переводит сигнал STROBE 500 нс в низкий уровень, который, в свою очередь,
~ 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ От комnьюmера к npuнmepy Лuнuu gаннь~х _J Безразлuчное сосmоянuе 1 : 1 мкс мuнuмум б гpynne ~ конmром 1 1 1 : ' ---т..; 1 1 :- ~' ------------------- 1 : О,5мкс мuнuмум :.-- От к npuнmepa комnьюmеру 1' : ,...,, Омкс :.------- 8USY б группе сосmоянш~ б гpynne сосmоянuя А9< Рис. 1.5. Временные диаграммы взаимодействия компьютера с принтером переводит принтер в состояние «занят» (BUSY=1). Принтер принимает и обра­ батывает данные, а затем переводит сигнал лек в низкий уровень для индика­ ции, что принятые данные обработаны. В то же время принтер переводит линию BUSY в низкий уровень. ПрактичесI<И в каждом языке программирования существуют инструкции по управлению принтером. Однако нужно учитывать, что этот метод недостаточно гибок для операций ввода/вывода при сопряжении ПК с внешними устройствами. Если к компьютеру подсоединена внешняя схема, то в ней должна быть спе­ циальная схема для генерации сигналов BUSY и лек. Удобнее всего, если ПК при взаимодействии будет использовать только линии ЛеК. BUSY постоянно соединяется с цифровой «землей» для индикации, что схема готова к приему данных, а РЕ показывает, что в принтере есть бумага; на линию ERROR подает­ ERROR, при ся высокий уровень. Если не соединить таким образом линии РЕ и запросе компьютера на печать будут выдаваться сообщения об ошибке. Более гибкий способ управления параллельным портом - непосредственный доступ к регистрам порта. Непосредственный доступ к регистрам порта Это метод управления портом при помощи непосредственного доступа к его регистрам. Параллельный порт рассматривается как три отдельных регистра ввода/вывода, два из I<оторых предназначены для вывода данных, а один - для ввода. Рассмотрим пример управления портом LPT1. Так 888, 890 ных, управления и состояния имеют номера как адреса регистров дан­ и 889 соответственно, для
1.1. ПАРАЛЛЕЛЬНЫЙ ПОРТ ~ записи информации в регистры данных и управления применяются следующие команды языка OUT 888, оuт 890, где Х - QBASIC: Х х записываемое значение в десятичном представлении. Некоторые линии порта управления инвертированы, что необходимо учитывать при выводе дан­ ных. Для чтения данных из регистра состояния можно пользоваться следующей командой: Y=INP(889) где У - десятичное входное значение. Биты входных данных соответствуют номе­ рам с 3 по 7 регистра состояния, некоторые из них инверсные. Следующие процедуры на язьше ТР6 записывают информацию в регистры дан­ ных и управления. Обеим процедурам требуются базовый адрес выбранного па­ раллельного порта и значение выходных данных. Выходные данные для регистра управления предусматривают проведение некоторых преобразований над битами. (•-Библиотека ресурсов № А4 (запись информации в порт данных компьютера)-.•) poгt_data:byte); (•Биты регистра данных не инвертированы.•) Ргосеduге Wгite_data_poгt(P_addгess:1пtegeг, begin poгt(P_addгess):=poгt_data; (•Ввод байта данных в регистр данных.•) end; (•-Библиотека ресурсов № д5 (запись данных в регистр управления.)-.•) poгt_data:byte); Ргосеduге Wгite_coпtгol_poгt(P_addгess:iпtegeг; (•Биты О, 1 и 3 инвертированы. Требуются преобразования над битами.•) begiп if poгt_data апd else if poгt_data апd else if theп poгt_data:=poгt_data апd 2=2 and 8=8 poгt(P_addгess+2):=poгt_data; (255-2) 2; theп poгt_data:=poгt_data апd poгt_data:=poгt_data ог (255-1) 1; theп poгt_data:=poгt_data апd poгt_~ata:=poгt_data ог poгt_data else 1=1 poгt_data:=poгt_data ог (255-8) 8; (•Ввод байта данных в регистр управления.•) епd; Следующая функция на языке ТР6 считывает биты с 3 по 6 из регистра состо­ яния. Она требует базовый адрес выбранного параллельного порта. Функция так­ же выполняет битовые преобразования и возвращает значение четырехбитовых входных данных. (•-Библиотека ресурсов № АЗ (считывание данных в компьютер).-•) Fuпct1oп Read_status_poгt(P_addгess:1пtegeг):byte; vаг byte1: byte; Ьеg1п byte1:=poгt(P_addгess+1); (•Считывание байта из регистра состояния.•) byte1:=byte1 ( •01111000 (от старшего к младшему) апd (•Сдвиг на 3 бита апd 120; Read_status_poгt:=byte1 shг епd; 3; Odddd". = OddddOOO") вправо, Read_status_poгt=OOOOhhhh.•)
ШJ 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ В следующих примерах, написанных на языке Turbo Pascal для Windows, пред- ставлен ввод и вывод данных через параллельный порт. (•-Библиотека ресурсов № А4 (запись информации в регистр данных).-•) Funct1oп Wгlte _data_po гt ( Р _add гess: l пtege г, ро гt_ data: iпtege г); ехро гt; (•Биты регистра данных не инвертированы.•) Ьеg1п poгt(P_addгess):=poгt_data (•Ввод байта в регистр данных.•) епd; (•-Библиотека ресурсов № А5 (запись данных в регистр управления).-•) Fuпct1oп Wг1te_coпtгol_poгt(P_addгess:1пtegeг; (•Биты О, 1 и 3 инвертированы poгt_data:1пtegeг) iпtegeг; ехрогt; Требуются преобразования над битами.•) Ьеg1п if poгt_data апd else if poгt_data апd else if theп poгt_data:=poгt_data апd 2=2 8=8 poгt(P_addгess+2):=poгt_data; (255-2) 2; theп poгt_data:=poгt_data апd poгt_data:=poгt_data ог (255-1) 1; theп poгt_data:=poгt_data апd poгt_data:=poгt_data ог poгt_data апd else 1=1 poгt_data:=poгt_data ог (255-8) 8, (•Ввод байта данных в регистр управления.•) епd, (•-Библиотека ресурсов № АЗ (считывание данных в компьютер).-•) Fuпct1oп Read_status_poгt(P_addгess:1пtegeг).1пtegeг; ехрогt; var byte1 byte; Ьеg1п byte1 =poгt(P_addгess+1); byte1 =byte1 апd 120; Read_status_poгt =byte1 shг (•Считывание байта из регистра состояния•) З; (•01111000 (от старшего к младшему) апd (•Сдвиг на 3 бита вправо, Odddd = OddddOOO •) Read_status_port=OOOOhhhh.•) епd; Преобразования над битами В данном разделе рассматриваются некоторые основные приемы битовых преоб­ разований. Рассказывается о том, что такое вес бита, как сделать определенный бит единицей или нулем, описываются процедуры побитовых сдвигов. Вес бита Соотношения между битами и их весами приведены ниже: бит О бит бит бит 1 2 3 бит 4 бит бит бит 5 6 7 1 (десятичное 2 4 8 16 32 64 128 значение)
1.1. ПАРАЛЛЕЛЬНЫЙ ПОРТ @] Присвоение биту единичного значения Следующий пример демонстрирует, как сделать бит 3 (вес равен 8) регистра дан­ ных единицей (независимо от его исходного значения), оставив другие биты не­ изменными: 10 X=Orig1nal_data OR 8 20 OUT 888, Х Строка выполняет операцию логического сложения 10 (OR). Таблица истин- ности этой операции приведена ниже: OR О = О OR 1 = 1 1 OR О = 1 1 OR 1 = 1 О О Пример поразрядной операции OR Данные-1: ХХХХХХХХ Данные-2: 00001000 Данные-1 OR Данные-2: (биты от 7 до О) ХХХХ1ХХХ Присвоение биту нулевого значения Следующий пример на языке вен 16) QBASIC показывает, как сделать бит 4 (вес ра ... регистра данных нулевым: 10 X=Orig1nal_data and (255-16) 20 OUT 888, Х Строка выполняет операцию логического умножения 10 (AND). Таблица ис- тинности этой операции выглядит следующим образом: AND О = О AND 1 = О 1 AND О = О 1 AND 1 = 1 О О Пример поразрядной операции Данные-1: ХХХХХХХХ (биты от 7 до о) · Данные-2: Данные-1 AND 11101111 AND Данные-2: ХХХОХХХХ Сдвиг битов вправо или влево Уже говорилось, что при чтении данных из регистра состояния информативны­ ми являются только биты 3-6. Чтобы их выделить, необходимо произвести по­ битовый сдвиг. В ТР6 для этих целей существует две процедуры: SHL - сдвиг битов влево (к старшему разряду) и SHR - сдвиг вправо (к младшему разряду). Следующий пример демонстрирует выполнение обеих операций: Данные: 11111111 (биты с 7 по О) 255 SHL 3: 11111000 255SHRЗ: 00011111
ШJ 1.2. 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ Последовательный интерфейс Последовательный интерфейс RS232 - RS232 это промышленный стандарт для после­ довательной двунаправленной асинхронной передачи данных. Он используется в компьютерах при подсоединении принтеров, модемов, мыши и т.д. Максималь­ ное расстояние, позволяющее организовать связь, равно 20 м. В отличие от параллельного порта, состоящего из восьми информационных ли­ ний и за один такт передающего байт, порт RS232 требует наличия только одной такой линии, по которой последовательно передается бит за битом. Это позволяет сократить количество информационных линий для передачи данных между устрой­ ствами, но уменьшает скорость. 1.2.1. Последовательная передача данных Последовательный поток данных состоит из битов синхронизации и собственно битов данных. Формат последовательных данных содержит четыре части: старто­ вый бит, биты данных (5-8 бит), проверочный и стоповый биты; вся эта кон­ 1.6 изображен типичный формат струкция иногда называется символом. На рис. последовательных данных. Когда данные не передаются, на линии устанавливается уровень логической единицы. Это называется режимом ожидания. Начало режима передачи данных характеризуется передачей уровня логического нуля длительностью в одну эле­ ментарную посылку. Такой бит называется стартовым. Биты данных посылают­ ся последовательно, причем младший бит - первым; всего их может быть от пяти Бumtj '""3 "' о Е с:;; :J ~\О 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 gaннtjx бum О бum 1 : бum 2: бum ~D "-Е "'u ""о о о ~ "-Е с:"' Е"" ---i 1 1 1 1 'т :- О, 1042мс режuм Рис. (Скорость 9600 баg, 8 бum gанн"х, nроберкu на чеmносmь; 1 cmanoб"O бum) 1.6. Формат последовательных данных, формируемых UART oжugaнus:i н "о '-"" ..,./-- ,..----.,.-, ' 1 1 1 1 1 1 о 0,88 1 1 1 1 Режuм ~ LI) I -..----.- - - - - - r - - - - - .----,...---,.- о о 0 I 1 -----4------ 1 1 1 1 1 1 1 1 1 1 ' ' 1
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС RS232 (2!] до восьми. За битами данных следует проверочный бит, предназначенный для об­ наружения ошибок, которые возникают во время обмена данными. Последней пе­ редается стоповая посышщ информирующая об окончании символа. Стоповый бит передается уровнем логической единицы. Длительность стоповой посылки 1, 1,5 или 2 бита. Специально разработанное электронное устройство, генериру­ ющее и принимающее последовательные данные, называется универсш~ьным асин­ хронным приемопередатчиком (Universal Asynchronous Receiver Transmitter, UART). UART происходит следующим об­ Обмен информацией с помощью микросхем разом. Приемник обнаруживает первый фронт стартового бита и выжидает один или полтора тактовых интервала, поскольку считывание должно начаться точно в середине первой посылки. Через один тактовый интервал считывается второй бит данных, причем это происходит точно в середине второй посылки. После окончания информационного обмена приемник считывает проверочный бит для обнаружения ошибок и стоповый бит, а затем переходит в режим ожидания сле­ дующей порции данных. Скорость передачи информации в последовательном интерфейсе измеряется в бодах (бод - количество передаваемых битов за 1 с). Стандартные скорости рав­ ны 110, 150, 300, 600, 1200, 2400, 4800, 9600 и 19200 бод. Зная скорость в бодах, можно вычислить число передаваемых символов в секунду. Например, если име­ ется восемь бит данных без проверки на четность и один стоповый бит, то общая длина последовательности, включая стартовый бит, равна символов соответствует скорости в бодах, деленной на 10. Скорость передачи 1О. Таким образом, при скорости 9600 бод (см. рис. 1.6) будет передаваться 960 символов в секунду. Проверочный бит предназначен для обнаружения ошибок в передаваемых би­ тах данных. Когда он присутствует, осуществляется проверка на четность или нечетность. Если интерфейс настроен на проверку по четности, такой бит будет выставляться в единицу при нечетном количестве единиц в битах данных, и на­ оборот. Это простейший способ проверки на наличие одиночных ошибок в пе­ редаваемом блоке данных. Однако, если во время передачи искажению подверг­ лись несколько битов, подобная ошибка не обнаруживается. Проверочный бит генерируется передающим UART таким образом, чтобы общее количество еди­ ниц было нечетным или четным числом в зависимости от настройки интерфей­ са; приемное устройство должно иметь такую же настройку. Приемный UART считает количество единиц в принятых данных. Если данные не проходят про­ верку, генерируется сигнал ошибки. Большинство компьютеров, совместимых с IВМ РС, использует с IВМ РС ХТ - UART 8250. В UART применяются уровни UART 16450, напряжения ТТЛ. Для передачи данных по каналу связи напряжение с помощью специализированных преобразователей конвертируется с инверсией: логическому нулю соответствует диапазон напряжений от +3 до +12 В, логической единице - от -3 до -12 В.
~ 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ 1.2.2. Разъем и кабель порта RS232 Стандартный последовательный порт имеет рис. 1.7 25- или 9-контактный разъем. На приведены назначения контактов этих разъемов. а) 00000 0000 о о б) (1) 0 0 0 0 0 0 0 0 @ @ @ @ о о 8@@@@@@@@@@@ в) 25 9 конmакmоб конmокмоб 1 2 3 3 2 4 7 5 6 7 8 6 5 1 4 9 8 20 22 23 Рис. 1.7. Наnробленuе Ноuменобонuе PROT TD RD RTS CTS DSR GND DCD DTR RI DSRD (относительно ПК) Onucoнue Зощumное заземление в~хоg. Переgабоемt.1е Bxog Прuнuмаемtjе в~хоg Запрос Bxog Bxog Очuщен на gоннt)е goннtje nepegoчy gло nepegoчu Bxog Гоmобносmь бнеwне20 ycmpoucmбo Сигнальное заземление Обнаружение uнq.юрмо ЦUОННО20 сu2ноло в~хоg Компьютер Bxog Инguкоmор Bxog/б~xog Детектор к обмену goннtjMU 2оmоб збонко cкopocmu nepegoчu gанн tjX Функции контактов разъемов RS232 на компьютере а - блочная часть 9-контактного штыревого разъема, вид со стороны задней стенки компьютера, б - блочная часть 25-контактного штыревого разъема, вид со стороны задней стенки компьютера, в - назначение контактов разъемов последовательного порта В табл. 1.2 указано назначение сигналов последовательного интерфейса. 1.8 представлены два типа соединений между компьютером и внеш­ устройством по протоколу RS232. Стрелки показывают направление пото­ На рис. ним ков данных. На рис. 1.8а представлено так называемое иулъ-модемиое соедииеиие. На рис. 1.8б изображено соединение, использующее только три линии: первая передачи данных, вторая - для приема, третья - - для общая. Соединение организова­ но таким образом, что передаваемые данные от первого устройства поступают на приемную линию второго.
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС RS232 ~ а) б) Q "'QЕ .о ~ о "' 1.8. TD RD RTS стs стs DTR DSR GND PROT с Рис. TD RD RTS DTR DSR GND PROT о "''° => Е I 3 <.! :о "'о I tl шf о >- Q " Е Q .о с ~ о "' TD RD RТS TD RD RTS стs стs DTR DTR DSR GND PROT DSR GND PROT о ""' => Е I U 3>=> Q) I о tl шЕ u "' Соединение компьютера и внешнего устройства по протоколу RS232 а - с использованием нуль-модемного кабеля, б - при помощи трех линий Таблица PROT 1.2. Назначение сигналов последовательного интерфейса Защитное заземление Соединяется с металлическим экраном кабеля и корпусом оборудования GND Линия заземления Общий провод для всех сигналов Передаваемые данные Последовательные данные передаются компьютером по этой TD линии Принимаемые данные Последовательные данные принимаются компьютером по этой RD линии RTS Запрос на передачу Линия взаимодействия, которая показывает, что компьютер готов к приему данных Линия управляется со стороны компьютера, если взаимодействия не требуется, она может использоваться как двоичный выход CTS Готовность к передаче Линия взаимодействия, с помощью которой внешнее устройство сообщает компьютеру, что оно готово к передаче данных Если взаимодействия не требуется, она может использоваться как двоичный вход DTR Компьютер готов Линия взаимодействия показывает, что компьютер включен и готов к связи Линия управляется со стороны компьютера, если взаимодействия не требуется, она может испопьзоваться как двоичный выход DSR Готовность внешнего устройства Линия взаимодействия, с помощью которой внешнее устройство сообщает компьютеру, что оно включено и готово к связи Если взаимодействия не требуется, она может использоваться как двоичный вход 1.2.3. Внутреннее аппаратное устройство Компьютер, совместимый с IBM РС, может иметь до четырех последовательных пор­ - СОМ4. Каждый СОМ-порт формируется от­ тов. Они маркируются как СОМ1 дельным UART 16450, установленным UART 8250/16450 1.9 показано На рнс. внутри компьютера. внутреннее устройство UARТ. В нем имеются восемь вось­ мибитовых регистров. Адреса ввода/вывода этих регистров вычисляются добав­ лением смещения регистра к базовому адресу СОМ-порта. Смещения и функции регистров OOh - UAR Т таковы: буферный регистр передатчика/буферный регистр приемника: исполь­ зуется для обмена данными
[10.J 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ Дewucppomop Лоеuка уnрабленuо ogpeco 8250 Регuсмр сgбuго Бусрерн"О peгucmp nрuемнuка nрuемнuко Уnрабленuе Peгucmp <рормоrrю Mлagwuo бооm" nрuемнuком gоннь~х u cmapwuo Такmаб1>О peгucmpa генератор geлumeл~ 1-+-+--------~ • Pezucmp уnрабленuо моgемом " I I о С1> "' с " I о "3 I :1 3 Q_ "' "' е- LI) о :t "3 ,"'"':t • Е "' ro Q_ I моgемом Peгucmp cocmo~нu~ маgема RTS стs DTR DSR Логuка уnрабленuо х BAUDOUT - DCD RI OUT1 OUT2 Peгucmp разреwенuо nрер1>бонuа Лаеuка уnрабленuо 1 - + - + - - - - - - - - - ; _ . . INTERPT nрер"банuомu Peгucmp ugeнmu<puкaцuu nрер"банuо Onepamuбн"O peгucmp Уnрабленuе РабочuО peeucmp Бусрерн"о --------------1 Регuсмр peгucmp сgбuго nepegamчuкa Рис. nepeg amчu ком souт nepegamчuкa 1.9. Внутренняя блок-схемо UART 8250/16450 01h регистр разрешения прерываний: устанавливает режим запроса преры­ ваний 02h регистр идентификации прерываний: проверяет режим запроса преры­ ваний ОЗh регистр формата данных: устанавливает формат последовательных данных 04h регистр управления модемом: устанавливает управление модемом 05h и т.д.) регистр состояния приемопередатчика: содержит информацию о состо­ (RTS, DTR янии приемника и передатчика 06h 07h - регистр состояния модема: содержит текущее состояние линий DSR и CTS регистр сверхоперативной памяти: работает как байт памяти Смещение OOh DCD, RI, указывает на fiуферный регистр чтения приемника и регистр за­ писи передатчика, который доступен, когда бит DLAB в регистре формата данных
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИliТЕРФЕЙС RS232 @IJ (смещение ОЗh) равен нулю. Если по этому адресу записан байт, то он передает­ ся в регистр сдвига передатчика и последовательно поступает на выход. Во время приема происходит обратная операция: после того как данные успешно приняты и с помощью регистра сдвига преобразованы в пара.,тrлельный формат, они пере­ даются в буферный регистр приемника. Когда информация из этого регистра счи­ тана, он очищается и готов к приему следующего блока данных. По смещению 01h от базового находится регистр разрешения прерываний, по­ средством которого можно настраивать прерывания, генерируемые UARТ. Назна­ чения битов этого регистра приведены ниже: SINP ERBK О О О О биты с 7 по 4 ТВЕ всегда нули 1= SINP RxRD прерывание по изменению состояния линий DCD О = 1= О = 1= О = 1= О = ERBK ТВЕ RxRD По смещению 02h и CTS, DSR, RI нет прерывания прерывание при ошибке приема данных нет прерывания прерывание, когда регистр передатчика пуст нет прерывания прерывание при получении данных нет прерьшания находится регистр идентификации прерываний. При возник­ новении прерывания нулевой бит этого регистра устанавливается в О. Биты указывают причину прерывания. Биты с 7 по 3 1и 2 не используются и всегда равны нулю. Назначение битов регистра следующее: О О О О О PND ID1 IDO PND 1 = нет прерывания = прерывание 00 =изменение входного сигнала RS232 (приоритет 3) 01 =регистр передатчика пуст (приоритет 2) 10 =в буферном регистре приемника данные готовы (приори­ тет 1) 11 = ошибка передачи данных или остановка (приоритет О, О ID1, IDO высшая степень) Если процесс обмена данными организован по прерываниям, то установившее­ ся прерывание должно быть сброшено; в противном случае корректность обмена данными нарушится. Действия, необходимые для очистки прерывания, таковы: ID1 ID1 =О, =О, IDO =О IDO = 1 чтение содержимого регистра состояния модема (Обh) запись в регистр передатчика идентификации прерываний ID1 = 1, IDO =О ID1 = 1, IDO = 1 (OOh) или чтение регистра (02h) чтение байта данных из буферного регистра приемника чтение регистра состояния приемопередатчика (05h) (OOh)
@] t. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ По смещению ОЗh находится регистр формата данных, который определяет та­ кие параметры передаваемых данных, как скорость, количество битов данных, количество стоповых битов и настройка проверочного бита. Назначение битов регистра приведено ниже: DLAB BRK PAR2 PAR1 PARO STOP DAB1 DABO 1 =доступ DLAB к установке скорости О =доступ к регистру приемника/регистру передатчика и к регистру разрешения прерываний 1 = остановка включена О = остановка выключена ООО = нет проверки 001 = нечетная 011 =четная 101 =всегда 1 111 = всегда О 1 = 2 стоповых бита О = 1 стоповый бит 00 = 5 бит данных 01 = 6 бит данных 1О = 7 бит данных 11 = 8 бит данных BRK PAR2,1,0 STOP DAB1,0 Когда бит рываний (OOh) (01h) DLAB (01h) равен 1, регистры приемопередатчика (OOh) и разрешения пре­ используются для загрузки делителя скорости обмена. В первый за­ писывается младший, во второй - старший байт делителя. Они формируют шест­ надцатибитовый делитель, значение которого вычисляется по следующей формуле: Делитель= байтренктрОО!~ + 256 Х байтрепктрО!h. В компьютере тактовая частота, подаваемая в UART, составляет 1,8432 МГц. Внутри UART эталонная частота образуется как тактовая, деленная на 16, и рав­ на 115200 Гц. Соотношение между значениями делителя и скоростью можно пред­ ставить в виде формулы: Скорость= 115200 . Делитель Для получения скорости 9600 бод необходимо, чтобы делитель был равен 12. Следовательно, в буферный регистр приемопередатчика (OOh) должно быть запи­ сано число 12, а в регистр разрешения прерываний (01h) - ноль. Если в регистры делителя записана единица, то получится самая высокая скорость - 115200 бод. По смещению 04h расположен регистр управления модемом. В общем случае он используется для управления двумя выходами интерфейса чения битов регистра следующие: О О О LOOP OUT2 OUT1 RTS DTR биты 7-5 LOOP всегда нули 1= = О обратная связь доступна обратная связь недоступна - RTS и DTR. Назна­
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС RS232 OUT2 1 =включено = выключено, для внутреннего использования 1 =включено О = выключено, для внутреннего использования 1 =включено О = выключено, присутствует на разъеме RS232 1 =включено О = выключено, присутствует на разъеме RS232 05h находится регистр состояния приемопередатчика, @] О ОUТ1 RTS DTR По смещению который содержит информацию о состоянии приемника и передатчика UARТ. При исполь­ зовании совместно с регистром идентификации прерываний (02h) можно устано­ вить источник прерываний. Назначения битов регистра приведены ниже: О ТХЕ ТВЕ BREK FRME PARE OVFE RxRD ТХЕ (передатчик пуст) 1= нет байта в регистре передатчика и регистре сдвига О = в регистре передатчика и регистре сдвига один байт ТВЕ (буфер передатчика пуст) 1 = нет байта в регистре передатчика = в регистре передатчика один байт 1 =обнаружена остановка О = нет остановки 1 =обнаружена ошибка О = нет ошибки 1 =обнаружена ошибка О = нет ошибки 1 =обнаружена ошибка О = нет ошибки 1 =принятые данные находятся в реО BREK (остановка) FRME (ошибка блока) (ошибка проверки на четность) PARE OVRE (ошибка переполнения) RxRD (принятые данные готовы) гистре приемника О По смещению 06h = нет принятых данных находится регистр состояния модема, который может исполь­ зоваться для определения состояния входных сигналов, в частности CTS, RI, DCD, DSR, а также для считывания четырех цифровых входных линий. Назначения битов регистра следующие: DCD RI DSR CTS DDCD DRI DDSR DCST DCD (обнаружена несущая передачи данных) 1 = DCD активна = DCD неактивна 1 = RI активна О= RI неактивна 1 = DSR активна О = DSR неактивна 1 = CTS активна О = CTS неактивна О RI (индикатор звонка) DSR (набор данных готов) CTS (сброс для передачи)
~ 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ DCD) 1 = DCD изменена с момента последнего считывания О = DCD без изменений DRI (дельта RI) 1 = RI изменена с момента последнего считывания О = RI без изменений DDSR (дельта DSR) 1 = DSR изменена с момента последнего считывания О = DSR без изменений DCTS (дельта CTS) 1 = CTS изменена с момента последнего считывания О = CTS без изменений DDCD (дельта Регистр со смещением 07h - это байт памяти. Запись данных в регистр не вли­ яет на операции UARТ. Преобразователи напряжений Выходные сигналы управления (RTS и DTR) и входные сигналы состояния (CTS, DSR, DCD) последовательного порта инвертированы. Последовательные сигна­ лы данных SIN и SOUT не инвертированы. UART работает только с уровнем на­ пряжений ТТЛ/КМОП. Преобразователи напряжений расположены между UART и разъемом RS232. Преобразователи передатчиrщв конвертируют уровень напря­ жения ТТЛ в уровень RS232, а преобразователи приемников - наоборот. Логи­ ческая структура последовательного порта изображена на рис. 1.10. Преоброзобоmелu уробно но nepegoчy Комnьюmер ":> Преоброзобоmелu уробн• но npueм ж ~ Назбанuо регuсmроб u" ~ OOh 04h Peгucmp уnроб лен u• моgемом Peгucmp уnробле~u• моgемом 04h Peгucmp gоннt>х nepegomчuкo uenь Бum о 7 r---il----t-t-i ТО RTS RTS OTR о '~---'-- ТО RTS r---il-D_T_R_ _н--1 "):>---~~ О ГR Вхоgн"е goннtje nрuемнuко OOh Бyq>epнt;Q peгucmp Peгucmp cocmORHUR моgемо Обh Peгucmp сосmоRнш~ моgема Peгucmp cocmo~нu~ моgема о 7 RO CTS OSR RO crs Обh 4 5 DSR Обh 7 ОСО ОСО OSR ОСО 8250/16450 UART Преоброзобоmелu уробн• но nepegoчy Преоброзобоmелu уробн• но npueм 9-конmокmнЬIО шmt>ребоо розьем 0-muno Рис. 1.10. Логическая структура последовотельного порта
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС RS232 []!) Базовые адреса СОМ-портов Базовые адреса СОМ-портов выглядят так: СОМ1: ЗFBh СОМ2: 2F8h СОМЗ: ЗЕВh СОМ4: 2E8h При включении или перезагрузке компьютера BIOS проверяет адреса всех уста­ новленных последовательных портов. Если она находит такой порт, то заносит ба­ зовый адрес (двухбайтовое слово) в определенную ячейку памяти. Для СОМ1 это ячейки 0000:0400h и 0000:0401h. Базовый адрес можно получить, считав их содержи­ мое. Ячейки памяти, в которых содержится информация о базовых адресах уста­ новленных последовательных портов, приведены ниже: СОМ1: СО М2: СО МЗ: СО М4: 0000:0400h 0000: 0402h 0000: 0404h 0000: 0406h - 0000:0401h 0000: 0403h 0000: 0405h 0000: 0407h Однобайтовая ячейка памяти 0000:0411h в первом, втором и третьем битах содержит общее количество установленных СОМ-портов: бит бит бит бит 3 =О, 3 =О, 3 =О, 3 = О, бит 3 = 1, бит бит бит бит бит 2 =О, 2 - О, 2 = 1, 2 = 1, 2 =О, бит бит бит бит бит 1 =О 1= 1 1 =О 1= 1 1 =О СОМ-порты не установлены установлен один СОМ-порт установлено два СОМ-порта установлено три СОМ-порта установлено четыре СОМ-порта 1.2.4. Программное управление В разделе приведены основные варианты программирования последовательного порта. Получение базового адреса последовательного порта Представленная программа, написанная на языке QBASI С, выводит общее количе­ 20 считывает команду РЕЕК(). Биты О, 1 и 2 содержат ство СОМ-портов, встроенных в ПК, и их базовые адреса. Строка байт нз ячейки памяти 0000: 0411h, используя пнформацию о количестве установленных СОМ-портов. На эти три бита наклады­ вается маска с помощью оператора AND ( 1+2+4) для определения количества портов. Строка 30 считывает два байта из ячеек памяти, содержащих базовый адрес СОМ!. Строки 10 20 30 40 40, 50 и 60 делают то же самое для остальных портов. DEF SEG=O PRINT "Number of RS232 ports:", (РЕЕК(&Н411) AND (1+2+4)) PRINT . Address of СОМ1: ", РЕЕК(&Н400)+256•РЕЕК(&Н401) PRINT "Add ress of СОМ2: ",РЕЕК( &Н402)+256•РЕЕК( &Н403)
[Ю 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ 50 PRINT 'Address of 60 PRINT "дdd ress of 70 INPUT Х СОМЗ:",РЕЕК(&Н404)+256*РЕЕК(&Н405) СОМ:". РЕЕК( &Н406 )+256* РЕЕК( &Н407) Следующая функция, ·написанная на языке ТР6, считывает информацию о ко­ личестве установленных портов и присваивает полученное значение переменной Number _of _COM. Затем она считывает базовые адреса из ячеек памяти, где они хра­ нятся, и присваивает адрес выбранного порта переменной RS232_address. (*-Библиотека ресурсов № А6 (определение базовых адресов СОМ-портов).-*) Procedure COM_address; (* $0000:$0400 содержит базовый адрес порта СОМ1, $0000:$0402 содержит базовый адрес порта СОМ2, $0000:$0404 содержит базовый адрес порта СОМЗ, $0000:$0406 содержит базовый адрес порта СОМ4, $0000:$0411 содержит количество СОМ-портов в двоичном var СОМ:аггау[1 .. 4] of iпteger; формате.*) COM_пumber,пumber_of_COM,code:1пteger; Kbcha г: cha г; begiп cl rscr; =1; (*Установка порта ·по умолчанию.*) Number_of_COM:=mem($0000:$0411); (*Считывание количества СОМ-портов.*) Number_of_COM:=(Number_of_COM апd (8+4+2)) shr 1; COM[1]:=memw($0000:$0400); (*Процедура считывания из памяти.*) COM[2]:=memw($0000:$0402); COM_пumber: COM[З]:=memw($0000:$0404); COM[4]:=memw($0000:$0406); Textbackgrouпd(Ьlue); clrscr; Textcolor(yellow); Textbackgrouпd(red); wiпdow(10, 22, 70, 24); clrscr; writelп('Number of СОМ iпstalled: ·, Number_of_COM:2); writelп('Addresses for СОМ1 to СОМ4:., СОМ[1]:з·, СОМ[2]:з·, СОМ[З]:з·, СОМ[4]:3); write('Select СОМ to Ье used (1,2.3,4): '); delay(1000); if пumber_of_COM>1 theп begiп (*Выбор конкретного порта, если установлено несколько портов.*) repeat kbchar:=readkey; (*Считывание значения с вводимой клавиши.*) val(kbchar,COM_number,code); (*Преобразование символа в число.*) uпtil (COM_пumber>=1) апd (COM_пumber<=4) апd (COM[COM_пumber]<>O); епd; clrsor; RS232_add ress: =СОМ[ COM_пumber]; writeln('Your selected RS232 iпterface: сом·, COM_пumber:1); wri te( · RS232 add ress: ·, RS232_add ress: 4); delay( 1000); textbackgrouпd(Ьlack); w1пdow(1, 1, 80, 25); clrscr; епd; В следующем примере приведена функция Pascal для Windows. RS232( О) RS232(X), написанная на языке Turbo возвращает количество установленных СОМ -портов, RS232( 1) - базовый адрес СОМ1, RS232(2) - базовый адрес СОМ2 и т.д.
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС RS232 @] (*-Библиотека ресурсов № Аб (определение базовых адресов СОМ-портов).-*) (Un1versal auto detect1oп of СОМ base address) Funct1oп RS232(X: integer) .1nteger; ехрогt; (* $0000 $0400 содержит базовый адрес порта СОМ1, $0000:$0402 содержит базовый адрес порта СОМ2, $0000:$0404 содержит базовый адрес порта СОМЗ, $0000·$0406 содержит базовый адрес порта СОМ4, $0000:$0411 содержит количество СОМ-портов в двоичном var пumber_of_COM, СОМ1, СОМ2,СОМЗ, формате.•) СОМ4:1пtеgег; begiп number_of_COM:=mem($40.$11); (•Считывает количество СОМ-портов СОМ1:=0; СОМ2:=0; СОМЗ:=О; •) (8+4+2)) shr 1; number_of_COM:=(пumber_of_COM апd СОМ4:=0; COM1:=memw($40:$00); COM2.=memw($40:$02); СОМЗ: =memw( $40: $04), COM4:=memw($40:$06); Case Х of О. RS232:=number_of_COM; 1. RS232: =СОМ1; 2: RS232:=COM2; 3: RS232: =СОМЗ; 4: RS232: =СОМ4; end; end, (*Процедура чтения из памяти.•) Инициализация СОМ-порта Перед тем как использовать СОМ-порт, его необходимо настроить на определен­ ный формат передачи данных, то есть установить скорость, количество битов дан­ ных, количество стоповых битов и бит проверки. Существует три метода настройки. Первый заключается в использовании коман­ ды MODE операционной системы MS DOS. Синтаксис команды можно представить так: COMm: baud=b, parity=p,data=d,stop=s, retry=r COMm:b,p,d,s, г МООЕ или МООЕ MODE СОМ 1 : 96, n, 8, 1 настраивает порт СОМ 1 со следующими параметрами: ско­ рость 9600 бод, без проверки на четность, 8 бит данных, 1 стоповый бит. Указанная команда может быть включена в файл autoexec.bat. Недостаток такого метода невозможность изменять формат передачи данных в пользовательских про­ граммах. Второй метод использует прерывание BIOS INT 14h, которое позволяет выпол­ нять настройку порта из программ пользователя. Для этого необходимо в регистр АН загрузить О, а в (СОМ1 - DX - число от О до СОМ4). В регистр AL 3, указывающее на соответствующий порт загружается байт инициализационных данных, значения битов которого приведены ниже: BD2 BD1 BDO PAR1 PARO STOP DA1 DAO BD2 - BDO (скорость) 111 011 = = 9600 600
[}!] 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ 110 010 101 001 100 = = = = = ООО= PAR1,0 STOP (проверка на четность) 4800 300 2400 150 1200 110 00 или 10 О1 = 11 =четная =нет проверки нечетная (количество стоповых битов) о = 1 1= 2 DA1,0 (длина блока данных) 10 = 7 11 = 8 бит бит Следующая программа на языке ТР6 делает то же, что и команда СОМ1 DOS MODE :96, n, 8, 1. Proceduгe iпitialize; {СОМ1: 9600, без проверки на четность, 8 бит данных, 1 стоповый бит.} vаг гegisteг: гegisteгs; begiп with гeg1steг do Ьеg1п ah:=O al:=128+64+32+0+0+0+2+1; dx:=O; {Загрузка номера функции прерывания.} iпtг($14, гeg1steг); {Вызов {Загрузка инициализационного кода DX=O:COM1, DX=1:COM2 прерывания BIOS.} {Номер порта: 111000118.} и т.д.} епd; епd; Ограничение описанного метода состоит в том, что можно задать скорость только 9600 бод. UART 16450 способен работать со скоростью 115200 бод, это до­ стигается непосредственным обращением к решстру. Третий, наиболее гибкий метод настраивает порт посредством записи данных в регистр формата данных UART (смещение ОЗh). Следующая программа на ТР6 позволяет настроить сам регистр, для этого требуется базовый адрес настраива­ емого порта, скорость, режим проверки, длина блока данных и количество стопо­ вых битов. Процедура переводит заданную скорость в шестнадцатибитовый де­ литель и загружает его в соответствующие регистры. (•-Библиотека ресурсов № А9 (запись в регистр формата данных).-•) Ргосеduге Wгite_data_foгmat (RS232_addгess, vаг byte1,byte2,output_byte:byte; di viso r: intege г; begiп divisoг:=115200 div Baud; Baud, Раг1tу, Data_b1t, Stop_bit:1пtegeг);
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС RS232 if if divisoг<=255 theп begiп byte1:=divisoг; byte2:=0; епd; divisoг>255 theп begiп byte1:=divisoг mod 256; byte2:=divisoг output_byte:=(data_b1t-5)+4•(stop_Ыt-1)+8•(paгity); poгt(RS2З2_addгess+З):=128; ® div 256; епd; {Загрузка инициализационных данных, первый бит регистра равен 1.} 1.} poгt(RS2З2_addгess+O):=byte1: {Младший байт делителя равен poгt(RS2З2_addгess+1):=byte2; {Старший байт делителя равен О.} poгt(RS2З2_addгess+З):=output_byte; {Загрузка делителя и других параметров.}' епd; Следующая функция, написанная на языке Turbo Pascal для Windows, выпол­ няет то же самое. (•-Библиотека ресурсов № А9 (запись в регистр формата данных).-•) Fuпctioп Wгite_data_foгmat(RS2З2_addгess, Baud, Paгity, Data_Ыt, Stop_Ьit:iпtegeг):iпtegeг; ехрогt; vаг byte1,byte2,output_byte:byte; divisoг:iпtegeг; begiп divisoг:=115200 if if div Baud; divisoг<=255 theп Ьеg1п byte1:=divisor; byte2:=0; епd; divisoг>255 theп begiп byte1:=divisoг byte2:=divisoг mod 256; div 256; епd; output_byte:=(data_Ыt-5)+4•(stop_Ьit-1)+8•paгity; poгt(RS2З2_addгess+З):=128; {Загрузка инициализационных данных, первый бит регистра равен 1.} 1.} poгt(RS2З2_addгess+O):=byte1; {Младший байт делителя равен poгt(RS2З2_addгess+1):=byte2; {Старший байт делителя равен О.} poгt(RS2З2_addгess+З):=output_byte; {Загрузка делителя и других параметров.} епd; Передача и прием последовательных данных Существует несколько способов приема и передачи данных через последователь­ ный порт: с помощью команд операционной системы, прерываний BIOS или не­ посредственного доступа к порту. Последний способ наиболее удобен при прове­ дении операций ввода/вывода общего назначения. Рассмотрим пример для порта СОМ1. Чтобы передать данные, можно записать их непосредственно в буферный регистр передатчика ЗF8h, используя следующий оператор языка OUT где Х - QBASIC: ЗFBh, Х данные в десятичном формате. Для получения данных из порта СОМ1 считываются данные из буферного регистра приемника ЗFBh. С этой целью ис­ пользуется другой оператор языка формате): Y=INP(ЗFBh) QBASIC (У - входные данные в десятичном
~ 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ Следующие две процедуры написаны на языке ТР6 и выполняют те же функции. (*Библиотека ресурсов № А10 (запись данных в буферный регистр передатчика).*) Procedure wr1te_traпsm1t_buffer(RS232_address,output_byte:iпteger), Ьеg1п port(RS232_address):=output_byte; епd; *) (•Библиотека ресурсов № А12 (чтение данных из буферного регистра приемника) Fuпctioп read_rece1ve_buffer(RS232_address,output_byte:1пteger):iпtegeг; Ьеg1п read_rece1ve_buffer:=port(RS232_address); епd; Ниже приведены две функции, написанные на Turbo Pascal для Windows. (*Библиотека ресурсов № А10 (запись данных в буферный регистр передатчика).*) Fuпct1oп wr1 te_ t гапsm1 t_buffe г( RS232_add ress, output_byte beg1n port( RS232_add ress): =output_byte; end; iпteger). iпteger; export; (*Библиотека ресурсов № А 11 (чтение данных из буферного регистра приемника). Fuпct ~оп read_rese1 ve _buf f е г (RS232_add ress, out put_byte: 1пtege г) :1ntege г, *) rt; ехро beg1n read_rese1ve_buffer:=port(RS232_address); end; Передача данных по линиям взаимодействия Для вывода данных через линии щение RTS и DTR в регистр управления модемом ( сме­ 04h) необходимо записывать биты 1 и О, которые соответствуют сигналам RTS 11 DTR. Линии управляются процедурами на языках ТР6 и Turbo Pascal для Windows, требующими базовый адрес выбранного СОМ-порта и состояние этих линий - либо О, либо 1. Причем RTS и DTR инвертируются перед подачей в порт с целью компенсации инверсии преобразователями TTЛ/RS232, которые также используются для трансформации уровня напряжения. (*-Библиотека ресурсов № А11 (запись данных в регистр состояния модема) -*) procedure wr1te_modem_status(RS232_address, RTS. OTR:iпteger); (*RTS и DTR инвертируются с помощью МАХ238 на экспериментальной плате*) (*RТS=бит 1, ОТR=бит О регистра управления модемом, смещение 04h.*) beg1n RTS.=1-RTS, DTR: =1-DTR; port(RS232_address+4):=RTS*2+DTR; (*Запись в регистр 04h *) end; (*-Библиотека ресурсов № А11 (запись данных в регистр состояния модема).-*) Function wr1te_modem_status(RS232_address, RTS, OTR:integer):iпteger; export; (*RTS и DTR инвертируются с помощью МАХ238 на экспериментальной плате.•)
1.3. ИГРОВОЙ ПОРТ ~ ( •RТS=бит 1, 04h. *) DТR=бит О регистра управления модемом, смещение Ьеg1п RTS:=1-RTS; DTR:=1-DTR; poгt(RS232_addгess+4):=RTS•2+DTR; (•Запись в регистр 04h •) епd, Чтобы считать данные с линий DSR, CTS и DCD, необходимо считать регистр состояния модема. Для этого служат нижеприведенные процедуры на языках ТР6 и и CTS TPW, DCD требующие базовый адрес выбранного СОМ-порта. Линии DSR, инвертируются для компенсации инверсии преобразователями TTЛ/RS232. (•-Библиотека ресурсов № А13 (чтение данных из регистра состояния модема) Fuпct1oп гead_modem_status(RS232_addгess, (•х=1 - выбор бита (•DСD=бит 7, DCD, DSR=бит 5, х=2 - выбор бита СТS=бит 4 -•) х:1пtеgег):1пtеgег; DSR, х=3 - выбор бита CTS.•) регистра состояния модема, смещение 06h •) (•Все биты инвертируются с помощью МАХ238 на экспериментальной плате.•) vаг iпput_byte byte; Ьеg1п lпput_byte:=port(RS232_addгess+6), case х 1: 2: 3: of Read_modem_status =1-rouпd((lпput_byte апd Read_modem_status.=1-гouпd((iпput_byte апd Read_modem_status =1-rouпd((lпput_byte апd 128)/128); 32)/32); 16)/16), епd; епd; -•) read_modem_status(RS232_address, x:1nteger):iпteger; export; (•х=1 - выбор бита DCD, х=2 - выбор бита DSR, х=З - выбор бита CTS.•) (•DСD=бит 7, DSR=бит 5, СТS=бит 4 регистра состояния модема, смещение 06h.•) (•-Библиотека ресурсов № А13 (чтение данных из регистра состояния модема) Fuпct1oп (•Все биты инвертируются с помощью МАХ238 на экспериментальной плате.•) var iпput_byte · byte; Ьеg1п lпput_byte:=poгt(RS232_address+6); case х 1: 2: 3: of 128)/128); 32)/32); and 16)/16); Read_modem_status:=1-rouпd((iпput_byte апd Read_modem_status:=1-rouпd((lпput_byte апd Read_modem_status:=1-гouпd( (lпput_byte епd; епd; 1.3. Игровой порт В большинстве настольных компьютеров есть встроенный игровой порт, куда подключаются один или два джойстика - с двумя цифровыми и двумя аналого­ выми входными линиями (одно устройство) или с четырьмя цифровыми и че­ тырьмя аналоговыми (два устройства). Цифровые линии позволяют считывать
~ 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ - измерять подключенное к ним сопротивление 0-100 кОм). потенuиометра 100 кОм для индикаuии координат Х и У, входные данные, а аналоговые (оно должно быть в пределах Джойстик имеет два а также две нормально разомкнутые кнопки. На соответствующих им линиях порта устанавливается высо1шй уровень, а при нажатии на кнопку - низкий. 1.3.1. Разъем Порт имеет 15-контактную розетку D-типа. Назначение выводов и типовое соеди­ нение с джойстиком представлены на рис. 1.11. а) б) ДжоОсmuк А Y-nomeнцuoмemp 00®0000 X-nomeнuuoмemp @@@@@@0 1 1 в) Номера конmакmоб Наuмено- 1, 8, 9, 15 4, 5, 12 2 +58 GND 3 б 7 10 11 13 14 Onucaнue банuе Пumaнue со сmоронь~ "ЗемлR" ПербаR кноnка 8А1 АХ АУ 8А2 gжoOcmuкa А X-nomeнJ,uOмemp gжoocmuкo Л. Y-nome1-щuoмemp gжoocmu.<a ПербоR кнопка gжoOcmuкa А А Перба" 881 ПК кнопка gжoQcmuкo ДжООсmuк В 8Х X-nomeнuuoмemp gжoocmuкa В ВУ Y-nomeнuuaмemp gжoocmuкa ПербаR кноnка gжoOcmuкa В В 882 8 Рис. 1.11. Назначение выводов и типовое соединение с джойстиком: а - 1S·контактный гнездовой разъем D·типа, вид со стороны задней стенки компьютера, б - соединение контактов порто с внешними резисторами и переключателями; в - назначение контактов игрового порта 1.3.2. Внутреннее аппаратное устройство Внутренняя блок-схема типового игрового порта изображена на рис. ческая структура - на рис. 1.12, а логи­ 1.13. Восьмибитовые линии шины данных состоят из четырех выходов микросхемы DDSa и четырех выходов микросхемы DDSb. Четыре входа состояния кнопок
1.3. ИГРОВОЙ ПОРТ @] +58 WRITE_GAMES_PORT +58 (1)-J +58 +58 (9):J X-AXIS А(3) TRIG Т /HOLD DIS CHRG "" "' " о:: RST о:: о:: Прuмечонuе (() DD1 -4 NE555 DD5 74LS244 о:: Все незо2рузочнЬ1е peзucmop~ 4, 7к0м О/Р 001 Y-AXIS А(б) TRIG T/HOLD DIS CHRG RST О/Р DD2 Y-AXIS 8( 11) 1 TRIG T/HOLD DIS CHRG RST О/Р _J 003 Y-AXIS TRIG T/HOLD DIS CHRG RST О /Р Г--+--------' 004 GND GND °' о:: N о:: 19 G 1 А(2) >---------------+-+--+-+-----'-"-1 Кноnко 2 А(7) >-----------------+--+-+-----~ Кноnка 1 8(10) >-----------------4---1--~=; Кноnко 2 8( 14) > - - - - - - - - - - - - - - - - - - - + Кноnко Рис. 1.12. Внутренняя блок-схеме типового игрового порта подключены к питанию +5 В через нагрузочные резисторы. Порт имеет адрес 201h. Функции битов порта приведены ниже: 882 881 ВА2 8А1 ВУ ВХ АУ АХ ВВ2, ВВ1, ВА2 и ВА1 цифровые входы ВУ, ВХ, АУ и АХ аналоговые выходы Метод измерения сопротивления основан на программном определении дли­ тельности импульса, пропорционального сопротивлению. Преобразование начи­ нается после вывода любого байта в регистр порта навливаются в 1. (20lh), при этом биты 0-3 уста­ 0-3, Время измеряется до возврата в нулевое состояние битов
(Ю 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ Компьютер Бum Анолособt1е о АХ АХ АУ АУ 2 вх вх 3 ВУ ВУ 4 ВА1 5 8А2 ВА2 6 881 881 7 882 бхоg<> Agpec pe2ucmpo u2робого порта 201h Uu<)JpOбtie 2 882 Пumoнue +58 +58 +58 Внуmреннuе бхоg<> 8А1 uenu И2робоО nopm ПК 15-конmакmнt10 гнезgабоо разьем D-muna Рис. 1.13. Логическая структура игрового порта соотнесенных с четырьмя аналоговыми каналами. Если аналоговый вход закорочен на ~<землю» или цепь измеряемого сопротивления разорвана, соответствующий бит не обнулится. Поэтому в программе преобразования должен быть предусмотрен тайм-аут. Езаимосвязь временного интервала и подключенного сопротивления характеризуется следующей формулой: Сопротивление (Ом)= Временной интервал - 24.2 мкс. 0,011 Временной интервал изменяется в пределах от ления до 1124 мкс для максимального (100 24,2 мкс для пулевого сопротив­ кОм). Однако погрешности внутрен­ него конденсатора и резистора делают формулу неточной. На практике необхо­ димо производить калибровку, которая включает в себя измерение интервалов времени, когда входное сопротивление близко к нулю или равно 100 кОм. 1.3.3. Программное управление В языке программирования QBASIC существуют два оператора, предназначен­ ные для игрового порта, - SТICK( х) и STRIG( х). Оператор SТICK( х) может принимать значения 0-3 и используется для чтения информации с потенциометров Х и У джойстиков А и В. Х=О считывает Х-координату джойстика А Х=1 считывает У-координату джойстика А Х=2 считывает Х-координату джойстика В Х=З считывает У-координату джойстика В Применяя эту команду, необходимо сначала вызвать SТICK(O), а затем SТICK(1), SТICK(2) и SПСК(З). Функция SТICK возвращает значение координаты, которое из­ меняется от 6 (нулевое сопротивление) до 150 (сопротивление 100 кОм).
1.3. ИГРОВОЙ ПОРТ STRIG(x) возвращает -1, @] если условие верно; в противном случае функция воз­ вращает О. Х может принимать значения от О до 7 и используется для выбора определенного состояния кнопки джойстика. Х=О Первая кнопка джойстика А была нажата с момента последней команды STRIG(O) Х=1 Х=2 Первая кнопка джойстика А была только что нажата Первая кнопка джойстика В была нажата с момента последней команды STRIG(2) Х=З Х=4 Первая кнопка джойстика В была только что нажата Вторая кнопка джойстика А была нажата с момента последней команды STRIG(4) Х=5 Х=6 Вторая кнопка джойстика В была только что нажата Вторая кнопка джойстика А была нажата с момента последней команды STRIG(6) Х= 7 Вторая кнопка джойстика В была только что нажата Следующая программа на языке QBASIC выводит на экран координаты Х и У джойстика А и показывает состояния двух кнопок. 1О dummy=SТICK( О) 20 print Coord1nate of Х , SПСК(О) 30 print Coord1nate of У , SПСК( 1) 40 pr1nt Current status of 1st button STRIG(1) 50 print Current status of 2nd button ,STRIG(S) 60 end Функция на языке ТР6, приведенная ниже, возвращает состояние конкретного бита, определенного переменной 81 tx. Содержимое регистра игрового порта счи­ тывается в компьютер и присваивается переменной Input_byte. Затем состояние конкретного бита определяется наложением маски на считанный байт. (*-Библиотека ресурсов № А14 (чтение регистра игрового порта)-•) Funct1on read_game_port(b1tx integer) integer, (•Адрес игрового порта 201h 81tx (1-8) выбирает состояние АХ, АУ, 8Х, 8У, 8А1, 8А2, 881 и 882 •) var input_byte byte beg1n input_byte =port($201), read_game_port =round((lnput_byte and b1t_we1ght(b1tx))/b1t_we1ght(b1tx)), end, Чтобы определить величину сопротивления, необходимо записать байт в порт 201h для запуска одновибратора. Соответс1Вующий бит в регистре порта стано­ вится единицей. Нужно постоянно опрашивать этот бит, пока он снова не станет нулем. В результате получим требуемый временной интервал. Наиболее удобно измерять временной интервал с помощью третьего счетчика/таймера 8253/8254 внутри компьютера, который можно настроить как независимый таймер с обратным отсчетом времени. Если в счетчике записано число 255, его значение обнуляется
rnJ 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ каждые 55 мс. Разрешается применять только третий счетчик, так как первые два уже используются операционной системой rшмпьютера. Следующая функuия на языке ТРб позволяет измерить временной интервал. Переменная х указывает, по какому аналоговому входу он будет определяться. Функция port($201):=0 выполняет операuию записи в игровой порт для запусr<а одновибратора. Сразу после этого считывается значение счетчика 8253 и получен­ ный результат присваивается переменной Тime1. Потом в uикле постоянно прове­ ряется, когда соответствующий бит регистра станет равным нулю. Как только это произойдет, значение счетчика снова считывается и присваивается переменной Тime2. Затем вычисляется временной интервал. Данная фующия использует про­ uедуру ini t_8253 и функцию Read_8253. Первая записывает число и младший разряды счетчика 3 255 в старший и настраивает его как независимый счетчик, вто­ рая считывает старший и младший байты счетчика 3. (•-Библиотека ресурсов № А16 (получение длительности периода одновибратора).-*) Function inteгval_game_poгt(x:integeг):integeг: (•х выбирает АХ(х=1), АУ(х=2), ВХ(х=З), ВУ(х=4).•) vаг time1, time2,dummy:integeг; Ргосеduге init_8253; 8253.•) (•Настройка begin ( • Уnравляющее слово = b6h = 1011011оь: 10 = выбор счетчика 2; 11 = сначала чтение/запись младшего байта, 011 = режим 3; затем старшего; О= шестнадцатибитовый двоичный счет.•) рогt($43):=$Ь6; рогt($42) (•Запись управляющего сnова в управляющий регистр :=255: (•Загрузка младшего байта.*) рогt($4З):=255: рогt( $61): =рогt ($61) ог рогt($43):=$80: (•Загрузка старшего байта.•) 1; (•Выключение внутреннего динамика.>) (•BOh - команда фиксации для счетчика епd; Function гead_8253:integeг; (•Считывание младшего и старшего байтов счетчика.•) vаг lo1v_byte, h1gh_byte: byte; begin low_byte:=poгt($42); high_byte:=poгt($43); гead_825З:=low_byte+256•high_byte; end: vаг l: integeг; begin ini t_8253; fог i:=1 to 100 do i:=i; 3.•) 8253.•)
1.3. ИГРОВОЙ ПОРТ @] i:=O; dummy: =Ь1 t_weight(x); рогt($201):=0; time1:=гead_8253; гереаt i:=i+1 uпtil (рогt($201) апd dummy=O) ог (i>=5000); time2:=гead_8253; iпteгval_game_poгt:=time2-time1; if i>=5000 theп iпteгval_game_poгt:=O; епd; А вот как выглядит эта функuия, написанная на языке Turbo Pascal для Windows: (•-Библиотека ресурсов № А14 (чтение регистра игрового порта).-•) Fuпct1oп гead_game_poгt(b1tx:1пtegeг):1пtegeг: (•Адрес игрового порта: Bitx ехрогt; 201h выбирает состояние АХ, АУ, ВХ, ВУ, ВА1, ВА2, ВВ1 и ВВ2.•) vаг iпput_byte byte; Ьеg1п iпput_byte: =ро гt( $201); гead_game_poгt: =гоuпd ( ( iпput_byte апd Ь1 t_we1ght (bi tx) )/bl t_we1ght( Ь1 tx)); епd; (•-Библиотека ресурсов № А 15 (запись в регистр игрового порта).-•) Fuпct1oп wг1te_game_poгt:iпtegeг; ехрогt; (•Вводит О в игровой порт для запуска мультивибратора.•) begin рогt($201):=0; епd, (•-Библиотека ресурсов № А16 (получение длительности периода одновибратора).-•) Fuпctioп iпteгval_game_poгt(x: iпtegeг): iпtegeг; ехрогt; (•х выбирает АХ(х=1), АУ(х=2), ВХ(х=З), ВУ(х=4).*) vаг t1me1,t1me2.dummy:iпtegeг, Ргосеduге in1t_8253, 8253.•) (•Настройка begiп = b6h = 10110110Ь 10 = выбор счетчика 2; 11 = сначала чтение/запись младшего 011 = режим 3; (*Управляющее слово байта, затем старшего; О= шестнадцатибитовый двоичный счет.•) рогt($43):=$Ь6; (•За~ись управляющего слова в управляющий регистр рогt($42).=255; (•Загрузка младшего байта.•) рогt($43).=255; рогt($61).=рогt($61) ог рогt($43):=$80; (•Загрузка старшего байта.•) 1; (•Выключение динамика.•) (•80h - команда фиксации для счетчика end; Fuпct1oп геаd_8253:1пtеgег; (•Считывание младшего и старшего байтов счетчика.•) vаг low_byte, h1gt1_byte: byte; 3.•) 8253.•)
СО] 1. ПАРАЛЛЕЛЬНЫЙ, ПОСЛЕДОВАТЕЛЬНЫЙ И ИГРОВОЙ ПОРТЫ beg1n low_byte =port($42), h1gh_byte =port ($43), read_8253 =low_byte+256•h1gh_byte, end, var l lnteger, beg1n lПl t_8253, for l =1 to 10 do l =1, l =О, dummy =b1t_we1ght(x), port($201) =О, t1me1 =read_8253, repeat l =1+1 untll (port($201) and dummy=O) or (1>=10000), t1me2 =read_8253, lnterval_game_port =t1me2-t1me1 lf 1>=10000 then lnterval_game_port =О, end,
НЕОБХОДИМОЕ ОБОРУДОВАНИЕ 2. Цифровые интегральные схемы и операционные усилители требуют напряжения питания +5, +12, -5 и -12 В. Кроме того, для измерения напряжения, тока, сопро­ тивления и других физических характеристик, а также для наблюдения формы сигнала необходимы различные приборы: мультиметры, осциллографы и логичес­ кие пробники. В частности, в опытах с цифровыми устройствами при определе­ нии логического состояния линий и детектирования импульсов применяются логические пробники (см. раздел 2.2); аналоговые и цифровые генераторы ис­ пользуются для получения некоторых видов сигналов (см. раздел 2.3). Все опыты по сопряжению, описанные в этой книге, проводятся с помощью трех эксперимен­ тальных плат: для параллельного, последовательного и игрового портов. Их кон­ струкция представлена в разделе 2.1. 2.4. Источники питания В разделе приведены основные способы получения стабилизированного напряже­ ния положительной и отрицательной полярности для электропитания устройств, описанных в книге. 2.1.1. Источник питания постоянного тока Для работы экспериментальных плат необходим любой источник питания посто­ янного тока, в том числе батареи, на На рис. 2.1 8-15 В, 1 А. изображена схема двуполярного источника питания, формирующе­ го постоянное напряжение+ 16 и -16 В с номинальным током 1,8 А. Силовая часть источника питания состоит из выключателя, переключателя напряжения предохранителя и трансформатора мощностью 50 110/220 В, Вт с двумя независимыми пер­ вичными обмотками, которые можно соединить последовательно (для подключе­ ния к сети переменного тока на 11 О 220 В) или параллельно (для подключения к сети В). Стандартный плавкий предохранитель на 3 А включается последователь­ но с первичной обм01 кой. Во вторичной обмотr<е используются восстанавливаемые
~ 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ Преgохронumель 3А С 1, С2 элекmролumuческuе конgенсаmорЬI sw 6800мкФ/258 2208 1108 NO-------+------' Преgохронumель т+ С2 ЕО------------4 1,85А Т рансqюрмаmор '--------Е:Эт---4---{ А l -1 68 50Bm Рис. 2.1. Источник питания +16 и - 16 В предохранители типа RS183-9629: как только величина тока превышает гранич­ ное значение, их сопротивление становится очень высоким, а когда ток падает, они автоматически возвращаются в исходное состояние. 2.1.2. Источники питания +S, -5, +12, -12 В Получить постоянное напряжение проще всего при помощи стабилитронов. На­ пример, стабилитроны серии BZX79 позволяют регулировать напряжение в пре­ делах +168 о--- --0 5мА GND максuмсльнс.о mок 20мА 2,4-75 В при номинальной мощности 500 мВт и точности стабилизации 5%. На рис. 2.2 изображена схема, которая преоб­ разовывает постоянное напряжение 16 В в на5 , 1 В С НОМИНалЬНЫМ ТОКОМ 20 М А . Пряжение Для получения постоянного напряжения в ос­ i новном применяют стабилизаторы напряжения о----+----о серий GND Рис. 2.2. Источник питания с напряжением +5 В, исnопьзующий стабипитрон 78 ностью и 79L составляет 100 мА, для 78 (положительное напряжение) и 79 (от­ рицательное напряжение). Они могут стабили­ зировать различные напряжения ( +5, +9, + 12, +15 ' +24 ' - 5 ' - 9 ' - 12 ' - 15 ' - 24 В и т.д. ) с точи 5%. 79 - 1 А, Номинальный ток для серий а для 78S и 79S - 2 А. Все стабилиза­ торы имеют автоматическую тепловую защиту от перегрева. На рис. схема, формирующая напряжения +5, +12, -5 и -12 78L 2.3 показана В. В качестве источника входного напряжения можно использовать схему, изоб­ раженную на рис. и 79. 2.1. В схеме на рис. 2.3 применяются стабилизаторы серий 78 Все стабилизаторы необходимо установить на радиаторы, а на каждом вы­ ходе включить восстанавливаемые предохранители на 1 А. Поскольку на стабилизаторах большое падение напряжения, следовательно, входное напряжение должно быть на 2-3 В больше, чем выходное. Эти устройства в холостом режиме работы потребляют относительно большой ток, обычно 1-8 мА. Существуют другие типы стабилизаторов, имеющие малое падение напряжения.
2.1. ИСТОЧНИКИ ПИТАНИЯ ' + 168 [}!] Poguomop \ / DD1 о--------<>---........,--< / Преgохронumело 1А 1---...>-------4:::::!-----0+128 7812 С1 С2 ~1-О_н_Ф_.__ _ _ _+---_J ,ОмкФ ' Преgохронumело 1А / \ DD2 1--...>-------4==!-----0+58 7805 1 С3 С4 F 1 10нФ ОмкФ 08 о---------+---+----+--- f ,, Сб С5 __ DD3 l-_._ _ __._ _-4==!----Q-58 7905 Преgохронumель ' / iA 1 ' 15:фlotJ l св Преgохронumель 1А т 10мкФ -168 DD2 7912 [)-------~--- \ / Cбemoguog R 390 1О мкФ 1онФJ lп ·--1-------<О 08 о EJ -128 ' Cmoбuлuзomoptj Cmoбuлuзamop!j Cmoбuлuзomopt) CmoбuJ1uзamopc. cepuu 78 cepuu 78L cepuu 79 cepuu 79L о о 1 1 1 ~ ОбщuО Bxog 1 8xog -.. . . Bc.xog ~ Общuо ОбщuО ~ Общuо 8x~g Bxog Bug 2.3. Вьхоg 1 1 Рис. -.. . . ,,.... Bug сберху сберху Схема двуnоnярного источника питания +5, -5, + 12 и -12 В Так, например, LM2930A (SGS-Thomson) -- пятивольтовый стабилизатор с падени­ 0,4 В и номинальным током 400 мА. Когда ток падает до 150 мА, падение напряжения уменьшается до 0,2 В. Этот стабилизатор также снабжен до­ полнительными средствами защиты (от превышения входного напряжения 40 В, ем напряжения изменения полярности, а также термозащитой и ограничителем тока). В холостом режиме потребляемый ток равен 22 мА. LM2940CT (National Semiconductor)- ста­ билизатор с малым падением напряжения, который имеет номинальное напряжение
~ 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ +5 В и ток 1 А и потребляет ток порядка 3 мА при разнице входного и выходного 3 В. Если разница напряжений становится менее 3 В, статический ток до 1О мА. Падение напряжения изменяется от 0,5 до 1 В. На рис. 2.4 напряжения возрастает показано расположение выводов этих стабилизаторов и представлены типовые схемы включения. а) () Bxog ,,.... ' Bc.xog 1 Общuu Мuнuмольное ноnр"женuе 5 58 V1n 8х О>-----с-,--.1•--< LM 29!30 1 . Об 0,1мкФI 8 t>X t---1--c-2----0 1 щ I10мкФ mок О 4А GND0>----------~---~-0--------.__----~o бj Мuнuмольное ноnр~женuе 68 8х V1n 4 С1 7мкФ LM 2940 2.4. МоксuмальнtjQ С2 Общ mок 22мкФ Стабилизаторы включения а GND Btox 1 - - - . - - - - - - - ( ' +58 GNDc>-----~--------~~---------{J Рис. +58 Моксuмальнс.О LM2930A и LM2940CT - LM2930A, 6 - LM2940CT 1А GND и типовые схемы Стабилизаторы НТ-7230, НТ-7233, НТ-7250 и НТ-7290 рованные значения напряжений ный выходной ток равен холостого хода того хода 30 3,5 - 500 100 3,0; 3,3; 5,0 и 2.5 (Holtek) дают фикси­ 5%. Максималь­ составляет 100 мВ, а ток В с точностью мА. Падение напряжения мкА. Стабилизаторы НТ-1030 и НТ-1050 имеют ток холос­ мкА и формируют напряжение мА. На рис. 9,0 3 и 5 В. Номинальный ток р;:шен приведено расположение выводов и типовая схема их вклю­ чения. Широко известны также регулируемые стабилизаторы напряжения, например L200C (SGS-Thomson) вить на радиатор. см. рис. 2.6. При использовании их необходимо устано­
2.1. ИСТОЧНИКИ ПИТАНИЯ Tun -..... Bt)xog Общuо~ 8xog 1 30мА 30мА 100мА НТ-1050 НТ-7230 НТ-7233 НТ-7250 НТ-7290 1 Q сберху, 128 248 Cepuo gля gл>=i НТ-72 oxxj cepuu нт-1 cepuu НТ-72ХХ 8xog V1n 8t>xog НТ-10ХХ +58 НТ- 72ХХ С1 С2 10мкФ Общuо 10мкФ GND Рис. 100мА 100мА 100мА 8ug сберху НТ-10 ?·1 5, 1 lmox 3,08 5,08 3,08 3,38 5,08 9,08 ОбщuО Q Cepuo Vout НТ-1030 -..... Bt)xog ~ 8xog 8ug cmcбuлuзcmopo 2.5. Стабилизаторы GND напряжения серий НТ-1 ОХХ и НТ-72ХХ Нозноченuе о бt>боgоб 1 8xog § 9t~~~u.~eнue mока 4 Bxog оnорно20 5 8e>xog нсnряженuя VR1 50 Регулuробкс 12345 nреgельного mокс + 168 l нсгрузкu 2.8 }----+------< 148 2А с1 D,1 мкФ VR2 5К С3 100мкФ Регулuробко бt)хоgного R1 820 GND Рис. нсnряженuя С2 О, 1 мкФ о---------+---4-------+---------о GND 2.6. Реrулируемый стабилизатор напряжения L200C и его типовое включение ~
~ 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ На выходе такой стабилизатор формирует регулируемое напряжение в пределах 2,85-36 В при выходном токе до 2 А. Он имеет защиту по току, термозащиту и защиту от превышения входного напряжения 60 В. Ток холостого хода равен 4,2 мА. 2.1.З. Опорные напряжения В аналого-цифровых и цифро-аналоговых преобразователях необходимы точные опор1-1ые 1-1апряже1-1ия. REF-OЗCNB, напряжения 21 2,5, 5,0 и 10,0 мА, ток холостого хода мум на 2 REF-02CP и REF-01CP (Analog Devices) дают 1%. Максимальный выходной ток равен В с точностью - 1 мА; входное напряжение должно быть как мини­ В больше выходного. На рис. 2.7 представлено расположение выводов этих микросхем (все они имеют защиту от короткого замыкания). +Vs Koppeкuuo ------< 330nФ GND +158 10К Ре2уJН..Jробка Рис. бс.хоgно20 наnряженuя 2.7. Микросхемы источников опорного напряжения серий REF-XX Серии LM4040-XX (National Semiconductor) - это маломощные источ1-1ики опор2,500; 4,096; 5,000; 8, 192 и 10,000 В - и имеющие следующие степени точности: А - О, 1%, В - 0,2%, С - 0,5%, D - 1% и Е - 2%. Ток потребления этих устройств изменяется от 60 мкА для напря­ жения 2,5 В до 100 мкА для 10 В. Все варианты исполнения рассчитаны на макси­ мальный ток 15 мА. Расположение выводов и типовая схема включения приведены на рис. 2.8. Микросхема TLE2425CLP (Texas Instruments) - другой источник опорного на­ пряжения, формирующий напряжение 2,5 В с точностью 0,8%. Максимальный ток 20 мА, ток холостого хода 170 мкА. Входное напряжение изменяется в пределах 4-40 В. Расположение выводов и типовая схема включения показаны на рис. 2.9. 1-1ого 1-1апряже1-1ия, дающие несколько значений напряжения:
2.1. ИСТОЧНИКИ 5 5 @ - N 11 +12 ШJ 158 R 12 +58 + 11 сберху Bug 1 ПИТАНИЯ 1 GND N Рис. + 2.8. Выводы и типовое вкпючение источников опорного напря­ жения серии LM4040 Регулируемый генератор опорного напряжения изображен на рис. 2.10. Он строится на основе переменного резистора и широко используется при тести­ ровании АЦП и ЦАП. Выходное напряжение изменяется от нескольких милливольт до не­ скольких вольт. Для контроля напряжения 1 необходимы высокоточные цифровые вольт­ метры. 2.1.4. 8ug Преобразователи напряжения сберху На рис. 2.11а представлена схема инвертора напряжения, который трансформирует +5 В SI660CJ Btjxog,,.... ' Bxog 1 Общuо в -5 В посредством преобразователя (Siliconix). Микросхема способна генериро­ Bxog вать отрицательное напряжение, равное по мо­ V1n о-- дулю входному положительному в диапазоне 1,5-10 3,5 В вывод GND 7 необхо­ о------<>------{) димо соединить с ~землей», а для напряжения Рис. более вое включение TLE2425 6,5 В - подключить диод последовательно Btoxog --{) +2,508 ОбщuО В. Для напряжения менее TLE 2425 2.9. GND Расположение выводов и типо­ с выходом. Выход имеет внутреннее сопротивле- ние 70 Ом. При выходном токе в режиме холостого хода равен "mо""'"Г 10 мА напряжение составит 4,3 В. Потребляемый ток 170 мкА, а максимальный выходной ток - 40 мА. Переменнr;О -> Cбemoguog 4.58 peзucmop 1ок ---·------о numaнui:i R v 1r< '---l-<">'V>--1--+-----4----+----~ sw Рис. Vout Прецuзuонн"О больммеmр 2.10. Регулируемый генератор напряжения GND
[Ю 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ +58 а) 1 I О Vout 10мкФ +58 б) С3 '--__.__ _ _ _ _ _ ---п '--~---------п GND \--_._---------о v- 1С4 С1 Рис. 2.11. С4 V+ 10мкФ Схемы преобразователей напряжения а - инвертор напряжения 660, б - удвоитель и инвертор напряжения МАХ680 Схема, изображенная на рис. 2.11б, преобразует напряжение +10 и-10 Входное напряжение должно быть в пределах 2-6 в напряжение ветственно. Если на обоих выходах ток достигнет жительном выходе упадет до 7 1О 150 и 90 Ом соот­ мА, то напряжение на поло­ В, а отрицательное станет равным ляемый ток в режиме холостого хода составляет (Maxim). В. Внутреннее сопротивление для положительного и отрицательного сопротивления равно 2.1.5. +5 В В, используя удвоитель и инвертор напряжения МАХ680СРА -6,1 В. Потреб­ 1 мА. Схемы источников питания с гальванической развязкой Эти схемы используются в случаях, когда необходима полная изоляция двух це­ пей'. NME и NMA (Ne\vport Components) - высокоэффективные преобразовате­ ли напряжения, выходы и входы которых изолированы друг от друга. Разница потенциалов между входом и выходом может достигать 1ООО В и более. Преобразо­ ватели серии NME работают с напряжением цию и выходное напряжение 1 5, 12 или 15 5 или 12 В и обеспечив;~ют изоля­ В в зависимости от типа. Пятивольтовые Следует отметить, что такая развязка, как правило, осуществляется с использованием малогабаритных трансформаторов, которые помещаются внутр~, корпуса микросхемы. Прим. науч. ред. -
2.2. ЛОГИЧЕСКИЕ ПРОБНИКИ [}['] преобразователи имеют выходной ток до - 84 мА NMA формируют на вы­ ходе двуполярное напряжение ±5, ±12 и ±15 В при входном напряжении 5 и 12 В. Максимальный выходной ток пятивольтовых преобразователей равен 100 мА, а пятнадцативольтовых - 42 мА. Назначение выводов этих устройств показано на рис. 2.12. и пятнадцативольтовые а) - 67 200 мА, двенадцативольтовые мА. Преобразователи серии ГальбонuческоR разбRзко 6) ГальбонuческаR 1 1 1 1 1 --,l1 1 1 2 Vcc : GND : 3 4 ов v+ GND разбRзко ,-г- 2 3 4 4 Vcc v- ов v+ Вхоgное Btjxogнoe Вхоgное Btjxogнoe наnрRженuе наnрRженuе ноnрRженuе нonps.-iжeнue Рис. 2.12. Преобразователи напряжения с гальванической развязкой: а - серия NME, однополярные; 6 - серия NMA, двуполярные 2.2. Логические пробники Простой логический пробник можно построить на базе таких буферных микро­ схем, как 74LS244 или 74LS245 (рис. 2.13а). Ограничительные резисторы вклю­ чены последовательно со светодиодами. Когда на входе буфера высокий уровень, на выходе он тоже высокий; при этом загорается соответствующий светодиод. Описываемый пробник обеспечивает тесты одновременно по нескольким кана­ лам, однако он не способен фиксировать состояние переходных процессов и вы­ сокочастотные импульсные последовательности. Схема усовершенствованного логического пробника показана на рис. 2.13б. Он строится на базе компаратора напряжения LМЗЗ9 и имеет три светодиода: крас­ ный, желтый и зеленый. При обнаружении высокого уровня загорается красный светодиод, низкого - зеленый, а во время переходных процессов - желтый. Если на вход поступает последовательность импульсов, одновременно горят красный и зеленый светодиоды. Однако и такая схема не способна регистрировать очень короткие импульсы. Для этого необходимо использовать одновибраторы. 2.3. Цифровые и аналоговые генераторы сигналов В данном разделе приводятся основные сведения по цифровым и аналоговым ге­ нераторам сигналов, которые используются для тестирования устройств, пред­ ставленных в книге.
ею 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ +58 aj Q- --{l>- Дло cmoнgopmнt>x Дло слобоmочнш cбemoguogoб R cбemoguogoб R = 200 R = 2к0м Ом ,, LED1 ,, LED2 " LED3 " LED4 D \!"' "" <V ,, D '° LED5 о Q_ е- ,, :J :::! LED6 7 -[t>- R ,, R ,, LED7 8 LEDB l) l) N 74LS244 uлu 1 1 о z l) 74НСТ244 бj 58 D1 8xog Желmс.О R1 1М R12 220 R9 R8 220 1М D3 R2 С1 10мкФ 4,7К А3 D4 D2 D4 R3 R11 560К 1М LM339 1N4148 --о Рис. 2.13. GND Схемы логических пробников: а - на триггерах Шмитта 7 4LS244; 6 - на компараторе напряжений LМЗЗ9 2.3.1. Цифровые генераторы сигналов На рис. 2.14а показана схема восьмиканального геиератора логических состояний. Он содержит восемь переключателей и резисторов по 1 кОм. Когда переключатель разомкнут, на выходе соответствующего канала формируется высокий уровень; при
2.З. ЦИФРОВЫЕ И АНАЛОГОВЫЕ ГЕНЕРАТОРЫ СИГНАЛОВ !}[) его включении на выходе появляется низкий уровень. При высоком логическом уровне каждый канал может управлять 25 схемами ТТЛШ. Недостаток этой схе­ мы состоит в так называемом дребезге контактов, когда при изменении положе­ ния переключателя состояние выходного сигнала изменяется не мгновенно, а сам сигнал содержит множество колебаний в течение короткого промежутка време­ ни. Устранить подобное явление позволяет схема подавления дребезга контак­ тов. На рис. 2.14б изображена такая схема с использованием триггера Шмитта с инвертором зомкнут - 74LS14. Когда переключатель замкнут, на выходе единица, когда ра­ ноль. D1 а) D2 D4 D3 D5 07 Dб +58 08 R1 SW1 SW2 SW3 SW4 SW5 SW7 SWб R8 1К SW8 6) 51 Нормально разомкнут в) DD1o 1/6 74LS14 R1 4 7К R2 r---o- P8116 Нажать gл~ nереклюценuя Рис. 2.14. l ·~:. С1 10мкФ R4 270 R3 1К 4 ,, Q о 11 +58 Cбemoguog 12 8t>xog 13 D010 1/2 74LS73 GNO Схемы генераторов логического состояния а - многоканальный генератор логических состояний, 6 - схема защиты ат дребезга, в - переключатель состояния с защелкай
[!О:] 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ а) Другой тип логического генератора - это генератор с защелкой (рис. 2.14в ). При нажа­ тии на кнопку выходное состояние изменя­ ется и остается постоянным до следующего R1 9, 1 к нажатия. Две схемы генераторов прямоугольных им­ R2 пульсов показаны на рис. 9, 1 к в~хоg ттп со скбажносmью 67% 2.15. формирует сигнал частотой ностью с1 Первая схема построена на основе таймера (рис. 2.15а), она 67%. 1 кГц со скваж­ На рис. 2.15б представлен гене­ ратор с перестраиваемой частотой, использу­ 1мкФ ющий 14-разрядный счетчик со встроенным генератором. Частота определяется резисто­ Частота= Rs ром --- = 1ORt 2.2Rt Ct Прuмер Rt=100K, Ct Rt и конденсатором Ct. Для достижения большой точности часто- =1000nФ ты применяются кварцевые генераторы, три f=4,5кГц схемы которых представлены на рис. Первый 10 генератор 74LS04. 2.16. частотой МГц использует опорный кварц и элементы инвертора 6) сигналов 10 МГц Меныпие час­ тоты можно получить с помощью делителей 04 (f/16) частоты. На рис. 2.16б изображена схема гене­ 05 (f/32) ратора на основе кварца 06 со встроенным 07 рующим 08 CD4060 74НСТ4060 2.15. прямоугольные импульсы разных 09 частот. На рис. 2.16в представлена схема про­ 010 граммируемого кварцевого генератора ЕХО-3 с встроенным про­ 012 (lnterface Quartz Devices) 013 граммируемым делителем частоты, который 014 обеспечивает деление исходной частоты на 2п (n Рис. 2,4576 МГц и счетчика генератором CD4060, форми­ Генераторы сигналов а - на таймере555,§_:--на!О~~Е!РеСD4060__ = 1, 2, ... , 8). Исходный сигнал формируется встроен­ ным кварцевым генератором. Делитель вы­ бирается с помощью выводов А, В и С. Но­ миналы исходных частот могут быть равны 18 (RS296-891) и 19,661 МГц 12 (RS296-879), 14,318 (RS296-885), (RS296-908). 2.3.2. Аналоговые генераторы сигналов На рис. 2.17 изображен аналоговый генератор сигналов на базе микросхемы функ­ ционального генератора ICL8038BC (Harris Semiconductor). Он одновременно
2.З. ЦИФРОВЫЕ И АНАЛОГОВЫЕ ГЕНЕРАТОРЫ СИГНАЛОВ ------n+58 а) 74LS04 74LS04 5 6 8~xog (10МГu ПЛ) ~-----<1 6) С2 С1 С1 =С2=22nФ о Х=2,4576НГu R 4,7М GND Х=1МГu Х=4,9152МГu С1 =С2=33nФ С1 =С2=27nФ R=10M R=1M +58 153,6кГu 76,8кГu 38,4кГu 1 19,2кГu 9 ,6кГu 4,8кГu 2,4кГu 600Гu 300Гu CD4060 74НСТ4060 в) - - - - - - < " > +58 8 с о о о 2 о о 1 4 о 1 о 8 8 о 1 1 16 32 с А 1 о о 1 о 1 1 1 1 о 1 1 N А 8~xog ч ocmomo= Исхоqна>~ чocmoma N 64 128 256 Рис. 2.16. Кварцевые генераторы: а - кварцевый генератор на микросхеме 7 4LS04; 6 - цифровой генератор на микросхеме CD4060; в - программируемый кварцевый генератор [}IJ
[ill 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ Пogcmpouкo цocmomtj О, 1 мкФ Ре2улuробко скбожносmu I 1N4148 4,7нФ 15К 084 ~~ Промоу2ольнt>е 4,7К ~_J 3,9 К uмnульсt> 4,7К Сuнусоugольное >-'-~=::1-·О ноnр~женuе Чocmomo 10М т е с§ ,.._ ..L е с§ о---а- ... ...,.._ Рис. 2.17. Аналоговый генератор сигналов на ICL8038BC формирует сигналы синусоидальной, прямоугольной и треугольной форм с пере­ страиваемой частотой в диапазоне 20-18000 Гц, которые через три операционных усилителя поступают на выход. 2.4. Экспериментальные платы параллельного, последовательного и игрового портов Экспериментальные платы служат связующим звеном между компьютером и пользовательскими схемами. Они снабжены светодиодами для индикации логи­ ческого состояния каждого входа и выхода, что улучшает наглядность операции ввода/вывода. Кроме того, на каждой плате имеется колодка, к которой можно подключить экспериментальную схему пользователя. Все входные цифровые линии подсоединяются к компьютеру через триггер Шмитта. Для работы плат необходим нестабилизированный источник постоянного тока 8-15 В. Размещен­ ный на платах стабилизатор 7805 преобразует входное напряжение в напряжение +5 В. Ток источника питания ограничивается с помощью встроенного предохрани­ теля на 1 А. В платах использованы распространенные электронные компоненты, монтаж выполнен на односторонних печатных платах, позволяющих проводить различные э1<сперименты по сопряжению внешних устройств с компьютером. 2.4.1. Экспериментальная плата параллельного порта На рис. 2.18 изображена принципиальная схема экспериментальной платы парал­ лельного порта.
2.4. ЭКСПЕРИМЕНТАЛЬНЫЕ ПЛАТЫ ПОРТОВ Слобоmоцнt>е cбemoguogt> D2 JS 36-конmокmнаs:~ D9 розетка nароллельного RL1 порmо Нозноченuе 8х3,3К u J3 8-конmокmноя (Ю номера конmакmоб колоgко Лuнuu gаннt:)х 080 (2) 081 (3) "' о х :о 03 082 (4) 04 083 (5) :::, " :о I I о 084 (6) "' " "' :о I 085 (7) о х :о (Q 086 (В) 087 (9) RL2 Слобоmочнt>е cбemoguogt> 010 Вх1ОО 017 RL3 8х3,3К Лuнuu упробленuя ~(1) J4 8-конmокmноs:~ колоgко ~(14) iNiiiAOR ( 31 ) SON (36) Лuнuu ":> " cocmoянus:i I о SLCT (13) Е~ uо "' о u~ РЕ (12) :> :> I :> с:; АёК (10) BUSY (11) RL4 Vcc Вх100 С4 IО,01мкФ Рис. 2.18. Схема экспериментапьнай ппаты параппепьного порта о GNO (19 30)
[]!] 2.НЕОБХОДИМОЕ__ о_Б_О_РУ_д_о~ВА_Н_И_Е~~~~~~~~~~~~-~~~~~ Линии данных Шмитта DBO - DB7 порта заведены на входы буферов на триггерах 74LS244 (DD2) через резистивную матрицу сопротивлением 100 Ом. Выходы буферов подключены к выходной колодке. Каждая линия соединена со светодиодом через резистор 3,3 кОм. Когда на линии высокий уровень, загорается соответствующий светодиод. Четыре выходные линии управления организованы на плате так же, как и линии данных. Четыре входа соединяются с четырьмя бу­ ферами DD3. Выходы буферов подключены к четырем входным линиям порта состояния через резисторы сопротивлением 100 Ом. Линии состояния порта имеют пять входных линий, но только четыре из них включены указанным обра­ зом. Логическое состояние таких линий также контролируется светодиодами. Пятая линия порта состояния (BUSY) постоянно соединена с «землей». Это удобно, если для работы с платой используются команды управления принтером высокого уровня. На линии в таком случае устанавливается низкий уровень, по­ казывающий, что плата готова к приему данных. Источник питания выполнен на стабилизаторе вить на радиаторе) и имеет выходное напряжение 7805 (его +5 В при необходимо устано­ токе.1 А (рис. Необходимые компоненты для сборки платы представлены в табл. Питание подается на плату через контакт SK1. Контакт SW1 2.19). 2.1. управляет вклю­ чением/выключением питания. Для защиты по току используется предохрани­ тель. Состояние «включено/вьшлючено» контролируется светодиодом. Входное и выходное напряжения подаются на четырехконтактную колодку Таблица 2.1. Компоненты, используемые в экспериментальной плате паралпельного порта Резисторы (металлопленочные, Rl 390 Rll, RLЗ RL2. RL4 1%, 0,25 Вт) Ом Восьмиканальная резистивная матрица, 3,3 кОм Восьмиканальная резистивная матрица, 100 Ом Конденсаторы Cl, СЗ, С4 С2 100нФ 10 мкФ Полупроводниковые элементы 001 7805 - стабилизатор напряжения, 1 А, +5 В 002, 003 74LS244 01 Зеленый светодиод, 02 - 017 Маломощные красные светодиоды. 5 мм Разъемы и контакты J1 Четырехконтактная колодка J2 Держатель для предохранителя JЗ, J4 J1. Восьмиконтактная колодка 3 мм
2.4. ЭКСПЕРИМЕНТАЛЬНЫЕ ПЛАТЫ ПОРТОВ Таблица 2.1. ~ Компоненты, используемые в экспериментальной плате параллельного порта (окончание) Разъемы и контакты J5 36-контактный гнездовой разъем параллельного порта SK1 Штыревой разъем питания, SW1 Микропереключатель для печатных плат Предохранитель 25 ММ, 1 А Радиатор 5 2,5 мм Другие элементы SPDT ·с на ватт Печатные платы Держатели для светодиодов 3 мм Винты крепления печатных плат ' +58 Poguomop в~хоg ~~~-R-,~~~-.-~~-.---J 390 С2 \ ( J2 / flpegoxpaнumeль 1А DD1 sw1 7805 Общuо 10мкФ D1 Cбemoguog J1 4-конmакmно~ колоgка 8 158 GND Розьем Рис. 2.19. +58 numoнu~ Схема источника питания для пnат сопряжения 2.4.2. Экспериментальная плата последовательного порта Принципиальная схема экспериментальной платы последовательного порта при­ ведена на рис. 2.20. Три выходные липни последовательного порта приемники RS232-TTЛ МАХ238 (DDЗ, Maxim), (TD, RTS и DTR) подаются на где уровень напряжения RS232 преобразуется в уровень напряжения ТТЛ. Выходы DDЗ соединены с буфера­ ми на триггерах lllмитта 74LS244 (DD2), выходы которых, в свою очередь, под­ ]3. Логическое состояние каждой линии ключены к восьмиконтакпюй колодке
~ 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ 02 DB Слобоmочнь~е cбemoguogt> R2 RB С3 3,3К С7 1мкФ С3 J3 8-конmакmная колоgка С4 GND DTR (7) О" i1 " TD TD (5) RTS RTS (6) RD RD (1) DSR DSR (3) DCD DCD (4) (Q О" о х (Q стs (2) GND (9. 10) J4 10-кoнmaкmнtjCJ розьем Рис. 2.20. Схема экспериментапьной ппаты поспедоватепьного порта контролируется при помощи светодиодов. Четыре входных сигнала DCD и CTS) подаются на буферы 74LS244. (RD, DSR, Выходы буферов соединены с DDЗ, где уровень напряжения ТТЛ преобразуется в уровень RS232; их логическое со­ стояние контролируется светодиодами. Используется тот же источник питания, что и для экспериментальной платы параллельного порта. Микросхема МАХ238 - это преобразователь напряжения. Она содержит во­ семь преобразователей уровня, четыре из которых превращают уровень напряже­ ния RS232 в уровень ТТЛ/КМОП, а четыре других - наоборот. Все преобразова­ тели инвертируют сигнал. Для работы микросхемы необходимы пять внешних конденсаторов по 1 мкФ. Напряжение питания микросхемы составляет пользуемые компоненты приведены в табл. 2.2. +5 В. Ис­
2.4. ЭКСПЕРИМЕНТАЛЬНЫЕ ПЛАТЫ ПОРТОВ Таблица 2.2. [}!] Компоненты, используемые в экспериментальной плате последовательного порта Резисторы (металлопленочные, Rl 390 Ом R2- R8 3,3 кОм 1%, 0,25 Вт) Конденсаторы 100 нФ (1 мкФ С2 10 О-С7 1 мкФ Полупроводниковые элементы стабилизатор напряжения, DD1 7805 - DD2 74LS244 1 А, +5 DDЗ MAX238CNG D1 Зеленый светодиод, D2- D8 Маломощные красные светодиоды, 5 В мм 3 мм Разъемы и контакты Четырехконтактная колодка Jl J2 J3 Держатель для предохранителя J4 Десятиконтактный разъем для печатной платы SK1 Штыревой контакт питания, Восьмиконтактная колодка 2,5 мм Другие элементы SW1 Микропереключатель для печатных плат Предохранитель 25 мм, 1 А 5 ·с на ватт Радиатор SPDT Печатные платы Держатели для светодиодов 3 мм Винты крепления печатных плат Девятиконтактный гнездовой разъем D-типа в корпусе Девятижильный сигнальный кабель 2.4.3. 1м Экспериментальная плата игрового порта Принципиальная схема экспериментальной платы игрового порта приведена на рис. 2 21. Четыре аналоговых входа (R1 - R4) восьмиконтактной колодки JЗ; напряжение через предохранитель на 25 подсоединены к четырем контактам +5 В от компьютера подводится к ней мА. Это напряжение используется не как напряжение
[}!] 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ J3 8-конmакmна>1 колоgка Преgохронumель 25мА Vcc R1 п "';! Vcc <С) Q) п R2 ~ <С) о "'g о I Vcc R3 <t Vcc R4 1 Аноло2обtjе l+:iв -О +58 (1) RXA 02 бxogt> RXA (2) 05 Слабоmочнtjе }',. RYA cбemoguagt> RXA (3) RXB RYB RXB (4) о RYB (5) 002 J4 74LS244 4-конmокmнао;~ колоgка Rб IN2 R9 100 Лuнuu cocmo):IHU>I IN1A -о IN1A IN2A о IN2A (7) IN3 (6) IN1 В (8) IN4 IN2B (9) +58 С3 I GNO (1 О) О, 1мкФ Jб 10-конmакmнtjО разьем Рис. 2.21. Схема экспериментаnьной пnаты игрового порта питания, а только для подключения резисторов. Сигналы с четырех цифровых вхо­ дов (IN 1 - IN4) поступают на буферы, выполненные на триггерах Шмитта 74LS244 (DD2). Выходы буферов соединены с четырьмя входными линиями игрового порта через резисторы по 100 Ом. Логические состояния цифровых входов отображаются светодиодами. Источник питания тот же, что и для экспериментальной платы па­ раллелыюго порта. Необходимые компоненты приведены в табл. 2.3. Игровые порты некоторых компьютеров поддерживают только один джойстик. В таком случае используются два аналоговых и два цифровых капала.
2.4. ЭКСПЕРИМЕНТАЛЬНЫЕ ПЛАТЫ ПОРТОВ ~ Таблица 2.3. Компоненты, используемые в экспериментальной плате игрового порта Резисторы (металлопленочные, R1 390 Ом R2 - R5 3,3 кОм R9 100 Ом Rб- 1%, 0,25 Вт) Конденсаторы С1, СЗ 100 С2 10 нФ мкФ Полупроводниковые элементы стабилизатор напряжения. 1 А, +5 DD1 7805 - DD2 74LS244 01 Зеленый светодиод, 02- 08 Маломощные красные светодиоды, 5 В мм 3 мм Разъемы и контакты J1 J2 Четырехконтактная колодка Держатель для предохранителя J3 Восьмиконтактная колодка 14 Четырехконтактная колодка J5 Держатель для предохранителя Jб Десятиконтактный разъем для печатной платы SK1 Штыревой контакт питания, 2,5 мм Другие элементы Микропереключатель для печатных плат SW1 Предохранитель 1 25 мм, 1А Предохранитель 2 25 ММ, 25 Радиатор SPDT мА 5 °С на ватт 3 мм Печатные платы Держатели для светодиодов Винты крепления печатных плат 15-контактный штыревой разъем О-типа в корпусе Десятижильный экранированный 1м сигнальный кабель 2.4.4. Устройство экспериментальных плат Фотошаблоны печатных плат изображены на рис. ментов показано на рис. 2.25-2.27. 2.22-2.24, расположение эле­
(!О] 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ Рис. 2.22. Фотошаблон печатной платы дпя параллельного порта
2.5. СРЕДСТВА РАЗРАБОТКИ ПЛАТ Рис. 2.5. (!I] 2.23. Фотошаблон печатной платы дпя последовательного порта Средства разработки плат Средства разработки включают в себя макетные, монтажные и печатные платы Использование макетных плат - самый быстрый способ сосrавления временных схем, поэтому он удобен на этапе эксперимеН1альных работ Мошажпые и печатные платы применяются для устройств, собранных по уже апробированным схемам
П р е gохр о нumель 25мА Рис:. 2.24. Фотошаблон печатноИ платы для игрового порта
2.5. СРЕДСТВА РАЗРАБОТКИ ПЛАТ Сьемноя колоg к о 01 - - 03 - - 10 10 04 - - IG 05 - - 10 02 - - CXJ lб> Экс;n е рuменm ольноs:~ о J3 02 .. . 09 :~ ~. l 0 2 о ;; 030 ~ 0 4 о "' :::> Об - - IФ 05 0 07 - - 0б 08 - - С) nлomo парал лельного D J С3 С::> RL1 3, 3К nopmo о J5 о DQ 002 LS24 4 о о о 8 ... 158 oc - & GND Рис. 2.25. Распол ожен ие элементов н а экспериментальной плате паралл ель ного порта L~J
Ш'J 2. НЕОБХОДИМОЕ ОБОРУДОВАНИЕ СьемнаR о колоgко GND - ОФ DTR - 00 00 TD - J3 С4 СВ lмкФ о RD CTS DSR DCD 0Э RTS - ТD 00 RD - - RTS DTR ND GND DSR - - ОФ 8 ~ "'~ "' DCD - - 00 стs ОФ 158 DC - - 00 GND - - ОФ о 00 GND - { +5В - J4 L.:О:..;Ф::....1._..1 С2 8 Рис. 158 DC о --е- GND 2.26. Расположение элементов на экспериментальной плате последовательного порта Сьемна~ колоgко Vcc О (S) D Vcc 0 R1 0 .i'i Vcc - 00 00 " "" "' Q R2 - ОЭ D "' Rl - - о D о а J Vcc - - R3 Vcc - R4 - - ~ о +58 RXA RYA RX8 RY8 IN1A IN2A IN18 IN2B GND R2 О Vcc 0 R3 ОФ J5 25"'1А / 1 ........___.._. О Vcc 00 J 3 00 ОФ .____.___. i{ : ;: =1::i :::J 0 IN1A - - ОФ 1 ~ {' '",::: 1::11 ~ GND - 00 +58 - ОФ С2 8 Рис. о 158 D C - - e - G N D 2.27. Расположение элементов на экспериментальной плате игрового порта
3. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ В данной главе представлены программы управления экспериментальными пла­ тами параллельного, последовательного и игрового портов, написанные на трех языках: (TPW) Borland Turbo Pascal 6 для DOS (ТР6), Borland Turbo Pascal для Windows Microsoft Visual Basic 3 (VВЗ). Полный пакет ПО состоит из двух час­ и тей: непосредственно программ управления и библиотечных программ. К числу программ управления относятся: О О о CENTEXP.PAS для экспериментальной платы параллельного порта, язык ТР6; CENTEXP для экспериментальной платы параллельного порта, язык VВЗ; RS232EXP.PAS для экспериментальной платы последовательного порта, язык ТР6; О О О RS232EXP для экспериментальной платы последовательного порта, язык VВЗ; GAMEEXP.PAS для экспериментальной платы игрового порта, язык ТР6; GAMEEXP для экспериментальной платы игрового порта, язык VВЗ. Библиотечных программ три: О TPLIВ1.PAS - библиотека ресурсов No 1, язык ТР6; о TPLIВ2.PAS - библиотека ресурсов No 2, язык ТР6; о WLIВ1.PAS - библиотека ресурсов No 1, язык TPW. Библиотеки ресурсов, написанные на языке ТР6, имеют набор процедур и функ­ ций для основных операций ввода/вывода параллельного, последовательного и иг­ рового портов, обработки нажатия клавиши, вывода сообщений на экран и т.д. Эти библиотеки можно включить в пользовательские программы, тогда все процедуры и функции вызываются в дальнейшем из них. Те же программы, написанные на TPW, допустимо оформить в виде библиотеки динамичешой компоновки для
~ З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Windows (DLL) и впоследствии вызывать из любой программы для писанной на VВЗ, Visual Windows, на­ С и т.д. Использование программ позволяет проследить основные операции ввода/вы­ вода и провести простые эксперименты по сопряжению компьютера с внешними устройствами. 3.1. Программное обеспечение для экспериментальной платы пар~ллельного порта В разделе представлены тексты программ управления экспериментальной платой параллельного порта и необходимые пояснения к ним. 3.1.1. Описание программы CENTEXP.PAS Программа выполняет следующие функции: о сообщает о количестве установленных на компьютере параллельных портов; о позволяет выбрать номер порта для дальнейшего использования; о изменяет состояние битов регистра данных (8 бит) и регистра управления (4бита); о считывает данные из регистра состояния (4 бита). После запуска программы на экран выводится следующая информация: Number of LPT installed 2 Addresses for LPT1 to LPT4 888 632 Select LPT to Ье used (1,2,3 or 4) О О Первая строка показывает количество установленных на компьютере парал­ лельных портов (в данном примере - два), вторая - их базовые адреса. Третья строка позволяет выбрать номер порта для дальнейшего использования, при этом на ::экран выводится виртуальная панель управления (рис. На панели изображено 16 3.1). виртуальных светодиодов, соответствующих реаль­ ным светодиодам на экспериментальной плате. Восемь из них соотносятся с би­ тами регистра данных, четыре тыре - - с битами регистра управления и оставшиеся че­ с битами регистра состояния. Внизу экрана расположена панель помощи, на которой показаны клавиши управления программой с кратким описанием их функций: о о о [ARROW] (клавиши управления курсором) - выбор выходной линии; [SPASE] (пробел) - изменение состояния выбранной линии; [Q] или [q] - выход из программы. Нажимая на клавиши r и~. можно указать одну из 12 линий, которые управ­ ляются компьютером. Выбранная линия помечается окружностью вокруг вирту­ ального светодиода. Состояние светодиода изменяется нажатием на клавишу про­ бела; красный цвет свидетельствует о наличии высокого уровня.
3.1. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПАРАЛЛЕЛЬНОГО ПОРТА [AR.RO~}: Select • led [Q}: quit [SPACE]: Ql.•nge LED status Кеу definition агеа Рис. 3.1. Виртуальная панель управления дпя экспериментальной платы параллельного порта Текст программы CENTEXP.PAS Program Centron1c_Exper1mental_Board. (•Программа управления экспериментальной платой параллельного порта uses graph,crt.dos: var i.led_selected integer; ch char; status.array[1 .. 18) of integer, key_pressed:str1ng[10); (•Подключение двух библиотек: {$! TLIB1 и TLIB2.•) с \1oexp\tpl1Ы.pas} {$!с \1oexp\tpl1b2.pas} procedure Draw_panel; (•Рисование панели управления экспериментальной платой.•) Ьеgш (•Рисование 16 светодиодов на экране setbkcoloг( cyan ); •) •) [!!]
[!'!] 3. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ fог fог fог i:=1 to 16 do status[i]:=O; i:=1 to 8 do dгaw_led(30+i•30, 350, status[i]); i:=1 to 8 do dгaw_led(340+i•30, 350, status[B+i]); (•Вывод названий.•) draw_led(20, 20, 1); draw_message(50, 20, 70, 20, lightЬlue, · LEO ON ·,О, 1, yellow); draw_led(20,60,0); draw_message(50,60, 70,20, lightЫue, 'LEO OFF' ,О, 1,yellow); draw_message(50,390,230,20,Ыue, · ОАТА PORT 01 - 08 · ,0,1,yellow); draw_message(360,390,110,20,Ьlue, · CONTROL 01 - 04 ',0,1,yellow); draw_message(480,390, 110,20,Ыuе, · STATUS 01 - 04 ',О, 1,yellow); (•Рисование панели помощи внизу.•) setfillstyle(1,magenta): bar(1,420,800,480); settextstyle(O,O, 1); outtextxy(20,430, '[ARROW]: Select а LEO [SPACE]:Change LEO status [Q]:Quit' ); (•Рисование центрального сообщения.•) dгaw_message(60, 200, 500, 50, Ыuе, ·Сепtгопiс Ехре rimeпtal Board ·,О, 1, yellow); (•Инициализация выходов.•) write_data_port(p_address,O); write_coпtrol_port(P_address,O); епd; Procedure Output_Iпput; (•Процедура ввода/вывода.•) var output_byte, iпput_byte:byte; begiп (•Вычисление значения данных, передаваемых в порт данных.*) output_byte: =О; fог i:=1 to 8 do output_byte:=output_byte+status[i]•bit_weight(i); write_data_port(P_address,output_byte); (•Вычисление значения данных, передаваемых в порт управления.•) output_byte: =О: fог i:=9 to 12 do output_byte:=output_byte+status[i]•bit_weight(i-8); write_coпtrol_poгt(P_address,output_byte); (•Считывание данных из порта состояния и вычисление состояния светодиодов.•) iпput_byte:=гead_status_poгt(P_addгess); fог i:=1 to 4 do status[12+i]:=rouпd((iпput_byte апd bit_weight(i))/bit_weight(i)); епd; Procedure scaп_keyboaгd; (•Опрос клавиатуры для обнаружения нажатия клавиши.•) vаг led_selected_old:iпtegeг; begiп led_selected_old:=led_selected; (•Обнаружение нажатия клавиши.•) key_pressed:=getkey; if key_pressed='LEFт· theп led_selected:=led_selected-1; if key_pressed='RIGHT' theп led_selected:=led_selected+1; if key_pressed=' · theп status[led_selected]:=1-status[led_selected]; (•Показ виртуальных светодиодов и их состояния.•) setbkcolor( суап): fог i:=1 to 8 do draw_led(З0+1•30,350,status[i]);
3.1. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПАРАЛЛЕЛЬНОГО ПОРТА (Ю for i:=1 to 4 do draw_led(340+1•30,350,status[B+i]); output_input; for i:=5 to 8 do draw_led(340+i•З0,350,status[8+i]); if led_selected>12 then led_selected:=12; if led_selected<1 theп led_selected:=1; (•Отображение окружности вокруг выбранного светодиода.•) setlinestyle(0,0,3); setcolor(cyaп); if led_selected_old<=B theп circle(ЗO+ЗO•led_selected_old,350,15) else circle(340+ЗO•(led_selected_old-8),350, 15); setcolor( yellow); if led_selected<=B then c1rcle(30+30•led_selected,350. 15) else c1rcle(340+30•(led_selected-8),350, 15); епd; (•Главная программа.•) beg1n сепt roп1c_add ress; (•Ввод адреса параллельного порта. •) iпitial1ze_graph; (•Инициализация графического режима.•) draw_paпel; (•Рисование виртуапьной панели.•) led_selected: =1; repeat scaп_keyboa rd; uпtil (key_pressed='Q') closegraph; (•Опрос клавиатуры для обнаружения нажатия клавиши.*) ог (key_pressed='q'); (•Закрытие графического режима.•) епd. Здесь используются две библиотеки - TPLIB1.PAS INCLUDE. и TPLIB2.PAS, которые подключаются с помощью директивы ТР6 {$I c:\1oexp\tpl1b1.pas} {$I c:\ioexp\tpl1b2.pas} Программа содержит три главные процедуры, находящиеся в библиотеке TLIB2.PAS: Draw_panei рисует виртуальную панель управления эксперименталь­ ной платой, Draw_led() и Draw_message() - изображения виртуальных светодиодов и надписи. Процедура Output_input управляет операциями ввода/вывода парал­ лелыюго порта, Write_data_port(), write_control_port() и read_status_port()oпepaциями записи в регистры порта и чтения из них; они содержатся в библио­ теке TPLIВ 1.PAS. Процедура Scan_keyboard опрашивает клавиатуру для обнаружения нажатия кла­ getkey из библиотеки TPLIB2.PAS. виш управления. Здесь используется функция 3.1.2. Описание программы CENTEXP Программа написана на языке VВЗ и выполняет следующие функции: о сообщает о количестве установленных на компьютере параллельных портов; о позволяет выбрать номер порта для его дальнейшего использования; о изменяет состояние битов регистра данных (4 (8 бит) и регистра управления бита); о считывает данные из регистра состояния (4 линии).
(!О] 3. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Для запуска программы в среде Windows нужно нажать кнопку Пуск и выбрать пункт меню Вьшолнить, а затем вписать ее полное имя путь + CENTEXP. После щелчка по кнопке ОК на экран выводится сообщение о количестве параллельных портов, установленных на компьютере, и их базовых адресах (рис. Рис. 3.2. 3 2). Сообщение о количестве установленных параллельных портов Нажмите кнопку ОК, и на экране появится другое окно (рис. 3.3). Здесь необ­ ходимо выбрать номер порта, к которому подключена экспериментальная плата. Введите номер порта ( 1-4) и щелкните по ОК. Вы увидите окно управления экс­ периментальной платой параллельного порта (рис. онную панель и о Get it - 15 кнопок, 3.4), содержащее информаци­ которые выполняют следующие функции· обновление информации о состоянии входов. Красный цвет свето­ диода свидетельствует о высоком уровне соответствующей линии, о 0-1 - изменение состояния битов регистра данных и управления При этом на панель выводится номер указанного порта и его базовый адрес, о о Cliange - выбор другого порта, Quit - выход из программы.
3.1. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПАРАЛЛЕЛЬНОГО ПОРТА Рис. ШJ 3.3. Окно выбора параллельного порта Текст программы СЕNТЕХР WLI81 DLL 81 t_we1ght () Read_status_port() Wr1te_data_port() и Wr1te_control_port() Declare Funct1on Centron1c Llb С \Ioexp\Wl1Ы dll (8yVal Х As Integer) As Integer Declare Funct1on 81t_we1ght L1b С \Ioexp\Wl1Ы dll (8yVal Х As Integer) As Integer Declare Funct1on Read_status_port Llb С \Ioexp\Wl1Ы dll (8yVal address As Integer) As Integer Declare Funct1on Wr1te_data_port L1b С \Ioexp\Wl1Ы dll (8yVal address As Integer 8yVal Output_data As Integer) As Integer Declare Funct1on Wr1te_control_port L1b С \loexp\Wl1Ы dll (8yVal address As Integer 8yVal Output_data As Integer) As Integer Объявление функции библиотеки динамическои компоновки Объявляемые функции Centroшc() Sub Command1_Cl1ck() lnput_byte =read_status_port(P_address) For l =12 to 15 status(1 )=( lnput_byte And 81 t_we1gnt(1 11))/8lt_we1ght(1-11) If status(1)=1 Then Shape1(1) 8ackColor=&HFF& Else Shape1(1) Next l End Sub 8ackColor=Ьlack
(О] З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Рис. 3.4. Окно управления экспериментальной платой параллельного порта Sub Command1_MouseMove(Button As Integer Sh1ft As Integer, Х As S1ngle LabelЗ Capt1on= Get the status of the Status port inputs (4 inputs) End Sub У As S1ngle) Sub Command2_cl1ck (1ndex As Integer) Изменение состояния выходов регистра данных и управления status(1ndex)=1-status(1ndex) Изменение If status( lпdex) =1 Then Shape1 (1ndex) BackColor=&HFF& Else Shape1 (lndex) BackColor=Ыack Вывод состояния на виртуальные светодиоды Вывод байта в регистр данных Output_byte=O For i=O То 7 Output_byte=Output_byte+status(l)•B1t_we1ght(1+1) Next i dummy=Wr1te_data_port(P_address Output_byte) Формирование байта для передачи Запись байта в регистр данных Вывод баита в регистр управления Output_byte=O For 1=8 То 11 Output_byte=Output_byte+status(1}*Blt_weight(1-7) Next i dummy=Wrlte_control_port(P_address Output_byte) Формирование байта для передачи Запись байта в регистр управления
3.1. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПАРАЛЛЕЛЬНОГО ПОРТА [![) 'Чтение данных регистра состояния. iпput_byte=Read_status_port(P_address) For i=12 То 15 'Опредепение состояния каждого бита. status(i)=(iпput_byteAпd B1t_weight(1-11))/Bit_weight(i-11) 'Вывод состояния на виртуапьные светодиоды. If status(i)=1 Тhеп Shape1(i).BackColor=&HFF& Else Shape1(i).BackColor=Ыack Next i Епd Sub Sub Commaпd2_MouseMove(1пdex As As S1пgle) Iпteger, Buttoп As Iпteger, Shift As Iпteger, Х As Siпgle, У 'Отображение подсказки при движении указатепя мыши над кноnкой. If iпdex<= 7 Тhеп LabelЗ.Captioп="Chaпge status of Data port outputs (8 outputs)" Else LabelЗ Captioп="Chaпge Епd status of Coпtrol port outputs (4 outputs)" If Sub Епd Sub CommaпdЗ_Cl1ck() ·выбор другого порта. dummy=MsgBox(Str(Ceпtroюc(0))-1 &"Ceпtroпic ports (LPTs) are iпstalled оп your РС. Thelr base addresses are: " & Format$(Ceпtroпic(1), "###") & " " & Format$(Ceпtronic(2), "###") & " " & Format$(Centronic(З), "###") & " " & Format$(Ceпtroпic(4), "###") & "Descimal",48, "Сепtrоп1с ports (LPT) оп your РС") ·отображение информации 'о копичестве установпенных LРТ-портов. 2, 3 or 4to select а Ceпtroпic port (LPT) for the M1n1Lab Data Logger /Сопt roller", "Select LPT ports")) ·Выбор параппепьного порта. Р _add ress=Ceпt roпic(lpt_пumbe r) ·Нахождение базового адреса lpt_пumber=Val(IпputBox$("Input 1, ·выбранного порта. Label2.Capt1oп="Selected LPT port:" & Format(lpt_пumber) ·отображение информации ·о выбранном LРТ-порте. Label4.Capt1oп="Base address of LРт:·· &Format(P_address) 'Отображение информации 'об адресе выбранного порта. Епd Sub Sub Command4_Cl1ck() ·выход из программы. Епd Епd Sub Sub Commaпd4_MouseMove(Buttoп LabelЗ. Capt1oп="Ouit As Iпteger, Sh1ft As the program" Iпteger, Х As Siпgle, У As S1пgle) End Sub Sub Form_Load() ·инициапизация состояния. For i=O to 11 status(1)=0 Next i ·отображение информации о параппепьном порте, dummy=MsgBox(Str(Ceпtroпic(0))-1 Тhен выбор LРТ-порта. &"Ceпtroпic ports (LPTs) are base addresses are: " & Format$(Ceпtroп1c(1), "###") & " " & iпstalled оп your РС.
~ З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Format$(Centron1c(2), · ### .. ) & ·· ·· & Format$(Centron1c(З), ""###.) & · · & Format$(Centron1c(4), ""###"") & ""Descimal"",48, ""Centron1c ports (LPTs) оп your РС"") lpt_number=Val(InputBoxS(· Input 1, 2, 3 or 4 to select Centron1c port (LPT) for the Centron1c exper1mental board"", · Select LPT ports·)) P_address=Centron1c(lpt_number) Label2.Capt1on=""No of installed LPTs: - &Format(lpt_number) Label4 Capt1on=··вase address of LPT: ·· & Format(P_address) dummy=Wr1te_data_port(P_address,O) dummy=Wr1te_control_port(P_address,O) End Sub 3.2. Программное обеспечение для экспериментальной платы последовательного порта В данном разделе представлены тексты программ управления экспериментальной платой последовательного порта и необходимые пояснения к ним. 3.2.1. Описание программы RS232EXP.PAS Программа выполняет следующие функции: о сообщает о количестве установленных на компьютере последовательных портов; о позволяет выбрать последовательный порт (СОМ); о настраивает формат последовательных данных; о вводит байт и передает последовательные данные; о изменяет состояние линий управления модемом (DTR и RTS); О считывает последовательные данные; о считывает состояние линий DSR, DCD и CTS. После запуска программы на экран выводится следующая информация: Number of СОМ installed. 4 Addresses for СОМ1 to СОМ4. 1016 760 1000 744 Select а СОМ to Ье used (1,2,3 or 4). Первая строка показывает количество установленных СОМ-портов, вторая - отображает их базовые адреса. Третья строка дает возможность выбрать последо­ вательный порт для его дальнейшего использования. После того как вы укажете номер порта, на экране появится виртуальная панель управления (рис. 3.5). Здесь изображены семь виртуальных светодиодов в соответствии с их количест­ вом на экспериментальной плате: три из них соотносятся с тремя выходами, четы­ ре - с четырьмя входами. Внизу размещается панель помощи, где показаны кла­ виши управления программой с кратким описанием их функций: о [ARROW] о [Т] или о - выбор выхода; ввод данных е клавиатуры и их передача; [SPASE] (пробел) - изменение состояния выбранной выходной линии; о [С] или [с) о (клавиши управления курсором) [t] - [Q] или - [q] - настройка формата последовательных данных; выход из программы.
3.2. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА (Ю Рис. 3.5. Виртуаnьная nанеnь уnравnения дnя эксnериментаnьной nnаты nосnедоватеnьного порта Поср едством клавиш f- и~ можно указать одну из выходны х линий. Выбран­ ный выход помечае rся окружностью вокруг изображения светодиода. Для изме­ нения состояния выхода используется клавиша пробела. При нажатии на клави­ ши ~. f- или клавишу пробела входные данные считываются и выводятся на экран. Для тестирования порта нужно соединить приемную и передающую линии. Значения входных и выходных последовательных данных должны совпадать. Текст программы RS232EXP.PAS Program RS232_tester (•Программ а уnравnения экспериментальной пnатой посnедовательного порта•) uses graph crt,dos, var i,led_selected Ser1al_1пput_byte,Baud_rate_byte data_leпgth_byte,Stop_length_byte,Par1ty_byte iпteger Ser1al_output_str1пg,Ser1al_1nput_str1ng Old_ser1al_1пput_str1пg ch char , status а r rау[ 1 18] of integer, key_pressed str1пg[10] (•Загруз ка двух библиотек {$1 {$1 с с \1oexp\tpl1b1 pas} \1oexp\tpl1b2 pas} •) str1пg[5]
~ З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ procedure Draw_panel; (•Рисование панели управления экспериментальной платой последовательного порта.•) begin for i:=1 to 16 do status[i]:=O; setbkcolor(cyan); for i:=1 to 3 do draw_led(80+i•50,350,status[i]); for i:=4 to 7 do draw_led(180+i•50,350,status[i]); draw_led(20,20, 1); draw_message( 50, 20, 70, 20, lightЫue, · LED ON ·,О, 1, yel low); draw_led(20,60,0); draw_message( 50, 60, 70, 20, lightЫue, · LED OFF ·,О, 1, yellow); setfillstyle(1,magenta); bar( 1, 420, 800, 480); settextstyle(O,O, 1); outtextxy( 10, 425, · [ARROW]: Select LED [Т] :Transmi tted data [Space]: Change Status ·); outtextxy(10,440. '[C]:Configure RS232 [O]:Ouit' ); draw_message(60,200,500,50,Ыue, 'RS232 experimental board· ,0,2,yellow); draw_message(115,390,130,20,Ыue, 'DTR TXD Rтs·,o,1,yellow); draw_message( 370, 390, 180, 20, Ыuе, · RD DSR DCD CTS ·,О, 1, yel low); end; procedure Output_input; var output_byte,input_byte:byte; code: integer; begin (•Вычисление значения данных для передачи через регистр данных.•) wri te_modem_status( RS232_add ress, status[3], status[ 1]); val(serial_output_string,output_byte,code); status[5]:=read_modem_status(RS232_address,2); status[6]:=read_modem_status(RS232_address, 1); status[7]:=read_modem_status(RS232_address,3); if status[2]=1 then begin repeat write_transmit_buffer(RS232_address,output_byte); until keypressed; status[2] :=О; end; delay(50); serial_input_byte:=read_receive_buffer(RS232_address); setcolor(mageпta); outtextxy(420,460, ·rnput serial data: ·+old_serial_input_string); setcolor( yellow); str(serial_input_byte,serial_input_string); outtextxy(420,460, 'Input serial data: ·+serial_input_striпg); Old_serial_input_string:=serial_input_string; setbkcolor( cyan); end; Procedure Scaп_keyboard; begin key_p ressed: =getkey; if key_pressed='LEFT' then led_selected:=led_selected-1; if key_pressed='RIGHT' then led_selected:=led_selected+1; i f key_pressed= · · then status[ led_selected]: =1-status[ led_selected]; if (key_pressed=T) or (key_pressed='t') then
3.2. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА [![) begin setcolor(magenta); outtextxy(З0,460, ·output serial data: ·+serial_output_string); draw_message(100, 290, 100, 60, cyan, ·rnput Serial data ·, О, 1 yellow); gotoxy( 22, 20); readln (serial_output_string); draw_message(100,290, 100,60,cyan, ·rnput serial data ·,О, 1,Ыuе); setco lo г (уе llow); outtextxy(З0,460, ·output serial data: ·+serial_output_string); end; if (key_pressed=·c·) ог (key_pressed='c') then begin closegraph; writeln( ·configure RS232 port"); wri te( · Input baud rate (115200-9600-4800-2400-1200): "); readln( baud_rate_byte); write( 'Input parity (O=None, 1=Even, З=Odd): · ); readln(Parity_byte); write( ·rnput data bit length (5, 6, 7, 8): · ); readln(Data_length_byte); write( ·rnput stop bit length (2, 1): · ); readln(Stop_length_byte); wri te_data_ format (RS232_add ress, Baud_rate_byte, Ра rity_byte, Data_length_byte, Stop_length_byte); initialize_graph; draw_panel; led_selected:=1; end; end; procedu ге draw_led_status; var led_selected_old:integer; begin led_selected_old:=led_selected; scan_keyboard; for i:=1 to 3 do draw_led(80+i•50,350,status[i]); output_input; for i:=4 to 7 do draw_led(180+i•50,350,status[i]); if led_selected>З then led_selected:=З; if led_selected<1 then led_selected:=1; setlinestyle(0,0,3); setcolo г( cyan); if led_selected_old<=З then circle(80+50•led_selected_old,350, 15); setcolor(yellow); if led_selected<=З then circle(80+50•led_selected,350, 15); end; (•Главна~ nрограмма.•) begin COM_address; initialize_graph; draw_panel; led_selected:=1; repeat draw_led_status; until (key_pressed='Q') ог (key_pressed='q'); closegraph; (•Закрытие графического режима.•) end.
00 З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Программа содержит четыре процедуры. Draw_panel используется для рисова­ ния виртуальной панели управления экспериментальной платой; Output_1nput - процедура ввода/вывода данных через последовательный порт. Процедуры и функции Wп te_modem_stat us (), wr 1te_ t ran sm1 t_buffe r (), read_modem_po rt () и Read_rece1ver _buffer() записывают и считывают значения из регистров порта; они TPLIB1.PAS. Процедура scan_keyboard опрашивает кла­ содержатся в библиотеке виатуру, фиксируя нажатие шести функциональных клавиш: бела, t, с и 3.2.2. +--, ~. клавиши про­ q. Описание программы RS232EXP Программа выполняет следующие функции: о сообщает о количестве установленных на компьютере последовательных портов; о позволяет выбрать последовательный порт; о настраивает формат последовательных данных; о вводит байт и передает последовательные данные; о изменяет состояние линий управления модемом (DTR и RTS); о считывает последовательные данные; о считывает состояние линий DSR, DCD Для запуска программы в среде Windows и CTS. необходимо нажать на кнопку Пуск, выбрать в меню пункт Выполнить и ввести ее полное имя: путь+ RS232EXP, после чего щелкнуть по кнопке ОК. На экране появится сообщение о количестве уста­ новленных СОМ-портов и их базовых адресах (рис. дите окно, изображенное на рис. 3.6). Нажмите ОК. Вы уви­ 3.7. Здесь требуется ввести номер порта (1-4), к которому подсоединена экспери­ ментальная плата. Сделав это, щелкните по кнопке ОК. Появится окно управле­ ния экспериментальной платой последовательного порта (рис. Кнопки 0-1 позволяют изменять состояние линий DTR и 3.8). RTS, причем высокий уровень ипдицпруется красным светодиодом. Вы можете ввести данные, которые необходимо передать в поле данных панели. При нажатии на кнопку 0-1 эти дан­ ные будут постоянно передаваться, пока кнопка не будет нажата еще раз. С помо­ щью кнопки Get it вы обновляете состояние линий данные также отображаются на экране. Кнопка DSR, DCD и CTS. Принятые Change port дает возможность вы­ брать другой порт, переопределить скорость, режим проверки, длину блока данных и количество стоповых битов. Внизу окна имеется информационная панель. Соединив приемную и передающую линии, допустимо провести тестирование порта. В этом случае значения передаваемых и принимаемых данных должны со­ впадать. Когда программа передает данные, вид сигнала в линии можно наблю­ дать с помощью осциллографа. Разрешается передавать различные данные, изме­ нять скорость, режим проверки и длину блока данных - это позволяет глубже понять процессы, происходящие при передаче последовательных данных.
3.2. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА Рис. 3.6. Сообщение, выдаваемое Текст программы ~ программой RS232EXP RS232EXP WLIB1 DLL RS232() B1t_we1ght() Wr1te_1nterrupt_enaЬle() Read_1nterrupt_1dent1f1cat1on() wr1te_data_format() wr1te transm1t buffer() wr1te_modem_status() wr1te_rece1ve_buffer() и read_modem_status() Declare Funct1on RS232 L1b С \IOEXP\WLIB1 dll (ByVal Х As Integer) As Integer Declare Funct1on B1t_we1ght L1b С \IOEXP\WLIB1 dll (ByVal Х As Integer) As Integer Declare Funct1on Wr1te_1nterrupt_enaЬle L1b С \IOEXP\WLIB1 dll (ByVal address As Integer ByVal datax As Integer) As Integer Declare Funct1on Read_1nterrupt_1dent1f1cat1on L1b С \IOEXP\WLIB1 dll (ByVal address As Inтeger) As Integer Declare Funct1on wr1te_data_format L1b С \IOEXP\WLIB1 dll (ByVal address As Integer ByVal Baud As Integer ByVal par1ty As Integer ByVal Data_byt As Integer ByVal Stop_b1t As Integer) As Integer Declare Funct1on Wr1te_transm1t_buffer L1b С \IOEXP\WLIB1 dll (ByVal address As Integer B}Val datax As Integer) As Integer Declare Funct1on Wr1te_modem_status L1b С \IOEXP\WLIB1 dll (ByVal address As Integer ByVal RTS As Integer ByVal DTR As Integer) As Integer Объявление функции библиотеки динамическои компоновки Объявляемые функции
(!О] Рис. З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ 3.7. Окна выбора используемого СОМ-порта Declare Funct1on Read_receive_buffer L1b "C:\IOEXP\WLIB1 dll" (ByVal address As Integer) As Integer Declare Funct1on Read_modem_status L1b"C.\IOEXP\WLIB1.dll" (ByVal address As Integer, ByVal As Integer) As Integer Sub Command1_cl1ck() status(4)=Read_modem_status(RS232_address,2) status(5)=Read_modem_status(RS232_address, 1) status(Б)=Read_modem_status(RS232_address,3) For iq=4 to 6 lf status(1q)=1 Then Shape1(1q).BackColor=&HFF& Else Next iq Shape1(iq).BackColor=Ыack LabelЗ.Capt1on=Format$(Read_rece1ve_buffer(RS232_address)) End Sub Sub command1_Mouse_move(Button As Integer, Sh1ft As Integer, Label7 Capt1on="Get the status and read the serial data· End Sub Х As S1ngle, У As S1ngle) Sub Command2_Cl1ck(Index As Integer) ·изменение состояния выходных линий. status(1ndex)=1-status(1ndex) lf status(1ndex)=1 Then Shape1(1ndex) BackColor=&HFF& Else Shape1(1ndex) BackColor=Ыack Х
3.2. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА B.!!iudr.!!lte Parity Dolo ЬК lenglh Stop ЬК longth Chonge pcxt Рис. 1 3.8. Окно управления экспериментальной платой последовательного порта Ввод данных в регистр состояния модема dummy=Wr1te_modem_status(RS232_address, status(2), status(O)) Обновление входных линий status(4)=Read_modem_status(RS232_address,2) status(5)=Read_modem_status(RS232_address, 1) status(б)=Read_modem_status(RS232_address,3) For iq=4 to 6 If status(1q)=1 Then Shape1(1q) BackColor=&HFF& Else Shape1(1Q) Next iq Считывание и отображение входных данных LabelЗ Capt1on=Format$(Read_rece1ve_buffer(RS232_address)) Вывод последовательных данных If status(1)=1 Then Do dummy=Wr1te_transm1t_buffer(RS232_address,Val(text1 Text)) DoEvents Loop Wh1le status(1)=1 End If Епd Sub BackColor=Ыack [!!]
@] З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Sub Command2_MouseMove(1ndex As Integer, Button As Integer, Sh1ft As Integer, As S1ngle) Х As S1ngle, У ·отображение справочной информации. Label7.Capt1on="Change the status of the output line" End Sub Sub CommandЗ_Cl1ck() ·настройка выбранного последовательного порта. baud_rate=Val(text2(0).Text) 'Установка скорости. parity=Val(text2(1). Text) 'Установка проверки на четность. data_bit_length=Val(text2(2).Text) 'Установка длины блока данных. stop_bit_length=Val(text2(3) Text) 'Установка длины стопового бита. dummy=wr1te_data_format(RS232_address,baud_rate,parity,data_b1t_length, stop_b1t_length) ·запись конфигурации в регистр формата данных. End Sub Sub CommandЗ_Mouse_move(Button As Integer,Sh1ft As Integer,X As S1ngle,Y As S1ngle) Label7.Capt1on="Change the conf1gurat1on of RS232 port" End Sub Sub Command4_Cl1ck() End End Sub Sub Command4_Mouse_move(Button As Integer,Sh1ft As Integer,X As S1ngle,Y As S1ngle) Label7.Capt1on="Qu1t the program" End Sub Sub CommandS_Cl1ck() 'Выбор другого порта. dummy=MsgBox(Str(RS232(0)) &"RS232 ports (COMs) аге installed on your РС Тhен base addresses аге. · & Format$(RS232(1), "###") & " " & Format$(RS232(2), "###") & " " & Format$(RS232(3), "###") & " " & Format$(RS232(4), "###") & "Decimal", 48, "RS232 ports (СОМ) on your РС") ·отображение информации о порте. RS232_number=Val( InputBox$( "Input 1, 2, 3 ог 4 to select а RS232 port (СОМ) for the Mini-Lab Data Logger/Controller", "Select СОМ ports")) ·Выбор СОМ-порта. RS232_address=RS232(RS232_number) ·получение базового адреса выбранного nорта. Label2.Capt1on="Selected СОМ port: &Format(RS232_пumber) ·отображение информации ·о выбранном nорте. Label4.Capt1on="Base address of End Sub СОМ· & Format(RS232_address) Sub CommaпdS_MouseMove(Button As Integer, Sh1ft As Integer, Label7.Capt1on="Change RS232 port пumЬег· End Sub Х As Single, У As Single) Sub Form_Load() For i=O То 11 status(1)=0 Next i dummy= MsgBox(Str(RS232(0)) & 'RS232 ports (COMs) аге installed on your РС. The1r base addresses аге:" & Format$(RS232(1), "###') & " " & Format$(RS232(2), "###") & " & Format$(RS232(3), "### ') & " " & Format$(RS232(4), "###") & "Decimal", 48, "RS232 ports (СОМ) on your РС") RS232_number=Val(InputBox$( "Input 1, 2, 3 ог 4 to select а RS232 port (СОМ) fог the RS232 Expeпmental Ьоагd", "Select СОМ ports'))
_ _ _ _ _ _ _ _ _з_.з_._п_о_дл_я_эк_с_п_Е_Р_ИМЕНТАЛЬНОЙ ПЛАТЫ ИГРОВОГО ПОРТА ~ RS232_address=RS232(RS232_number) Label2 Capt1on= No of installed COMs &Format(RS232_number) Label4 Capt1on= Base address of СОМ &Format(RS232_address) baud_rate=9600 par1ty=O data_b1t_length=8 stop_b1t_length=1 text2(0) Text=Format$(baud_rate) text2(1) Text=Format$(par1ty) text2(2) Text=Format$(data_b1t_length) text2(3) Text=Format$(stop_b1t_length) dummy=wr1te_data_format(RS232_address baud_rate par1ty data_blt_length stop_b1t_length) End Sub Sub LabelЗ_MouseMove(Button As Integer Sh1ft As Integer Х As S1ngle У As S1ngle) Отображение принятых данных Label7 Captlon= Value of the ser1al lnput data End Sub Sub Label6_MouseMove(1ndex As Integer Button As Integer Sh1ft As Integer S1ngle) Select Case index Case О Label7 Captlon= Baud rate=115200 19200 9600 2400 etc Case 1 Label7 Capt1on= O=No Par1ty 1=0dd Par1ty З=Even Par1ty Case 2 Label7 Capt1on= Input 5 6 7 or 8 to select the data b1t length Case 3 Label7 Capt1on= Input 1 or 2 to select Stop b1t End Select End Sub Sub Text1_MouseMove(Button As Integer Sh1ft As Integer Х As S1ngle У Х As S1ngle У As As S1ngle) Ввод данных для передачи Label7 Capt1on= Input the ser1al data to End Sub Ье sent out Sub Text2_Change(1ndex As Integer) Select Case index Case О Case 1 Case 2 Case 3 End Select End Sub 3.3. Программное обеспечение для экспериментальной платы игрового порта В разделе представлены тексты программ управления :экспериментальной платой игронm о пор1 а и необходимые пояснения к ним
(Ю З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ З.З.1. Описание программы GAMEEXP.PAS Программа выполняет следующие функции: о считывает состояния двух (или четырех) цифровых входов; о измеряет длительность периода одновибратора для двух (четырех) аналоговых каналов; о калибрует аналоговые каналы; о измеряет сопротивление резистора. После запуска программы на экране появляется виртуальная панель управле­ ния (рис. 3.9), где изображены четыре виртуальных светодиода и восемь вирту­ альных контактов, соответствующих светодиодам и контактам на эксперимен­ тальной плате игрового порта. Внизу расположена панель помощи, на которой показаны клавиши управления программой с кратким описанием их действий: о [ARROW] (клавиши управления курсором) о [SPASE] (пробел) - - выбор аналогового канала; считывание сопротивления выбранного канала и состо­ яния входов; О [С] или [с) калибровка выбранного аналогового канала; о выход из программы. Рис. [Q] или [q] - 3.9. Виртуальная панель управления экспериментальной платой игрового порта
3.3. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ИГРОВОГО ПОРТА ШJ Посредством клавиш t- и--+ можно указать входной аналоговый канал. Вы­ бранный канал выделяется двумя окружностями вокруг виртуального контакта на панели. Нажав на клавишу пробела при наличии резистора, соединенного с вхо­ дом, вы получите длительность периода одновибратора. Если этот канал откалиб­ рован, выводится также сопротивление резистора. Перед калибровкой (она осу­ ществляется с помощью клавиши С) необходимо замкнуть накоротко входные контакты, а затем соединить с контактом резистор с известным сопротивлением. При работе программы данные считываются и с цифровых входов порта. Состоя­ ние битов данных индицируется виртуальными светодиодами. Текст программы GAMEEXP.PAS Program Game_tester: (•Программа управления экспериментальной платой игрового порта.•) uses graph,crt,dos: const game_address=513; var l,led_selected,Time1,T1me2:1nteger; ch: char; status:array[ 1.. 18) of lПteger, репоd: real; lnterval_O, Interval_R, standard_R: array[ 1.. 4] of real, key_pressed: st пng [ 10]; strx·str1ng, (•Загрузка файлов библиотек.•) {$I c:\1oexp\tpl1b2.pas} {$1 c:\ioexp\tpl1b1.pas} Funct1on Resistance( period. real; led_selected: lnteger): real; (•Вычисление сопротивления при известном периоде.•) (•Необходима калибровка.•) var dummy,dummy2.real; beg1n dummy2:=1nterval_R[led_selected]-1nterval_O[led_selected]; lf abs(dummy2)<0.0001 then dummy2:=1; dummy:=standard_R[led_selected]/dummy2•(period-1nterval_O[led_selected]); lf abs(dummy)>200 then resistance:=200 else res1stance:=dummy; end, procedure draw_panel; (•Рисование панели управления.•) begin for l.=1 to 16 do status[1]·=0; setbkcolor(cyan), for 1:=1 to 8 do draw_led(20+1•40,350,status[1]); for 1:=1 to 4 do draw_led(420+1•40,350,status[1+8]): draw_led(20, 20, 1): draw_message( 50, 20, 70, 20, 11ghtЫue, · LED ON ·,О, 1, yellow); dгaw_led (20, 60, О); draw_message( 50, 60, 70, 20, 11ghtЫue, · LED OFF' , О, 1, yellow);
(Ю З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ setfillstyle(1,magenta); Ьаг(1,420, 800,480); settextstyle(O,O, 1); outtextxy( 10, 425, · [ARROW]: Select Resistor [Space] :Get res1stance and button status ·); outtextxy(10,425, '[C]:Calibration of resistance input channel [O]:Quit' ); draw_message(60,200,500,50,Ыue, 'Game port Experimental board',0,2.yellow); draw_message (50, 390, 305, 20, Ыuе, ·АХ VCC АУ VCC ВХ VCC ВУ vcc·, О, 1, yellow); draw_message(450,390,149,20,Ьlue, ·вв2 ВВ1 ВА2 BA1·,o,1,yellow); draw_message(55, 320, 280, 20, cyan, ·тeгminals for connectlng resistors ·,О, 1, red); draw_message(450, 320, 120, 20, cyan, · Button inputs ·,О, 1, геd): end: procedure output_input; vаг output_byte,input_byte:byte; begin (•Считывание состояния кнопок.•) status[9]:=read_game_port(8); status[10]:=read_game_port(7): status[11]:=read_game_port(6); status[ 12]: =read_game_po rt( 5); end: procedure scan_keyboaгd; begin key_pressed:=getkey; if key_pressed='LEFT' then led_selected:=led_selected-1; i f key_pressed= · RIGHT · then led_selected: =led_selected+1; i f key_pressed= · · then beg1n period:=interval_game_port(led_selected); str(period•0.838:10:2,strx); draw_message(25,460,250, 10,magenta, ·rnterval (us): ·+strx,O, 1. lightcyan); str(resistance(period,led_selected):10:2,strx); draw_message(370, 460, 250, 10, magenta. · Resistance ( kOhm): ·+strx, О, 1, l1ghtcyan ); end; lf (key_pressed='Q') ог (key_pressed='q·) then begin closegraph; clrscr; writeln('Calibratioп of resistance input channels сн· ,led_selected:4); writeln('Short the input terminal for the selected channel'); writeln('Press RETURN to continue'); readln; interval_O[led_selected]:=interval_game_port(led_selected); writeln('Connect the standard resistor to the selected channel'); write('Input the resistance of the resistor'); readln(standard_R[led_selected]); interval_R[led_selected]:=interval_game_port(led_selected); initialize_graph; draw_panel; end; end;
3.3. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ИГРОВОГО ПОРТА ~ procedure Draw_led_status, var led_selected_old integer, beg1n led_selected_old =led_selected, scan_keyboard, output_1nput for 1 =1 to 4 do draw_led(420+1•40,350,status[1+8]), if led_selected>4 then led_selected =4, if led_selected<1 then led_selected =1, setl1nestyle(O,O,З), setcolo r( cyan), if led_selected_old<=4 then beg1n c1rcle(-20,+80•led_selected_old 350, 15), c1rcle(-20,+80•(led_selected_old+40),350, 15), end, setcolor(yellow) if led_selected<=4 then beg1n c1rcle(-20,+80•led_selected,350, 15), c1rcle(-20,+80•(led_selected)+40),350, 15), end, end, (•Главная программа *) beg1n in1t1al1ze_graph, draw_panel, 1Пlt_8253, led_selected =1, repeat draw_led_status unt1l (key_pressed= О ) ог (key_pressed= q ), closegraph, (•Закрытие графического режима •) end Программа содержит четыре процедуры и одну функцию; кроме того, приме­ няются процедуры и функции из программных библиотек ресурсов. Draw_panel рисует виртуальную панель управления. Процедуры Draw_led() и Draw_message( ), содержащиеся в библиотеке TPLIB2.PAS, выводят на экран монитора изображе­ ния виртуальных светодиодов и поясняющие надписи. Процедура Output_1nput организует ввод/вывод данных через игровой порт. Scan_keyboard сканирует кла­ виатуру и фиксирует нажатие клавиш ~. r, клавиши пробела, с или q. Она ис­ TPLIB2.PAS. Функции Read_game_po rt () в библиотеке TPLIB1.PAS, считывают состоя­ пользует функцию getkey из библиотеки и Inte rval_game_port, находящиеся ние цифровых входов порта и измеряют длительность периода одновибратора со­ ответственно. Функция Res1stance() вычисляет значение сопротивления па осно­ вании параметров калибровки.
[!!'] З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ 3.3.2. Описание программы GAMEEXP Эта программа выполняет следующие функции: о считывает состояния двух (или четырех) цифровых входов; о измеряет длительность период одновибратора для двух (четырех) аналоговых каналов; о калибрует аналоговые каналы; о измеряет сопротивление резистора. Для запуска программы необходимо нажать кнопку Пуск и выбрать в меню пункт Вьmолнить. Затем следует ввести ее полное имя: путь+ GAMEEXP. После нажатия кноп­ ки ОК на экране появится окно управления экспериментальной платой игрового пор­ та (рис. 3.1 О). Программа выполняет функции, аналогичные DОS-версии. Bese address of G8me 201Н Pe11od of Mulliv1br.ei1or: Res1stence. r АУ vcc сsвх vcc" сsву \> СС Рис. B ul ~or1 1n1)ut : •• ВУ В> ' АУ ....,. _ CoiЬlote ·~дii!. """] QUt 3.10. Окно управпения экспериментапьной платой игрового порта Текст программы Oeclare Funct1on Oeclare Funct1on Oeclare Funct1on Oeclare Funct1on As Integer GAMEEXP 81t_we1ght L1b С \IOEXP\Wl1b dll' (ByVal Х As Integer) As Integer Read_game_port L1b С \IOEXP\Wl1b.dll" (ByVal Х As Integer) As Integer Wr1te_game_port L1b С \IOEXP\Wl1b dll' (} As Integer Interval_game_port L1b С \IOEXP\Wl1b dll · (ByVal led_selected As Integer)
3.3. ПО ДЛЯ ЭКСПЕРИМЕНТАЛЬНОЙ ПЛАТЫ ИГРОВОГО ПОРТА [!!] Sub Command1_cl1ck() OoEvent8 For 1=12 to 15 8tatu8(1)=read_game_port(20-1) If 8tatu8(1)=1 Then Shape1(1) BacкColor=$HFF$ El8e Shape1(1) BackColor=Ыack Next 1 DoEvent8 per1od=Interval_game_port(led_8elected)• 838 If per1od<>O Then Label2 Capt1on= Per1od of mult1v1brator & Format(per1od, ##### # ) El8e Label2 Capt1on= Error read1ng mult1v1brator End If Label5 Capt1on= Re818tance End Sub &Format(re818tance(per1od) ### # ) Sub Command1_Mou8eMove(Button А8 Integer, Sh1ft А8 Integer, Х А8 S1ngle, Label6 Capt1on= Get button 8tatu8 and per1od of mult1v1brator8 End Sub Sub Command2_cl1ck(1ndex А8 S1ngle) У А8 Integer) 8tatu8(1ndex)=1-8tatu8(1ndex) If 8tatu8(lndex)=1 Then Shape1(1ndex) BackColor=$HFF$ El8e Shape1(1ndex) BackColor=Ыack For 1=12 to 15 8tatu8( 1)=( read_game_port( 1-11) and Blt_we1gh t( 1-11) )/Blt_we1ght( 1-11) If 8tatu8(1)=1 Then Shape1(1) BackColor=$HFF$ El8e Shape1(1) BackColor=Ыack Next 1 End Sub Sub Command3_cl1ck() M8gBox( Short the term1nal8 of the 8elected res18tance lnput The 8elected channel 18 &led_8elected) lПterval_O(led_selected)=Interval_game_port(led_selected)• 838 M8g8ox( Connect а 8tandard re818tor to the selected re818tance lПput The 8elected channel 18 &led_8elected) Standard_r(led_8elected)=lnputBox( Input the re818tance Cal1brat1on of re818tance lnput , 1 ) 1Пterval_R(led_selected)=Interval_game_port(led_8elected)• 838 End Sub Sub Command1_MouseMove(Button А8 Integer, Sh1ft А8 Integer Label6 Capt1on= Generate re818tance V8 per1od curve End Sub Х А8 S1ngle У А8 S1ngle) Х А8 S1ngle, У А8 S1ngle) Sub Command4_Cl1ck() End End Sub Sub Command4_Mou8e0own(Button А8 Integer Sh1ft Label6 Capt1on= Qu1t the program End Sub Sub Form_load() For 1=0 to 16 statu8(1)=0 А8 Integer,
/ 100 / З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Next l Епd Sub Sub Opt1oп1_Cl1ck(1пdex As Iпteger) led_selected=1пdex+1 Епd Sub Sub Opt1oп1_MouseMove (1пdех As Label6.Capt1oп="Select As Iпteger, Buttoп As Iпteger, Sh1ft As Iпteger, Х As S1пgle, У S1пgle) No." & iпdex+1 & "res1staпce iпput сhаппеl" Sub Епd Fuпct1oп res1staпce(ByVal period As Siпgle) As S1пgle dummy2=(1пterval_R(led_selected)-1пterval_O(led_selected)) If Abs(dummy2)<.001 Тhеп dummy2=1 dummy=Staпdard_r(led_selected)/dummy2•(per1od-1пterval_O(led_selected)) If Abs(dummy)>200 Тhеп res1staпce=200 Else res1staпce=dummy Епd Fuпctloп Программные библиотеки ресурсов 3.4. Ниже приведены тексты библиотек ресурсов ТР6 (TPLIВ1.PAS и TPLIВ2.PAS для DOS) и библиотеки динамической компоновки для Windows (WLIВ.PAS). По­ дробные комментарии к процедурам и функциям даны в тексте. Библиотека ресурсов TPLIB1.PAS 1.•) TPLIB1.PAS.•) (•Библиотека ресурсов ТР6 № (•Название библиотеки: (•Процедуры для управления параллельным, последовательным и игровым портами •) (•Эта библиотека может быть включена в пользовательскую программу.•) var P_address,RS232_address:1пteger; (•-Библиотека ресурсов № А 1 (определение базового Procedure Ceпtroп1c_Address (• $000:$0408 содержит базовый адрес для LPT1 $000:$040А содержит базовый адрес для LPT2 адреса LPT) -•) $000:$040С содержит базовый адрес для LРТЗ $000:$0408 содержит базовый адрес для LPT4 $000:$0411 содержит количество параллельных var lpt:array[1 .. 4] of iпteger; портов •) number_of_lpt,LPT_пumber,code:1пteger; kbchar:char; begin clrscr; LPT_number: =1; пumber_of_lpt:=mem($0000:$0411); (•Для установки принтера no умолчанию •) (•Считывание количества установленных параллельных портов•) пumber_of_lpt:=(пumbeг_of_lpt апd lpt[1]:=memw($0000:$0408); lpt[2]:=memw($0000:$040A); lpt [ З] :=memw( $0000: $040С); (128+64)) shr 6, (•Битовые преобразования.о) (•Процедура считывания из памяти.•)
3.4. ПРОГРАММНЫЕ БИБЛИОТЕКИ РЕСУРСОВ [!О}] lpt[4] =memw($0000 $040Е) textbackg rouпd ( Ыuе) cl rsc r, textcolor(yellow) textbackgrouпd(red), w1пdow(10,22,70,24), clrscr, wr1telп( Number of LPT iпstalled пumber_of_lpt 2), wr1telп( Addresses for LPT1 to LPT4 , lpt[1] 3, ,lpt[2] 3, ,lpt[З] З lpt[4] 3), wr1te( Select LPT to Ье used(1,2,3,4) ), delay(1000), lf пumber _of_lpt>1 theп Ьеg1п {Выбор порта, если установлено несколько портов } repeat kbchar =readkey, (*Считывание значения с вводимой клавиши *) val(kbchar, LPT_пumber,code), (*Преобразование символа в число *) uпt1l (LPT_пumber>=1) апd (LPT_пumber<=4) апd (lpt[LPT_пumber]<>O), епd, clrscr P_address =lpt[LPT_Number], wr1telп( Your selected printer iпterface LPT", LPT_пumber 1), wr1te( LPT address ,RS232_address 3), delay(1000) textbackgrouпd(Ьlack) w1пdow(1 1 80, 25), clrscr, епd, (*-Библиотека ресурсов № А2 (нахождение веса бита) Fuпct1oп -*) b1t_we1ght(b1t byte) byte, var i,dummy iпteger Ьеg1п lf b1t=1 else theп b1t_we1ght =1 Ьеg1п dummy =1 for 1 =1 to bit-1 do dummy =2*dummy, 1f dummy=O theп dummy =1, b1t_we1ght =dummy, епd епd (•-Библиотека ресурсов № АЗ (считывание данных в компьютер) Fuпct1oп Read_status_port(P_address iпteger) -*) byte, var byte1 byte, Ьеg1п byte1 =port(P_address+1), byte1 =byte1 апd 120, ( •01111000 Read_status_port =byte1 shr 3, •) Odddd = OddddOOO *) (*Считывание байта из регистра состояния (от старшего к младшему) апd (•Сдвиг на З бита вправо, Read_status_port=OOOOhhhh •) епd, (•-Библиотека ресурсов № А4 (запись данных в регистр данных компьютера) Procedure Wr1te_data_port(P_address iпteger, (•Линии порта данных не инвертированы •) port_data byte), -*)
l 102 I З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ МАТАМИ begin (•Ввод байта в регистр данных.•) poгt(P_addгess):=poгt_data: end; (•-Библиотека ресурсов № А5 (запись данных в регистр управления).-•) Ргосеduге Wгite_contгol_poгt(P_addгess:integeг: 1 и 3 инвертированы. (•Биты О, begin if poгt_data апd else if if 2=2 8=8 poгt(P_addгess+2):=poгt_data; (255-2) 2; theп poгt_data:=poгt_data апd poгt_data:=poгt_data ог (255-1) 1: theп poгt_data:=poгt_data апd poгt_data:=poгt_data ог poгt_data апd else theп poгt_data:=poгt_data апd poгt_data:=poгt_data ог poгt_data апd else 1=1 poгt_data:byte): Требуются преобразования над битами.•) (255-8) 8: (•Ввод байта данных в регистр управления.•) епd; (•-Библиотека ресурсов № Аб (определение базовых адресов СОМ-портов).-•) Ргосеduге COM_addгess; ( • $0000: $0400 $0000:$0402 $0000:$0404 $0000:$0406 $0000:$0411 содержит базовый адрес порта СОМ1, содержит базовый адрес порта СОМ2, содержит базовый адрес порта СОМЗ, содержит базовый адрес порта СОМ4, содержит количество СОМ-портов.•) vаг СОМ: а ггау[ 1.. 4] of iпtege г; COM_пumbeг,пumbeг_of_COM,code:iпtegeг; КЬсhаг:сhаг; begiп сlгsсг: (•Установка порта по умолчанию.•) COM_пumbe г: =1; Numbeг_of_COM:=mem($0000:$0411): Numbeг_of_COM:=(Numbeг_of_COM апd COM(1]:=memw($0000:$0400); СОМ[ 2] :=memw( $0000: $0402); СОМ[З]: =memw( $0000: $0404); COM[4]:=memw($0000:$0406); (•Считывание количества СОМ-портов.•) (8+4+2)) sh г 1; (•Процедура считывания из памяти.•) textbackgгouпd(Ьlue): сlгsсг: Textbackg гоuпd( геd); w1пdow( 10, 22, 70, 24); cl гsс г; СОМ iпstalled: ·. Numbeг_of_COM:2); wгltelп( 'Addгesses fог СОМ1 to СОМ4:., СОМ(1]:3, СОМ[2):3, СОМ[З):З, СОМ[4):3); wг1 te ( · Se lect СОМ to Ье used (1, 2. 3, 4) : · ) ; delay(1000); lf пumbeг_of_COM>1 theп Ьеg1п (•Выбор порта, если установлено несколько портов.•) textcoloг(yellow); wгitelп('Numbeг of гереаt kbchaг:=гeadkey; (•Считывание значения с вводимой клавиши.•) val(kbchaг,COM_пumbeг,code); (•Преобразование символа в число.•) uпt1l (СОМ_пumЬег>=1) апd (СОМ_пumЬег<=4) апd (СОМ[СОМ_пumЬег]<>О); епd: сlгsсг; RS232_addгess:=COM[COM_пumber]; wг1telп('Youг wп te( · RS232 selected RS232 iпterface: СОМ', ·, RS232_arJdr ess: 4); addгess: COM_numbeг:1);
3.4. ПРОГРАММНЫЕ БИБЛИОТЕКИ РЕСУРСОВ l 1оз 1 delay(1000); window(1, 1, 80, 25); Textbackgгound(Ьlack); сlгsсг; end; (•-Библиотека ресурсов № А7 (запись в регистр разрешения прерываний).-•) Pгocedu ге wг1 te_iпteггupt_enaЫe( RS232_addгess, output_byte: intege г); begin poгt(RS232_addгess+1):=0utput_byte; end; (•-Библиотека ресурсов № А8 (чтение из регистра идентификации прерываний).-•) Function begin гead_inteггupt_identification(RS232_addгess:integeг):integeг; гead_inteггupt_identification:=poгt(RS2132_addгess+2); end; (•-Библиотека ресурсов № А9 (заnись данных в регистр формата данных).-•) Ргосеduге Wг1te_data_foгmat (RS232_addгess, Baud, Paгity, Data_bit, Stop_bit:integeг); vаг byte1,byte2,output_byte:byte; divisoг: integeг; beg1n divisoг:=115200 if if divisoг<=255 d1visoг>255 div Baud; then beg1n byte1: =d1v1soг; byte2: =О; end; then beg1n byte1:=div1soг mod 256; byte2:=divisoг div 256; end; output_byte:=(data_bit-5)+4•(stop_b1t-1)+8•paг1ty; poгt(RS232_addгess+3):=128; {Загрузка формата последовательных данных, nервый бит регистра равен poгt(RS232_addгess+O) :=byte1; 1.} {Младший байт делителя равен 1.} poгt(RS232_addгess+1):=byte2; {Старший байт делителя равен О.} poгt(RS232_addгess+З):=output_byte; {Загрузка делителя и других nараметров.} end; (•-Библиотека ресурсов № А10 (запись данных в буферный регистр передатчика).-•) Ргосеduге wг1te_tгansmit_buffeг(RS232_addгess,output_byte:integeг); beg1n poгt(RS232_addгess):=output_byte; end; (•-Библиотека ресурсов № А11 (заnись данных в регистр состояния модема).-•) pгocedu ге wг1 te_modem_status( RS232_add гess, (•RTS и DTR или 1, или О. RTS и DTR RTS, DTR: integeг); инвертируются с помощью МАХ238 на экспериментальной nлате.•) (•RТS=бит 1. ОТR=бит begin RTS:=1-RTS; DTR:=1-DTR; О регистра управления модемом, смещение poгt(RS232_addгess+4):=RTS•2+DTR; 04h.•) (•Запись в регистр 04h.•) end; (•-Библиотека ресурсов № А 12 (чтение данных из буферного регистра приемника).-•) Function гead_гeceive_buffeг(RS232_addгess:1пtegeг):1ntegeг;
j 104 j З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Begiп read_receive_buffer:=port(RS232_address); епd; (•-Библиотека ресурсов № А13 (чтение данных из регистра состоRниR модема).-•) read_modem_status(RS232_add ress, х: iпteger): iпteger; DCD, х=2 - выбор бита DSR, х=З - выбор бита CTS.•) (•DСD=бит 7, DSR=бит 5, СТS=бит 4 регистра cocTORHИR модема, смещение Fuпctioп (•х=1 - выбор бита Обh.•) (•Все биты инвертируютсR с помощью МАХ238 на экспериментальной плате.•) var iпput_byte:byte; begiп iпput_byte:=port(RS232_address+6); case of х 1: 2: 3: Read_modem_status·=1-rouпd((iпput_byte апd Read_modem_status:=1-rouпd((iпput_byte апd Read_modem_status:=1-rouпd((iпput_byte апd 128)/128); 32)/32); 16)/16); епd; епd; (•-Библиотека ресурсов № А 14 (чтение ре rистра и гровоrо порта). - *) Fuпctioп read_game_port(bitx:1пteger):iпteger; (•Адрес игрового порта: Bitx (1-8) var 201h. выбирает состоRние АХ, АУ, ВХ, ВУ, ВА1, ВА2, ВВ1 и ВВ2.•) iпput_byte:byte; begiп iпput_byte:=port($201); read_game_port:=rouпd((1пput_byte апd bit_we1ght(b1tx))/bit_weight(bitx)); епd; (•-Библиотека ресурсов № А15 (запись в регистр игрового порта).-•) Fuпct1oп write_game_port; (•Вводит О в игровой порт длR запуска мультивибратора.•) Ьеg1п port($201) :=О: епd; (•-Библиотека ресурсов № А16 (получение длительности периода одновибратора).-•) Fuпctioп iпterval_game_port(x:iпteger):iпteger: (•х выбирает АХ(х=1), АУ(х=2), ВХ(х=З), ВУ(х=4).*) var time1,time2,dummy:iпteger: Procedure iпit_825З: (•Настройка 8253.•) begiп b6h = 10110110Ь: 10 = выбор счетчика 2; 11 = сначала чтение/запись младшего байта, затем старшего; 011 = режим З; О = шестнадцатибитовый двоичный счет.•) port($43):=$b6; (•Запись слова в управлRющий port($42) :=255; (•Загрузка младшего байта.•) port($43):=255; (•Загрузка старшего байта.•) (•УправлRющее слово= регистр 8253.•)
3.4. ПРОГРАММНЫЕ БИБЛИОТЕКИ РЕСУРСОВ 1 рогt($61) =рогt($61) ог рогt($43) (•Выключение динамика (•80h - =$80 •) команда фиксации для счетчика епd, Fuпct1oп геаd_8253 lпtege г, (•Считывание младшего и старшего байтов счетчика •) vаг low_byte h1gh_byte byte, Ьеg1п low_byte =рогt($42), h1gh_byte =рогt($43), геаd_8253 =low_byte+256•h1gh_byte, епd, vаг 1 lПtegeг, Ьеg1п lПl t_8253, fог l =1 to 100 do 1 =1, 1 =О, dummy =b1t_we1ght(x), ро гt ( $201 ) =О, t1me1 =геаd_8253, гереаt l =1+1 uпt1l (рогt($201) апd dummy=O) t1me2 =геаd_8253, lПteгval_game_poгt =t1me2-t1me1, lf 1>=5000 theп lпteгval_game_poгt =О, ог (1>=5000), епd, Библиотека ресурсов TPLIB2.PAS 2 *) TPLIB2 PAS (*Библиотека ресурсов ТРБ № (•Название библиотеки *) (•Процедуры для управления графикой и чтения клавиатуры •) (•Эта библиотека может быть включена в пользовательскую программу•) (•-Библиотека ресурсов № Pгocedure 01 (инициализация графического режима) 1Пlt1al1ze_gгaph, vаг gd,gm lПtegeг, гad1us lпtegeг, Ьеg1п gd =detect, lnltgгaph(gd, gm, ), епd, (•-Библиотека ресурсов № 02 (рисование светодиода) status byte) Status - включено -•) ргосеduге dгaw_led(x, у lПtegeг, ( *Х и У - координаты центра Ьеg1п setcolo г ( геd) setl1пestyle(1 lf status=1 else 1 2), setf1llstyle(1, theп геd) Ьеg1п setcolo г (whlte), setf1llstyle(1,wh1te) end, или выключено *) -•) 3 •) 11 os I
l 106 I З. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ p1esl1ce(x, у, О. 360, 10); setcolor(magenta), circle(x, у, 10); setcolor( yellow); снсlе(х, у, 5); end; (•-Библиотека ресурсов № 03 (рисование окон и вывод сообщений).-•) procedure draw_message(x1,y1,w1dth,he1ght,color_box:1nteger, message.str1ng; font,s1ze_text,color_text·1nteger); ( • х1, у1 - координаты левого края надписи; width и he1ght - ширина и высота окна сообщения: color_box - цвет окна сообщения; message - сообщение, выводимое на экран; Font,s1ze_text,color_text - шрифт, размер и цвет текста.•) beg1n setf1llstyle(1,color_box); Ьаг(х1, y1-round(he1ght/2),x1+w1dth,y1+round(he1ght/2)); setcolor(color_text): settextstyle(font,O,s1ze_text); outtextxy(x1+5,y1-4,message): end; (•-Библиотека ресурсов № 04 (считывание символов nри нажатии функциональных клавиш).-•) funct1on getkey:str1ng: var ch:char; beg1n ch:=readkey; (•Считывание символа с клавиатуры.•) if ch=#O then (•Если нажата дополнительная клавиша, то выполняются следующие nроцедуры.•) beg1n ch :=readkey; (•Считывание клавиши снова для rолучения кода символа.•) i f ch=#72 then getkey= · UP ·: (•Стрелка вверх = #72. •) lf ch=#80 then getkey='DOWN'; (•Стрелка вниз= #80.*) if ch=#75 then getkey='LEFТ'; (•Стрелка влево= #75.•) i f ch=#77 then getkey= · RIGHT ·; (•Стрелка вnраво = #77. •) if ch=#82 then getkey= INSERT', (•Клавиша insert = #82. •) lf ch=#83 then getkey='DELETE (•Клавиша delete = #83.•) i f ch=#71 then getkey= · НОМЕ ·; (•Клавиша home = #71. •) if ch=#79 then getkey='END': (•Клавиша end = #79.*) end else (•Если нажата не доnолнительная клавиша.•) beg1n if ch=#13 then getkey.='RETURN' else if (ch=8) ог (ch=127) then getkey.='BACKSPACE' else getkey=ch; end; end;
3.4. ПРОГРАММНЫЕ БИБЛИОТЕКИ РЕСУРСОВ l107 I Procedure init_8253; begin b6h = 1011011оь: 10 = выбор счетчика 2; 11 = сначала чтение/запись младшего 011 = режим З: (•Управляющее слово= байта, затем старшего; О= шестнадцатибитовый двоичный счет.•) port($43):=$b6; port($42):=255; port($43):=255; рогt( $61): =рогt( $61) port($43): =$80 оr 1 (•Запись слова в управляющий регистр ~253.•) (•Загрузка младшего байта.•) (•Загрузка старшего байта.•) (•Выключение внутреннего динамика.•) ( •80h - команда фиксации для счетчика 3. •) епd; Functioп read_8253: iпteger; (•Считывание младшего и старшего байтов счетчика.•) vаг low_byte,high_byte:byte; begin low_byte: =port( $42); high_byte:=port($43); read_8253:=low_byte+256•high_byte; end: fuпction fiпd_peгiod( add гess: iпteger; bit_weight: iпteger): real; (•Нахождение длительности периода входного цифрового сигнала. Входной сигнал определяется адресом порта ввода и номером бита: Бит О - bit_weight=1 Бит 1 - bit_we1ght=2 Бит 7 - bit_weight=128.•) vаг couпt,average_пumber,time1,time2:integer; begin (•Определение промежутка времени, в течение которого входной сигнал имеет низкий уровень. Это значение будет использоваться для вычисления переменной гереаt uпtil port(addгess) repeat until poгt(address) time1:=гead_8253; repeat uпtil and bit_weight=bit_weight; and bit_weight=O; (•Низкий уровень.•) (•Считывание первого значения счетчика.•) port( add гess) and bit_weight=bit_weight; time2:=гead_8253; average_number.•) (•Высокий уровень.•) (•Снова высокий уровень.•) (•Считывание второго значения счетчика.•) average_numbe г: =rouпd( 10000/( time2-time1)); (•Определение ave гage_number. •) if average_number=O then aveгage_number:=1; repeat until port(add гess) and bi t_weight=bit_weight; (•Высокий уровень.•) гереаt until port(addгess) and bit_weight=O; (•Низкий уровень.•) time1:=read_8253; (•Считывание первого значения счетчика.•) for count:=1 to average_number do (•Нахождение спада входного сигнала.•) begin repeat until port(address) and bit_weight=bit_weight; (•Высокий уровень.•) repeat until poгt(address) and bit_weight=O; (•Низкий уровень.•) end;
l 1os 1 з. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ t1me2·=гead_8253; (•Считывание второго значения счетчика.•) f1пd_peг1od =((t1me1-t1me2)•1/2•1193180)•le6/aveгage_пumbeг), епd; Библиотека ресурсов WLIB.PAS (•Программная библиотека ресурсов А.•) (•Процедуры ввода/вывода для параллельного, LiЬгагу последовательного и игрового портов.•) L1bA; uses Winc гt; (•-Библиотека ресурсов № А1 (определение базового адреса Fuпct1oп Сепtгоп1с(х · 1пtеgег) iпtegeг; (* $000 $0408 LPT) -•) ехрогt; содержит базовый адрес для $000:$040А содержит базовый адрес для LPT1, LPT2, $000.$040С содержит базовый адрес для LРТЗ, $000:$0408 $000:$0411 содержит базовый адрес для LPT4, содержит количество параллельных портов.•) vаг пumbeг_of_LPT,LPT1,LPT2,LPTЗ,LPT4:1пtegeг; Ьеg1п пumbe г _of _lpt: =тет( $0000 ·$0411); (•Считывание количества установленных параллельных портов (128+64)) lpt4·=0; пumbeг_of_lpt:=(пumbeг_of_lpt апd lpt1:=0; lpt2:=0, lptЗ.=O; lpt1:=memw($0000:$0408); lpt2:=memw($0000 $040А); lpt3:=memw($0000.$040C); lpt4: =memw($0000: $040Е); case х of •) shг (•Процедура считывания из памяти.•) О: сепtгоп1с:=пumЬег_оf_LРТ; 1: 2: 3: 4: сепtгоп1с:=LРТ1; ceпtгon1c:=LPT2; сепtгоn1с:=LРТЗ; ceпtгon1c:=LPT4; епd; епd; (•-Библиотека ресурсов № А2 (нахождение веса бита).-•) Fuпct1oп Ь1 t_we1ght(blt: iпtegeг): iпtegeг; ехрогt; vаг 1, dummy.1пtegeг; beg1n if bit=1 then b1t_we1ght:=1 else Ьеg1п dummy:=1 fог i:=1 to bit-1 do dummy·=dummy•2; b1t_weight:=dummy; епd; епd, 6;
3.4. ПРОГРАММНЫЕ БИБЛИОТЕКИ РЕСУРСОВ j 109 j -•) Read_status_port ( Р _add ress intege r) integer, export, (•-Библиотека ресурсов № АЗ (считывание данных в компьютер) Funct1on var byte1 begin byte1 byte1 byte, =port(P_address+1), =byte1 and 120, •) and Odddd (•Считывание байта из регистра состояния (•01111000 (от OddddOOO •) Read_status_port =byte1 shr 3, end, старшего к младшему) (•Сдвиг на З бита вправо, Read_status_port=OOOOhhhh •) (•-Библиотека ресурсов № А4 (запись в регистр данных) -•) Funct1on Wr1te_data_port(P_address integer,port_data integer) integer, export, (•Биты регистра данных не инвертированы •) beg1n port(P_address) =port_data, (•Ввод байта в регистр данных •) end (•-Библиотека ресурсов № А5 (запись данных в регистр управления компьютера) -•) Funct1on Wr1te_control_port(P_address integer, port_data integer) integer, export, (•Биты О, 1 и З инвертированы Требуются преобразования над битами •) beg1n if port_data and 1=1 then port_data =port_data and (255-1) else port_data =port_data or 1, if port_data and 2=2 then port_data =port_data and (255-2) else port_data =port_data or 2 if port_data and 8=8 then port_data =port_data and (255-8) else port_data =port_data or 8 (•Ввод байта данных в порт управления •) port(P_address+2) =port_data, end (•-Библиотека ресурсов № А6 (определение базовых адресов СОМ-портов) -•) Funct1on RS232(x integer) integer, export, {Универсальное средство определения адресов СОМ-портов $0000 $0400 содержит базовый адрес порта СОМ1, $0000 $0402 содержит базовый адрес порта СОМ2, $0000 $0404 содержит базовый адрес порта СОМЗ, $0000 $0406 содержит базовый адрес порта СОМ4, $0000 $0411 содержит количество СОМ-портов •) var number_of_COM СОМ1 СОМ2,СОМЗ,СОМ4 integer, beg1n Number_of_COM =mem($0000 $0411) (•Считывание Number_of_COM =(Number_of_COM and (8+4+2)) shr 1, (* СОМ1 =О, СОМ1 СОМ2 СОМЗ СОМ4 СОМ2 =О, =memw($0000 =memw($0000 =memw($0000 =memw($0000 СОМЗ =О, $0400), $0402), $0404), $0406), количества СОМ-портов СОМ4 =О, (•Процедура считывания из памяти •) •)
II!O) З. ПРОГРАММЫ УПРАВЛЕНИЯ :ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ Case of RS232 :·=пumber _of _COM: 1: RS232: =СОМ1; 2: RS232:=COM2; 3: RS232:=COMЗ; 4: RS232:=COM4; х О: епd; (•-Библиотека ресурсов № А7 (запись в регистр разрешения прерываний).-•) Fuпctioп write_iпterrupt_eпaЬle(RS232_address, output_byte:iпteger); ехрогt; begiп poгt(RS232_addгess+1):=0utput_byte; епd; (•-Библиотека ресурсов № А8 (чтение из регистра идентификации прерываний).-•) Fuпctioп гead_iпteгrupt_ideпtificatioп(RS232_addгess:iпtegeг):iпtegeг; ехрогt; begiп гead_iпteггupt_ideпtificatioп:=poгt(RS2132_addгess+2); епd; (•-Библиотека ресурсов № А9 (запись в регистр формата данных).-•) Fuпctioп Wгite_data_foгmat(RS232_addгess, Baudx. Paгity, Data_bit, Stop_bit:iпtegeг):iпtegeг: ехрогt; vаг byte1,byte2,output_byte:byte; div1soг: iпtegeг; baud:loпgiпt; begiп baud:=baudx•100; div Baud; if divisoг<=255 theп begiп byte1:=divisoг; byte2:=0; епd; if divisor>255 theп begiп byte1:=divisoг mod 256; byte2:=divisoг div 256; divisoг:=115200 епd; output_byte:=(data_bit-5)+4•(stop_bit-1)+8•paгity; poгt(RS232_addгess+3):=128; {Загрузка формата последовательных данных, первый бит регистра равен рогt (RS232_add гess+O): =byte1: 1.} {Младший байт делителя равен 1.} poгt(RS232_addгess+1):=byte2; {Старший байт делителя равен О.} poгt(RS232_addгess+З):=output_byte; {Загрузка делителя и других параметров.} епd; (•-Библиотека ресурсов № А10 (запись данных в буферный регистр передатчика).-•) Fuпctioп write_tгaпsmit_buffeг(RS232_addгess,output_byte:iпteger):iпtegeг; Ехрогt begiп poгt(RS232_addгess):=output_byte; епd; (•-Библиотека ресурсов № А11 (запись данных в регистр состояния модема).-•) Fuпctioп write_modem_status(RS232_addгess, (•RTS и DTR (•RТS=бит 1, RTS, DTR:iпtegeг):iпtegeг;expoгt: инвертируются с помощью МАХ238 на экспериментальной плате.•) DТR=бит О регистра управления модемом, begiп RTS:=1-RTS: смещение 04h.•)
3.4. ПРОГРАММНЫЕ БИБЛИОТЕКИ РЕСУРСОВ DTR:=1-DTR; poгt(RS232_address+4):=RTS•2+DTR; (•Запись в регистр 04h.•) епd; (•-Библиотека ресурсов № А12 (чтение данных из буферного регистра приемника).-•) Functioп гead_гeceive_buffer(RS232_addгess:iпtegeг):integer;export; begin гead_гeceive_buffer:=poгt(RS232_addгess); епd; (•-Библиотека ресурсов № А13 (чтение данных из регистра состояния модема).-•) RS232_add гess, х: iпtegeг): iпtegeг; ехрогt; - выбор бита DSR, х=З - выбор бита CTS.•) СТS=бит 4 регистра состояния модема, смещение 06h.•) Fuпct1oп гead_modem_status( (•Х=1 - DCD, 7, DSR=бит 5, выбор бита (•DСD=бит х=2 (•Все биты инвертируются с помощью МАХ238 на экспериментальной плате.•) vаг iпput_byte:byte; begiп iпput_byte:=port(RS232_addгess+6); case х of 1: 2: 3: Read_modem_status:=1-гouпd((input_byte апd Read_modem_status:=1-гouпd((input_byte апd Read_modem_status:=1-гouпd((iпput_byte апd 128)/128); 32)/32); 16)/16); епd; епd; (•-Библиотека ресурсов № А14 (чтение регистра игрового порта).-•) Fuпctioп гead_game_port(bitx:1пtegeг):iпtegeг;expoгt (•Адрес игрового порта: Bitx (1-8) 201h. выбирает состояние АХ. АУ, ВХ. ВУ, ВА1, ВА2, ВВ1 и ВВ2.•) vаг iпput_byte: byte; Ьеg1п iпput_byte: =рогt($201); bit_weight(bitx))/bit_weight(bitx))); гead_game_poгt:=rouпd((iпput_byte апd епd; (•-Библиотека ресурсов № А15 (запись в регистр игрового порта).-•) Functioп wr1te_game_poгt:iпteger: ехрогt; (•Вводит О в игровой порт для запуска одновибратора.•) begiп рогt($201):=0; епd; (•-Библиотека ресурсов № А16 (получение длительности периода одновибратора).-•) Fuпctioп iпteгval_game_poгt(x:iпtegeг):iпtegeг; ехрогt; (•х выбирает АХ(х=1), АУ(х=2), vаг time1,time2,dummy:iпtegeг; Ргосеduге iпit_8253; (•Настройка begiп 8253 •) ВХ(х=З), ВУ(х=4).•) [!!1J
QJij 3. ПРОГРАММЫ УПРАВЛЕНИЯ ЭКСПЕРИМЕНТАЛЬНЫМИ ПЛАТАМИ b6h = 10110110Ь: 10 = выбор счетчика 2; 11 = сначала чтение/запись младшего 011 = режим З; (•Управляющее слово= байта, затем старшего; О= шестнадцатибитовый двоичный счет.•) 8253. •) port($4З):=$b6; (•Запись в управляющий регистр port($42):=255; port($43):=255; port($61):=port($61) or 1; (•Загрузка младшего байта.•) (•Выключение внутреннего динамика.•) port($4З):=$80; (•80h - (•Загрузка старшего байта.•) команда фиксации для счетчика З.•) end; Functioп read_8253 integer; (•Считывание младшего и старшего байтов счетчика.•) var low_byte,h1gh_byte:byte; beg1n low_byte:=port($42); high_byte:=port($43); read_8253:=low_byte+256•high_byte; end; var i: integer; beg1n in1 t_825З; for i:=1 to 10 do i:=1; i:=O; dummy:=b1t_we1ght(x); port($201) :=О; t1me1:=read_8253; repeat i:=1+1 until (port($201) and dummy=O) or (i>=5000); time2:=read_825З; interval_game_port:=time2-time1; if i>=10000 then interval_game_port:=O; end; exports cent ronic bit_weight read_status_port wri te_data_po rt write_control_port RS232 Write_interrupt_enaЫe Read_interrupt_identif1cation Write_data_format write_transmit_buffer wr1te_modem_status read_receive_buffer read_modem_status read_game_port wr1te_game_port interval_game_port begin end. index index index index index index index index index index index index index index index index 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16;
4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПАРАЛЛЕЛЬНОГО, ПОСЛЕДОВАТЕЛЬНОГО И ИГРОВОГО ПОРТОВ Для многих приложений недостаточно того количества линий ввода/вывода, ко­ торое обеспечивают стандартные порты, и требуется увеличение их числа. 4.1. Расширение возможностей параллельного порта Одним из самых простых и экономичных способов увеличения количества линий ввода/вывода является использование цифровых микросхем ТТЛ и КМОП серий 74LS и 4000 с малой степенью интеграции. Если же вы хотите изменять конфигу­ рацию устройств, потребуются специализированные программируемые микро­ схемы повышенной степени интеграции ма 8255 - 8255, 8155 и др. Например, микросхе­ позволяет формировать 24-канальный ввод/вывод, который разделен на три группы: А, В и С. Каждая группа имеет восемь линий ввода/вывода и может быть настроена как на ввод, так и на вывод. 4.1.1. Увеличение количества линий ввода/вывода при помощи микросхем с малой степенью интеграции В разделе приводятся принципиальные схемы для ввода/вывода данных с ис­ пользованием цифровых микросхем с малой степенью интеграции, а также про­ граммы управления к ним. Чтение восьмибитовых данных На рис. 4.1 изображены микросхема 74LS241 и принципиальная схема, позволя­ ющая считывать восьмибитовые данные через параллельный порт компьютера. Когда на контакт 1 подается низкий уровень, открываются четыре левых буфера, а когда на контакт ты 1 и 19 19 поступает высокий уровень - четыре правых. Если контак­ соединены, то, последовательно подавая на них высокий и низкий уров­ ни, можно считать четыре бита в буферы слева, затем четыре бита в буферы справа и наоборот, то есть восемь бит считываются при помощи только четырех линий.
@) 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ Соединенные таким образом контакты (DSL), 1 и 19 образуют линию выборки данных которая управляется одним из битов регистра данных. На рис. 4.1 также показано соединение микросхемы с экспериментальной пла­ той параллельного порта. Контакты D1, S1 - S4 находятся на плате. Восьмибито­ вые входные данные считываются в компьютер за два последовательных обраще­ ния к порту. Когда на линии высокий - Лuнu~ биты бЬ'боро 05L=O 080 081 082 083 4-7. DSL низкий уровень, считываются биты 0-3, а когда 0-7), необходимо Чтобы получить исходный байт (биты gоннЬ'х OSL 01 05L=1 084 085 086 087 080, 084 51 081 081, 085 52 082 083 082, 086 53 084 085 КонmокmЬ' но эксперuменmольноо nлame nароллельного nopmo Рис. 4.1. 083, 087 54 +58 о 086 087 GNO Схема для чтения байта данных через четырехбитовый цифровой вход при помощи микросхемы 7 4LS24 l
4.1. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПАРАЛЛЕЛЬНОГО ПОРТА @] произвести несложные манипуляции над битами. Проверить работу схемы мож­ но, используя программу управления экспериментальной платой (см. главу 3). Вывод данных Для вывода данных применяются регистры-защелки, например 74LS374. Входы 74LS374 (рис. 4.2) соединены с битами 0-7 Запись данных в микросхеме управляется контактом от состояния выходной линии дятся на экспериментальной плате параллельного порта. Токmь~ Z - х 00 - 8t<xog н н L L QO х х L н Х 8xog •• L L L z безрозлuчное cocmos:iн,Je бь~сокое conpomuблeнue начальное cocmo~нue 4D Конmокmь~ эксrерuмен плоте но mo льноо nороллельного nopmo (1 D1 02 03 D4 05 06 07 08 +58 Зощелко s D80 081 D82 DВ3 084 085 086 087 D81 082 083 084 085 086 087 GNO Рис. 4.2. или CLK (контакт 11) и осущест­ CLK зависит регистра управления. Контакты Ct, D1 - D8 нахо­ вляется по положительному фронту. Логическое состояние на входе ос 74LS373 регистра данных. Схема для вывода данных с использованием микросхемы 74LS37 4
~ 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ Текст программы LS374.PAS Ргоgгаm Ceпtгoп1c_output_expaпdeг_usiпg_74LS374; (*Программа для расширения возможностей порта при помощи 74LS374 *) uses gгaph, сгt, dos; vаг ch:chaг; (*Подключение двух библиотек: TPLI81 и TPLI82.*) {$1 c:\1oexp\tpl1b1.pas} {$I c:\1oexp\tpl1b2.pas} ргосеduге Load_data_to_LS374, 74LS374.*) (*Загрузка данных в vаг output_byte.byte; Ьеg1п (*Ввод данных в порт данных.*) wгi te_coпt гоl_рогt ( P_addгess, О); wг1 te( · Iпput the output data: ·); геаdlп( output_byte); wгite_data_poгt(P_addгess,output_byte); wгite('Pгess RETURN to load the iпput data to the output of 74LS374' ); геаdlп: wгite_coпtгol_poгt(P _addгess, wг1telп('L1пe 1 of the 1); Сопtгоl рогt goes fгom low to h1gh to latch data· ); delay(2000); ( wгi te_coпt гоl_ро гt Р _addгess, О); епd; (•Главная программа.•) Ьеg1п ceпtгoп1c_addгess, (•Получение адреса параллельного порта.*) гереаt сlгsсг, load_data_to_LS374; (Y/N): · ); uпtil upcase(ch)='N'; wгite( ·сопt1пuе гeadlп(ch); епd. 4.1.2. Увеличение количества линий ввода/вывода при помощи микросхемы 8255 На рис. 4.3 приведены выводы и внутренняя блок-схема микросхемы 8255 с 24 ли­ ниями ввода/вывода, разделенными на три восьмиразрядных порта: А, В и С. Микросхема также имеет четыре внутренних регистра. Три из них называются периферийными и относятся к портам А, В и С. Четвертый - это регистр управ­ ления. Периферийные регистры используются для передачи данных через порт, а регистр управления - для хранения параметров настройки. Он представляет со­ бой восьмиразрядную двунаправленную шину (биты О- 7, контакты 34-27), че­ WR (контакт 8) рез которую данные считываются или записываются под управлением линий (контакт 36) и RD (контакт 5). Линии адреса АО (контакт служат для выбора внутреннего регистра: о АО=О, А1 =О о А0=1, А1=0 - выбор регистра А; выбор регистра В; 9) и А1
II!ZJ 4. 1. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПАРАЛЛЕЛЬНОГО ПОРТА Гpynna +58 РАО А Группа Порm GND А 4 1 РА7 40 37 А (8 бхоgоб/ Уnрабленuе бшоgоб) Группа Порm А РС7 13 РС4 10 С (cmapwue Шuна розроgе<) gаннЬ1х 34 27 Бу<рер WUHЬI gанНЬIХ Группа Порт в РСО 17 С (млogwue разроgе<) Уnрабленuе зanuct ю/ чmенuем Группа В Группа Порm в В (8 бхоgоб/ Уnрабленuе бе<хоgоб) Рис. 4.3. Выводы и внутренняя блок-схема микросхемы 8255 РВО 21 25
Ш!J 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ о АО=О, А1=1 о А0=1, А1=1 выбор регистра С; - выбор регистра управления. Для нормального функционирования микросхемы на линию должен подаваться низкий уровень. Линия RESET (контакт 35) CS (контакт 6) предназначена для сброса микросхемы, который осуществляется высоким уровнем. После сбро­ са все линии ввода/вывода портов А, В и С настраиваются как входы. В нормаль­ ном режиме линия RESET должна удерживаться в состоянии логического нуля. Микросхема имеет три режима работы: о режим порты А и В настраиваются как восьмиразрядные порты ввода/ 1: вывода. Смешивание линий ввода и вывода не допускается. Порт С делится на две половины (четыре старших и четыре младших бита). Каждая полови­ на может быть настроена как на вход, так и на выход. Смешивание линий ввода и вывода в пределах одной половины запрещено; о режим микросхема настраивается как управляемый порт ввода/вывода, 2: порты А и В - как независимые порты ввода или вывода. Каждый из них имеет 4-разрядный порт управления, который формируется в порте С соот­ ветственно как четыре младших и старших бита; о режим 3: порт А настраивается как двунаправленный порт. Режимы работы микросхемы 8255 устанавливаются с помощью регистра управ­ ления, куда необходимо записать управляющее слово. Назначение битов управля­ ющего слова приведено ниже: бит 7 биты (флаг установки режима) 6, 5 всегда единица (биты выбора режима) 00 01 =режим =режим 1х =режим бит 4 (режим порта А) бит 3 (режим верхней половины порта С) 1 2 3 1 =вход о= выход 1 =ВХОД о= выход бит 2 (выбор подрежима для режима 3) 1=режим1 О= режим О бит 1 (режим порта В) 1 =вход о= выход бит О (режим нижней половины порта С) 1 =вход о= выход Схема соединения микросхемы 8255 с параллельным портом показана на рис. 4.4. 8255, этим процес­ 74LS241 и 74LS244). Регистр данных LРТ-порта передает данные в микросхему сом управляют DD2 и DD3 (буферы с тремя состояниями Регистр состояния считывает данные из единены с линиями адреса 8255. Две линии порта 8255, а две другие - с RD и WR. управления со­ Требуемые данные сначала записываются в регистр данных, а состояние ли­ ний АО и А1 - в регистр управления. Затем по линии WR подается нулевой
[!!!] 4. 1. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПАРАЛЛЕЛЬНОГО ПОРТА 002 74LS241 SEL 1 084 Vcc т S1 085 S2 086 S3 087 S4 Шuно gCHHtjX 01 02 03 04 о 05 06 07 08 -о С1 -{) С2 -"""" С3 --0 С4 +58 + 58 GNO Koнmoкmtj на эксnерuменmальнао nлome пара ллельнога nopmo Рис. 4.4. Схема с использованием программируемого устройства ввода/вывода параллельной информации 8255 импульс (перепад 1-0-1), при котором открываются буферы данных DDЗ. Пе­ репад 1-0 записывает информацию в выбранный регистр 8255. Данные из МИI<­ росхемы 8255 считываются DD2 (74LS241). Линия выбора данных (DSL) управляется битом О порта данных. При считывании данных состояние линий АО и А1 сначала записывается в регистр управления, а линия RD удерживается
(120 j 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ в нулевом состоянии. При этом ных. Затем линия DSL первый 8255 выводит данные на собственную шину дан­ раз переходит в ноль, и регистр состояния произ­ водит первое считывание. После этого линия DSL снова устанавливается веди­ ницу, и производится второе считывание. Таким образом, за два считывания восстанавливается исходный байт данных. Управляющая программа написана на языке Turbo Pascal 6. 128) и все порты как выходы (режим О, управляющее слово Она настраивает содержит все не­ обходимые процедуры и функции, позволяющие на их основе разрабатывать собственное программное обеспечение. сывает управляющее слово во Wri te_cont rol ( Cont rol_wo rd: byte) запи­ внутренний регистр управления 8255. Wri te_po rt (port_number, output_byte: byte) записывает байт в порт А, В или С, который был Inputbyte( port_number: byte): byte считывает данные из пор­ настроен как выход. та А, В или С, настроенного как вход. Текст программы Program 8255.PAS Ceпtroп1c_8255_iпterface; (•Некоторые используемые управляющие слова: 128(десятичное): порты А, В и С 155(десятичное): порты А, В и С - 144(десятичное): порт А вход; порты В и С 146(десятичное): порты А и В - - выходы; входы; входы; порт С - выходы; - выход.*) uses graph,crt,dos; var commaпd,output_byte,iпput_byte,bitпumber,portпumber,outputbyte:byte; P_address,delayпumber:iпteger; {$! c:\1oexp\tplib1.pas} procedure fiпd_delay_пumber; (•Определение скорости компьютера и количества тактов за 1 мс.,) var time1,time2,dt:real; t, h1,m1,s1,s1001,h2,m2,s2,s1002:word; begiп clrscr; gotoxy(25,24); write('Checkiпg computer speed'); gettime(h1,m1,s1,s1001); t1me1 :=3600•h1+60•m1+s1+s1001/100; for t:=1 to 1000 do delay(1); gettime(h2,m2,s2,s1002); time2:=3600•h2+60•m2+s2+s1002/100; dt:=time2-time1; delayпumber:=rouпd(1000/dt•0.001); clrscr; gotoxy(ЗO, 24); write( 'F1пished ... · ); сlгsсг; епd; Fuпct1oп coпvert(bytex:byte):byte; (•Преобразование bytex в байт 8255: ЬВ (*Байт, принимаемый для передачи в регистры Ы Ьб Ь5 Ь4 ЬЗ Ь2 Ь1, 8255.*)
OI!J 4.1. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПАРАЛЛЕЛЬНОГО ПОРТА баит выходящии с параллельного порта Ь8 Ь4 Ь7 ЬЗ Ь6 Ь2 Ь5 Ь1 Разница в битовых последовательностях получается из за соединения с платои данных в 8255 необходимо преобразовать их в соответствующую форму Для передачи •) Ьеg1п coпvert = ((bytex ((bytex ((bytex ((bytex апd апd апd апd 1)+((bytex апd 2) shl 1)+ 4) shl 2)+((bytex апd 8) shl З)+ 16) shr З)+((Ьуtех апd 32) shr 2)+ 64) shr 1)+(bytex апd 128) епd procedure wr1te_coпtrol(coпtrol_word byte) (•Запись управляющего слова в регистр управления ИС (•Управляющее слово вводится из порта [P_address] 8255 •) 8255 чтение/запись управляется портом [P_address+2] •) (•Конфигурация битов порта [P_address+2] -1(Read) -2(Wr1te) З(АО) 4(А1) •) Ьеg1п •) coпtrol_word =coпvert(coпtrol_word) (•Преобразование coпtrol_word port(P_address) (•Ввод управляющего слова из порта =coпtrol_word port(P address+2) delay(delayпumber•10) -О+О+4+0 delay(delayпumber•З) port(P_address+2) =0+2+4+0 delay(delayпumber•З) [P_address] •) (•Read=1 Wr1te=1 задержка=1~ •) (•Read=1 Wr1te=O АО=1 А1=1 А0=1 А1=1 АО=1 А1=1 задержка=10 мс•) port(P_address+2) =0+0+4+0 (•Read=1 Write-1 •) delay(delayпumber•З) задержка=10 мс епd procedure output_byte byte) 8255 определенныи переменнои port_пumber •) порта [P_address] чтение/запись 8255 управляется портом wr1te_port(port_пumber (•Запись баита (output_byte) (•Выходной байт вводится из в порт ИС address+2] •) [Р (•Конфигурация битов порта [P_address+2] -1() 2() З(АО) 4(А1) •) Ьеg1п output_byte =coпvert(output_byte) (•Преобразование output_byte •) port(P_address) =output_byte (•Ввод баита из порта [P_address] •) lf port_пumber=O theп Ьеg1п (•Ввод баита в регистр А ИС 8255 •) port(P_address+2) =0+0+0+8 delay(delayпumber•З) (•Read=1 Wr1te=1 А0=1 А1=0 •) port(P_address+2) =0+2+0+8 ~ау( delayпumbe r•З) (•Read=1 Wr1te=O АО=1 А1-О •) port(P_address+2) =0+0+0+8 ~ау( delayпumber•З) (•Read=1 Wr1te=1 А0=1 А1=0 •) епd if port_пumber=1 theп Ьеg1п (•Ввод баита в регистр В ИС port(P_address+2) =0+0+4+8 port(P_address+2) =0+2+4+8 port(P_address+2) =0+0+4+8 8255 •) delay(delayпumber•З) delay(delayпumber•З) delay(delayпumber•З) епd if port_пumbeг=2 theп Ьеg1п (•Ввод баита в регистр С ИС port( P_add ress+2) =О+О+О+О port(P_address+2) =0+2+0+0 port(P_address+2) =О+О+О+О епd епd delay(delayпumber•З) delay(delayпumber•З) delay(delayпumber•З) 8255 •)
l122 I 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ fuпct1oп iпputbyte(port_пumber:byte):byte; (•Считывание байта (iпput_byte) из порта микросхемы 8255, определенного переменной port_пumber.•) (•Байт вводится из порта [P_address+1], восьмибитовые данные вводятся в параллельный порт в два этапа. На первом этапе считываются биты 1, 2, 3 и 4; на втором - биты 5, 6, 7 и 8. Эта операция управляется битом 1 порта [P_address]. Чтение/запись 8255 управляется портом [P_address+2].•) (•Конфигурация битов порта [P_addгess+2]:-1(Read) -2(Wr1te) З(АО) -4(А1).•) var byte_1st,byte_2пd:byte; begiп if port_пumber=O theп (•Чтение данных из порта А begiп port( Р _add ress): =О; (•DSL=O, 8255.•) подготовка к считыванию младших четырех бит.•) port(P_address+2):=0+0+0+8; dela№laynumber•З); port(P_address+2):=1+0+0+8; (•Read=1, Write=1, (•Read=O, Write=1, АО=О, А1=0.•) АО=О, А1=0.•) byte_2пd:=port(P_address+1); (•Считывание младших port(P _add ress): =1; четырех бит.•) ( •DSL=1, подготовка к считыванию старших четырех бит.. byte_1st:=port(P_address+1); •) (•Считывание старших четырех бит.•) port(P_address+2):=0+0+0+8; dela№laynumbe r•З); (•Read=1, Wrlte=1, АО=О, А1=0.') епd; if port_пumber=1 then begiп (•Чтение данных из порта В 8255") port(P_address):=O; port(P_address+2):=0+0+4+8; delay(delayпumber•З); port(P_address+2):=1+0+4+8; byte_2nd:=port(P_address+1); ро rt(P _address): =1, byte_ 1st: =port(P _add ress+1); port(P_address+2).=0+0+4+8; delay(delaynumber•З); епd; lf port_number=2 then (•Примечание: begin (•Чтение данных из port(P_address):=O; ро rt( Р _add ress+2): =О+О+О+О, delay( delaynumbe r•З); port(P_address+2).=1+0+0+0; byte_2nd:=port(P_address+1); port(P_address):=1: byte_1st:=port(P_address+1); ро rt( Р _add ress+2): =0+0+0+0; delay( delaynumbe r•З): end; byte_1st=(x byte_2nd=(x порта С 8255.') Ь8 Ы Ьб Ь5 х х х) Ь4 ЬЗ Ь2 Ь1 х х х) х =любое число, Ь8 - Ь1 принимают значения О или 1.•) byte_1st:=byte_1st апd 120; (•х Ь8 Ы Ьб Ь5 х х х апd 01111000=0 Ь8 Ы Ьб Ь5 О О О.•) byte_1st:=byte_1st shl 1; and 120; byte_2пd:=byte_2пd shr З; end; byte_2пd:=byte_2nd (•Главная программа.•) beg1n find_delay_number; (•Сдвиг на 1 byte_1st=b8 Ы Ьб Ь5 О О 01111000=0 Ь4 ЬЗ Ь2 Ь1 вправо, byte_2nd=O О О О Ь4 ЬЗ бит влево, (•х Ь4 ЬЗ Ь2 Ь1 х х х апd (•Сдвиг на 3 бита О о") О О О.•) Ь2 Ь1.•)
4.2. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА l 12з I clrscr, Centron1c_address, repeat clrscr, wr1teln( Centron1c port - 8255 card test1ng progгam ), wr1 teln, wr1teln( 'Port А, В and С аге all conf1gured as Outputs ), wr1teln( The control word sent to the 8255 PPI 1s 128 dec1mal ), wrlte_cont rol( 128), (•Порты А, В и С настроены как выходы •) wr1te_control(128), wr1 teln, wrlte( Input the blt number to Ье tested ( 1 to 8, 9 to qu1 t) ) , readln ( bltnumbe r), outputbyte =b1t_we1ght(b1tnumber), wrlteln, textcolor(yellow+Ы1nk), wr1te( The selected b1t of port А, В and С w1ll change from wr1 te( You need а log1c ргоЬе to test the сагd' ) , textcolor(wh1 te), repeat wr1 te_port(O, outputbyte), wr1te_port(1,outputbyte), wr1te_port(2,outputbyte), delay(delaynumber•ЗOO), wr1te_port(O,O), wrlte_port ( 1, О) wrlte_port(2 О), delay(delaynumber•ЗOO), unt1l keypressed ог (portnumber=9), readln, unt1l b1tnumber=9, end 4.2. О to 1 repeatedly ), Расширение возможностей последовательного порта В разделе приводится информация о более сложных вариантах использования последовательного порта. 4.2.1. Преобразователи уровней RS232/ТТЛ Наиболее просто преобразовать уровни напряжения RS232 в уровни ТТЛ с по­ мощью полупроводниковых стабилитронов (рис. 4.5а). Схема состоит из одного резистора и пятивольтового стабилитрона. Когда на входе схемы высокий уровень напряжения, на выходе +5 В, в противном случае +0,6 В. Выходной сигнал может управлять схемами ТТЛ или КМОП. Другая схема преобразователя RS232/TTЛ представлена на рис. 4.5б. Она не RS232) и инвер­ гребует внешнего источника питания (использует питание порта тирует сигнал. Достаточно широко применяются интегральные схемы преобразователей ТТЛ/ 313) - RS232, например МАХ232 см. рис. 4.6. (Maxim RS655-290) и МАХ238 (Maxim RS655- Для работы обеих микросхем необходим источник питания
[ 124] 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ а) • 2К 1 Уробень 5 18 О -0,68 + Уробень RS1232 Cmaбuлumpoн нопроженuо пл + 5, 1 в GND 1 ----uRD наnряженuя В. Микросхема МАХ232 имеет встро­ +5 RDu------~ u----------e-------{) енные преобразователи напряжения, два преобразователя RS232/TTЛ и два преоб­ разователя TTЛ/RS232. Преобразователь TTЛ/RS232 превращает напряжение пи­ тания В в напряжения +5 +10 и -10 В. Следует помнить, что нельзя подключать GND выводы 3 V+ и к потенциалу, меньшему V- В по абсолютной величине (минималь­ ный уровень для б) дах +58 V+ и V-, ние составляет 1 58 08 о ~-{) RD RD преобразователей выдерживают напряже­ 25 ние до 1 го хода Уробень 1 N4148 Кб/с. Ток потребления наnряженuя Уробень пл RS232 мА. Характеристики МАХ238 тыре преобразователя RS232/TTЛ и ТТЛ/ RS232. 2,7К j•"~'·1 4 аналогичны МАХ232, но она имеет по че­ наnрs:~женuя Для автономных устройств с питанием +58 от батарей может использоваться мало­ мощная версия МАХ3232 1453), 1 120 микросхемы МАХ232 в режиме холосто­ 300 о В. Максимальная скорость пере­ дачи данных о----~.:...:J-Н RS232). Когда на выхо­ 20 мА, а напряже­ порядка + 7 и - 7 В. Входы ток равен Другие электрические характеристики 8С557 58 -98 (Maxim RS189250 мкА. потребляющая только аналогичны. Рис. 4.5. Чтобы обеспечить высокое шумоподав­ Схемы преобразователей напря­ жения RS232/ТТЛ. а литроне, б - - RS232/ТТЛ на стаби­ ление и электрическую изоляцию между входом и выходом, применяются преобра­ RS232/ТТЛ и ТТЛ/RS232 на зователи с гальванической развязкой. Та­ транзисторе кие устройства, как NM232D D (Newport RS264-412) - см. рис. 4.7, имеют по два преобразователя RS232/TTЛ и ТТЛ/ RS232 и работают от напряжения питания +5 В. Напряжение, которое изоляция способна выдержать, равно 1500 В. 4.2.2. Увеличение количества линий ввода/вывода с помощью UART UART CDP6402 (Harris Semiconductors, RS630-389) - это КМ ОП, универсальный асинхронный приемопередатчик для сопряжения с асинхронными каналами пере­ дачи последовательных данных (рис. 4.8). Микросхема имеет программируемый формат передачи данных, может передавать 5-8 бит данных и характеризуется наличием (или отсутствием) проверки на четность или нечетность, длительнос­ тью стоповой посылки 1, 1,5 или 2 бита. Потребляемый ток мА при напряжении питания Контакт 21 - 1,5 Напряжение питания составляет +5 4-10 В. В. вход для сброса микросхемы, на него обычно подается низкий уровень напряжения. Контакты 35-39 управляют форматом передачи данных.
4.2. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА V+ оuт Tl С1- R2 IN оuт IN IN f.J1AX232 МАХ3232 v- l1251 оuт оuт IN IN МАХ238 IN IN оuт Cl+ V+ С1- +58 cs _[ 1 ~~~~---116>--~~~~ С3 vcc +5 + 1 ов Уgбоumель С1 Cl +10 С5 22мкФ НОПр)::!ЖеНU)::I -108 l!'нберmор нonp:;iжeнu)::I +58 -+- ' Рис. 4.6. ТТП/КМОП RS232 бxogt> бшоg" ПЛ/КМОП RS232 бшоg бxogt> Расположение выводов МАХ232 и МАХ238 и внутренняя блок-схема МАХ232 Для работы с этими контактами необходимо подать высокий уровень напряжения на контакт 34 (управление регистром загрузки, CRL). PI) высокого уровня блокиру­ ется проверка на четность. При этом на коrпа1пе 13 (ошибка паритета, РЕ) посто­ яюю удерживается низкий уровень. Когда на входе PI ноль, для выбора проверки по четности необходимо на контакт 39 (разрешение проверrш по четности, ЕРЕ) При подаче на контакт 35 (блокировка проверки, подать единицу. Если на ЕРЕ ноль, выбирается проверка по нечетностп. Единица па контакте 36 (выбор длины стопового бита, SBS) дает длину стоповой посылки
\ 126 \ 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ NC Vcc NC ТТL/СМОS Т2 IN TTL/CMOS Т1 оuт оuт R1 IN 7 R2 IN IN NC Разрешено 11 ТТL/СМ0'3 R2 OUT 12 +58 RTS----<~ !----•RTS стs-----< 1-----стs RO-----< 1-----RO ТО----<~ \...----то в~клюценuе _ _ __, Разрешено - - Го льбонuческш:1 разбозка Рис. 4.7. Расположение и назначение выводов микросхемы NM232DD 1,5 бита для пятибитового формата и 2 бита для остальных форматов. Подача нуля дает один стоповый бит. Контакты 37 и 38 (выбор длины блока данных, соответ­ ственно CLS 1 и CLS2) управляют установкой длины блока данных: о о о о CLS1 =О, CLS 1 = 1, CLS 1 = О, CLS 1 = 1, Контакты передатчика) CLS2 =О CLS2 = О CLS2 = 1 CLS2 = 1 - 5 6 7 8 бит; бит; бит; бит. 17 (тактирование регистра - приемника) и тактовыми импульсами, частота которых в передачи. Обычно они соединены вместе. Контакr 20 40 (тактирование регистра это тактирующие входы приемника и передатчика, управляемые 16 раз больше, чем требуемая скорость (вход регистра прием1шr<а) представляет собой вход для приема последовательных данных. Принятые данные преобразуются в параллельную
.,, :s: !' .,.. !» CD О о- cr: о; .-- N .q- tf> Ф а-: cr: f") О:: О:: О:: cr: t-- t-- t-- t-- t-- t- ......_ а-: m m m m m m rn m о ]::. t-- t- о: :s: "' :I: ~ Бyq>epнtjo -о ф "'"' npo5epкu RBR3 О\ l~K~~ "' о ;., "' GND Лос:uка RBR4 :I: :I: Vcc pe2ucmp nepegamчuкa TBR4 30 l на чеmносmь "'"::z:: Мульmunлексор s '" 1:11 ф ;: о о w с ~ )> ;;о -t о ~ s х n " n Е Pe2ucmp nepegamчuкa TBRL TRC '~°' 1 ~о~- TBRO~) CLs2@ ·1 1 1 1 о Pe2ucmp ЭЕ уnра[3)ленuя ::z:: -о о 0-. n .... ./>.. С) '"S• tv :::J о ,---------------.--H20)RRI g ~ Мульmunлексор • Cmopm --.-- ~ ; 1Т' ::z:: о " о :::J о ~ <>: о w о w <>: rn >- w u_ w (L ......_ (.() tf> .q- !"') cr а-: а-: а-: а:: а-: а-: а-: cr: а-: N cr: cr: m m m m m m <>: rn <>: о <>: rn <>: @]
!12s 1 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ форму и сохраняются в буферном регистре приемника. Они доступны через кон­ такты 5-12. На контакт 4 (запрещение приема, RRD) должен подаваться 19 (данные приняты) При условии нормального приема данных на контакт нуль. пода­ ется единица. Сюда допустимо подать нуль за счет подачи пуля на контакт 18 (сброс линии). После этого UART может принимать новые данные. Контакты 13 (ошибка паритета), 14 (ошибка блока) и 15 (ошибка переполнения) показывают наличие ошибок, возникших во время передачи. Чтобы получить доступ к этим выходам, необходимо на контакт SFD) (запрещение доступа к флагам состояния, 16 подать нуль. Контакт 25 (выход регистра передатчика, TRO) - это выход последовательных данных. Параллельные данные сначала необходимо записать в буферные регис­ тры передатчика (контакты 26-33). При подаче нуля на вывод 23 происходит за­ грузка данных в буферный регистр передатчика. Затем по положительному фрон­ ту они загружаются в регистр передатчика, и начинается собственно передача. Контакт 22 предназначен для индикации освобождения буферного регистра. На­ личие здесь сигнала высокого уровня свидетельствует о том, что данные были переданы сюда, и буферный регистр готов к приему следующего блока данных. Контакт 24 служит для индикации освобождения регистра (регистр передатчи­ ка пуст). Наличие на нем логической единицы говорит о том, что передача дан­ ных завершена. Временные диаграммы приема изображены на рис. 4.9а. Данные вводятся че­ рез вход RRI. Если данных нет, то на входе RRI должна быть единица. На этапе А на вход DRR подается нуль, при этом линия DR очищается. На этапе В во вре­ мя первой стоповой посылки данные передаются из регистра приемника в буфер­ ный регистр приемника. Если линия DR не очищается перед началом передачи, то возникает ошибка переполнения. На этапе С, через после этапа В, линия DR переходит в данные приняты. Единица на выходе 1/2 тактового интервала единичное состояние, показывая, что новые FE означает, что принята неверная стоповая посьmка; единица на выходе РЕ указывает на ошибку паритета. Если тает в непрерывном режиме, то DRR UART рабо­ необходимо соединить с общим проводом. Временные диаграммы передачи представлены на рис. 4.9б. На этапе А данные загружаются в буферный регистр передатчика через входы рицательному фронту на входе TBRL. Данные на входах TBRO - TBR7 по от­ TBRO - TBR7 должны быть уже выставлены. Если длина блока данных менее восьми бит, то используют­ ся младшие биты. На этапе В положительный фронт по входу TBRL сбрасывает TBRE. После небольшой задержки данные передаются в регистр передатчика, а на выходе TRE появляется нуль. Выход TBRE переходит в единичное состоя­ ние, показывая, что буферные регистры передатчика пусты. Тактирующий сиг­ нал для выходных данных должен иметь частоту, в 16 раз большую, чем скорость передачи. На этапе С TBRL переходит из единицы в нуль и затем снова в едини­ цу, при этом в буферный регистр передатчика загружается второй блок данных. Передача данных в регистр передатчика задерживается до тех пор, пока не завер­ шится передача текущего символа. На этапе D данные автоматически поступают в регистр передатчика и начинается передача второго блока.
4.2. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА а) Начало nербого сmоnобого -- бumo 8,5 9,5 l129 j maкma 11 11 RRI Послеgобоmельнtjе Bxog RBR 1 goннtje 8 в"хоg DRR Bxog 1 1 1 (У 1 1 -: 1: РЕ, ,.__0,5 moкmo }' 1 1 1 FE u m g в"хоg 1 А 6) TBRL Bxog w 1 ----~_ц) i 1 1 1 1 1 1 1 ~~ 1 1 ' l I 0,5 moкmo г 1 1 TRE в"хоg --.: 1 TRO f4- 1,5 2.s maкmo Конеu 1 1 в"хоg 4.9. с 1 1 1 TBRE B"xog Рис. в г- 1 1 1 1 1 1 А в с nослеgне20 1 сmопобо20 бumo г:L ~ D Временные диаграммы: а - приема; 6 - передачи Схема с использованием UART CDP6402, соединенная с экспериментальной пла­ 4.10. Линии RRI, TRO и TBRL соеди­ нены с контактами TD, RD и DTR на экспериментальной плате последовательного порта. Тактовый генератор собран на микросхеме CD4060 и кварце 2,4575 МГц. Тактирующий сигнал частотой 153,6 кГц поступает с контакта 7 микросхемы CD4060. Формат передачи данных следующий: скорость 9600 бод, длина блока данных 8 бит, длина стоповой посылки 1 бит, без проверки на четность. Кон­ такт 18 ( DRR) соединен с общим проводом. Это означает, что UART принимает той последовательного порта, показана на рис. данные в непрерывном режиме. Проводя опыты с указанной схемой, можно использовать программное обеспе­ чение для экспериментальной платы последовательного порта (см. главу 3). Разре­ шается передавать данные с компьютера на предлагаемое устройство. При измене­ нии состояния линии DTR из единицы в нуль и затем вновь в единицу данные считываются в компьютер. Для организации циклического теста восемь выходов микросхемы CDP6402 нужно соединить с ее входами. ных и выходных данных должны быть одинаковыми. В этом случае значения вход­
l 1зо 1 4, РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ Koнmoкmtj +58 но эксnерuменmольноо nлome nослеgобоmельного 1-----()--l nopmo 1 - ~' 1 >-----o--r: .J.-, r--~~'-0- +58 1 1 1 58 }---'-'---''-<)-- ~ -~ t1 1 1 1 1 }---'--'---'-{)- - -t _I_ Г J.- l GND : : : : 1 1 \ ( 1 \ -тi-г 1 t1 1 >----~r-t1i-Гri1 1 1 1 1 1 1 1 то J---'--'--''-0-- -1-J- r .+ -j-r-i 1 : 1:: 1: 1: : : 1:: 1: ( RD 1-----(J--J : : : \ 11 \ ==~J DTR : ~ : : : \ 1 \ :, :i :,' i 1--~'--='О1 1 1 1 1 >----'---'--"- ____ J : : : : 001 1: 1 R8R4 1-----0-------J R8R5 J--=-=-'--='<)- - - - - - - - ..J : ! 1 1 r--~'----"'0---------_J : CD4060 R8R6 Токmобt>О генератор R8R7 1 1 1 1 1 OUT::.Z..o-----------j Чacmomo ЦuклuческuО 15 3600Гц тест Скорость 9600 боg 002 CDP6402 KoнGJuгypaцuo RS232 Длuно noctjлкu 8 бum 1 cmonoбt>O бum Без nроберкu на чеmносmь Рис. 4.10. Схема с исполь3ованием UART CDP6402 4.2.3. Микросхема ITC232-A для сопряжения с последовательным портом IТС232-А (Timely Technology, RS213-7312) - это новая интерфейсная интеграль­ ная схема, разработанная для упрощения сопряжения с последовательным портом ПК при помощи трех линий: ТО, RD и общего провода (рис. 4.11 ). Микросхема характеризуется мощным встроенным набором команд управления и трансля­ тором машинного кода. Команду можно вводить с клавиатуры компьютера - ИС преобразует ее в машинный код и выполнит соответствующие действия. К числу преимуществ ITC232-A относится то, что для работы с ней не нужно учить слож­ ные языки низкого уровня и анпаратное управление; кроме того, нет необходимо­ сти компилировать команды.
4.2. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА п ЗУ ---- ---- Порm А, лuнuо 8 - - ~ >'пробленuе ОЗУ 1 1 npeptjбaнuнмu Мuкроnрогроммt> б коgе ASCll/мaшuннt>x коqах u Программt> упрабленu" шогобtiм gбu2оmелем 8 8, лuнuо 8боg/бt>боg Программtj упробленuн после- nocлegoбom ельнtjх gобаmельнt>м ббоgом/бt>боgом упрабленu" сброса Программ" сброса Pe2ucrтiptj уnроблен..,~ r~ереключоющон gocmyna конmокmомu, u АЛУ бyq>ept> 1 QOHHtjX U I25пФ о--- +58 +58 TD RD nлame Рис. но о эксnерuменmал,ьноО nослеgобаmелt.~нога 4.11. SP! Порm С, 8 лu PDO/PS_RX 31>----{) nopmo Внутренняя блок-схема и типовое включение IТС232·А ~ nреобразобаmеrо 10М GND ",___" мampuu.o Шuна cemu RC г--10 Koнmoкmtj - SPI шuноо 3,6864МГц 25пФ1 RS232, 2 л uнuu Моgуль мuкропроцессор 1 UHUH Порт упрабленu" Программ" )gаленного л QOHHtiX Мскропраграммt> - 1 моgул"цu") ошuбок ..-- f-C- шим, 8t>xog (шuроmно- обрабоmкu сuнхронuзацuео Порm Моgуль упрабленu" логuка ШИМ Программ" Прогроммt> 2 л uнuu uмпульсно):.1 Moнumop - пр ерt>банuО, Порm - ~ 25мА нuО
l 1з21 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ Микросхема имеет 40-контактный двухрядный корпус типа буются источник питания +5 В, может работать со скоростями потребляемый ток 300-115200 50 мА. DIP. Для нее тре­ Последовательный порт бод. линии ввода/вывода разделены на три порта: А, В и С. Порты могут быть независимо настроены как входы или выходы. Биты 4- 7 всех портов способны 24 управлять·двухфазными шаговыми двигателями. Скорость вращения варьирует­ ся от 10 до 4000 об/с. Биты 0-3 можно использовать для измерения сопротивления или емкости. Устройство выдает сигнал ШИМ (широтно-импульсная модуляция) частотой ной 10-10000 Гц и скважностью 1-100%. Микросхема также оснащена ши­ SPI, с помощью которой к ней подключается любое SРl-совместимое устрой­ ство, например 10-канальный АЦП МС145041. ITC232-A соединяется с экспериментальной платой последовательного порта, как показано на рис. 4.11. Если с компьютера послать команду PWA254, то в порт 254. При команде SAL 100 шаговый двигатель, подключенный к порту А, будет вращаться влево со скоростью 100 об/с. Команда W1000 заставит устройство генерировать на выходе PWM тон частотой 1 кГц. Команды, посыла­ запишется число емые в контроллер, можно набирать в командной строке или включить в самосто­ ятельно написанную программу. 4.3. Увеличение количества линий игрового порта У игрового порта есть два (или четыре) цифровых и два (или четыре) аналоговых входа и нет выходов. На цифровые входы может подаваться как последователь­ ная, так и параллельная цифровая информация. Если данные последовательные, то перевести их в параллельный формат можно с помощью программного обеспе­ чения компьютера. 4.4. Последовательно-параллельные преобразователи Последователыю-параллельные регистры сдвига дают возможность при наличии всего двух входных линий получить неограниченное количество выходных. На рис. 4.12а изображена схема на основе ИС ния восьми выходных линий. грузкой, контакты 1и 2 74LS164 74LS164, предназначенная для получе­ имеет два входа с последовательной за­ (А и В) и восемь выходных регистров сдвига (Qa - Qh). Данные на входах А и В по положительному фронту входного тактирующего сиг­ нала сдвигаются в ячейку Qa, затем перемещаются в Qb, Qc и т.д. После восьми тактовых импульсов на выходах регистра сдвига присутствует причем первый бит записан в ячейку 8 бит данных, Qh. При подаче на контакт 9 ( CLEAR) сиг­ нала низкого уровня на всех восьми выходах появляется ноль. Максимальная частота тактового сигнала 25 МГц. Для получения большего количества выходов можно последовательно объединить несколько таких микросхем. На рис. 4.12а показано соединение описанной схемы с экспериментальной пла­ той последовательного порта. Линия RTS подЮiючена к последовательному входу
4.4. ПОСЛЕдОВАТЕЛЬНО-ПАРАЛЛЕЛЬНЫЕ ПРЕОБРАЗОВАТЕЛИ а) 11 зз 1 +58 74LS 164 Параллельна~ А б~2рузка в 080 Оа Og оь Of 081 DB2 +58 Ос Ое 083 +58 Qd 084 GND GNO CLOCK "Oчucmumь" (нuзкuм урабнем) CLEAR - CLOCK - mакmоб~О DВб в DTR Clack бхоg 085 А RTS Послеgобоmельн tje бхоgн!jе goннtJe CLK о z 087 о (акmuбен па nалажumельнаму срранmу) на эксnерuменmа льна О плоте nослеgобаmельно20 nopmo 6) +5В DO 080 01 081 02 082 03 083 04 084 05 085 Dб 086 07 DB7 +58 001 74LS164 +58 GND А DTR Послеgобоmельнtjе бxogнtje 8 goннtJe RTS Clock CLK 7 l)tjxogoм Koнmoкl'ntj z о то Уnробленuе о но эксnерuменmольноО rlлome nослеgобоmельно20 nopmo Рис. 4.12. Схемы последовательно-параллельных преобразователей. а - основе 74LS164 и 74LS37 4 на основе 74LS164; 6 - на
l 134 I 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ (контакты 1и2), а линия DTR - к тактирующему входу (контакт данных они сначала передаются по линии RTS, а затем на вход 8). При загрузr<е DTR поступает от­ рицательный импульс. При проведении экспериментов со схемой можно использо­ вать программное обеспечение для экспериментальной платы последовательного порта (см. главу 3). Последовательно-параллельное преобразование имеет два недостатка. Во-пер­ вых, компьютеры Peпtium генерируют тактовый сигнал частотой О, 1-t МГц. Пе­ риод загрузки восьми бит данных можно вычислить. Таким образом, чем больше выходов в схеме, тем меньше скорость передачи данных; это не критично для низ­ ко- и среднескоростных приложений сопряжения. Во-вторых, во время загрузки данных содержимое регистров сдвига изменяется случайным образом. Для ре­ шения этой проблемы применяются триггеры-защелки, в частности (рис. 4.12б). После загрузки данных во все регистры они передаются по положительному фронту тактирующего импульса (контакт 11 74LS37 4 в 74LS374 ИС). Однако схема требует наличия дополнительного выхода из компьютера (в данном приме­ ре используется линия ТО). Приведенные схемы можно подключать и к экспериментальной плате парал­ лельного порта. При этом три линии регистра данных или регистра управления должны функционировать как выходы. 4.5. Параллельно-последовательные преобразователи С помощью параллелыю-последовательных регистров сдвига типа CD4021 увели­ чивается количество входов. Для этого требуются две выходные линии компью­ тера (для загрузки параллельных данных и для сдвига данных) и одна входная линия для считывания информации. На рис. 4.13 изображена схема для ввода восьми бит данных, а также указано назначение и расположение выводов. Микросхема имеет тактирующий вход (контакт 10), вход управления парал­ лельным/последовательным вводом (Р /S, контакт 9), вход/выход последователь­ ных данных (контакт вательных выхода 11), восемь параллельных входов (DO - 07) и три последо­ (Q6 - Q8). В начале работы на входы DO - 07 необходимо подать информацию. Затем по положительному фронту на входе Р/S данные па­ раллелыю записываются во внутренний регистр независимо от состояния такто­ вого импульса. Отрицательный фронт на входе Р /S инициирует операцию последовательного вывода. По положительному фронту тактового импульса данные передаются с вы­ хода Q7. После восьми тактовых импульсов все входные данные будут переданы. Работу микросхемы совместно с экспериментальной платой последовательного порта иллюстрирует рис. P/S - 4.13. Тактирующий вход соединяется с линией DTR, вход с RTS, выход Q8 - с CTS. При проведении опытов можно воспользоваться программным обеспечением для экспериментальной платы последовательного порта (см. главу 3). ИС также может подключаться к параллельному порту. Ско­ рость передачи информации невысока, поэтому CD4021 средне- и низкоскоростных приложений сопряжения. применяется только для
4.5. ПАРАЛЛЕЛЬНО-ПОСЛЕДОВАТЕЛЬНЫЕ ПРЕОБРАЗОВАТЕЛИ Bxog goHHt>X 7 1 06 gаннt>х 6 08 gаннt>Х 5 gоннt:>х 4 Bxog gаннt:1х Bxog goHHtiX 2 Bxog QOHHtjX 1 8xog gаннt:1х о l1зs I 1/0 бхоg 9 P/S GND (окmuбен по положumельнаму срронmу) (пораллельноо загрузко u послеgобаmельноо бt>грузка) +58 .-----{1 4 r------. Vcc 080 DIO 081 DI 1 07 "'~ 082 D2 08 ::> DIO "" " Koнmoкmti на эксnерu мента льноu nлame послеgобоmельного nopmo I D "'" "'"' о о.. о .() 084 стs 085 DTR с 086 Toкmoбt>u бхоg (акmuбен по положumельному срронmу) RTS DB7 Р /S (упробленuе загрузкоu) +58 GND Рис. 4.6. 4.13. Параnnеnьно-последоватеnьный преобразователь на базе микросхемы CD402 l Шифраторы и дешифраторы данных Еще один способ увеличения количества цифровых линий ввода/вывода зование шифраторов и дешифраторов - - исполь­ микросхем со средней степенью интегра­ ции, специально разработанных для приложений цифровой связи и Передачи дан­ ных, в частности ИС серии МС1405ХХ (Natюnal НТ-12 (Holtec) Sem1conductors) или семейства Шифраторы представляют собой параллельно-последовательные преобразователи, а дешифраторы - последовательно-параллельные Соединение между шифратором и дешифратором можно установить как с помощью кабель­ ных линий связи, так и другими способами, например посредством инфракрас­ ных, волоконно-оптических, ультразвуковых или радиолиний Скорость переда­ чи данных при этом достаточно мала
j 136 I 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ Микросхема НТ-12Е (рис. передает последовательно перекодированные 4.14) данные при подаче сигнала низкого уровня на вход 14 (передача разрешена, ТЕ). - это 8 бит адреса (АО - А7, контакты 1-8) и 4 бита данных (00 - 03, контакты 10-13). Общее количество комбинаций адреса равно 256. Между контактами 15 и 16 включается внешний резистор (до­ пуск 5%), Выбирая значения сопротивления этого резистора, можно получать раз­ Входные данные представляют собой 12 бит ные скорости передачи данных. Резистор фактически задает внутреннюю тактовую частоту, на которой работает микросхема. Последовательные данные выводятся через контакт (2,4-12 17. Микросхема функционирует в широком диапазоне напряжений В); ток потребления в режиме покоя Исходное состояние микросхемы - 1 мкА. режим ожидания. При подаче сигнала низ­ кого уровня на вход ТЕ начинается цикл передачи по четыре слова и продолжается OSC2 OSC1 Генероmор Делumель на 3 Дбеноgцаmерuчн"О счеmчuк u gewuqJpomop 1 но 12 В"бор u gонн"х бyqJep Схема cuнxpoнuзauuu 12-разроgн"о nepegomчuк Дбоuчн"О gemeкmop Рис. 4.14. Расположение выводов и внутренняя блок-схема шифратора HT- l 2E
4.6. ШИФРАТОРЫ И ДЕШИФРАТОРЫ дАННЫХ 11 з1 \ до тех пор, пока на ТЕ не появится единица. В каждом слове содержатся пилот­ сигнал и код (рис. 4.15а). Пилот-сигнал имеет длительность ческий уровень, код также состоит из 12 входов (АО - А7, DO - 12 12 бит и нулевой логи­ бит. Микросхема считывает состояния DЗ) и передает эту информацию. Логические О и 1 коди­ руются, как покаэано на рис. 4.15б. Дешифратор HT-12D (рис. 4.16) принимает 12 бит последовательных данных, распознает первые восемь бит как адрес и последние четыре бита как данные. Если принятый адрес совпадает с заранее установленным, то данные сохраняют­ ся во внутреннем регистре. Это условие проверяется трижды. Если же получен­ ный адрес отличается от заранее установленного, то процесс приема прерывается, и микросхема сбрасывается в исходное состояние. Предустановка адреса опреде­ ляется логическим состоянием выводов ются с выводов 10-13. Внешний резистор (допуск такт 1-8. Принятые четыре бита данных снима­ 14. 5%) подключается между контактами 15 и 16. Кон­ Последовательные входные данные поступают на вход это выход индикатора правильной передачи. 17 - Здесь также необходим резистор с допуском 5%, который подключается между 15 и 16 и определяет скорость работы микросхемы. Внутренние такто­ частоты НТ-12Е и HT-12D связаны между собой следующим соотношением: контактами вые F osc. HT-J2D = 50F osc НТ·12Е. Например, если тактовая частота шифратора равна дешифратора составляет 150 кГц. ра должен иметь сопротивление 3 кГц, то тактовая частота В этом случае внешний резистор для шифрато­ 1,1 МОм, а для дешифратора - 62 кОм. Следующая программа на языке ТР6 эмулирует работу компьютера в качестве микросхемы НТ-12Е и выдает двенадцатибитовые последовательно перекодиро­ ванные данные. Информация подается на вход дешифратора DTR HT-12D через контакт на экспериментальной плате последовательного порта с тактовой частотой Cmopmoбt>O а) 1. 12-бumoбtjo бum --f nuлom~cu2нoл "1 1 (АО А7, 00 03) 1 1. 1 12-розроgнt>О (АО А7, 00 коg 03) "1 1 6) Toкmoбtje uмnyльctj Oguн бum gонн~х Коguробан~1~О goннtjx gл~ KogupoбoннtjU gанн~х Рис. gл)J. фОрмоm ло2uческоо 1 ~ормоm ло2uческо20 О 4.15. Формат последовательно перекодированных данных· а 6 - для логических единицы и нуля посылки, при передаче одной
/ 1зs 1 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ OSC2 OSC 1 Генераmар Делumель 4-разроgнt>О Защелка pe2ucrnp сgбuга DIN Буq>ер 14 Дewuq>pamap Сuнхронн~О Koмnopamop gemeкmap Koмnopornap Уnраблоющао ЛО2UКО 8-розр~gн~О Бу<µер nepegomчu0<. 17 vт 9>---------' Vdd Рис. 1 кГц. Vss 4.16. Внутренняя блок-схема дешифратора HT-l 2D Внешний резистор имеет номинал частоту 50 кГц. Вход данных (контакт 220 14) к0м1, что дает системную тактовую соединен с линией ментальной плате последовательного порта (рис. Текст программы DTR на экспери­ 4.17). HT_12E.PAS Program HT_ 12_encoder, (•fiporpaммa для эмуляции сигнала в формате микросхемы НТ-12Е.•) uses 1 Согласно фирменной документации, для получения тактовой частоты ление резистора должно равняп,ся 200 кОм. - Прим. иауч. ред. 50 кГц сопротив­
4.6. ШИФРАТОРЫ И ДЕШИФРАТОРЫ ДАННЫХ / 139 / +58 R1 Усmанобка R8 +58 4.7К agpeca г----1 1 1 Конmакmь~ Vdd на эксnерuменmо л ьноо плоmе nослеgабоmельно20 А1 vт А2 OSC1 58 OSC2 GNO +58 порто OTR А4 А5 7 Аб 02 8 А7 01 8t>xag 1 1 L _____ J 9 Vss Рис. gоннь~х 00 4.17. Схема с использованием дешифратора НТ-120 gгaph, crt, dos. var addressx,datax iпtegeг; blt array[1 15] of byte; i,ser1al_1пput_byte.baud_rate_byte,data_leпgth_byte,stop_leпgth_byte,par1ty_byte iпtegeг, ch cha г; (•Загрузка файла библиотеки •) {$! c:\1oexp\tpl1b1 pas} Proceduгe Traпsm1t_seг1al_data(Poгt_addгess,b1t,oг1g1пal_data,addгess,data:1пteger,1пveгt_flag.Booleaп), (•Передача данных в формате НТ-12Е, частота передатчика 1000 (•Poгt_addгess: адрес порта ввода/вывода, B1t· используется для передачи данных, Oг1g1пal_data· исходные данные порта, Addгess Data: передаваемые передаваемые Iпveгt_flag=1, 8 бит данных, 4 бита данных, при этом передаваемые данные инвертируются.•) Vаг i,tгaпsm1t_t1me.byte; data_blt аггау[1 73] of byte; Ьеg1п (•Формат данных НТ-12Е· 36 тактовых интервалов пилот-сигнала, 1/2 тактового интервала - стартовая посылка, 24 тактовых интервала - адрес (АО - А7) сначала Гц.•)
l 140 \ и 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ 12 тактовых интервалов - (00 - 03).•) данные (•Присвоение значения nеременной Oata_b1t.•) (•Пилот-сигнал.•) for i:=1 to 36 do if поt iпvert_flag theп data_bit[i]:=origiпal_data else data_bit[i]:=origiпal_data or bit_weight(bit); апd (255-bit_weight(bit)) (•Стартовая посылка.•) if поt iпvert_flag theп origiпal_data or bit_we1ght(bit) else data_b1t[i]:=or1giпal_data апd (255-bit_weight(bit)); (•Биты адреса. А1 передается первым.•) for i:=1 to 8 do begiп if поt iпvert_flag theп begiп data_bit[З•(i-1)+37+1]:=origiпal_data aпd(255-bit_weight(bit)); data_bit[3•(i-1)+37+2J:=origiпal_data data_b1t[З•(i-1)+37+3]:=origiпal_data or b1t_weight(bit); or bit_we1ght(bit); епd else begiп data_bit[З•(i-1)+37+1]:=original_data data_bit[3•(i-1)+37+2]:= or bit_weight(bit); origiпal_data aпd(255-bit_weight(bit)); data_b1t[3•(1-1)+37+3]:=origiпal_data aпd(255-bit_we1ght(bit)); епd; if address апd b1t_weight(i)>O theп begiп if поt iпvert_flag theп data_bit[3•(i-1)+37+2]:= origiпal_data aпd(255- bit_weight(bit)) else data_bit[3•(1-1)+37+2]:=or1giпal_data or bit_weight(bit); епd; end; (•Биты данных.*) for i:=1 to 4 do begiп if поt iпvert_flag theп begiп data_b1t[3•(i-1)+61+1]:=origiпal_data aпd(255-bit_weight(bit)); data_bit[3•(l-1)+61+2]:=origiпal_data data_bit[3•(i-1)+61+3]:=origiпal_data or b1t_weight(bit); or bit_weight(bit); епd else Ьеg1п data_bit[3•(1-1)+61+1]:=orig1пal_data or bit_we1ght(bit); data_bit[З•(l-1)+61+2]:= origiпal_data aпd(255-b1t_weight(bit)): data_bit[З•(i-1)+61+3J:=origiпal_data aпd(255-bit_weight(bit)); епd; if data bit_we1ght(i)>O апd theп begiп if поt iпvert_flag theп data_b1t[3•(i-1)+61+2]:= origiпal_data aпd(15- bit_weight(bit)) else
4.6. ШИФРАТОРЫ И ДЕШИФРАТОРЫ ДАННЫХ ~ data_b1t[3•(1-1)+37+2] =or1g1nal_data or b1t_we1ght(b1t), end, end (•Десятикратная nередача кода •) for transm1t_t1me =1 to 10 do beg1n for i =1 to 73 do beg1n port(Port_address) =data_b1t[1], delay(11), (•Задержка на 1 мс end, end, end, Оnорная частота 1 кГц •) (•Главная nрограмма •) beg1n COM_add ress, port(RS232_address) =О, Repeat clrscr wrlte( Input the address of receiver НТ-120 (0-255) ), readln(addressx), wrlte( Input the data to Ье transm1tted (О-15) ), readln(datax), transm1t_ser1al_data(RS232_address+4,0 О addressx,datax,true), wrlte( Qu1t the program [Y/N] ), readln(ch), unt1l upcase(ch)='Y', end Шифратор НТ-12Е (рис. 4.18) можно использовать как двенадцатибитовый па­ раллельно-последовательный преобразователь. Следующая программа на языке ТР6 считывает последовательные данные, поступающие от шифратора НТ-12Е в компьютер через линию раллельную форму (8 CTS последовательного порта, трансформирует их в па­ бит адреса и 4 бита данных) 2,5 МОм, что 17 (Dout) соединен Внешнее сопротивление равно микросхемы 1 кГц. Контакт и выводит на экран. формирует тактовую частоту с контактом CTS на экспери­ ментальной плате последовательного порта. Вместо последовательного порта в рассматриваемом примере можно использовать игровой. При этом ходимо соединить с одним из цифровых входов порта. Текст программы HT_12D.PAS Program HT_12_rece1ver, (•Программа эмуляции дешифраторов НТ-120 •) uses graph, crt, dos, va r value,oldvalue integer, blt array[1 15] of byte i,led_selected,ser1al_1nput_byte,baud_rate_byte,data_length_byte, stop_length_byte,par1ty_byte integer, (•Загрузка файла библиотеки {$1 с \1oexp\tpl1b1 pas} •) Dout необ­
\ 142) 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ Bxog О Bxog 58 1 OSC1 А2 Bxog 2 Bxog GND А1 OSC2 3 Bxog 4 А4 n: 5 А5 03 13 Bxog nослеgобаmельно20 nopma u------------ 1О 0 - - - - - - - - - - - - - - ' Bxog 11 Рис. nлome А7 Bxog 7 Влоg на эксnерuменmольноО 02 Bxog 6 Bxog 9 стs Koнma.<mьi 0--------------~ 4.18. Схема с использованием шифратора fuпct1oп seг1al_data(x НТ-12Е byte) byte, (•Декодирование сигнала НТ-12Е (•Х=1 для АО-А7, Х=2 для 00-DЗ var sdata,saddress,1 byte, t1mel_O,t1meI_1,clockI,t1mel Вход соединен с линией CTS •) •) loпg1пt, Ьеg1п (•Нахождение длителькости посылки высокого уровня (программно) repeat delay(1) uпt1l port(RS232_address+6) repeat delay(1) uпt1l port(RS232_addгess+6) апd апd 16=16, сигнала 16=0 •) (•Определение низкого уровня •) (•Определение перехода из нуля в единицу•) Clockl =О, Repeat ClockI =clockI+1, delay(1) uпt1l port(RS2З2_addгess+6) апd 16=16, (•Определение пилот-сигнала как длительного сигнала низкого уровня repeat гереаt delay(1) uпt1l port(RS232_address+6) t1meI_o =О repeat t1meI_O =t1meI 0+1 апd 16=16 •)
4.7. ШИНА 1 2 С /143 / delay( 1); unt1l port(RS232_address+6) and 16=0; until timeI_0>12•clockI; clockI:=O; (•Определение длительности стартового бита.•) repeat delay(1) unt1l port(RS232_address) and 16=0; repeat clockI: =clockI +1; delay( 1), unt1l port(RS232_address+6) and 16=16; (•Определение перехода (•Считывание следующих 12 бит.•) for i:=1 to 12 do из единицы в нуль.•) Ьеg1п timeI_ 1·=o; repeat delay(1) repeat uпtil port(RS232_address+6) and 16=0; t1meI_1:=t1~er_1+1; delay(1); unt1l port(RS232_address+6) and 16=16; lf abs(t1meI_1-clockI)>clockI/2 then b1t[1].=0 else b1t[1].=1; end; sdata. =О; sadd ress: =О; for i.= 1 to 8 do saddress:=saddress+b1t[1]•b1t_we1ght(1), for i.=9 to 12 do sdata·=sdata+b1t[1]•b1t_we1ght(1-8), if х=1 then ser1al_data.=saddress, if х=2 then ser1al_data:=sdata; end, (•Главная программа •) begin COM_address; repeat wr1te( Rece1ved ser1al address=',ser1al_data(1)); delay( 300), wr1te('Rece1ved ser1al data=· ,ser1al_data(2)), readln; unt1l keypressed; end. 4.7. I2C - Шина РС это шина данных, созданная фирмой Philips для связи между интегральны­ ми схемами или модулями. Она позволяет устройствам обмениваться данными посредством только двух линий, что намного упрощает разработку сложных электрических схем. Существует целое семейство 12С-совместимых устройств для различных приложений: увеличения количества линий ввода/вывода, циф­ ро-аналоговых и аналого-цифровых преобразований, отсчета времени, модулей памяти, синтеза частот и т.д. Введя I2C в компьютер, вы убедитесь в хорошей производительности самой шины и микросхем поддержки. Для реализации шины раллельный, так и последовательный порты. I2C применяются как па­
l 144 I 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ 4.7.1. Принцип работы Шина состоит всего из двух линий: двунаправленной линии данных нии импульсов тактов (SCL), (SDA) и ли­ которые соединяются с положительным напряже­ нием питания через нагрузочные резисторы (рис. 4.19). Vcc R t--1==1--~~~~---1~~~--~~~~~~~~~-j'--~~~~~~~~~~~ SDA '---{::::::J~~~~~-t~~~-j>--~~t--~~-..~~~-t---~~~~~~~-f-~~~ SCL R Рис. Begyщuu Begoмtjo Begoмtjo npueмonepegomчuк npueмonepegomчuк npueмonepegomчuк 4.19. Функциональная схема шины 12С Передатчик генерирует сообщение, приемник его получает. Ведущее устрой­ ство контролирует работу шины. Для шины РС определен следующий протокол соединений: о передачу данных можно начать только в том случае, если шина не занята; о во время передачи состояние линии данных должно оставаться постоянным при сигнале высокого уровня на линии тактовых импульсов. Изменение состояния линии данных при единице на тактирующей линии рас­ сматривается как передача сигналов управления. Определены следующие коррект­ ные состояния во время работы шины (см. рис. 4.20): о шина не занята: на обеих линиях едиюiца; о начало передачи данных. изменение состояния линии данных из единицы в ноль, тогда как линия тактов остается в единичном состоянии и определяет условие начала передачи (условие «СТАРТ»); о прекращение передачи данных. изменение состояния линии данных из нуля в единицу, при этом линия тактов остается в единичном состоянии и опреде­ ляет условие окончания передачи (условие «СТОП»); о корректность данных. любое состояние линии данных после старта остается корректным и неизменным, если на линии тактов единица. Данные можно ме­ нять, если на линии тактов низкий уровень. На один бит информации прихо­ дится один тактовый интервал. Каждый цикл передачи данных начинается условием «СТАРТ» и заканчивается условием «СТОП»'. Количество битов данных, передаваемых между этими состояниями, не ограничено. Данные пе­ редаются побайтно; приемник удостоверяет получение, пересылая бит под­ тверждения после приема каждого байта; о бит подтверждения: передается после каждого байта. Активный передатчик формирует сигнал высокого уровня на шине SDA, и ведущий передатчик в этот момент генерирует дополнитеАьное подтверждение высоким уровнем тактового импульса по шине SCL. Приемник выдает сигнал подтверждения
4.7. ШИНА РС SDA=O 1 SCL=l SDA=l о SCL=l а) Услобuе n 1 1 SDA SCL Услобuе «СТАРТ> 1 1 1 1 1 1 1 1 не \ 1 SDA=X SCL=l зaнs:imo Услобuе Переgача gонн~х ToкmoбtjQ uмnульс nogmбepжgeнus:i «СТАРТ> 6) ---~ SCL в~хоg gанн~х ---~ о переgоmчuка в~хоg 1 на б~хоgе nepegomчuкo бо брем~mбержgенuо gонн~х nрuемнuка Kбumupoбaнue б wuнe О но gлs:i Рис. 4.20. <СТОП> 1 1 SDA=l SCL=l Шuна l 145 \ б~хоgе nрuемнuка nogmбepжgeнus:i Принцип работы шины. а - состояния, 6 - квитирование низким уровнем. Приемник, который получает данные, генерирует бит под­ тверждения после приема каждого байта. Приемник, который генерирует бит квитанции, переключает линию SDA в низ­ кий уровень и удерживает ее в этом состоянии до тех пор, пока тактовый импульс подтверждения находится в состоянии высокого уровня. Для прекращения пере­ дачи данных приемник должен оставить принятый байт без подтверждения. 4.7.2. Временные диаграммы работы шины 1 2 С Перед тем как передать данные по шине, необходимо получить адрес отвечающе­ го устройства с помощью передачи 7 бит адреса и бита R/W (низким уровнем) после стартовой посылки. Типовой формат байта адреса следующий: Биты постоянного адреса + биты программируемого адреса + бит R/W. Постоянный адрес зависит от самой микросхемы и не изменяется. Программи­ руемый адрес можно задать посредством адресных выводов микросхемы. Послед­ ний бит - бит чтения/записи - указывает направление потока данных. Следом за байтом адреса передастся байт управления, который также определяется
j 146 j 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ Поgmбержgенuе am беgомоео nрuемнuко Паgmбержgенuе om nрuемнuко беgомого R/W S Agpec (Аб - АО) О R/W А Баоm упробленuо (Сб - о СО) А 1 Данн"е (D7 n Рис. Паgmбержgенuе am беgомоео прuемнuко 4.21. Формат последовательной передачи данных шины - А DO) Р t баоm 1 2С используемой микросхемой. Затем пересылаются байты данных. Формат после­ довательных данных изображен на рис. 4.7.3. 4.21. Реализация на базе параллельного и последовательного портов Экспериментальная схема простой реализации шины I2C на базе параллельного пор­ та изображена на рис. 4.22. Данная схема работает по стандарту I2C, при этом ком­ пьютер выступает в качестве ведущего устройства. Два транзистора обеспечивают +58 2 7К -----пsод 01 (RTS) 8С548 s1 (СТS) Конmокm~ на эксnерuменmольноо nлame uлu послеgобаmельного nораллельноео nopmo +58 2,7К GND .---+--oSCL D2 (DTR) 8С548 58 GND Конmокm~ но эксnерuменmольноо плоте uлu +58 послеgобоmельного параллельного D1 (RTS) nopma 2,7К s1 (СТS) GND >-----<~п SCL D2 (DTR) 58 GND Расположенuе б"баgаб Рис. 4.22. 7407 Реализация шины на базе параллельного и последовательного портов
4.9. WИHAMICROLAN l147 I выходы линий данных и тактов. Напряжение шины +5 В. Здесь можно использо­ n-p-n транзистор с частотой 100 кГц и повторители с открытым кол­ лектором 7407. Линия SCL соединена с контактом D2 на экспериментальной плате параллельного порта (бит 1 регистра данных). Линия SDA подключена к контак­ ту D1 (бит О регистра данных) и считывается в 1<0мпьютер через контакт S1 на экспериментальной плате (бит 3 регистра состояния). вать любой Экспериментальная схема реализации шины на базе последовательного порта так­ же показана на рис. контакты DTR и RTS. Примеры программного 4.7.4. 4.22. Линиями SCL и SDA управляют соответственно SDA считывается в компьютер через контакт CTS. обеспечения для таких схем приведены в главе 7. Ливия Микросхемы, подцерживающие стандарт 1 2 С Некоторые примеры 12С-совместимых ИС приведены ниже: о драйверы жидкокристаллических дисплеев: о о о о о о о о 4.8. PCF8466, PCF8576, PCF8577, PCF8578/79, SAA1064; модули памяти: PCF8570, PCF8572/8573, PCF8582A, PCF8598-2T; устройства отсчета времени: PCF8583, 41 Т56С, PCF8593, PCF8598; интерфейсы ввода/вывода: PCF8574, PCF8584, PCF8582, PCF82B715; восьмиразрядные четырехканальные АЦП и ЦАП: PCF8591; инфракрасные передатчики: SAA3028; DТМF-кодеки: PCD3311/3312; синтезаторы речи: PCF8200; аудиоинтерфейс: SAA1136. Последовательный периферийный интерфейс Шииа SPI позволяет соединять внешние устройства с главным компьютером при помощи трех линий. Первая линия тактирующая и представляет собой вход микросхемы, по второй линии данные принимаются, по третьей - передаются. К одной шине можно подключить несколько SРI-совместимых устройств. Если микросхема соединяется с компьютером, то на ее контакт «выбор чипа,,-, необходимо подать сигнал низкого уровня. Шина SPI ( CS) имеется в микросхемах различных серий, включая АЦП, ЦАП, аналоговые мультиплексоры и т.п. Ее можно реализовать как на базе параллельного, так и последовательного портов. Сде­ лав это, вы существенно упростите сопряжение ПК с различными микросхемами. 4.9. Шина MicroLAN Шииа MicroLAN разработана фирмой Dallas Seшiconductors и использует только одну линию и заземление. Она имеет единственное ведущее устройство и множе­ ство ведомых с 236 логическими адресами. Максимальная длина кабеля (дешевый неэкранированный телефонный кабель) более 300 м без ретрансляции сигнала. Шина позволяет соединять различные устройства: блоки энергонезависимой rrамя­ ти, температурные датчики, системы отсчета времени, всевозможные коммутаторы
l 148 j 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ и т.п., каждое из которых обладает уникальным сетевым идентификационным но­ мером. Шина имеет стандартный уровень напряжений ТТЛ/КМОП, а все устрой­ ства в сети работают от питания по линии данных. Напряжение 0-0,8 В определяет 2,2 В - логической единицы. Для напряжение 2,8 В. Скорость передачи данных уровень логического нуля, а напряжение выше работы всех устройств необходимо достигает 16300 бит/с. Шина может быть реализована на базе последовательного порта компьютера, при этом ПК выступает в роли ведущего устройства, все осталь­ ные устройства - ведомые. 4.10. Сопряжение между схемами ТТЛ и КМОП Часто требуется соединить выход логических схем ТТЛ со входом КМОП и на­ оборот. На рис. 4.23 показано несколько способов такого сопряжения. Только oguн бхоg ТТЛШ ~ Из КМОП б ПЛШ Из КМОП б ТТЛШ (оguнокобое наnр5=1женuе numoнu>=1) До UJecmu бхоgоб ПЛШ ~ (оguнокобое ноnряженuе numaнu>=1) 40498 5 158 +58 Из КМОП б (розлuчное ПЛШ наnряженuе numoнuя) 40498 +58 Из ПЛШ б необхоguм +58 +5 (оguнокобое ноnр"женuе numoнu"), peзucmop 158 Из ТТЛШ б (розлuчное Omкpьimьio коллектор Рис. Сопряжение схем КМОП и ТТЛ 4.23. КМОП носрузочнь~О КМОП ноnряженuе numoнuя) Если в схемах ТТЛ и КМОП одинаковое напряжение питания, то схема КМОП может непосредственно управлять схемой ТТЛШ без дополнительной обвязки. Если же необходимо управлять сразу несколькими схемами ТТЛШ, то для усиле­ ния тока допустимо использовать КМОП буфер типа 4049В. Когда схема ТТЛШ управляет схемой КМОП, нужен нагрузочный резистор 2,2 кОм.
l149 I 4.1 О. СОПРЯЖЕНИЕ МЕЖДУ СХЕМАМИ ПЛ И КМОП 4.11. Защита цифровых линий ввода/вывода Наиболее простой способ защиты линий ввода/вывода заключается в применении схем стабилизации напряжения на базе резисторов и стабилитронов. Однако чаще всего используются оптоэлектронные компоненты. Типовая микросхема состоит из инфракрасного светодиода и фототранзистора +58 или фотодиода, которые образуют оптопару. Разность потенциалов между входом и выхо­ дом подобных микросхем может составлять по­ рядка нескольких киловольт. Типовые схемы включения приведены на рис. 8~xog Инберmuрабанuе 4.24. GND GND n------~ Существуют различные типы таких И С. Они классифицируются по электрическим характе­ пар. На входе могут устанавливаться светодиоды различной мощности. На выходе - +58 100 ристикам входов и выходов и количеству опто­ 8xog O-----{=:J-----, ...-+---+-> Без uнбepcuu транзистор, пара транзисторов, соединенных по схеме Дар­ лингтона ( оптопары Дарлингтона), микросхема GND КМОП/ТТЛ или триггер Шмитта. Количество встроенных оптопар равно 1, 2 или Важный параметр микросхем - 4. Рис. коэффициент 4.24. Приложения, использующие оптоэлектронные компоненты передачи, который определяется как отношение выходного тока к входному, выраженное в процентах. Коэффициент передачи означает, что выходной ток равен 1 мА при входном токе 1 мА. 100% Транзисторные оп­ топары имеют коэффициент передачи РС817, РС827 и РС847 20%, оптопары Дарлингтона - 500%. (Sharp, RS175-110, RS175-126, RS175-132) - это одно-, двух- и четырехканальные оптопары с аналогичными характеристиками (рис. 4.25а). Максимальное напряжение изоляции равно ческое значение), коэффициент передачи от пряжение на светодиоде составляет 1,2 50 до 600%. 5 кВ (среднеквадрати­ Номинальное прямое на­ В, а максимальный прямой ток - 50 мА. Максимальное напряжение между коллектором и эмиттером транзистора может достигать 35 В, а максимальный прямой ток транзистора - 50 мА. Время переход­ 4 мкс. Максимальная частота - 150 кГц. (Sharp, RS175-198, RS175-205, RS175-211) - это одно-, ных процессов обычно равно РС815, РС825 и РС845 двух- и четырехканальные оптопары Дарлингтона (рис. 4.25б). Напряжение изоля­ ции равно 5 кВ ( среднеквадратическое значение), коэффициент передачи состав­ 600-7500%. Номинальное прямое напряжение светодиода равно 1,2 В, а мак­ симальный прямой ток - 50 мА. Максимальное напряжение между коллектором и эмиттером транзистора Дарлингтона достигает 35 В, а максимальный прямой ток коллектора - 80 мА. Время насыщения 60 мкс, время рассасывания 53 мкс. Микросхема HCPL-2630 (Tosl1iba, RS768-116) - это двухканальная высокоско­ ляет ростная ТТЛ совместимая оптопара (рис. 4.26а,б). Изоляция выдерживает напря­ жение 2500 В (среднеквадратическое значение). Прямое напряжение на светодиоде
j 150 j 4. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПОРТОВ а) 6) Рис. 6составляет 1,5 4.25. 50 - транзисторные оптопары РС817, РС827 и РС847; PC8 l 5, РС825 и РС845 В, а максимальный прямой ток пряжения питания тора Оптопары: а оптопары Дарлингтона +5 мА. Время переходных процессов чи данных 10 - 15 мА. Микросхема требует на­ В. Выходной транзистор имеет максимальный ток коллек­ 30 нс. Максимальная скорость переда­ Мб/с. Коэффициент разветвления по выходу равен Оптопары серии 740L6000 (Quality Technologies) 5. предназначены для работы с ТТЛ и КМОП логическими схемами (рис. 4.26в,г). Они имеют скорость пере­ дачи данных 15 Мб/с и напряжение изоляции 2500 В. Входные и выходные на­ пряжения совместимы с ТТЛ/КМОП логикой. Коэффициент разветвления по выходу равен 10. Микросхема 740L6000 (RS650-829) - это буфер ТТЛШ-ТТЛ, 740L6001 (RS650-835)- преобразователь ТТЛШ-ТТЛ, 740L6010 (RS650-841)буферТТЛШ-КМОП и740L6011 (RS650-857)- преобразователь ТТЛШ-КМОП.
4.11. ЗАЩИТА ЦИФРОВЫХ ЛИНИЙ ВВОдА/ВЫВОДА ~ 6) )'' о) Аноg 1 1 Vcc ,, Kamog )'' Voutl ,, ~-~о---с; GND Kamog 2 4 г) в) ~ gонн~х 7 B"xog gанн~х gанНЬIХ д) КОП"'Оg Рис. в - 4.26. Различные типы оптопор о - HCPL-2630, 6- внутренняя 6лок-схемо HCPL-2630, 740L6000 и 740L6001, г - 740L601 О и 740L6011, д - Н l lll и Н 11N1 Некоторые оптопары, в частности H11L1 (lsocom Components, RS585-292) и H11N1 (Quality Technologies, RS57.7-875), имеют выход 11а триггере Шмитта (рис. 4.26д). Скорость передачи данных 1 Мб/с (Н 11L1) или 5 Мб/с (Н 11N 1). Прямое напряжение на светодиоде H11L1и30 мА для H11N1. 1,5 В, максимальный прямой ток Максимальный ток коллектора 50 мА. 60 мА для
5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ В приложениях, о которых идет речь в данной книге, компьютер должен управ­ лять множеством внешних устройств. Это могут быть осветительные приборы, на­ греватели, электрические двигатели переменного тока, звуковые колонки, мони­ торы и т.д. 5.1. Мощные устройства коммутации Цифровые интегральные микросхемы, как правило, не способны генерировать большой ток для управления внешними приборами. В таких системах требуются мощные исполнительные устройства. 5.1.1. Устройства коммутации на оптопарах Оптопары можно использовать для управления приборами с малыми значениями токов, требующими гальванической развязки. Максимальный рабочий ток ограни­ чен характеристиками фототранзисторов. Например, оптопары Дарлинпона серии РС815 (Sharp, RS175-198) имеют максимальное значение выходного тока 80 мА, достаточное для управления слаботочным реле, которое, в свою очередь, способно работать с более мощными приборами (рис. PS2502 (NEC, RS590-424 и RS590-430) Коэффициент передачи обычно достигает напряжение равно 1, 1 5.1 ). Оптопары Дарлинпона серии поддерживают токи до 2000%. В, максимальный рабочий ток 160 мА. Управляющее светодиодом - 80 мА. Максимальное на­ пряжение между коллектором и эмиттером фототранзистора составляет мя насыщения 40 В, а вре­ - 100 мкс. 5.1.2. Транзисторные устройства коммутации В данном разделе речь пойдет о простейшем и наиболее экономичном способе управления внешними приборами. В частности, применяются n-p-n транзисторы
5.1. МОЩНЫЕ УСТРОЙСТВА КОММУТАЦИИ Реле Vcc R2 Соеguнено с ТТЛ/КМОП 11sз1 бусрером 1 N4001 GNO о------! Прuмечонuя Максuмальн~u mок коллектора 80мА R2 зoбucum от muna реле u Unum На На Рис. 5.1. Оптопара бхоgе бхоgе лог лог 1 О конmакm~ конmакmЬI реле замкнуm1:~1 реле разомкнуm1:~1 РС815 для управления реле ВС108С и ZTX300 (рис. 5 2а), которые имеют максимальные значения тока кол­ 100 и 500 мА с максимальным уровнем мощности в 300 и 500 мВт. Мак­ симальное напряжение между коллектором и эмиттером равно 20 В для ВС 108С и 25 В для ZTX300. Максимальная рабочая частота - соответственно 300 и 150 МГц. лектора При работе на индуктивную нагрузку, такую как реле или электродвигатель, сле­ дует применять защитные диоды; при работе на активную нагрузку их использо­ вание необязательно. 5.1.3. Устройства коммутации на основе схемы Дарлингтона На рис. 5.2б изображена схема на базе мощного транзистора Дарлингтона или ТIР142 ТIР122 управляет напряжениями до мальная рассеиваемая мощность ся при напряжении 1,2 - 65 100 В и токами до 5 Вт. Транзисторы Дарлингтона открывают­ В между базой и коллектором и могут усиливать ток в раз. Следовательно, напряжение на базе, превышающее 1,2 функционирует при коллекторном токе 5 1О 5000 В, вызовет режим на­ сыщения транзистора База соединяется с ТТЛ входом через резистор. транзисторов равна TIP122 А. Макси­ TIP142 А. Максимальная рабочая частота этих МГц. Для индуктивной нагрузки должны использоваться защитные диоды. 5.1.4. Устройства коммутации на полевых транзисторах На рис. 5.2в изображена схема на базе полевых МОП транзисторов VN66AF. VN10KM или Чтобы МОП транзистор открылся, на него необходимо подать прямое напряжение смещения порядка 0,8 В. Прямое смещение порядка 5 В существенно влияет на проводимость. Поскольку входное сопротивление устройства на полевом транзисторе крайне высоко, соединить его напрямую с выходным портом компью­ тера невозможно Таким устройством следует управлять через резистор. VN10KM 60 В и ток 31 О мА, VN66AF работает при 2 А. Время насыщения - около 15 нс. выдерживает максимальное напряжение максимальном напряжении 60 В и токе
l 154] 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ о) Vcc (258 максuмум) ZТХ300, максuмалон"О mок 500мА 8С 1ОВС, максuмалон"О mок 1ООмА TR1 ZТХ300 8С10ВС Vcc (1008 максuмум) б) 02 1 N4001 TIP122, максuмалон"О mок 5А TIP 1 42, максuмолон"О mок 1 ОА 1R1 TIP122 слu (mpeбyemco TIP142 poouomop) Vcc (608 максuмум) в) 02 1N4001 VN 1 ОКМ, максuмолон"а mок О,3А VN66AF максuмолон"О ток 2А R1 220К Рис. TR1 VN10KM VN66AF 5.2. Устройство управления: о - но бозе биполярного тран­ зистора; б - но транзисторе Дарлингтона; в - но полевом тран­ зисторе 5.1.5. Устройства коммутации на МОП транзисторах с защитой Мощные устройства управления на базе МОП транзисторов с защитой, иногда называемые твердотелы1ыми реле, играют роль переключателей в силовых цепях цифровых систем управления. Входное управление совместимо с пятивольтовы­ ми логическими уровнями. В этих элементах используется встроенная схема тер­ моконтроля, которая защищает их от перегрева, короткого замыкания и больших величин тока. Она перекрывает выход при температуре 140 °С, а когда темпера­ тура падает до 125 °С, термозащита выключается. Такие устройства, как правило, имеют информационный выход, который низким уровнем сигнализирует о сра­ батывании встроенных цепей защиты.
5.2. УСТРОЙСТВА УПРАВЛЕНИЯ СВЕТОДИОДАМИ Транзистор 4,9-40 BTS410 (рис. 5.3) 11 ss 1 способен управлять напряжениями в диапазоне В, порог срабатывания защиты от перенапряжения порядка симальная рабочая температура равна 150 °С. 42-52 В. Мак­ В зависимости от температуры уро­ вень превышающих значений тока колеблется в пределах 3,1-21 А. Это устрой­ ство имеет низкое сопротивление во включенном состоянии во всем диапазоне температур. Время включения и выключения составляет 60 и 50 мкс соответ­ 2 до 5 В, выключения от О до 0,8 В. Входной ток равен 25 мкА при входном напряжении 3,5 В. Два других примера таких устройств - VN05N и VN20N, их выходы и типовая схема включения показаны на рис. 5.3. VN05N рассчитан на выходной ток 12 А, а VN20N - на 28 А. ственно. Входное напряжение включения изменяется от Назначенuе о конmакmоб 1 "Земл"" 2 Bxog 3 4 Пumoнue B~xog COCmQs:!HUR 5 B"xog vcc 12 3 4 5 1------{) R Bxog Ло2uческuО О О Ло2uческо" 1 2,2 Рис. 5.2. B1:i1xag cocmaRнu~ 0---С:}--{ 0,88 5,ОВ Максuмольнt:АО mок 2А 5.3. Устройство управления на МОП транзисторе с защитой Устройства управления светодиодами Светодиод - один из самых распространенных приборов, он применяется для сигнализации и индикации различных состояний электронных устройств. В дан­ ном разделе приводятся принципиальные электрические схемы, которые позво­ ляют управлять светодиодами. 5.2.1. Стандартные светодиоды Стандартные светодиоды потребляют ток от 1О до 20 мА при напряжении 2 В. На рис. 5.4а изображено устройство управления на базе транзистора ZTX300. В схеме последовательно со светодиодом используется резистор; его величина выбирается в зависимости от подаваемого напряжения. Светодиоды также могут управляться через ТТЛ или КМОП входы напрямую (рис. 5.4б,в). Подаваемое напряжение для интегральных схем ТТЛ составляет +5 В. Номинал последовательного резистора
l 156 I 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ должен быть порядка 4,7 кОм. Для КМОП схем сопротивление следует устанавли­ вать в соответствии с подаваемым напряжением (рис. 5.2.2. 5.4). Маломощные светодиоды Маломощные светодиоды потребляют ток 2 мА при напряжении 1,8 В. Управ­ ление ими осуществляется с помощью схем, предназначенных для стандартных светодиодов (см. рис. 5.4). Однако величины последовательных сопротивлений должны быть другими. Соотношения между напряжением питания (Усе) иве­ личиной сопротивления Усе = 3-4 В 4-5 В Усе = 5-8 В Усе= 8-12 В Усе= 12-15 В Усе= 5.2.3. R R R R R = = = = = (R) приведены 600 Ом 1,6 кОм 3, 1 кОм 5,1 кОм 6,6 кОм ниже: Многоцветные светодиоды Существует два типа многоцветных светодиодов. Первый - это двухцветные, в кор­ пусе которых совмещены зеленый и красный светодиоды. Изменяя полярность, Vcc а) Vcc (В) R TR1 ZТХ300 GND 3 4 5 8 12 4 5 8 12 15 R (Ом) 100 150 220 470 820 "'--------~- vcc 6) R ТТЛ/КМОП ключ в) uлu буq>ер Vcc uлu бу<µер Bxog о-- Рис. R (В) (Ом) 3 4 4 5 5 8 8 12 12 15 100 220 470 820 Vcc ТТЛ/КМОП ключ Vcc R 5.4. Схемы управления светодиодами о R (В) (Ом) 3 4 4 5 5 8 8 12 12 15 100 220 470 820 о а - светодиод горит, когда на входе 1, 6 - светодиод горит, когда на входе О, в - светодиод горит, когда на входе 1
5.2. УСТРОЙСТВА УПРАВЛЕНИЯ СВЕТОДИОДАМИ можно менять цвет с красного на зеленый и наоборот. Второй тип - l 157 I трехцветные с тремя контактами: один общий, а два других подсоединены к анодам красного и зеленого светодиодов. Трехцветные светодиоды имеют четыре состояния: оба выключены, красный включен, зеленый включен или оба включены (дают желтый цвет). Их управле­ ние обеспечивают схемы, изображенные на рис. 5.2.4. 5.4. Инфракрасные светодиоды Большинство инфракрасных светодиодов работает со значительными величи­ нами токов и чаще всего применяется для дистанционного управления и связи. Пример таких светодиодов - серия SFH485 (Siemens). Максимальный прямой 100 мА при напряжении 1,5 В. SFH485 (RS585-242) имеет ширину диаграммы направленности луча 40°, а SFH485P (RS585-236) 80°. Мощность излучения для SFH485 равна 16-32 мВт, а для SFH485P 3,15-6,3 мВт. Посредством схемы (см. рис. 5.4) можно управлять инфракрасны­ ток через диод составляет ми светодиодами. Для увеличения мощности ИК следует использовать несколько светодиодов, соединенных параллельно или последовательно. На рис. 5.5а пред­ ставлена подобная схема. Vcc а) Cбemoguog" 1 4 TR1 ZТХ300 GND r>--------+-~ 6) +58 UucppoбoO О бхоg - разрешенuе 2eнepauuu 1 - заnрещенuе гeнepauuu ,,__-+--<12 Сброс CD4060 74СТ4060 4 Рис. 5.5. 3 s. 4 кГu Be;xog 2енераmора uмпульсоб Устройства управления инфракрасными светодиодами в приложениях дистанционного управления· а - устройство управления для нескольких светодиодов; 6 - импульсный генератор
11 sa 1 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ Серия OD880 (Optek) дает большую мощность светового излучения. Ширина диаграммы направленности луча равна 80° для OD880W (RS195-439), 35° для OD880F (RS195-451). Максимальное прямое на­ пряжение составляет 1,9 В при токе 100 мА. При работе с импульсным сигналом пиковое значение тока достигает 3 А. Мощность излучения этих устройств соот­ ветственно 16, 50 и 135 мВт. OD880L (RS195-445) и 8° для Импульсная схема инфракрасного излучения часто используется в приложени­ ях дистанционного управления. Электрический ток, проходящий через светодиод, представляет собой последовательность импульсов вместо постоянного тока. Ког­ да светодиод находится в открытом состоянии, через него проходит большой ток. При таком режиме работы образуется повышенная излучаемая мощность. На рис. 5.5б изображен генератор импульсов с частотой 38,4 кГц. Для управления све­ тодиодами могут применяться транзисторы соответствующих типов. 5.3. Устройства управления реле Реле - распространенный прибор для управления мощными исполнительными устройствами. В данном разделе приводятся принципнальные электрические схе­ мы, совместно с которыми реле может использоваться. 5.3.1. Реле с сухими контактами Маломощные реле с сухими контактами работают с напряжениями порядка и токами 7,4 3, 7 В мА, их управление осуществляется непосредственно микросхемами о) ттr;кмоп ~q>e~" Bxog 0--VD1 Реле 1 N4001 GND <>-------~ Vcc 6) D2 1 N4001 Реле Рабочее Робочuо нопряженuс <258 mок <500мА GNDO---------+-~ Рис. 5.6. Схемы управления реле с сухими контактами: о - но ПЛ ключах; 6 - но транзисторе
5.3. УСТРОЙСТВА УПРАВЛЕНИЯ РЕЛЕ l159 I ТТЛ (рис. 5.6а). Когда на вход ТТЛ подается высокий уровень, контакты реле замыкаются. Для защиты микросхемы должны использоваться диоды. Макси­ мальное коммутируемое напряжение обычно не превышает 5.3.2. Транзисторные устройства управления 240 В. реле Реле средней и большой мощности требуют больших напряжений и токов через обмотку. На рис. 5.6б показана схема на базе транзистора ZТХЗОО. Напряжение питания схемы равно 25 В, потребляемый ток 0,5 А. Напряжение питания зави­ сит от типа используемого реле. 5.4. Мощные управляющие интегральные микросхемы В этом разделе дается описание многоканальных электронных приборов, которые, как и реле, предназначены для управления различными исполнительными устройствами, но характеризуются большим быстродействием. 5.4.1. Многоканальные управляющие интегральные микросхемы Когда в приложениях управления требуются многоканальные устройства, можно использовать управляющие пнтегральные микросхемы типа матрицы ULN2803A (SGS-Thomson), имеющей восемь ключей на транзисторах Дарлингтона (рис. 5.7). Каждый ключ способен коммутировать ток до 500 мА при напряжении до 50 В. Входы микросхемы соединяются напрямую с ТТЛ/КМОП схемами. ULN2003A (Allegro Microsystems, RS307-109) имеет семь ключей. Vcc 390 РО Р1 Р2 Р3 Р4 Р5 Рб Р7 GND Рис. 5.7. Транзисторная матрица Дарлингтона ULN2803 390
l 1601 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ 5.4.2. Буферные устройства управления с защелками UCN5832A (Allegro Microsystems, RS426-755) представляет собой 32-каналыюе устройство управления с защелкой и последовательным входом (рис. имеет 32 5.8). Оно биполярных n-p-n транзистора с открытым коллектором. Каждый тран­ зистор способен коммутировать ток до 150 мА при напряжении до 40 В. Микросхе­ ма содержит 32-канальный буфер-защелку, два высокоскоростных 16-разрядных Пumaнue Bxog nocлegot.ameяьнtix gаннdх GND STROBE бщоgа 4 ОUТ1 OUT2 OUT3 OUT4 ouтs ОUТб ОUТ7 ОUТ8 OUT9 оuт10 OUT11 ОUТ12 ОUТ13 OUT14 ОUТ15 ТакmаВа\:1 чocmoma ----{>--------------~ Bxog B"xog nослеgобаmельн~х nослеgобаmельнtjх gOHHtjX gaннtjX Om 5нуmреннuх ~ защелок 1 Btjxogнas:i Btjxog1:i1 с omкp1:i1mtjм Рис. 5.8. коллекmором Назначение выводов и внутренняя блок-схема UCN5832A \:!ЧеОка
5.4. МОЩНЫЕ УПРАВЛЯЮЩИЕ ИНТЕГРАЛЬНЫЕ МИКРОСХЕМЫ О!!] регистра сдвига и схемы управления. Управление осуществляется через четыре КМОП входа, которые могут контролироваться непосредственно с выходов ком­ пьютера. Если управляющие входы соединены с выходами ТТЛ, необходимо ис­ пользовать нагрузочные резисторы ных - 3,3 4,7 кОм. Максимальная скорость входных дан­ Мб/с. Временные диаграммы изображены на рис. 5.9. Входные данные загружаются в регистр сдвига по положительному фронту тактового импульса. При прохожТ(е­ нии следующих тактовых импульсов данные сдвигаются по направлению к выхо­ ду последовательных данных (контакт 39). Входные данные остаются неизменны­ ми непосредственно перед фронтом тактового импульса. Информация из регистра передается в соответствующий буфер-защелку при подаче на стробирующий вход (контакт 4) сигнала высокого уровня. Буфер удерживает данные до тех пор, пока сигнал на этом контакте не изменится. Данные появляются на выходах микросхе­ мы во время отрицательного фронта стробирующего иыпульса. Когда на контак­ те 38 (разрешение выхода) сигнал низкого уровня, все выходы буфера отключе­ ны. Если на него подать сигнал высо1<0го уровня, то на выходы будет выгружено содержимое буфера. Вхоgньrе gонньrе ~--------~------------- Токmьr '---------------------- Сmроб-uмnульс Розреwенuе ------~ '------------------- бьrхоgо Bt>xog Рис. 5.9. Временные диаграммы работы микросхемы UCN5832A Схема с использованием параллельного порта изображена на рис. 5.1 О. После­ довательный, тактирующий и стробирующий входы соединены соответственно с контактами D1, D2 и D3 на экспериментальной плате параллельного порта. Текст программы управления на языке ТР6 приведен ниже. Текст программы Prog гаm 5832.PAS 5832А; (•Программа управления микросхемой UCN5832A.•) (•Соединена с экспериментальной платой параллельного порта, последовательный вход данных соединен с тактирующий вход соединен с стробирующий вход соединен 02, с 03.•) uses crt,dos, {$I c.\1oexp\tpl1b1 pas} vаг bank1,bank2,bank3,bank4:byte: 01,
l162 I 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ 4,7К >-----+--+--<,8t:0xog 1 +58 01 +58 8хо ОННЬIХ и-+-~~-----+--+--+---< Токmобо~ 2 8xog gоннt>х цacmomo 02 u - . · - - - - - - - - - + - - - < 4 0 ~~~~~~~ 03 GNO 8t:0xog 3 7 >-----+--+---u8t:0xog 3 8t:0xog 4 8 1-------+--G8t:0xog 4 об-uмn лье Cm GNO Конmокmь~ на эксnерuменmальноu nлome параллельного nopmo Рис. UCN5832AF 5.10. Экспериментальная схема на базе UCN5832AF ргосеduге load_data(x byte), UCN5832A •) (•Загрузка данных в beg1n •) wг1te_data_poгt(p_addгess,x), (•Данные=х, такты=О, строб-имnульс=О wг1te_data_poгt(p_addгess,x+2), (•Данные=х, такты=1, строб-имnульс=О.•) wг1te_data_poгt(p_addгess,x), (•Данные=х, такты=О, строб-имnульс=О.•) end, ргосеduге stгobe, (•Стробирование.•) wгite_data_poгt(p_address,4), (•Строб=1 •) wr1te_data_poгt(p_address,O), end, ргосеduге output_contгol(bank1,bank2,bank3,bank4 (•bank1 - младший байт, bank4 - byte); старший байт.•) vаг i: integer; beg1n for i:=1 to 8 do load_data(гound(bank4 fог i:=1 to 8 do load_data(round(bankЗ fог l =1 to В do load_data(гound(bdnk2 fог i.=1 to 8 do load_data(round(bank1 stгobe, (•Сигнал стробирования для and and and and b1t_we1ght(9-1)/b1t_we1ght(9-1))); b1t_we1ght(9-1)/b1t_we1ght(9-1))); b1t_we1ght(9-1)/b1t_we1ght(9-1))); b1t_we1ght(9-1)/b1t_we1ght(9-1))); записи данных в UCN5832A •) end, (•Главная программа •) beg1n centron1c_addгess; wr1teln('UCN5832A demonstгat1on ргоgгаm ); wr1 teln ( · Out1, Out9, Out17 and Out25 osclllat1ng, other outputs=ze го· ); repeat output_control(1, 1, 1, 1), (•Сначала каждый байт равен 1 Включен режим (выход инвертирован).•) вывода данных
S.S. ОПТОЭЛЕКТРОННЫЕ ПОЛУПРОВОДНИКОВЫЕ РЕЛЕ НА ТИРИСТОРАХ delay( 1000), output_control(0,0,0,0), delay(1000), unt1l keypressed, end (•Закрытие режима вывода данных l163 I •) Микросхема UCN5810AF (Allegro Microsystems) - это 10-канальный буфер­ 5.11 ). Каждый канал может коммутировать ток 15 мА. Ток потреб­ ления в статическом режиме при напряжении питания 5 В равен 100 мкА. Логика работы микросхемы такая же, как и UCN5832A, однако на выходах сигнал не защелка (рис. инвертируется. Схема бt>xoga vьь Om бнуmреннuх 10 защелок B<>xog 16 nослеgобаmельнt>х 8t:0xog gаннь~х Токmобао vьь частота Уnрабл~еmся Bxog nослеgобаmельнь~х -..J сmроб-uмnульсом gаннь~х Не uсnользуеmся Bt>xog 1 B<>xog 2 Рис. 5.5. 5.11. Назначение выводов и внутренняя блок-схема UCN58 l OAF Оптоэлектронные полупроводниковые реле на тиристорах Полупроводниковые реле применяются в качестве коммутаторов в силовых цепях переменного тока. При подаче на вход сигнала высокого уровня загорается свето­ диод. Его световой поток управляет фототранзистором, который, в свою очередь, управляет тиристором, используемым в качестве коммутационного прибора. Когда тиристор включен, устройство проводит ток. Поскольку связь между входом и вы­ ходом устанавливается с помощью светового потока, разница потенциалов между ними может достигать нескольких тысяч вольт. Для таких устройств характерно наличие детектора нулевого напряжения, который включает тиристор только в том случае, когда переменное напряжение близко к нулю. Реле МОСЗО41 (ISOCOM Coшponents, RS195-4122) содержит инфракрасный светодиод, детектор нулевого напряжения и тиристор. Блок-схема и схема включе­ ния приведены на рис. 400 В при токе 100 5.12. Максимально коммутируемое напряжение составляет мА. На рис. 5.13 с детектором нулевого напряжения. изображено мощное полупроводниковое реле
!164 I 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ Сuлобоо Г ал ьбонuцеско~ разбs:~зко N бхоg Е 1 1 1 1 100 1 1 Соеguнено с ТТЛ/КМОП ключомu Е Рис. 5.12. Оптоэлектронное реле для приложений управления в силовых цепях n_еременн_с::го то~а а) _ 6) Полуnробоgнuкобое реле Рис. 5.13. Мощное полупроводниковое реле с детектором нулевого напряжения а - контакты, 6 - внутренняя блок-схема 5.6. Устройства управления двигателями постоянного тока Двигателями постоянного тока можно управлять с помощью реле (см. рис. транзисторов (см. рис. 5.2). 5.6) или Одиночное переключающееся реле включает и выклю­ чает двигатель, а спаренное отвечает за направление вращения (рис. 5.14). Другой способ управления двигателями постоянного тока основан на исполь­ зовании мостовых схем типа L298N (SGS-Thomson, RS636-384). Это мощное напряжение до 46 В, ток до 2 А на каждый канал - двухканальное устройство, которое работает от уровней ТТЛ (рис. 5.15). С вывода Vs (контакт 4) поступает напряжение питания для двигателя, на вы­ вод Vss (контакт 9) подается напряжение питания схемы (+5 В). Выводы ENA и ENB (контакты 6 и 11) открывают входы двух каналов. Входы IN1 и IN2 (кон­ такты 5 и 7) управляют первым каналом, а INЗ и IN4 - вторым. Эмиттеры тран­ зисторов соединены для подключения внешних контролирующих датчиков. Ти­ повая схема включения для одного канала показана на рис. 5.16.
ПОСТОЯННОГОТОКА 5.6. УСТРОЙСТВА УПРАВЛЕНИЯ Ноnр}:!женuе numoнш:1 gбuгоmел~ + Переключоющеес}:! Спаренное реле nереключоющеес~ реле Элекmро­ моmор Уnрабленuе numoнueм 1 - numoнue бкл ючено О - numaнue бЬ'ключено Уnробленuе бращенu>=1 бnepeg О нозоg наnрабленuем 1 - Рис. 5.14. Устройства управления двигателем постоянного тока посредством реле / ..... о L298N ~ ~~ ~ vs OUTl OUT2 OUTl IN2 E"I IN3 А EN В Контроль Рис. 5.15. А GND Контроль В Расположение выводов и внутренняя блок-схема мостового устройства управ­ ления L298N [165 I
l166 I 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ VS 04 01 м 03 02 IN2 EN А GNO Контроль брощенuя Рис. 0,5 5.16. Устройство управления двигателем по­ стоянного тока Когда на входе ENA низкий уровень, входы заблокированы и двигатель не вра­ щается. Если на этот вход подать высокий уровень, входы открываются. Входы IN1 о о о 5.7. и IN2 IN1 IN1 IN1 = управляют режимами работы двигателя следующим образом: 1, IN2 =О - двигатель вращается IN2 = 1 - двигатель вращается IN2 - двигатель не вращается. =О, = по часовой стрелке; против часовой стрелки; Устройства управления шаговыми двигателями Существует два типа шаговых двигателей: четырехфазные и двухфазные (рис. 5.17). Для этих двигателей требуются различные схемы управления. 5.7.1. Устройства управления четырехфазными шаговыми двигателями Для управления шаговыми двигателями используются различные алгоритмы, ко­ торые отличаются друг от друга последовательностями возбуждения обмоток. Все­ го существует три шаговые последовательности: волновая, полушаговая и шаговая. Порядок подачи напряжения на обмотки двигателя приведен на рис. 5.18.
5.7. УСТРОЙСТВА УПРАВЛЕНИЯ ШАГОВЫМИ ДВИГАТЕЛЯМИ а) Шаг А в с D 1 ON OFF OFF OFF OFF ON OFF OFF OFF OFF ON OFF OFF OFF OFF ON 2 3 4 б) а) ~ Шаг А в с D 1 ON ON OFF OFF OFF ON ON OFF OFF OFF ON ON ON OFF OFF ON 2 3 4 в с D N n ";;\ А ;;\ о о е о " " о о е е в) Шаг А в с D 1 8 ON ON OFF OFF OFF OFF OFF ON OFF ON ON ON OFF OFF OFF OFF OFF OFF OFF ON ON ON OFF OFF OFF OFF OFF O"F OFF ON ON ON Рис. 5.18. о е 2 3 4 б) 5 Фо~ Фаза 2 6 7 Фаза 1 Фаза 2 j 167 I Шаговые последо­ вательности запуска четырех­ фазного шагового двигателя: Рис. 5.17. Шаговые двигатели. а - четырех- фазный, б - двухфазный а в - волновая, б - полушаговая; - шаговая Волновая последовательность возбуждения - самый простой способ управления шаговыми двигателями: обмотки возбуждаются одна за другой. При этом двигатель начинает вращаться в сторону, противоположную порядку возбуждения обмоток. Так как в одно время возбуждается только одна обмотка, вращающий момент дви­ гателя небольшой. Для его увеличения используется шаговая последовательность, которая аналогична предыдущей, но здесь одновременно возбуждаются две обмот­ ки, благодаря чему увеличивается вращающий момент двигателя. Полушаговая последовательность возбуждения - это комбинация первых двух. Во время одного оборота ротора количество циклов возбуждения удваивается. При этом режиме двигатель работает более ровно. Для управления двигателями существуют специальные микросхемы. Микросхема UCN5804 (Allegro Microsystems, RS653-531) может генерировать 5.19). Для ее работы требуются два источника пи­ тания: один для самой микросхемы (контакт 16), максимальное напряжение 7 В, дру­ гой для управления двигателем (контаr<ты 2 и 7). Контакты 4, 5, 12 и 13- «земля» источников питания. Контакты 1, 3, 6 и 8 конструктивно соединены с транзистора­ ми Дарлингтона (максимальное напряжение 35 В, максимальный тоr< 1,5 А). все три последовательности (рис.
l 168 j 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ Пumoнue, но ~----< ~-----< Рис. 5.19. Контакт 1О 9 nоgобоемое элекmромоmор ПолуwогобЬ'О Оgноq:юзнЬ'О Назначение выводов и типовое включение микросхемы UCN5804 15 (Выход разрешен) управляет микросхемой. Когда на него подан сиг­ нал высокого уровня, все выходы закрыты. Контакт вает направление вращения двигателя; контакт 11 - 14 (направление) устанавли­ это «шаговый вход;,,: отрица­ тельный фронт сигнала, поданный на него, поворачивает двигатель на один шаг. Режимы возбуждения двигателя устанавливаются с помощью контактов о контакт контакт о контакт контакт о контакт о 9 =О, 9 = 1, контакт 9 =О, контакт 9 = 1, контакт 10 =О 10 =О 10 = 1 10 = 1 - 9 и 1О: шаговый; волновой; полушаговый; блокировка. Во время работы состояние выводов 9, 10 и 14 можно изменить, если на «шаго­ вом входе» логическая единица. Хорошо известна и микросхема SAA1027 (Philips Semiconductor, RSЗ00-237), которая применяется для управления четырехфазными двигателями. Напряже­ ние питания должно быть от 9,5 до 18 В. Максимальный выходной ток Микросхема несовместима с ТТЛ логикой. Напряжение выше уровень логической единицы, а напряжение ниже 4,5 В - 7,5 - 500 мА. В определяет логического нуля. Для управления мощными двигателями можно использовать транзисторы Дарлингтона типа TIP122. Номинальный ток такого транзистора равен 5 А при 100 В. Схема устройства управления изображена на рис. 5.20. Входы А, В, С и D соединяются с компьютером при помощи описанных выше микросхем управления UCN5804 или SAA1027 через схему сопряжения. напряжении до 5.7.2. Устройства управления двухфазными шаговыми двигателями Схема управления двухфазным шаговым двигателем изображена на рис. стовая микросхема троллер 5.21. Мо­ L298N используется для управления питанием двигателя, кон­ L297 (SGS-Thomson, RS636-362) - для генерации шаговых последова­ тельностей.
5.8. УПРАВЛЕНИЕ ЗВУКОВЫМИ УСТРОЙСТВАМИ [169 I \)се Все Рис. mpoнзucmopt> 5.20. Устройство управления TIP 122 шаговыми двигателями с использованием транзисторов Дарпингтона l Все Уnробленuе guogt> 1N4002 Ребер с Cu нхрон uзо uu~ Рис. 5.8. 5.21. Схема управления двухфазным шаговым двигателем Управление звуковыми устройствами В разделе дастся описание принципиальных электрических схем и электронных приборов для управления громкоговорителями, сиренами и другими устройства­ ми, предназначенными для генерации и усиления звуковых колебаний.
\ 1701 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ 5.8.1. Устройства управления пьезоэлектрическими динамиками, зуммерами и сиренами Пьезоэлектрические динамики служат для генерации звуков. Они имеют макси­ мальное входное напряжение 50 В и номинальный ток 10 мА. На рис. 5.22а изоб­ ражена схема, использующая буфер КМ ОП/ а) ТТЛ для управления таким динамиком. Схе­ Усе ма транзисторного устройства управления ZTX300 "' :J ~~ Bxog =" _J [ 1К " ' t GND ,.-,__ __.____ _ __.___ 6) ё::J - Bxog лупроводниковые зу,к'ttеры D ZTX300 схема управления на транзисторе s генерации звука на базу О' ZTX300 ZTX300. Для необходимо подать высокий уровень напряжения. При ~ управлении сиренами можно использовать такие же схемы. Ультразвуковые преобразователи предна­ значены для генерации ультразвука. Обычно +58 в) это автономные той порядка 450 Гц. На рис. 5.22в представлена ~ l GND - динамики, способные генерировать тон часто­ __J ~ ~ 5.226. на вход последовательность импульсов. По­ " с +5В l показана на рис. Чтобы получить звук, необходимо подать они применяются в приложениях дистанци­ Зуммер uлu сuрено онного управления, измерения и передачи данных, например в ультразвуковом изме­ рителе расстояний и детекторах движения Максuмальнь~О GND r>--------.l~moк 500мА GND объекта. На рис. Рис; 5.22. Схемы управления для звуковых нерируется конта1п - изображена схема, ге­ 38,4 кГц. В данной схеме ультразвуковой сигнал ге­ устройств а - на базе ТТЛ/КМОП; 6- на транзисторе; в 5.23 нерирующая сигнал частотой управление зуммером иnи сиреной только 12 (RESET) в том случае, когда на подается сигнал низко­ го уровня. Если на этом входе высокий уровень, генерация подавляется. 5.8.2. Устройства управления громкоговорителями На рис. 5.24 показана схема управления громкоговорителем на базе микросхемы усилителя низкой частоты ТВА820М. Напряжение питания микросхемы может изменяться от 3 до 12 В, выходная мощность составляет теля с сопротивлением 8 Ом. Контакт 2- 2 Вт для громкоговори­ инвертирующий вход. Между входом и выходом усилителя подключен внутренний резистор 6 кОм, играющий роль от­ рицательной обратной связи. Коэффициент усиления по напряжению определя­ ется как отношение сопротивлений внутреннего и внешнего резисторов. Его ре­ комендуемая величина от 22 до 220 Ом (резистор R2).
5.8. УПРАВЛЕНИЕ ЗВУКОВЫМИ УСТРОЙСТВАМИ +58 Цuq>робоо О 1 - бхоg розрешенuе запрещенuе 2eнepauuu 2енерацuu CD4060 74СТ4060 38,4кГц 38,4кГц Ультрозбукобоо преоб розоботел ь 4 Рис. 5.23. Схема генератора ультразвука а) С7 220мкФ C1 +38 + 128 +48 +128 I- 22мкФ От ЦАП o-----j 1----.-----< Bxog R1 R2 10К 100 R3 1 С2 100мкФ б) С1 22мкФ От ЦАП o-----j С2 470 R1 Bxog (R1n Рис. 1ОК ~1ОК) 5.24. Схемы низкочастотных усилителей звука: а - г; 220нФ 8 Ом на ТВА820М; 6 - на LM380N- l @!]
Микросхема LM380N-1 (рис. 5.24б) - это другой усилитель низкой частоты с фиксируемым коэффициентом усиления, равным ментов усиление можно увеличить до 200. 50. С помощью внешних эле­ Микросхема имеет ограничение выход­ ного тока и термозащиту. Напряжение питания должно быть от мальное сопротивление нагрузки переменным резистором 5.9. 8 4 до 12 В. Мини­ Ом. Уровень входного сигнала регулируется R2. Устройства управления дисплеями В разделе приводится описание принципиальных электрических схем и электрон­ ных приборов, предназначенных для управления светодиодными и жидкокрис­ таллическими дисплеями. 5.9.1. Многоразрядные светодиодные дисплеи со встроенными схемами управления Микросхема TSM6234T (Three F1ve System) - это четырехразрядный зеленый светодиодный дисплей шириной 0,3 дюйма со встроенным последовательным вхо­ дом (рис. 5.25). Потребляемый каждым сегментом ток равен 2,0 мА. Ток, необхо­ димый светодиодам, определяется внешним резистором и обычно в 25 раз 7). превы­ шает ток, протекающий через вывод управления яркостью (контакт Между выводом управления яркостью и «землей» должен быть включен кон­ денсатор 0,1 мкФ. Для работы дисплея нужно два напряжения питания: Vdd и Vled. Напряжение Vdd предназначено для питания внутренней схемы управ­ ления и может меняться от 4,75 до 12 В. Потребляемый ток равен 7 мА для на­ пряжения 12 В. Напряжение Vled обычно составляет 5 В и служит для питания светодиодов дисплея. Последовательная передача данных осуществляется по трем ТТЛ совместимым линиям: «вход данных» (контакт На рис. 5.26 4), ENABLE (контакт 3) и CLOCK (контакт 5). изображены временные диаграммы загрузки данных в дисплей. Формат передачи данных состоит из стартовой единицы и 35 бит данных. По каждому положительному фронту тактового импульса биты данных последова­ тельно записываются во входной сдвиговый регистр. Чтобы открыть вход, надо подать на контакт 3 (ENABLE) сиrнал низкого уровня. При прохождении 36-го фронта тактового импульса генерируется сигнал загрузки, который переводит 35 бит данных из регистра сдвига в буфер-защелку. Во время прохождения следу­ ющего фронта формируется сигнал «сброс», который очищает регистр сдвига. При включении питания генерируется сигнал «сброс при включении», который очищает все регистры сдвига и буфер-защелку. Стартовый бит и тактовый им­ пульс возвращают микросхему в режим загрузки данных. Для очистки дисплея необходимо подать стартовый бит и 35 нулей. Эта процедура также сбрасывает 1, следующий сразу за стартом, определяет состояние сегмента А бит 2 - состояние сегмента В первой цифры и т.д. микросхему. Бит первой цифры, Функции биты 35 1-8 биты9-16 бит последовательных данных можно определить так: сегменты сегменты A-DP A-DP первой цифры второй цифры
5.9. УСТРОЙСТВА УПРАВЛЕНИЯ ДИСПЛЕЯМИ Назначечuе 1 2 3 4 5 6 7 l 173 \ ко1-1mакmоб Внеwнuо cбemoguag ВнеwнuО cбemoguog 1 2 ENABLE Bxog gaннtjx Токmuрующuо бхоg Vdd Уnрабленuе 8 GND 9 Vled ~ркосmью Vled т D1, D2 бнеwнuе cбemoguog~ ~-----------<9>-----------~ Vdd 6 Peзucmop ре2улuробкu ):1pкocmu CбemoguogнtjO gucnлeo б~хоgн~х 35 35 бу~ероб Гf1рuг2ероб~защелок Пос леgобаm ельнtjе DP 35-разряgн~О pe2ucmp gaнчtje сgбuго CLOCK Рис. 5.25. биты биты Расположение выводов и внутренняя блок-схема сегменты 17-24 25-32 A-DP TSM6234 третьей цифры сегменты А- DP четвертой цифры Схема с использованием экспериментальной платы последовательного порта изображена на рис. там RTS и DTR 5.27. Выводы «Вход данных» и на плате. Контакт 3 (ENABLE) CLOCK подключены чтобы вход данных был постоянно открыт. Текст программы TSM6234.PAS Program TSM6234, (•Программа управления четырехразрядным светодиодным дисплеем (•Соединен с экспериментальной платой последовательного порта, DATA соединен с RTS, CLOCK соединен с DTR •) к контак­ соединен с «землей» для того, TSM6234 •)
f 174 J 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ Загрузка no gаннt)Х nолажumельному срронmу 36 Taкmt::4 Cmapmoбt:IO бum Даннt::4е BнympeнH):l):I загрузка ВнуmреннuJ Рис. 5.26. сброс Временные диаграммы светодиодного дисплея TSM6234 uses cгt,dos, {$1 с \1oexp\tpl1b1.pas} ргосеduге staгt, (•Загрузка стартового бита 1- по входу данных, переход 0-1 по входу тактов.•) Ьеg1п 1,0); 1, 1); wr1te_modem_status(RS232_address, 1,0); end, wг1te_modem_status(RS232_address, wr1te_modem_status(RS2З2_addгess, ргосеduге load_b1t(b1tx byte), b1tx •) (•Загрузка бита данных, Ьеg1п wгlte_modem_status( RS232_add гess, bltx, О), 1); wг1te_modem_status(RS232_address,b1tx, wг1te_modem_status(RS232_addгess,b1tx,O), end, fuпct1oп segmeпt_data(chaгx:chaг)·byte; (•сhагх - отображаемый символ (0-9, A-F).*) (•Функция вычисляет двоичные значения для сегментов дисплея.•) (•Двоичные данные: сегменты a,b,c,d,e, f,dp=DBO,DB1,DB2, ... ,DB7.•) Ьеg1п if charx= о· lf сhагх=·1· if сhагх=·2 lf сhагх=·з· lf charx=·4· lf charx=·s· lf сhагх='6 theп segmeпt_data.=$3F; theп segmeпt_data:=$06; theп segment_data·=$5B; then segment_data:=$4F, then segment_data =$66; then segmeпt_data =$60, then segment_data·=$7D;
5.9. УСТРОЙСТВА УПРАВЛЕНИЯ ДИСПЛЕЯМИ Нозначенuе 6,2К +58 RTS DTR GND конmокmоб 1 Внешнuо ~ ~~!BlнEuo cбemoguog 2 4 5 6 7 8 9 cбemoguog Bxog gоннt>х ТакmuрующuО бхоg CLOCK Vdd Уnрабленuе ~ркосmью Общuо Vled +58 DATA CLOCK GND Koнmoкmt) f-.!O эксnерu менmал ьноо nлame nослеgобоmельно20 nopma Рис. lf lf lf lf lf lf lf lf lf lf end; 5.27. Схема управления светодиодным дисплеем TSM6234 charx=·7· then segment_data:=$07, charx=·s· then segment_data.=$7F; charx=·g· then segment_data:=$6F; upcase(charx)=·д· then segment_data =$77; upcase(charx)='B' then segment_data·=$7C, upcase(charx)=·c· then segment_data =$39, upcase(charx)='D' then segment_data =$5Е; upcase(charx)='E· then segment_data:=$79, upcase(charx)='F' then segment_data·=$71; upcase(charx)= then segment_data.=$00; procedure load_d1g1ts(strx·str1ng); (•Загрузка 34 бит данных •) (•Всего тактовых импульсов: 35 •) var 1, J. lnteger, Ь1 tvalue: byte; beg1n for J :=1 to 4 do for 1:=1 to 8 do Ьеg1п load_blt(round(segment_data(srtx[J]) and end, for 1: =1 to 2 do load_blt( О); load_blt(O); end, 1 Ыt_we1ght(1)/b1t_we1ght(1))); l175]
l 176 I 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ procedure loaddata_test; var i: integer; dig1t_str1ng:str1ng; begin write_transmit_buffer(RS232_address,O); repeat cl rscr; sta rt; writeln( 'Input О or q to quit the program· ); write('Input four digits (0,1,2".9,a,b".f): load_digits(digit_string); until upcase(digit_string[1J)~·o·; end; ); readln(d1git_string); (•Главная программа.•) begin COM_add ress; Loaddata_test; end. 5.9.2. Растровые светодиодные дисплеи со встроенными схемами управления Микросхемы RS590-935 и RS590-941 - это двухдюймовые растровые светодиод­ ные дисплеи с разрешением 5х7 пикселов, которые можно использовать для отоб­ ражения больших символов (рис. 5.28). Встроенная КМОП логика управления содержит модуль памяти, генератор символов в коде му управления. Это позволяет дисплею отобр~жать ASCII, мультиплексор и схе­ 96 символов ASCII без допол­ нительных схем управления. Линии ввода/вывода совместимы с уровнем ТТЛ и позволяют соединять не­ сколько дисплеев. Когда все светодиоды горят, напряжение питания равно Устройство потребляет ток раза. Контакт 3- 80 5 В. мА. Яркость можно уменьшить в два или в четыре это вход разрешения микросхемы. Для записи данных в дисплей на него необходимо подать низкий уровень, при этом на входах присутствовать параллельные данные 00 - 06. Затем 8-14 уже должны на вход WR (контакт 4) по­ дается стробирующий импульс, по положительному фронту которого информация загружается в дисплей. Входные данные волов, представленных в коде ASCII. (00 - 06) определяют один из 96 пока не будет заменен другим. Яркость светодиодов регулируется входами и BL1 о о о о (контакты BLO BLO BLO BLO 5 и 6): = О, = О = О, = 1 - 1/4 яркости; = = О = 1- = BL1 BL1 1, BL1 1, BL1 - дисплей не светится; - 1/2 сим­ Каждый символ отображается до тех пор, яркости; максимальная яркость. BLO
5.9. УСТРОЙСТВА УПРАВЛЕНИЯ ДИСПЛЕЯМИ Koнmaкmtj Vcc П (mecm gucnлeo) 2 (розреwенuе) 3 WR (заnuсь) 4 8LO (оркасmь) 5 ю (оркосmь) 6 GND 7 СЕ 11111 Koнmaкmtj 00000 00000 00000 00000 00000 00000 00000 (cmapwuO бum) 14 Dб 13 D5 12 D4 11 D3 10 D2 9 D1 8 DO (млogwuu бum) Vcc +58 +58 WR 00000 00000 00000 00000 00000 00000 00000 14 DO 13 D1 12 D2 11 D3 10 D4 9 D5 8 Dб С1 D1 D2 D3 D4 D5 Dб D7 {) GND GND Kaнmaкmtj на эксnерu менmальнаО nлame параллельного порта Рис. 5.28. Назначение RS590-935 и RS590-94 l Контакт 2- выводов и схема с испоnьзованием рааровых дисnпеев это вход теста дисплея (LT). Если на него подать низкий уровень, то яркость свечения точек растра уменьшится в четыре раза по сравнению с мак­ симальной. Тест не влияет на ранее отображенный символ. На рис. 5.28 представлена экспериментальная схема. Входы дисплея соединены с контактами та. Линия WR 01 - 07 00 - 06 экспериментальной платы параллельного пор­ соединена с контактом С1. На контакты 2, 5 и 6 уровень. Поскольку набор символов дисплея представлен в коде подан высокий ASCII, который также используется в компьютере, то любой символ можно трансформировать в двоичный код с помощью процедуры ТР6 ORD(char).
/ 178 I 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ Текст программы RS590935.PAS Program LED590935_dot_matr1x_d1splay, (•Программа управления двухдюймовым микропроцессорным растровым дисплеем •) (•Дисплей соединен с экспериментальной платой параллельного порта, 01 - 07 соединены с выводами С1 соединен с выводом WR 00 - 06 •) дисплея, дисплея uses crt, dos, var character char {$1 с \1oexp\tpl1b1 pas} procedure dlsplay(character char) (•Отображение символа на дисплее var 1 •) lпteger, Ьеg1п wr1te_data_port(P_address,ord(character)), (•Вывод двоичных данных•) wr1telп( Output value for the chaгacter ls ,ord(character)), wr1te_control_port(P_address, 1), ( * WR=1 *) wr1te_control_port(P_address,O), ( •WR=O *) wr1te_control_port(P_address 1) ( •WR=1, данные загружены *) епd, beg1n ceпtroп1c_address, repeat wrlte( Input the character to d1splay(character) unt1l ord(character)=13, end Ье d1splayed ), readln(character), 5.9.З. Многоразрядные светодиодные растровые дисплеи со встроенными схемами управления Микросхема OLR1414 (S1emens, RS589-301) - это четырехразрядный растровый дисплей с разрешением каждого разряда 5х7 пикселов и встроенной КМОП схемой управления (рис. Встроенная логика содержит модуль памяти, генератор символов в коде мультиплексор и схему управления. Входы совместимы 5.29). ASCII, с уровнями ТТЛ. Напряжение питания 5 В. Устройство наращиваемое, что позво­ ляет строить систему отображения из нескольких одиночных модулей. Размер отображаемого символа 3,66 мм. Во время работы на входы данных (00 - 06) и адреса (АО и А1) необходимо подать информацию. После поступления на вход WR (контакт 3) стробирующего импульса происходит загрузка информации. Ну­ левой разряд располагается справа, при этом на входах АО и А1 должен быть сиг­ нал низкого уровня. На рис. 5.30 приведена экспериментальная схема управления дисплеем. Выво­ 00 - 06 дисплея подключены к контактам О 1 - 07 на экспериментальной плате параллельного порта. WR соединен с контактом С 1 на плате, линии АО ды
5.9. УСТРОЙСТВА УПРАВЛЕНИЯ ДИСПЛЕЯМИ Нозначенuе 1 2 3 4 5 6 ..... ....... ..... ..... ....... .... .... ..... ..... .... .... ..... ..... ..... . .... ..... ..... ..... ...... .... 7 8 9 10 11 12 Cmpoкu О D5 D4 - lt79 I конmокmоб бхоg бхоg gаннt)Х gаннt)Х WRiit' - А1 АО бt>бор цuq>pt> бt>бор цuq>pt> Vcc Общuо DO D1 D2 D3 D6 - бхоg 90ННЬIХ бхоg бхоg бхоg gоннt)Х бхоg gаннt::4Х (млogwuo gаннt::4Х (cmopwuo бооm) Дuспле} 6 бооm) gаннt::4Х ..... .......... ..... ...... ...... .... ..... .... ..... ..... ..... .......... .......... ..... ..... ..... Сmолбцt> О 19 г----------, Уnрабленuе сmрокамu ::::: 1 4 - - - - - - - - , 3 о 2 Ло2uко уnрабленuя u Счеmцuк сuнхронuзацuu go 128 Упрабленuе зогрузкоа D6 D5 D4 Ло2uка уnрабленuя cбemoguogoмu Дewuq>pomop Семuрозр1=1gнt::4О ASCll-кag сmрок gucnлeя ОЗУ D3 D2 ПЗУ АSСll­ D1 DO сuмболоб о_ а Е о 128х35 бum (4480 бum) о_ WR АО зanucu и А1 - 5.29. Даннсjе 3 QJ q og рее о А1 Рис. & ::> Дewuq>pomap б сmалбuах Расположение выводов и внутренняя блок-схема микросхемы DLR 1414 с С2 и СЗ. Так как наборы символов дисплея и компьютера совпадают, пе­ ред подачей на вход микросхемы символ достаточно преобразовать в двоичный код посредством процедуры ТР6 Текст программы ORD(char). 1414.PAS Program RS1414_dot_matr1x_d1splay, (•Программа управления четырехразрядным растровым дисплеем•) (•Дисплей соединен с экспериментальной платой параллельного порта, 01 - 07 соединены с выводами С1 соединен с 00 - 06 дисплея, WR, АО и А1 соединены с контактами С2 и СЗ платы •)
[ 180 1 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ Koнmaкmt::4 на эксnерuменmальноО nлame nораллельного nopmo +58 С3 С2 Назначенuс 1 DS 2 D4 3 WR 4 А1 АО 5 6 7 8 9 10 11 12 Cl конmакmоб Vcc GND DO D1 D2 D3 D6 D7 D6 ..... ...... ..... ..... ..... ..... .... ..... ..... ..... ..... ..... ..... DS D4 D3 D2 DO Dl GND Рис. 5.30. Схема управления дисплеем DLR 1414 uses crt,dos, vз.r ch1,ch2,ch3,ch4 char, {$I с \1oexp\tpl1b1 pas} procedure d1splay(character char,d1g1t byte), (•Отображение символа на дисплее•) var 1 lnteger, beg1n wr1te_data_port(P_address,ord(character)), (•Вывод двоичных данных •) wr1teln( Output value for the character ls ,ord(character)) wr1te_control_port(P_address, 1+d1g1t•2), (•WR=1 •) wr1te_control_port(P_address,O+d1g1t•2), ( •WR=O •) wr1te_control_port(P_address, 1+d1g1t•2), ( • WR=1, данные зафиксированы •) end, procedure load_d1g1ts(ch1,ch2,ch3,ch4 char), (•Отображение четырех разрядов •) beg1n d1splay(ch1, 3), dlsplay(ch2,2), d1splay(chЗ, 1), d1splay(ch4, 0), end, Ьеg1п centron1c_address repeat
5.9. УСТРОЙСТВА УПРАВЛЕНИЯ ДИСПЛЕЯМИ wr1te( Input four characters to readln(ch1,ch2,ch3,ch4). load_d1g1ts( cg1, ch2, сhЗ, ch4), unt1l ord(ch1)=13, end 5.9.4. Ье ~ d1splayed (from left to r1ght) ), Жидкокристаллические растровые дисплейные модули Микросхема HD44780 (Hitachi) - это жидкокристаллический дисплейный модуль, который отображает две строки символов (рис. 5.31 ). Каждый символ может использовать 5х10 точек матрицы, из которых 5х7 разрешается выбирать про­ граммно. Дисплей имеет набор инструкций по выполнению различных функuий. Для ввода/вывода применяется восьмиразрядная двунаправленная шина данных. Кроме того, при организации ввода/вывода необходимо управлять следующими Нозноченuе 1 2 .3 DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDD 4 5 6 7 8 9 10 11 12 13 c::::::::J 14 >t<ugкoкpucmaллuчecкuO gucnлeo HD44708 Ло2uка ynpaблeнus:i gucnлeeм Рис. 5.31. Назначение выводов и внутренняя блок-схема ЖК дисплея конmакmоб Vss Vdd Vo RS READ /WRIТE ENABLE DBO DB1 DB2 DВ3 DB4 DB5 DВБ DB7
l 182 j 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ входами микросхемы: контакт R/W) и контакт 6 4 (выбор регистра, (разрешение, RS), контакт 5 Линия данные R/W (чтение/запись, ENABLE ). RS отображает то, что загружается в модуль дисплея (RS =О: передаются инструкции; RS = 1: передаются показывает, какая операция проводится в данный момент инструкции или данные). Линия - чтение или за­ пись (R/W = 1: чтение; R/W =О: запись). Чтением и записью данных управляет линия ENABLE. При загрузке данных информация подается на входы RS, R/W, DBO - DB7, а затем по отрицательному фронту на входе ENABLE (рис. 5.32) загружается в дисплей. Набор основных инструкций приведен на рис. 5.33 (пол­ ный список можно получить у производителя). RS R/W Донн"е DBO DB7 Розреwенuе Загрузка по Рис. gонн"х оmрuuаmельному <рронmу Временные диаграммы работы растрового 5.32. ЖК дисплея Схема с использованием дисплея изображена на рис. режим работы с данными. Входы DO - D7 периментальной платы параллельного порта. Вход том С1 на плате, входы RS и R/W - 5.34. Здесь используется подключены к контактам ENABLE D 1 - D8 экс­ соединен с контак­ с С2 и С3. Поскольку наборы символов дис­ плея и компьютера совпадают, перед подачей на вход микросхемы символ достаточно преобразовать в двоичный код при помощи процедуры ТР6 ORD(char). Текст программы LM016L.PAS Ргоgгаm LM016L_dot_matг1x_d1splay, (•Программа управления жидкокристаллическим дисплеем. Дисплей соединен с экспериментальной платой параллельного порта, 01-08 соединены с выводами С1 соединен с RS uses и R/W EN 00-07 дисплея, дисплея соединены с С2 и СЗ.•) cгt,dos, vаг sen1,sen2:stгing[16]; {$I c:\1oexp\tpl1b1.pas} ргосеduге contгol(commaпd:byte); (•Ввод управляющего слова в модуль дисплея •)
5.9. УСТРОЙСТВА УПРАВЛЕНИЯ ДИСПЛЕЯМИ 11аз 1 Инсmрукцuu Oчucmumь gucnлeo 8азбраm б начало Усmонобко режuма 8ключенuе/ бtjключенuе gucnлes:1 Сgбuг курсор о Усmонобка фJHKUU0 Усrnонобка CGRAf.A-agpeca Усmонобка OORAM-agpeca Чmенuе u фЛО20 Зоnuсь Чmенuе agpeca зoнs:1mocmu goннtJx goннtJx Onucoнue RS R/W 087 086 085 084 083 082 081 080 о о о о о о о о о 1 о о о о о о о о 1 о о о о о о о о 1 1/0 s о о о о о о о о о о о 1 S/C R/L о о о о 1 о 1 N OL F о о о о о 1 АОО о 1 8F АС ' о Зопuсь 1 Чmенuе 1 1 с 8 о о о о ACG Очuсmко курсора 8озбраm ~О= 1 уб~лuченuе, 1/0=0 уменьшенuе = 1 оmносumельнь11J скролuнг S/C= 1 скроллuнг, S/C=O nеgемещенuе курсора R/L= 1 cg uг бnрсбо, R/L=O сgбuг блебо OL=1 8 бum, OL=O 4 бuma N= 1 2 cmpoкu, N=O 1 сmроко F= 1 мaml;uцa 5х 1О, F=O маmрuца 5х7 8F= 1 ра oma па бнуmреннuм У Усmанобка не начальную uзмен~еmс~ режuмо gucnлes:1 Включен1Jе/бtjключенuе С - курсора, 8 - Перемещенuе ОЗУ не О курсора u Рис. прuем бнешнuх этого uнmерфеОсо nepegaчo Усmонобко этого nepegaчa Чmенuе npueм 00 RAM - agpeca, ер лага uлu npueм (•Сброс всех разрядов.•) procedure home; (•Перемещение курсора на исходную позицию.•) beg1n cont rol( 2); end, procedure l1ne1; (•Перемещение курсора на первую строку •) goннtjx после goннt:JX зoнs:1mocmu ОЗУ б uз ОЗУ OORAM бt:Jбog соgержuмого ОЗУ CGRAM ОЗУ гене~аmора сuмболоб ACG agpec CGRA АОО agpec OORAM, ogpec курсора АС счеmчuк gло ogpeco, uсnользуемЬ1О OORAM u CGRAM (•Ввод двоичных данных •) ( • EN =1, RS=O, R/W =О. •) ( • EN=O, RS=O, R/W=O. •) ( * EN=1, данные зафиксированы.•) begin cont rol( 1); end; после agpeca счеmчvко Зоnuсь l.IЛU 5.33. Набор инструкций procedure clear: курсора ббоgа/бt>боgа CGRAM-agpeca, Усmонобко uнсmрукцuО var i·1nteger; beg1n wr1te_data_port(p_address,command); wr1te_control_port(P_address,O+O+O); wr1te_control_port(P_address, 1+0+0); wr1te_control_port(P_address,O+O+O); delay(100); end, gucnлes:1, скроллuнг, uнсmрукцuям 8F=O - мuгоющего uзменqеmс~ Носmроока u goHHt)X (5~соро б nозuцuю, Чmенuе gоннt)х gucnлeo бозброm б начальную nозuцuю
l184 I 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ Нозноченuе DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDD 1 Vss 2 Vdd 3 4 Vo 5 б 7 8 9 10 11 12 13 14 c::::::::J +58 R/W RS ENA8LE 080 081 С3 С2 С1 01 02 082 083 03 04 084 085 ОЕJБ 087 05 06 07 08 GNO Koнmo.-mt) но эксnерuменmольноО плоте параллельного rюpmo Рис. 5.34. Схема с использованием растрового ЖК дисплея begin control(128), end procedure line2, (•Перемещение курсора на вторую строку begin control( 128+64 ), end, procedure data(ch char), (•Отображение символа на дисплее•) var i integer, •) RS конmакmоб READ/WRШ ЕNАВСЕ 080 081 082 083 084 085 086 087
5.9. УСТРОЙСТВА УПРАВЛЕНИЯ ДИСПЛЕЯМИ beg1n wr1te_data_port(p_address,command), wr1te_control_port(P_address,0+2+0), wrlte_cont rol_port ( Р _add ress, 1+2+0), wr1te_control_port(P_address,0+2+0), delay( 10); end; procedure in1t1al1zat1on, beg1n control(16+32); (•Установка control(16+32), (•Установка control(16+32), (•Установка (•Ввод двоичных данных •) ( • EN=1, RS=2, R/W=O •) ( • EN=O, RS=2, R/W=O •) ( • EN =1, данные зафиксированы •) функции, 8 функции, В бит данных, функции, В бит данных, бит данных, 2 стро~и, 2 строки, 2 строки, 5х7 точек •) 5х7 точек.•) 5х7 точек •) control(16+32+8+4), (•Установка функции, 8 бит данных, 2 строки, 5х10 точек •) cont rol(B+4+2+1), ( •В=бит управления, 4=включение разрядов, 2=включение курсора, 1=символ курсора мигает•) clear, control(4+2+0); (•Установка режима ввода, О=курсор без сдвига 4~бит управления, •) end, procedure test; (•Простая тестирующая программа •) var l integer; beg1n sen1.=· sen2·=· wri te( · Input the f1 rst sentence (max 16 char): ·), readln( sen1); wrlte( · Input the second seпtence (max 16 char) ·); readln(sen2); (•Отображение первой строки.•) 11ne1; for i:=1 to 16 do beg1n data(sen1[1]); (•Отображение второй строки.•) 11ne2; for i:=1 to 16 do beg1n data(sen2[1] ); delay(10); end, епd, begin centron1c_address; lnlt1al1zat1on; test, end 2=увеличение, 11ss 1
j 186 j 5. УПРАВЛЕНИЕ ВНЕШНИМИ УСТРОЙСТВАМИ 5.10. Устройства управления мускульными кабелями Мускульные кабели изготавливаются из специальных сплавов, которые при на­ греве выше определенного уровня способны изменять форму. Нагрев может быть обусловлен протеканием через кабель электрического тока. При изменении раз­ меров мускульные кабели, работая плавно и бесшумно, перемещают грузы весом в тысячи раз больше их собственного веса. Одним из наиболее распространенных материалов, используемых для изготов­ ления мускульных кабелей, является флексинол. Флексиноловые провода бывают разных диаметров: 25, 50, 100, 150 и 250 мкм. Рассмотрим кабель диаметром 100 мкм 150 Ом/м. Рекомендуемый ток, при котором матери­ ал еще не деформируется, равен 180 мА. Такой трос способен в течение длительно­ го времени удерживать груз весом 150 г без потери формы. Количество циклов сжа­ тия-растяжения достигает 30 в минуту. Кабель начинает деформироваться при температуре 68 °С, а при температуре 78 °С становится па 8% короче, чем в охлаж­ и линейным сопротивлением денном состоянии. Для управления кабелем допустимо использовать любые транзисторные или релейные устройства коммутации (см. рис. 5.2, 5.6 и 5.7). При настройке протека­ ющего через провод тока может потребоваться нагрузочный резистор, включен­ ный последовательно. На рис. 5.35 изображена схема шагового двигателя. Здесь мускульный кабель применяется для генерации вращательных движений под контролем компьюте­ ра. Схема управляется экспериментальной платой параллельного порта.
5.1 О. УСТРОЙСТВА УПРАВЛЕНИЯ МУСКУЛЬНЫМИ КАБЕЛЯМИ Меgн"О кобель Koнmoкmt:1 но эксnерuменmольноо nлome nороллельна20 nopmo Огронuчumельнt:tО peзucmap Меgн"О +58 кобель 01 GND Фuксоmор Перемещенuе Рt:1чог Точка Рис. 5.35. портом ПК anopt:1 Шаговый двигатель на мускульном кабеле, управляемый параллельным l 1a1 I
6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Глава посвящена описанию электронных приборов, которые предназначены для измерения аналоговых величин, таких как напряжение, температура, влажность и т.п. Дается информация о различных способах преобразования аналоговых вели­ чин в цифровую форму. Приводятся принципиальные электрические схемы и про­ граммы управления, способные превратить компьютер в измерительный комплекс. 6.1. Аналого-цифровые преобразователи Аналого-цифровые преобразователи (АЦП) формируют на выходе двоичный код, прямо пропорциональный входному напряжению. Это одно из основных устройств, позволяющее передавать аналоговые сигналы в компьютер. Существует три основ­ ных типа АЦП: параллельные, последовательного приближения и с двойным ин­ тегрированием. Параллельные АЦП имеют наибольшую скорость преобразования; у АЦП с двойным интегрированием максимальная точность преобразования, но они менее быстрые. В качестве компромисса между скоростью и точностью высту­ пают АЦП последовательного приближения. Один из основных параметров, влия­ ющих на точность преобразования, - это шаг квантования (Vlsb ), равный прира­ щению напряжения, которое необходимо для изменения кода в младшем разряде. Существует два типа интерфейса ввода/вывода между АЦП и внешними схемами: параллельный и последовательный. При параллельном интерфейсе выходные дан­ ные снимаются через параллельную шину, имеющую несколько линий данных, при последовательном данные считываются по одной линии. В обоих случаях необхо­ димы линии управления. б.1.1. АЦП с параллельным интерфейсом ввода/вывода В данном разделе описаны различные способы преобразования аналогового на­ пряжения в цифровую форму и представлены соответствующие микросхемы.
6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ l 189 I Параллельный АЦП САЗЗОб Принцип параллельного АЦП состоит в том, что входной сигнал сравнивается с опорными напряжениями (рис. 6.1). V1n Vref ;: с; '" '"3 I" О' о С" DBO DB2 1 о "Q_ -ов:о х "'" ш"' "' ~ О' о 081 ·~ ~ о I '~ О'" 0 х I :у "~ ш о <D 084 О' Q_ Е -085 R GND Рис. 6.1. Принцип построения шестиразрядного па­ раллельного АЦП Опорные напряжения формируются с помощью включенных последовательно резисторов, образующих делитель. Точность преобразования равна шагу кванто­ вания в середине диапазона и половине шага по краям. Напряжение, подаваемое на нижний компаратор, составляет 0,5Vlsb, на следующий компаратор - 1,5Vlsb. Ни один из компараторов не сработает, когда напряжение на входе равно нулю. Если уровень входного напряжения находится между фиксированными значени­ ями опорного напряжения, то срабатывает младший компаратор. Например, если значение входного напряжения находится между ся уровень 0,5Vlsb. 0,5Vlsb и 1,5Vl<>b, то выбирает­ Формируемый компараторами код преобразуется шифрато­ ром в параллельный двоичный код соответствующей разрядности. С увеличени­ ем разрядности АЦП экспоненциально растет количество компараторов: так, n-разрядный преобразователь должен содержать 211 компараторов. Микросхема САЗЗО6СЕ (Harris Semiconclнctor, RS648-652) имеет частоту пре­ образования 15 МГц, точность преобразования 6 бит. Она содержит 64 коl\шара­ тора, работает при напряжении питания от 3,0 до 7,5 В, потребляемая мощность равна 50 мВт (рис. 6.2). Преобразованный двоичный код снимается с выходов В1 - В6. Контакт 2 слу­ жит для индикации переполнения. Также имеется два разрешающих входа: СЕ2
l t 90 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Переполненuе Vss СЕ2 m разроg Фаза Vref+ D5L=O 080 D81 082 D5L=1 084 085 086 DВ3 DВ7 +58 СЕ2 12 Vdd 20 Vcc 51 52 2G 81 Фаза 1А1 1У1 82 tD о"' о"' <( u С1 о tЛ o....J ..,. 1А4 " 54 1У2 2У3 1У3 С2 2У2 08 01 84 NN 85 9 +Vref О ;;: 1А3 _о 53 2У4 1О -Vref 1У4 GND 10 J_ С1 2У1 GND мкФ Koнmaкmt:t на эксnерuменmольноа ..J.. nлome nороллелонога napma Рис. 6.2. Назначение выводов и схема с использованием АЦП САЗЗ06 (контакт 5) и СЕ1 (контакт 6). Если СЕ2 = 1и СЕ1 =О, то выход открыт для счи­ тывания данных, в противном случае выходы имеют большое сопротивление. Контакт 7- это тактовый вход, контакт 8 управляет последовательными опе­ рациями преобразования· если на нем высокий уровень, то по положительному фронту тактового импульса происходит преобразование. При прохождении отри­ цательного фронта трансформигованные данные загружаются в триггеры-защел­ ки компараторов. При низком уровне тюпового импульса шифратор превращает данные в параллельный двоичный код. При следующем положительном фронте данные загружаются в выходные триггеры и появляются на выходах микросхе­ мы. Этот же фронт инициирует новый цикл преобразования. Таким образом, на
6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ [!!!] выходе присутствуют данные, соответствующие предыдущему тактовому импуль­ су. - это входы опорного напряжения. Vrеf­ Vref+ подается напряжение от источника питания. ИС, приведенная на рис. 6.2, соединена с экспериментальной платой парал­ лельного порта. Данная схема использует буфер 74LS241, который позволяет счи­ тывать шестиразрядный двоичный код с помощью четырех линий. Контакт С 1 Vref- (контакт 10) и Vref+ (контакт 9) соединяется с «землей~,., а на экспериментальной платы соединен с тактовым входом микросхемы САЗ306. Для считывания предыдущего значения и для запуска нового преобразования на кон­ такт С1 необходимо подать положительный импульс; при этом на выходе появит­ ся ранее преобразованное значение. Микросхема 74LS241 делит шесть бит дан­ ных на две части: два старших и четыре младших бита. Считыванием информации в компьютер управляет линия выбора данных (DSL), которая подключена к контакту С2. Текст программы САЗЗО6.РАS Ргоgгаm сепtгопiс_СА3306; (•Программа управления АЦП СА3306. АЦП соединен с экспериментальной платой параллельного порта.•) uses сгt, gгaph; vаг byte_high,byte_low, tгuebyte:byte; TPLlB1 {$1 c:\ioexp\tplib1.pas} {$1 c:\ioexp\tplib2.pas} (•Подключение двух библиотек: и TPLlB2.•) fuпctioп voltage:гeal; (•Считывание входного аналогового напряжения.•) (•Процедуры wгite_coпtгol_poгt и гead_status_poгt находятся в библиотеке TPLlB1.•) begiп (•Начало преобразования.•) wгite_coпtгol_poгt(P_addгess,O); delay( 1); (•CLOCK=O, SEL=O.•) (•Кратковременная задержка.•) wгite_coпtгol_poгt(P_addгess, 1); ( •CLOCK=1, SEL=O, на шине данных, предыдущие данные появляются и начинается новый цикл преобразования.•) wгite_coпt гоl_рогt( Р _add гess, О); ( •CLOCK=O, SEL=O. •) (•Считывание результатов преобразования.•) byte_low:=гead_status_poгt(P_addгess); (•SEL=O, считывается младший байт.•) wгite_coпt гоl_рогt( Р _add гess, 2); byte_high: =гead_status_poгt( Р _add гess); ( •CLOCK=O, SEL=1. •) ( •SEL=1, считывается tгuebyte:=byte_high•16+byte_low; (•Младший и старший байты объединяются.•) voltage:=tгuebyte/63•5.00; Опорное напряжение равно напряжению питания и составляет В6, 6 бит, максимальное значение 63. •) епd; (•Главная программа.•) begiп сlгsсг; Ceпtгoпic_addгess; •) (•Преобразование двоичного кода в значение напряжения. ( •В1 - старший байт. (•Получение адреса параллельного порта.•) 5 В.•)
l 192 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН repeat gotoxy(20, 10); wr1te('Voltage at the input: · ,voltage 5:2, '[V]'); delay(1000); unt1l keypressed; end. Экспериментальная схема упрощается, если параллельный порт двунаправлен­ ный. Шесть бит данных могут быть считаны компьютером за один прием, что по­ вышает скорость преобразования. Описанная схема позволяет получить скорость преобразования порядка нескольких сотен килогерц из-за слишком малой скорос­ ти передач.и данных между микросхемой СА3306 и ПК. Для увеличения скорости преобразования можно временно записывать информацию с выходов СА3306 в бу­ ферную память, а при ее заполнении данные будут считываться в компьютер. АЦП последовательного приближения ZN449 АЦП последовательного приближения содержит ЦАП, компаратор и регистр по­ следовательного приближения (рис. 6.3). Перед началом преобразования в разря­ ды этого регистра записываются нули, что обеспечивает формирование нулевого напряжения на выходе ЦАП. Затем каждый разряд ЦАП, начиная со старшего, последовательно устанавливается в единицу. Одновременно выходное напряже­ ние с ЦАП подается на компаратор и сравнивается с измеряемым. Если выходное напряжение ЦАП больше, то значение проверяемого разряда возвращается в ноль, если меньше, то не изменяется. При такой проверке каждого разряда производит­ ся полный цикл преобразования. Для n-разрядного преобразователя требуется n тактов на одно преобразование. Микросхемы ZN449 или ZN448 (GEC Plessey, RS301-729) - зто восьмираз­ 6.4). Минимальное время рядные АЦП последовательного приближения (рис. Вхоgное Такm1::1 Pe2ucmp nослеgоба mел ьного Cmopm npuблuжeнus:i Cocmas:iнue Koмnapomop DBO .... DBl 082 DВ3 DB4 DBS DВб DВ7 8-розроgнt>О UАП Hanps:iжeнue от UАП Рис. 6.3. 1 Восьмиразрядный АЦП последовательного приближения
l193 j 6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ 52 Rl 390 -о 53 54 D5L С2 Cl + Cl С2 4,7мкФ Q Конmокmе1 U=SB, om uнберmоро ноnроженuо (см Рис. 6.4. 2лобу 7660 2) GND на эксnерuменmол ьноО плоте nороллельного порто Назначение выводов и экспериментальная схема для АЦП ZN449 преобразования равно 9 мкс. Имеется встроенный тактовый генератор и источ­ ник опорного напряжения 2,5 В. Если на контакт 4 (преобразование, CONVERT) подается сигнал низкого уров­ ня, АЦП начинает преобразование. При этом на контакте 1 (занят, BUSY) также устанавливается сигнал низкого уровня. Когда процесс заканчивается, выход BUSY сигнализирует об этом высоким уровнем. RD (контакт 2) - это вход разрешения чтения. Если на него подается низкий уровень, то на выходах такты 18-11) DBO - DB7 (кон­ присутствует код преобразованного напряжения, в противном слу­ чае они имеют высокое сопротивление. Для запуска внутреннего тактового генератора конденсатор С2 необходимо подсоединить к контактам 3 и 9. Максимальная тактовая частота достигается при
l194 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН емкости конденсатора контакт 5 например, при Контакт Vref out. 100 пФ. Напряжение питания от 8- -5 В сопротивление резистора равно В подается на -30 82 кОм. Для правильной работы cxel\IЫ необходимы резистор Vref out соединен с входом ряемое входное напряжение подается на контакт 2,5 до это выход встроенного источника опорного напряжения щий конденсатор С1. Выход входе -3 через резистор, значение которого зависит от напряжения питания: 6 В, на выходе преобразователя будет число Vref in R1 (контакт через резистор 255 2,5 В и развязываю­ 4 7). Изме­ кОм. Если на (десятичное). Десятичные значения для остальных напряжений вычисляются по следующей формуле: д есятичное число = Входное напряжение , 25 255 . Пример использования микросхемы совместно с экспериментальной платой параллельного порта приведен на рис. 6.4. Вход CONVERT соединен с контактом 74LS241 - с контактом С2. Данные считываются в ком­ пьютер через линии S 1 - S4. Напряжение -5 В генерируется схемой преобразова­ теля, представленного в главе 2. Программа управления написана на языке ТР6. С1, линия выбора данных Текст программы Program ZN449.PAS ceпtroпic_ZN449, (•Программа управления микросхемой АЦП ZN449 с помощью экспериментальной платы параллельного порта.•) uses crt,gгaph; var byte_high,byte_low, truebyte:byte; (•Подключение двух библиотек: TPLlB1 и TPLlB2.•) {$1 c:\1oexp\TPLlB1.pas} {$1 c:\ioexp\TPLlB2.pas} fuпctioп voltage:real; (•Считывание входного аналогового напряжения.•) (•Процедуры wr1te_coпtrol_poгt и read_status_port находятся в библиотеке TPLlB1.•) begiп (•Начало преобразования.•) write_coпtrol_port(P_address,O); delay( 1); (•CONVERSlON=O, SEL=O.•) (•Кратковременная задержка: ожидание окончания преобразования.•) wr1te_control_port(P_address,1); ( •CONVERSION=1, SEL=O, окончание преобразования.•) delay( 1); (•Кратковременная задержка.•) (•Считывание результатов преобразования.•) byte_low:=read_status_port(P_address); write_coпt rol_po rt( Р_ add ress, 3); byte_high:=read_status_port(P_address); truebyte:=byte_high•16+byte_low; voltage:=truebyte/?55•2 50; (•SEL=O, считывается младший ( •CONVERSION=1, SEL=1. •) (•SEL=1, считывается старший байт•) байт•) (•Младший и старший байты объединяются.•) (•Преобразование двоичного кода в значение напряжения. Опорное напряжение равно епd; 2,5 В.•)
6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ l195 I (•Главная программа.•) Ьеg1п сlгsсг; Centгon1c_addгess; (•Получение адреса параллельного порта.•) гереаt gotoxy( 20, 1О), delay(1000); unt1l keypгessed; end. wг1 te( Voltage at the lnput: ·, voltage: 5. 2, · [V] ·); 12-разрядный АЦП с двойным интегрированием ICL7109 Принцип действия АЦП с двойным интегрированием поясняется на рис. 6.5. Дан­ ный метод преобразования использует интегратор и опорное напряжение, поляр­ ность которого противоположна измеряемому. В такие АЦП, как правило, встро­ ены формирователи опорного напряжения, однако для прецизионных измерений необходимо применять внешние высококачественные источники опорного напря­ жения. Преобразование происходит в два этапа. На первом этапе ключ разомкнут. В течение фиксированного промежутка времени ное напряжение, затем ключ S 1 размыкается, а S2 S 1 замкнут, а S2 Tint интегрируется вход­ замыкается. Начинается второй этап преобразования: на вход интегратора подается опорное напряжение противопо­ ложной полярности. Конденсатор интегратора разряжается со скоростью, определя­ емой значением опорного напряжения. Когда выходное напряжение интегратора ста­ новится равным нулю, измеряется период времени Tdeint. Зная два периода времени, величину входного напряжения можно вычислить по следующей формуле: Входное напряжение = Vref I.dcintт· • • шt Преимущество АЦП с двойным интегрированием состоит в том, что погреш­ ность преобразования не зависит от погрешности элементов, входящих в инте­ грирующую цепь (резистор и конденсатор), так как их значения не изменяются в течение периода преобразования. Важно лишь, чтобы постоянной оставалась тактовая частота, которая определяет измеряемые промежутки времени. Данный метод обеспечивает высокую помехозащищенность. Случайный шум с помощью автоматического шумоподавления можно свести к нулю еще на этапе ин­ тегрирования сигнала. Интерференционные помехи с фиксированными частотами ТакmЬ' Вхоgное наnроженuе 51 v, n----O·'c~~--C::J--+J Начало nреобразобанuR > - - - - 1 Уnрабленuе ГS2 1 Опорное наnрRженuе Рис. 6.5. CocmoRнue Инmеграmор Koмnapamop Счетчuк ~ Vref Принцип действия АЦП с двойным интегрировонием
l 196 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН устраняются при правильном подборе периода интегрирования. Чаще всего в подобных АЦП период интегрирования подбирается таким образом, чтобы устранить помехи напряжения сети 50/60 Гц. ICL7109ACPL (Telcom, RS207-0203) - это маломощный 12-разряд­ ный АЦП с двойным интегрированием (рис. 6.6). Входы REF IN+ (контакт 36) и REF IN- (контакт 39) соединены с источниками опорного напряжения. Микро­ Микросхема схема имеет встроенный источник опорного напряжения, величина которого на 2,8 В ниже напряжения на входе V+; оно снимается с выхода REF OUT (контакт 29). Входы IN HI (контакт 35) и IN LO (контакт 34) предназначены для подачи входного сигнала. REF STATUS REF Cref Cmapwuo Оnорное 1мкФ REf наnр~женuе + баоm (б"сокоомн"О) Bxog (нuзкоомн"О) 89 сом С nt ----!FмкФ ICL7109 l R nt 86 Mлagwuu баоm RfF 85 оuт -v 200к0м gм nолноо WKOЛCI 20к0м gло полно о LJKOЛCI 4 0968 409,68 -58 1ок REF+ +58 8UF osc GND OSC OUT 2 3 , > - - - - - - - - - - - Лuнuu уnробленu~ бхоgамu MODE = 1 = О - МООЕ Рис. 6.6. режuм бзаuмоgеuсmбоо nораллельне1О рсжuм Назначение выводов и типовое включение микросхемы ICL7 l 09 Аналоговая секция данной микросхемы требует наличия четырех внешних эле­ ментов: опорного конденсатора нуля Caz, Cref, конденсатора автоматического определения интегрирующего конденсатора Ciпt и интегрирующего резистора Riпt, значения которых необходимо выбирать в соответствии с рекомендациями изго­ товителя. Встроенный генератор работает на частоте изводи~ ь 7 ,5 преобразований в секунду. 3,5795 МГц и позволяет про­
6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ Если контакт 26 (RUN/HOLD) l197 I не используется (внутрисхемно на него пода­ ется высокий уровень), то преобразования осуществляются непрерывно. Если на него подать сигнал низкого уровня, преобразование будет производиться только один раз. Его результат появляется на OR и POL. В1 - 14 выходах с тремя состояниями: В1 В12 служат для вывода измененных данных, вышение входного сигнала, а POL - - В12, OR показывает пре­ его полярность. Микросхема имеет два режима выгрузки данных: параллельный режим и ре­ жим взаимодействия, которые выбираются с помощью входа При MODE =О реализуется параллельный режим, а при MODE (контакт 21). MODE = 1 - режим вза­ имодействия. В первом случае данные считываются с выходов под управлением инвертированных входов на вход CE/LOAD CE/LOAD, LBEN кий уровень, то на выходах В1 - - В12, OR и HBEN. Для открытия микросхемы POL. LBEN низ­ В8 появляются данные, а если высокий, то выхо­ ды имеют высокое сопротивление. Вход В9 и необходимо подать низкий уровень. Если на входе HBEN аналогично управляет выходами В процессе преобразования на выход STATUS (контакт 2) подается высокий уровень. После того как преобразование закончилось, двоич­ ный код загружается в выходные буферы, и выход STATU S сигнализирует об этом низким уровнем. В режиме взаимодействия микросхему соединить с UART6402 ICL7109 можно (подробное описание этого режима приведено в докумен­ тации производителя). Когда ИС ICL7109 работает в режиме параллельной выгрузки данных, ее под­ ключают к компьютеру через микросхему 8255PPI. Экспериментальная схема на 4051, соединенная с экспериментальной платой парал­ изображена на рис. 6.7. Программа управления написана на язы­ баэе двух мультиплексоров лельного порта, ке ТР6. Текст программы 7109PARA.PAS Program ICL_parallel_centron1c (•Программа управления АЦП ICL7109 •) (•Микросхема ICL7109 работает в режиме параллельной выгрузки данных Мультиплексоры используются для передачи данных в компьютер•) uses dos crt, var dummy real, (•Подключение библиотеки {$1 с TPLIB1 •) \1oexp\TPLIB1 PAS} funct1on read_voltage real, (•Получение данных из 7109 и var low_byte,h1gh_byte,1 byte, polar1ty integer, beg1n low_byte =О, h1gh_byte =О, for l =1 to 8 do вычисление значения входного напряжения •)
j 198 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН RV2 SOK Конmакm~ на эксперuменmальнаО nлame nара.rлельного nopmo АналогобtiО бхо0-9 ---{35 А IN HI С1 в С2 с -Q С3 САР+ САР- S1 DD1 ICL7109 S2 f- :::> о u (/) о 3 Рис. хт 5796МГц 1 > ~----<-58 6.7. Схема АЦП на микросхеме ICL7109 Ьеg1п 1-1), (·Выбор определенного бита выхода данных 7109 •) delay( 1), low_byte =low_byte+b1t_we1ght(1)•(read_status_port(P_address) and 1) h1gh_byte =h1gh_byte+b1t_we1ght(1)•rouпd((read_status_port(P_address) and 2)/2) wr1te_coпtrol_port(P_address, end, lf h1gh_byte апd 32=32 theп polar1ty =1 else polar1ty =-1 (•Определение полярности•) h1gh_byte =h1gh_byte апd ( 1+2+4+8), (•Содержит четыре старших бита данных АЦП *)
6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ l t 99 j read_voltage:=(high_byte•256+low_byte)/2049•2•polarity; if h1gh_byte and 16=16 then read_voltage:=999; end; (•Главная программа. •) begin centronic_address; repeat gotoxy(20, 10); write('Measured input voltage [V] delay( 9000); unt1l keypressed; end. read_voltage: 6:4); Интегральные цифровые вольтметры Микросхема /CL7135 ICL7135CPI-2 (Maxim, RS427-483) - прецизионный АЦП сдвой­ ±1 на 20000 импульсов тактирующего сигна­ ным интегрированием и точностью ла (рис. 6.8). Эта микросхема идеально подходит для использования в цифровых вольтметрах: напряжение измеряется с точностью до пяти десятичных разрядов. ICL7135 снабжена системой автоматического определения нулевого уровня и по­ лярности, имеет мультиплексированные двоичные выходы. Для построения циф­ рового вольтметра ее достаточно подключить к светодиодному дисплею. Может также соединяться с компьютером. Напряжение питания ±5 В. Ток потребления от положительной и отрицательной шин равен соответственно 1,1 и 0,8 мА. Аналоговая секция устройства требует наличия таких внешних элементов, как опорный конденсатор Cref, конденсатор автоматического определения нуля -58 1,ОВ Нuжнuо порог ВерхнuО порог (онологабt>О) "Земл~" буq>еро Cref 1мкФ Анологобt>О бхоg САР- Bxog САР+ LO D5 81 Рис. (MSB) 6.8. Назначение выводов и типовое включение микросхемы ICL7 l 35 Caz,
l200 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН интегрирующий конденсатор Cint и резистор Riпt, номиналы которых выбира­ ются в зависимости от конкретного приложения и в соответствии с технической документацией изготовителя. Последовательность вывода данных приведена на рис. пять разрядных формирователей (выходы DS - D1) 6.9. Микросхема имеет и шину вывода каждого раз­ ряда в двоично-десятичном коде (выходы В8, В4, В2, В1). Вывод измеренного значения напряжения осуществляется поразрядно, начиная со старшего. На вы­ ходах разрядных формирователей (от DS) последовательно формируется поло­ жительный импульс, его значение синхронно поступает на шину вывода разряда. Выход STROBE (контакт 26) может использоваться для последовательной пере­ дачи измеренного напряжения на внешние устройства. Когда на входе RUN/HOLD АЦП работает с интервалами в ·(контакт 40002 25) удерживается высокий уровень, такта между циклами измерений. Если на этот вход подать низкий уровень, то преобразователь завершит текущий цикл измерения и остановится до тех пор, пока на нем удерживается низкий уровень. Кратковременный положительный импульс (менее 300 нс) инициирует новый измерительный цикл. Инmе2ральнЬ'О Конец Bt>xog uuкла uзмеренu>=~ 1 Абmама­ muческая коррек­ muрабка нулs:~, 10001 Инmе2рu-1 Инmе2рuробанuе робанuе --+---------1f- опарного сu2нала напряженus:~ 10000 20001 mакmоб maкm, моксuмум такт Лuнш:1 >------------1;- BUSY Полнь~о uuкл uзмеренuя, 40002 moк'lla 200 201 На б1::1хаgах неm mакmоб maкm uнqюрмацuu 05 04 03 02 01 }Jлuтельносmь uмпульса 0,5 ------11---------+.--------- maкmo ;- Сmроб-uмпульс ~ 1О1 Рис. 6.9. Временные диогроммы АЦП ICL7 l 35 maкm после окончанuя uзмеренuя
6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ Выход BUSY (контакт 21) l201 j переходит в единичное состояние с началом инте­ грирования сигнала и остается в нем, пока напряжение на конденсаторе инте­ гратора не станет равным нулю. Этот выход может использоваться для передачи информации об измеренном напряжении по одному проводу: для вычисления напряжения необходимо измерить количество тактовых импульсов за время, в течение которого 10001 BUSY = 1. Затем из полученного значения нужно вычесть для получения количества тактовых импульсов Ndeint, в течение которых интегрировалось опорное напряжение. После этого входное напряжение можно вычислить по следующей формуле: . 1000 Vш = Ndcint Vrcf. Работу микросхемы иллюстрируют две программы. Для функционирования первой из них (она предназначена для подсчета количества тактовых импульсов в течение времени, когда BUSY = 1) ICL7135 подключается к ПК посредством двух линий, также используется экспериментальная плата параллельного порта, где вход BUSY (контакт 21) и тактовый вход CLOCK IN (контакт 22) соединены S1 и S2. АЦП настроен на постоянную работу, тактовая частота не превышает 50 Гц. с контактами Текст программы ICL7135S.PAS Program ICL7135_single_w1re; uses dos: crt; {$1 c:\ioexp\tpl1b1.pas} funct1on count_clock:1nteger: var clock: intege r; clock_status_old.value:byte; beg1n clock:=O; clock_status_old:=16; repeat until port(P_address+1) and 8=0; repeat until port(P_address+1) and 8=8; repeat value:=port(p_address+1) and 16; if (clock_status_old=16) and (value=O) then clock:=clock+1; clock_status_old:=value; unt1l port(P_address+1) and 8=0; count_clock:=clock-10001; end; (•Главна~ программа.•) beg1n centronic_address; repeat wr1 te ln (cou nt_ clock); de lay( 1ООО); unt1l keypressed; end.
\ 202 \ 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Вторая программа показывает, как микросхема ICL7135 соединяется с компью­ В4, POL, OVER, UNDER и DS подключены к входам буферного регистра передатчика (TBRO - TBR7) UART6402. Вход RUN/HOLD соединен с выходом RBRO буферного регистра приемника. Во время работы последовательные данные передаются из компьютера в UART6402, что переводит RBRO из нуля в единицу и затем снова в нуль. По положительному фронту этого сигнала микросхема ICL7135 начинает цикл преобразования, после чего пять стробирующих импульсов с выхода STRO ВЕ инициируют передачу дан­ ных UART. Компьютер за пять раз считывает пять разрядов преобразованных дан­ ных. Тактовая частота АЦП равна 153,6 кГц, она вырабатывается кварцевым гене­ ратором CD4060 (см. главу 2). UART должен передать данные за 1,3 мс. Если UART работает на скорости 9600 бод, с 8 битами данных, одним стоповым битом и без проверки на четность, то время передачи будет порядка 1 мс. Следовательно, такая настройка UART корректна. тером через UART6402 (рис. 6.10). Выходы В1 - Такmuрующuо сu2нал 153,бкГц Скарасмь 9600 боg DD1 ICL7135 Нuжнuо Общuо (LS8) 82 (анала2аб<>О) 84 (MS8) 81:1xog буq>ера (MSD) 8xog REF POL САР+ Ве хнuо па LO HI D5 81 Рис. 6.1 О. (MS8) Схема соединения АЦП ICL? 135 с компьютером через UART6402 DD2 CDP6402
6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ Текст программы 7135 l203 1 на VВЗ DLL, WLIB1.DLL. ·Объявляемые функции: RS232(), 81 t_weight(), Wri te_1пterrupt_eпaЬle(), · Read_iпter rupt_1deпti ficat iоп (), wr1 te_data_format(), wri te_ t raпsmlt_buffer(), wr1 te_modem_status(), wri te_receive_buffer(), read_modem_status(). Declare Fuпct1oп RS232 Llb ·c:\ioexp\wlib.dll' (ByVal Х As Iпteger) As Integer Declare Fuпctioп Bit_weight L1b ·c:\ioexp\wlib.dll' (ByVal Х As Iпteger) As Iпteger Declare Fuпctioп Write_1пterrupt_eпaЫe Lib :c:\ioexp\wl1b.dll' (ByVal address As Iпtegeг, ByVal datax As Iпteger) As Iпteger Declare Fuпct1on Read_interrupt_identification Lib ·c:\ioexp\wlib.dll' (ByVal address As Iпteger) As Iпteger Declare Fuпctioп Write_data_format L1b 'c:\ioexp\wlib.dll' (ByVal address As Iпteger, ByVal baud As Iпteger, ByVal parity As Iпteger, ByVal Data_Ыt As Iпteger, ByVal Stop_Ыt As r'пteger) As Iпteger Declare Fuпct1oп Write_traпsm1t_buffer L1b ·c:\ioexp\wlib.dll' (ByVal address As Iпtegeг, ByVal datax As Integer) As Iпteger Declare Fuпctioп Write_modem_status Lib ·c:\ioexp\wlib.dll' (ByVal address As Iпteger, ByVal RTS As Iпteger, ByVal DTR As Iпteger) As Iпteger Declare Funct1oп Read_rece1ve_buffer L1b ·c:\ioexp\wlib.dll' (ByVal address As Iпteger) As Iпtege r Declare Fuпction Read_modem_status Lib 'c:\ioexp\wlib.dll' (ByVal address As Iпteger, ByVal Х As Iпteger) As Iпteger 'Функции объявляются в Sub Commaпd1_click() DoEveпts dummy=Read_receive_buffer(RS232_address) t1medelay dummy=Write_traпsmit_buffer(RS232_address, 128) timedelay dummy=Write_traпsm1t_buffer(RS232_address,0) For i=1 То 5 Do While (Read_iпterrupt_ideпt1ficatioп(RS232_address) and 1)=1 Loop digit(6-i)=Read_receive_buffer(RS232)_address) Next i couпt_voltage=O For 1=1 То 5 count_voltage=couпt_voltage+10"(i-1)•(dig1t(1) апd 15) Next i LabelЗ.Capt1oп=couпt_voltage Епd Sub Sub Commaпd1_MouseMove(Buttoп As Iпteger, Shift As Label7.Caption='Read data from 7135-UART' Епd Sub Sub Iпteger, Х As Siпgle, У CommaпdЗ_Cl1ck() ·настройка выбранного последовательного порта. baud_rate=Val(text2(0).Text) parity=Val(text2(1).Text) ·настройка скорости. data_b1t_leпgth=Val(text2(2).Text) ·настройка длины блока данных. ·настройка проверки на четность. As Siпgle)
!204 ! 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН stop_b1t_length=Val(text2(3).Text) ·настройка длины стоповой посылки. dummy=wгite_data_foгmat(RS232_addгess,baud_гate,paгity,data_blt_length,stop_bit_length) ·запись конфигурации в регистр формата данных. End Sub Sub CommandЗ_MouseMove(Buttoп As Iпtegeг, Shift As Iпtegeг, Label7.Caption="Change the configuгation of RS232 рогt" End Sub Х As Single, У As Single) Х As Single, У As Single) Sub Command4_Click() End End Sub Sub Command4_MouseMove(Button As Integeг, Shift As Label7.Captlon="Ouit the ргоgгаm" End Sub Sub Integeг, Commaпd5_Click() ·выбор другого порта. & "RS232 poгts (COMs) аге installed on уоuг РС. Тhе1г base ·· & Foгmat$(RS232(1), "###") & ·· "& Foгmat$(RS232(2), "###") & ·· "& Foгmat$(RS232(3), "###") & ·· "& Format$(RS232(4), "###") & -oecimal",48, "RS232 poгts (СОМ) on your computeг") ·отображение информации о последовательном порте. RS232_numbeг=Val(Input8ox$("Input 1,2,З or 4 to select RS232 рогt (СОМ) fог the Mini-Lab Data Logger/Controller", "Select СОМ ports")) ·выбор последовательного порта. dummy=MsgBox(Stг(RS232(0)) addгesses аге RS232_addгess=RS232(RS232_number) Label2.Caption="Selected ·получение адреса выбранного порта. СОМ рогt:" &Format(RS232_numbeг) ·отображение информации ·о выбранном порте. Label4.Captlon="Base address of End Sub СОМ:" &Foгmat(RS232_addгess) Sub Command5_MouseMove(Button As Integer, Sh1ft As Integer, Label7.Capt1on="Change RS232 рогt numbeг" End Sub Х As Single, У As Single) Sub Form_Load() Fог i=O То 11 status(i)=O Next i & "RS232 poгts (COMs) аге installed on уоuг РС. Their base ·· & Format$(RS232(1 ), "###") & ·· "& Foгmat$(RS232(2), "###") & ·· "& Foгmat$(RS232(3), "###") & ·· "& Forniat$(RS232(4), "###") & -oecimal",48, "RS232 ports (СОМ) on dummy=MsgBox(Stг(RS232(0)) addгesses аге уоuг computeг") RS232_numbeг=Val(InputBox$("Input Loggeг/Contгoller", -select 1,2,3 ог 4 to select RS232 СОМ poгts")) RS232_address=RS232(RS232_number) Label2.Caption="Selected СОМ рогt:" &Foгmat(RS232_number) Label4.Caption="Base address of СОМ:" & Format(RS232_address) baud_rate=96 paгity=O data_bit_length=8 stop_bit_length=1 text2(0).Text=Foгmat$(baud_rate) text2(1).Text=Foгmat$(paгity) рогt (СОМ) fог the M1ni-Lab Data
6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ l2os j text2(2).Text=Format$(data_b1t_length) text2(3) Text=Format$(stop_b1t_length) dummy=wr1te_data_format(RS232_address,baud_rate,par1ty,data_bit_length,stop_b1t_length) 1) 'Настройка прерывания. Епd Sub dummy=Wr1te_1nterrupt_enaЫe(RS232_address, Sub LabelЗ MouseMove(Button As Sh1ft As Integer, Iпteger, Х As S1пgle, У As S1ngle) 'Отображение принятых последовательных данных. Label7.Capt1on="Value of the End Sub seг1al input data· Sub Label6.MouseMove(1ndex As Integer, Button As Iпteger, Shlft As Integer, S1ngle) Select Case iпdex Case О Label7 Capt1on= Baud гаtе=115200, 19200, 9600, 2400 etc." Case 1 Label7.Capt1oп="O=no parlty, 1=0dd раг1tу, З=Еvеп раг1tу" Case 2 Label7.Capt1on="Input 5,6,7 ог 8 to select the data b1t length" Case 3 Label? Capt1on='Input 1 ог 2 to select Stop b1t" End Select End Sub Х As S1ngle, У As Sub Text2 Change(1ndex As Integer) Select Case index Case О: Case 1. Case 2: Case 3. End Select End Sub Sub t1medelay() Fог i=1 То 100 l=l Next l End Sub 6.1.2. АЦП с последовательным интерфейсом ввода/вывода В данном разделе приводится описание микросхем АЦП, реализующих последо­ вательный способ вывода оцифрованного напряжения. Восьмиразрядный АЦП последовательного приближения ТLС548 Микросхема TLC548CPjТLC549CP (Texas Instruments, RS200-6757) - это восьми­ 6.11). Он снабжен встроен­ ной схемой выборки и хранения, тактовым генератором на 4 МГц и последователь­ ным интерфейсом ввода/вывода. Микросхема TJ...C548 имеет частоту дискретизации 45500, а TLC549 - 40000 Гц. Они взаимозаменяемы и аппаратно совместимы с АЦП TLC1540, который имеет точность 10 разрядов. разрядный АЦП последовательного прибл,ижения (рис.
j 206 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Аналаеаб1:10 бхоg gаннь~х REF+ t 8-paзpogнt>u REF- 3 Аналогабь~о бхаg ЦАП - - Peeucmp храненuе Вt>барко u бl-jxogн1;1x 1 t _J 1 ВнуmреннuО mокmобь~О Ycmpaoc:mбa ~~ уnробленu1=1 генератор cs такmuрующuо сuенал Рис. 6.11. Входы $ D Q "'Ес:0 " g_ А I ~хЕ~ 8~ ~ g- 1--(6 - С.. I - О &- Bt>xag gаннь~х "' о О' о О'" Q) ~ Q_ l) а с с 1 Назначение выводов и внутренняя блок-схема микросхемы Vcc - gаннь~х (контакт 8) п GND (контакт 4) TLC548 соединены с положительным и отри­ цательным проводами источника питания. Напряжение питания может изменять­ ся от 3 до 6 В, потребляемый ток равен 1,9 мА. На входы REF+ и REF- (контакты 1 и 3) подается опорное напряжение. Входы REF- и GND часто соединяются. Последовательный интерфейс состоит из двух ТТЛ совместимых входных линий, входа тактового сиrnала (контакт 7), входа выбора микросхемы нии вывода данных (контакт 6), (CS, контакт 5) и ли­ 6.12). которая имеет три состояния (рис. Если на вход выбора микросхемы CS подан сигнал высокого уровня, то линия вывода данных имеет высокое сопротивление и тактовый вход закрывается. При подаче на вход CS низкого уровня начинается цикл преобразования, а старший разряд предыдущего преобразования де (контакт (DB7) автоматически появляется на выхо­ 6). Отрицательные фронты первых четырех тактовых импульсов последовательно загружают разряды (DB6, DBS, DB4 и DВЗ) предыдущего преобразования на выход данных. Встроенная схема выборки и хранения начинает дискретизацию после четырех отрицательных фронтов тактовых импульсов. При прохождении еще грех отрицательных фронтов тактовых импульсов на выходе мпкросхемы последовательно появляются оставшиеся разряды DB1 и DBO) предыдущего преобразования. (DB2,
6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ Начала храненuR Начала 2 Токmь~ -;' 3 /, ~ lдаступ_.,. 1 ~ бr:>баркu в 6 7 В тактаб.._Дастуn (17мкс) С _.,. ..._ 6 7 Вr:>бСарка 8 _.,. ~1-----~ Ст баоm Br:>xag 36 1 1 ч Безразлuчное ",7;2: :' :"":· ' ..._ Вr:>барка _.,. l207 I Мл бoum Ст бoJm --;' gаннr:>х Результат npegr:>gyщe2a nреабразобанuо А Рис. 6.12. Результат текущего nреабразабанuо Временные диаграммы работы АЦП В TLC548/549 Отрицательный фронт последнего (восьмого) тактового импульса завершает процесс выборки и инициирует процесс хранения, который длится в течение че­ тырех внутренних тактовых импульсов, после чего за последующие 32 тактовых импульса происходит преобразование. Полный процесс трансформации занима­ ет внутренних тактовых импульсов. Во время этого процесса вход 36 CS должен иметь высокий уровень или тактовый вход должен оставаться в нулевом состоя­ нии по крайней мере на протяжении 36 внутренних тактов. В принципе во время операций преобразования допускается удерживание входа CS на низком уровне, но в этом случае необходимо предпринять специальные меры для предотвраще­ ния шума на тактовом входе, поскольку шум может вызвать потерю синхрониза­ ции между устройством и внешней схемой сопряжения. Если на вход CS подан высокий уровень, его следует удерживать до конца преобразования. Один отри­ цательный фронт по этому входу способен сбросить микросхему и прервать неза­ вершенный цикл преобразования. Схема, иллюстрирующая работу АЦП TLC548 совместно с экспериментальной 6.13. Опорное напряжение 2,5 В опорного напряжения TLE2425. Тактирующий платой параллельного порта, приведена на рис. подается на АЦП от источника вход и вход CS соединены с контактами С1 и С2 на экспериментальной плате. Преобразованные данные подаются на контакт Текст программы Pгogram TLC548.PAS на S1. ТРб TLC548, (*Программа управления АЦП с последовательным интерфейсом платой параллельного порта (•Тактовый вход соединен с С1, uses dos,crt, vаг 1 {$I integer, с \1oexp\tpl1b1 pas} АЦП соединен с экспериментальной *) CS - с С'2, выход данных - с 51 •)
l 2os 1 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН -----<-о С2 С2 1-----t-----t--0 Анологобь~о s1 бхоg Конmакmь~ 1 Рис. 6.13. АЦП на эксnерuменmальноО nлame nороллельно20 nopma TLC548 - ------ - ---- -------------- - - - - - - - - - - - - - - - - - - --------fuпct1oп АD_сопvегtег real; (•Процедура аналого-цифрового преобразования.•) vаг dаtа:аггау[1 .. 8] of byte; 11,lJ,addx·byte; Ьеg1п (•Два считывания для получения имеющегося значения результата преобразования.•) fог iJ :=1 to 2 do Ьеg1п (•CS=O для начала преобразования.•) wгite_data_poгt(P_addгess,0+2); wгite_data_poгt(P_addгess,O+O); fог (•Clock=O, CS=1 •) (•Clock=O, CS=O. •) i1·=1 to 8 do Ьеg1п (·Считывание предыдущего результата data[1i]:=гead_status_poгt(P_addгess) апd wгlte_data_poгt(P_address,O+O); write_data_port(P _address, 1+0): write_data_port (Р _add ress, О+О); 1; *) (•Считывание цифры.•) (•Clock=O, CS=O •) ( •Clock=1, CS=O. *) ( •Clock=O, CS=O. *) епd; епd, (•Вычисление значения входного напряжения. Опорное напряжение равно 2,5 В.•) AD_Coпveгteг·=(128•data[1]+64•data[2]+32•data[3]+16•data[4]+8•data[5]+4•data[6]+2•data[7]+1•data[8])• 2. 5/256, Епd; (•Главная программа •) Ьеg1п ceпtroп1c_address; repeat gotoxy(25, 10); delay( 2000); uпt1l keypressed; епd. wгite('Iпput voltage [V]: ·, AD_Coпverter:б:З);
6.1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ !209 I 12-канальный АЦП ТLС541 Микросхемы TLC541IN и TLC540IN (Texas Instruments, RS649-289) - это вось­ миразрядные АЦП последовательного приближения. Они имеют встроенную схему выборки и хранения, 12-канальный аналоговый мультиплексор и последо­ вательный интерфейс ввода/вывода, позволяющий одновременно производить операции чтения и записи. Микросхема 75180 TLC540 (рис. 6.14) характеризуется частотой дискретизации TLC541 - 40000 Гц. Эти АЦП можно заменить на TLC1540 и TLC1541, имеют точность 1О разрядов и полностью Гц, а которые с ними совместимы; их частота дискретизации со­ ставляет (контакт 32258 Гц. Выводы Усе (контакт 20) и GND 10) соединены с положительным и отри­ Токm~ цательным проводами источника питания. Напря­ жение источника питания может изменяться 4,75 до 6,5 В, потребляемая мощность равна На входы REF+ и REF- (контакты ется внешнее опорное напряжение. и GND, ббоgо/ бt<боgо от AgpecнtJO бхоg 6 мВт. 13) пода­ Входы REF - 14 и Bt<xog gонн~х как правило, соединены. К первым 11 аналоговым мультиплексорам мож­ но получить доступ через контакты ответствующие аналоговым входам 1-9, 11 и 12, со­ 0-11. Двенадца­ тый вход соединен с опорным напряжением для реализации режима самотестирования. Чтобы вы­ брать один из 12 входов, в микросхему необходи- мо записать четырехразрядный адрес через по- следовательный интерфейс. Последовательный интерфейс состоит из пяти Рис. 6.14. Назначение выводов микросхемы ТlC54 l ТТЛ совместимых линий ввода/вывода: входа сис- темных тактов (SYSTEM CLOCK, контакт 19), входа тактов ввода/вывода (I/O CLOCK, контакт 18), входа выбора микросхемы (CS, контакт 15), адресного вхо­ да (ADDRESS INPUT, контакт 17) и выхода данных (DATA OUT, контакт 16). SYSTEM CLOCK - это вход тактовых импульсов для операций преобразования. В АЦП TLC540 их максимальная частота равна 4 МГц, в TLC541 - 2, 1 МГц, частота дискретизации - 75180 и 40000 Гц соответственно. У микросхем TLC1540 и TLC1541 максимальная частота тактовых импульсов составляет 2,1 МГц, часто­ та дискретизации - 32258 Гц. Вход I/O CLOCK используется при синхронизации операций ввода/вывода, ADDRESS INPUT - при выборе аналогового канала. DATA OUT- это последовательный выход оцифрованного аналогового напряже­ ния, CS - вход выбора микросхемы. Для разрешения работы микросхемы па этот вход требуется подать сигнал низкого уровня. Если CS = 1, то выход DATA OUT находится в третьем состоянии, а входы ADDRESS INPUT и I/O CLOCK закры­ ты, что позволяет подключать несколько подобных устройств к одной общей шине.
12101 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Входы SYSTEM CLK и I/O CLOCK используются независимо. Временные диаграммы чтения и записи представлены на рис. 6.15. На вход CS подается сигнал низкого уровня. Старший разряд предыдущего ре­ (DB7) автоматически появляется на выходе DATA OUT. зультата преобразования Новый адрес аналогового канала (ADO, AD1, AD2 и AD3) загружается в мик­ росхему при прохождении первых четырех положительных фронтов импульсов на входе I/O СLОСК. Старший разряд адреса (AD3) загружается первым. Отри­ I/O CLOCK сдвигают разряды DB6, DBS, DB4 и DB3 цательные фронты сигнала предыдущего результата преобразования на выход. После четвертого отрицатель­ ного фронта сигнала I/O CLOCK начинается преобразование сигнала с аналого­ вого входа, заданного новым адресом. На вход DB1 и I/O CLOCK подаются три тактовых импульса. При этом разряды DB2, DBO предыдущего результата преобразования сдвигаются по прохождении каждого отрицательного фронта на выход. На вход I/O CLOCK подается последний (восьмой) тактовый импульс, отрн­ цательный фронт которого завершает процесс выборки и инициирует процесс хранения. Процесс преобразования занимает 36 тактов на входе Затем для разрешения нового преобразования на вход CS SYS СLОСК. подается высокий уро­ вень либо на вход I/O CLOCK - низкий, по крайней мере, в течение 36 тактовых интервалов. На входе CS допустимо удерживать сигнал низкого уровня, но сле­ дует принять специальные меры для предотвращения шума на входе I/O CLOCK, так как это может привести к потере синхронизации между устройством и внеш­ ней схемой сопряжения. Если на входе CS сигнал высокого уровня, он должен удерживаться в таком состоянии до конца преобразования. Случайный отр1ща­ тельный фронт по этому входу способен сбросить микросхему и прервать неза­ вершенный цикл преобразования. Схема на рис. 6.16 показывает, как описанный АЦП соединяется с эксперимен­ тальной платой параллельного порта. Опорное напряжение точником опорного напряжения TLE2425. 2,5 В генерируется ис­ Синхросигнал может быть сформирован Безроэлuчное cocmos:iнue ToкmtJ -) ,,,, 1 ' ' J..Дocmyn~ ~Вt1борко ~ 1 1 1 в 1 1 \ в 1 ' 1 '~ 1 '1 ' ' ' ::"--ч---,1'' . . _:_:c-t-:-i--_:__: _:c--_.'_ _.__,_:_,__,I Чt: : : Ч1 11111,:: 1 1 1 1 1 1 1 1 Мл бооm Agpecнt10 бхоg --1 1 1 1 ~ 1 1 1 1 ~ 1 1 : Беэрозлuчнае cocmo):lнue 1 1 1 1 1 1 1 ~Доступ_.: ~В~б~рка-r-: 1 1 с 1 1 1 1 1 1 Cm 1 1 1 бооm 1, : i 1 1 1 Мл боОГГ"' 1 1 1 1 1 1 1 cocmos:iнue 1 --1 gоннt1х 6.15. Временные диаграммы работы АЦП TlC54 l 1 Безр~з~uчное 1 Рис. г 1 1 1 Результат npegьgyщe20 nреоброзобанu\:1 А 1 1 1 1 Мл бооm B"xog 1 1 1 1 Резульmоm "!'1екуще20 nреоброзобонuн В
l!!I) 6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ Такmоб"а еенераmор Аналогоб"е бхоg" Bxog Bxog 1 Bxog АО Bxog А1 +58 АО CtJC~~KH~~ А1 О,1мкQI 19 Taкmtj Bxog Bxog А2 Bxog А3 Bxog А4 ббоgа/ А2 б"боgо А3 Bxog 18 01 Аgресн"а 02 бхоg B"xog А4 03 gaннtjx ~ Bxog AS Bxog AS Bxog Аб Bxog Аб REF+ Bxog А7 Bxog А7 REF- Bxog А8 Bxog А8 Bxog А9 GNO S1 GNO Koнmaкmtj но экс пе рuменmа льноа плаmе nороллельноео nopmo GNO~ Рис. 6.16. Экспериментальная схема на базе АЦП схемой на базе интегрального таймера и DATA OUT TLC541 (см. главу 2). Входы I/O CLOCK, CS D1, D2 и DЗ на эксперименталь­ соединены с контактами ной плате, выход данных Текст программы 555 TLC541 - с контактом TLC541.PAS S1 на плате. на ТР6 Prog ram TLC541, (•Программа управления АЦП с последовательным интерфейсом TLC541. АЦП соединен с экспериментальной платой параллельного порта.•) (•Вход I/O CLOCK uses dos, crt; соединен с контактом 01, CS - с 02, адресный вход var 1: 2пteger; dummy · real; ($I c:\1oexp\tpl1b1.pas} Fuпct1oп AO_converter(address:byte):real; (•Процедура аналого-цифрового преобразования. Адреса: 0-11.•) var add,data:array[1 .. 8) of byte: 21,addx.byte; begiп (•Нахождение битов адреса.•) for ii:=1 to 8 do add[ii):-0; if address>=B theп Ьеg1п add[1]:=1; address:=address-8; end; - с 03, выход данных - с S1.•)
j 212 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН lf address>=4 then beg1n add[2] =1, address =address-4 end, if address>=2 then beg1n add[З) =1, address =address-2, end, l f add ress>=1 then beg1n add[ 4] =1, end, (•CS, бит 2, переводится в нулевое состояние для начала преобразования •) wr1te_data_port(P_address 4), wr1te_data_port(P_address,O), delay( 1), for ll =1 to 8 do beg1n (•Чтение предыдущего результата •) addx =add[11]•2, data(ll] =read_status_port(P_address) and 1, (•Чтение цифры •) wr1te_data_port(P_address,addx), (•Загрузка бита адреса I/O CLK=O •) wrlte_data_port (Р _add ress, 1+addx), ( •I/O CLK=1 •) wr1te_data_port(P_address,addx), (•I/O CLK=O •) delay( 1), end AD _converte г =( 128•data[ 1]+64•data[2]+32•data[З ]+ 16•data[ 4]+S<data[ 5] +4<data[ 6]+2•data[7 ]+ 1•data[B] )•2 5/255, end, (•Главная программа •) beg1n Cent ron1c_address, Repeat for l =О to 11 do beg1n dummy =AD_Converter(1), (•Запуск АЦП в первый раз •) delay(1 ), gotoxy(20,5+1), wr1te( lnput voltage [V] to Channel [ ,1 2, ,AD_converteг(1) 6 3), (•АЦП считывает результаты предыдущего преобразования •) end, delay( 2000), unt1l keypressed, end 12-разрядный АЦП последовательного приближения Микросхема LTC1288 LTC1288CN8 (Linear Technology, RS197-1795)- это маломощный 12-разрядный аналого-цифровой преобразователь последовательного приближе­ ния (рис. 8 6.17). Напряжение источника питания (2,7-6 В) подается на контакты 4 (минус). Контакт 8 также служит входом опорного напряжения, по­ (плюс) и этому источник питания по шумам и пульсациям должен быть высокого качества. Ток потребления равен питания 2,7 260 мкА при частоте дискретизации 6,6 кГц и напряжении В. Когда микросхема находится в режиме ожидания, ток потребле­ ния снижается до нескольких наноампер. В этом АЦП имеется два аналоговых входа (контакты 2 и 3), которые могут быть настроены на два режима: в первом входное напряжение подается на каждый вход относительно «земли» (режим не­ симметричного ввода), во втором - на два входа (дифференциальный режим) Ток потребления аналогового входа составляет Микросхема LTC1288 1 мкА. соединяется с другими внешними схемами с помощью че­ тырехпроводного последовательного интерфейса. Вывод CS/SHDN (контакт 1) - это вход выбора микросхемы (н11зк11м уровнем). Когда на нем высокий уровень,
6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ Vcc/Vref i21 з 1 D1n . . - - - - - - - - { 8 ,____--{ Pe2ucmp nослеgобоmельно20 nрuблuженuя 4 GND Рис. 6.17. Назначение выводов и внутренняя блок-схема микросхемы LTCl 288CN8 микросхема находится в режиме ожидания. На вход CLK (контакт 7) подается так­ товый сигнал, синхронизирующий последовательную передачу данных и опреде­ ляющий скорость преобразования. Каждый разряд результата преобразования передается во время прохождения отрицательного фронта импульса СLК. При про­ хождении положительного фронта блокируется ввод данных в микросхему. (контакт 5) - Din цифровой вход, который используется для последовательной за­ грузr<И адреса выбранного аналогового входа. Dout (контакт 6) - выход цифро­ вых данных, на котором появляется результат преобразования. Временные диаграммы работы АЦП LTC1288 приведены на рис. 6.18. Цикл начинается при прохождении отрицательного фронта импульса по входу выбо­ ра микросхемы CS/SHDN. Затем микросхема ждет стартовый бит - положи­ тельный импульс на входе Din (контакт 5), который загружается в LTC1288 по положительному фронту тактового импульса СLК. Далее в микросхему посту­ пает трехразрядное слово (биты 1-3) для настройки режима ввода и формата вывода последовательных данных. Преобразование начинается при прохождении отрицательного фронта четвертого такта. Сразу после этого на выходе такт 6) Dout (кон­ 12 отрицательных 12 разрядов резуль­ появляется сигнал низкого уровня. При следующих фронтах тактовых импульсов на выходе Dout появляются тата преобразования. Изменение сигнала на входе Din не влияет на результат.
l214 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Зогрузко по gанн"х nоложumельному фронту по CLK 1 1 1 1 Начало D1п[ТU Безразлuчное u cocmos:iнue Трехрозр~gное ел обо Нулебоо уробень .---r-- ..., Нулебоо ур обе н ь 80 Dout Мл бum В"борко Рис. 6. 18. Временные диаграммы работы АЦП l ТС 1288 Функции битов трехразрядного входного слова приведены ниже. Биты страивают аналоговый режим ввода. Бит 3 предназначен для 1 и 2 на­ выбора формата вы­ ходных данных. бит 1 = 1, бит 2 =О измерение напряжения между каналом О и «землей» (не­ симметричный ввод) бит 1 = 1, бит 2=1 измерение напряжения между каналом 1и «землей» (не­ симметричный ввод) бит 1= О, бит 2= О измерение напряжения между каналами О и 1 (диффе­ ренциальный ввод) бит 1= О, бит 2=1 измерение напряжения между каналами 1 и О (диффе­ ренциальный ввод) бит 3=1 бит 3 сдвиг битов результата преобразования от старшего к младшему (В11 =О ВО) - сдвиг битов результата преобразования от младшего к старшему (ВО- В11) Пример использования микросхемы совместно с экспериментальной платой параллельного порта поr<азан на рис. OUT соединены с контактами D1, 6.19. Выводы CLOCK, CS, DATA IN и DATA D2 и S1. Текст программы управления на­ DЗ, писан на языке ТР6. Текст программы Ргоgгаm LTC1288.PAS LTC1288, (•Программа уnравлени~ АЦП с последовательным интерфейсом с экспериментальной платой параллельного порта (•Вывод CLOCK соединен с uses dos, сгt, {$1 с \1oexp\tpl1b1 pas} D1, CS - с DЗ, DATA IN - LTC1288 АЦП соединен •) с D2, DATA OUT - с S1 •)
6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ Дл~:~ moчнtjx наnр~женuе бt:Jmь nреоброзобонuо numaнui:i gолжно бь~сокосmабuльнь~м +58 0,1мкФI -{) 01 -{) 02 03 S1 СН1 о---~ GNO Конmакmь~ GNO~ на эксnерuменmа льноа nлame nораллегьного nopma Рис. 6."19. Схема с использованием микросхемы LТС 1288 fuпct1oп AD_coпveгteг(mode·1пtegeг):1пtegeг, (*Режим Режим Режим Режим 1, 2, 3, 4, режим несимметричного ввода, канал О. режим несимметричного ввода, канал 1. дифференциальный режим, канал О положительный, дифференциальный режим, канал 1 положительный, канал 1 отрицательный. канал О отрицательный.•) vаг i1,s1пgle_d1ffeгeпtial,odd_sigп,dummy_byte·byte; IO_data·aггay[1. 12] of byte; Dаtа·аггау[1. 12] of iпtegeг; D1g1tal_data:aггay[1 .. 12] of byte; B1пaгy_we1ght,dummy·1пtegeг; Ргосеduге delay, {Кратковременная задержка.} vаг lJ: iпtegeг; begiп fог lJ :=1 to 6 do lJ :=1]; епd; ргосеduге AD_coпtгol(datax:byte); {Выдача бита для управления АЦП } Ьеg1п wг1te_data_poгt(P_addгess,0+2•datax), wг1te_data_poгt(P_addгess, 1+2•datax); wг1te_data_poгt(P_addгess,0+2•datax), {CLK=O, Dout=datax, стартовый {CLK=1. Dout=datax. стартовый заносится в АЦП } {CLK=O, Dout=datax } delay; епd, ргосеduге coпf1guгe_mode, {Присвоение значений переменным ODD_s1gп и S1пgle_d1ffeгeпt1al } бит=1.} бит l215 j
!216 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН begiп case mode of 1: begiп odd_sigп: =О; 2: begiп odd_sigп:=1; Siпgle_differeпtial: =1; епd; Siпgle_differeпtial:=1; епd; З: begiп odd_sigп:=O; Siпgle_differeпtial:=O; епd; 4: begiп odd_sigп:=1; Siпgle_differeпtial:=O; епd; else begiп odd_sigп: =О; Siпgle_di ffereпtial: =1; епd; епd; епd; begiп (•Определение битов и Siпgle_differeпtial.•) coпfigure_mode; biпary_weight:=4096; write_data_port(P_address, 1+2+4); delay; write_data_port(P_address, 1+2+0); (•CLOCK=1, Data=1, CS=1.•) ( •CLOCK=1, Data=1, CS=O. Начало цикла преобразования.*) (•Ввод бита управления в АЦП.•) AD_coпtrol(1); (•Ввод стартового бита.•) AD_coпtrol(Siпgle_d1ffereпtial); (•Ввод бита S1пgle_differeпtial.•) AD_coпtrol(ODD_s1gп); (•Ввод бита выбора канала.•) AD_coпtrol(1); (•Ввод младшего бита управления.•) (•Считывание битов данных от В11 до ВО") for i1:=1 to 12 do begiп b1пary_we1ght:=b1пary_weight d1v 2; write_data_port ( Р _add ress, 1+2); ( •CLOCK=1, Dout=1, CS=O. *) delay; write_data_port(P_address,0+2); (•CLOCK=O, Dout=1, CS=O.•) delay; data[ii]:=(read_status_port(P_address) апd 1)•biпary_weight; (•Считывание бита данных.•) епd; 12 бит результата преобразования write_data_port(P_address, 1+2+4); (•Все переданы.•) (•После завершения преобразования Data=1, CS=1. *) dummy: =О; for i1:=1 to 12 do dummy:=dummy+data[1i]; AD_coпverter: =dummy; епd; (•Главная программа.•) Ьеg1п Ceпtroпic_address; repeat gotoxy(20, 10); write( ·rпput voltage [V] to сhаппеl [О]:·, AD_coпverter(1)•5.06/4096:6:4); gotoxy(20, 11); write('Iпput voltage [V] to сhаппеl [1]: ', AD_coпverter(2)•5.06/4096:6:4); (•Опорное напряжение= напряжение питания= de lay( 2000); uпtil keypressed; епd. 5,06 В.•) CLOCK=1,
6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ 6.1.3. 1211 J Аналоговый процессор АЦП Микросхема TSCSOO TSCSOOACPE (Telcom, RS656-697) - это законченный 16-разрядный АЦП с двойным интегрированием, который включает все аналоговые схемы, не­ обходимые для оцифровки аналогового напряжения (рис. 6.20). Точность преобразования можно регулировать. При низкой точности достига­ ются достаточно высокие скорости преобразования, при высокой - наоборот. Раз­ решение и скорость преобразования допус­ тимо изменять программно. Микросхема имеет два цифровых входа: А (контакт 12) и В (контакт цифровой выход СОМР 13) - и один OUT (контакт 14). оuт С помощью входов А и В выбирается один из четырех этапов работы микросхемы, которые соответствуют следующим четырем фазам: о А=О, В=О - ANALOG соммоN s фаза вывода нуля интегра­ тора; о А=О, В=1 о А=1, В=О - фаза автоопределения нуля; - фаза интегрирования ана­ логового сигнала; о А=1, В=1 - фаза интегрирования опор­ ного напряжения. Контаrп 14 - Рис. 6.20. Назначение TSC500ACPE выводов микросхемы это цифровой выход микро- схемы, которыii сигнализирует о завершении операции интегрирования опорного напряжения. Для работы устройства необходимо наличие следующих внешних эле­ ментов: опорного и интегрирующего конденсаторов, конденсатора автоопределения нуля, интегрирующего резистора и внешнего источника опорного напряжения (см. рис. 6.22). Аналоговые входы соединены с Vin+ (контакт 11) и Vin- (rшнтакт 10). Для данной микросхемы требуется двуполярный источник питания. При работе от напряжения питания ления равен ±5 В входы и выходы совместимы с логикой ТТЛ, ток потреб­ 1 мА Фазы работы выбираются в следующем порядке: 1. 2. 3. 4. Автоопределение нуля. Интегрирование входного напряжения сигнала. Интегрирование опорного напряжения. Вывод нуля интегратора. Временные диаграммы работы приведены на рис. 6.21. Фаза автоопределения ну ля используется для компенсации ошибок, связанных с напряжением смещения нуля во внутренней аналоговой секции микросхемы. Затем начинается фаза интегрирования входного аналогового сигнала. На этом этапе интегрируется напряжение между входами Vin+ и Vin-. Ин­ тегрирующий конденсатор заряжается до определенного напряжения. Поляр­ ность входного сигнала отображается на выходе СОМР OUT (контакт 14). Если
l218 J 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Инmегрuробонuе а) Инmегрuробонuе :сu2нала 1 оnорно20 нanpRжeнuR T1nt Boixog uнmeгpamopo Пересеченuе нулR / B"xog комnораmоро б) 1 в"хоg 1 1 uнme2pomopo 1 1 " 1 1 Инmесрuробанuе сuгнало 1 ,, " 1 Инmе2рuробонuе 1 опорного : Пересеченuе нanpRжeнuR нулR / в"хоg комnароmоро Рис. 6.21. Временные диаграммы работы микросхемы TSCSOOACPE. а - входной сигнал положительный, 6 - входной сигнал отри­ цательный входное напряжение положительное, здесь устанавливается высокий уровень сра­ зу после начала фазы интегрирования. Еслп напряжение отрицательное, на выхо­ де СОМР OUT низкий уровень остается до тех пор, пока не начнется этап интегри­ рования опорного напряжения. Длительность периода интегрирования входного напряжения на рис. 6.21 обозначена пряжения на выходе СОМР Tint. Во время интегрирования опорного на­ OUT остается высокий уровень, а напряжение на вы­ ходе интегратора снижается до нуля, причем, когда оно переходит через нуль, вы­ ход СОМР OUT сигнализирует об этом низким уровнем. Длительность периода интегрирования опорного напряжения на рисунке обозначена Tdeint. Величину входного напряжения можно вычислить по формуле: Входное напряжение = Vrcf 1 T~etint · 111 Номиналы внешних элементов следует выбирать в соответствии с рекоменда­ циями изготовителя.
6. 1. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ На рис. 6.22 изображена схема на основе ИС TSC500ACPE, l219 I соединенной с экс­ периментальной платой параллельного порта. Входы А и В соединены с контактами D1 и D2 на экспериментальной плате. OUT подключен к контакту S1. Сначала компьютер инициирует этап автоопределения нуля на 50 мс. Затем начинается этап интегрирования входного сигнала, при этом микросхема TSC500 работает ровно 40 мс. ПК в данном случае использует встроенный таймер/счетчик 8253. Полярность входного сигнала уста­ навливается посредством опроса выхода СОМР OUT с контакта S1. Далее компью­ Выход СОМР тер начинает интегрирование опорного напряжения. Он считает количество такто­ вых интервалов до момента, когда напряжение на выходе СОМР равным нулю. Полученный результат, в том числе 40 мс OUT станет для интегрирования вход­ ного сигнала, используется для определения входного напряжения. Номиналы эле­ ментов выбраны в соответствии с технической документацией производителя. -sвn------< U ОПОРН = 1 В +58 D1 D2 51 GND IN+ Рис. 6.22. Экспериментапьная схема TSCSOOACPE Текст программы TC500A.PAS Ргоgгаm ТС500А, (•Программа управления процессором АЦП с двойным интегрированием АЦП соединен с экспериментальной платой параллельного порта, А (контакт (•СОМР OUT 12) - соединен с uses dos,cгt, vаг 1, pola г1 ty intege г; dummy геаl, с D1, В (контакт S1 •) 13) - с D2 *)
l220 1 {$1 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН с \1oexp\tpl1b1 pas } byte), low_byte и h1gh_byte в третий таймер 8253 •) частота 8253 2х1193180 = 2386360 Гц период тактовых Ргосеduге iп1t_8253(low_couпt_byte,h1gh_couпt_byte (•Загрузка (•Тактовая импульсов 1/f =О 419 нс•) Ьеg1п (•Управляющее слово= b6h = 1011011оь 10 = выбор счетчика 2, 11 = чтение/запись сначала младшего байта, 011 = режим 3, О= двоичный счет на 16 •) а потом старшего, рогt($43) =$Ь6, (•Загрузка управляющего слова в регистр рогt($42) =low_couпt_byte, (•Загрузка младшего байта рогt($43) =h1gh_couпt_byte, (•Загрузка старшего байта•) рогt($61) =рогt($61) ог рогt($43) 1, 8253 •) •) (•Отключение внутреннего динамика•) =$80, (•ВОН - команда фиксации для третьего счетчика•) епd, Ргосеduге delay_8253(low_bytex,h1gh_bytex byte), (*Временная задержка, 8253) *) low_bytex и h1gh_bytex •) использующая третий таймер (•Время задержки определяется переменными var low_byte,h1gh_byte byte, Ьеg1п iп1t_8253(low_bytex,h1gh_bytex), гереаt dummy =рогt($42) uпt1l (рогt($42)=0), repeat low_byte =рогt($42), h1gh_byte port($43), uпtll low_byte<5, епd, Fuпct1oп de1пtegгat1oп_counts геаl, (•Определение времени интегрирования (количества тактов третьего счетчика 8253) •) vаг couпts,low_byte,h1gh_byte f1п1shed_ flag byte, boolean, Ьеg1п couпts =О, гереаt 1Пlt_8253(255,255), (•Загрузка чиспа 255 в мпадший и старший регистры счетчика 8253 •) гереаt low_byte =рогt($42), h1gh_byte =рогt($43), if poгt(P_addгess+1) апd 8=0 theп f1п1shed_flag =tгue else f1п1shed_flag =false, uпt1l (low_byte<25) апd (h1gп_byte=O) ог f1п1shed_flag, lf поt f1п1shed_flag theп couпts =counts+1 unt1l f1п1shed_flag, de1пtegrat1oп_couпts =counts•(255•256+255) + (255 O-h1gh_byte)•256+(255-low_byte), епd, Fuпct1oп Voltage геаl, (•Определение входного напряжения vаг add,data аггау[1 8] of byte 11, addx byte, •)
6.2. ПРЕОБРАЗОВАТЕЛИ НАПРЯЖЕНИЕ-ЧАСТОТА 1221 J begin write_data_port(P_address,0+2); (•Автоопределение нуля в течение 500 мс.•) de lay( 500); write_data_port(P _address, 1+0); (•Интегрирование сигнала в течение 40 мс.•) delay_8253(117, 186); polarity:=read_status_port(P_address) апd 1; delay_8253(117, 186); (•Задержка на 186 х 256 + 117 тактов= 20 мс.•) write_data~port(P_address, 1+2); (•Интегрирование опорного сигнала.•) dummy:=deiпtegгatioп_couпts; if polarity:=O theп polarity:=-1; voltage:=polarity•dummy/(186•256+117)/2•1.5; delay(lOO); write_data_port(P_address,O); delay(50); (•Опорное напряжение - 1,5 В.•) епd; (•Главная программа.•) begiп Ceпtroпic_address; write_data_port(P _address, 0+2); ( •Автоопределение нуля.•) write( · Press RETURH to start sampling ·); геаdlп; clrscr; repeat gotoxy(20, 10); write( ·rпput voltage to the ТС500: ·, voltage:6:4); delay(1000); uпtil keypressed; епd. 6.2. Преобразователи напряжение-частота Преобразователи напряжение-частота - это устройства, которые трансформиру­ ют входное напряжение в последовательность прямоугольных импульсов, их час­ тота прямо пропорциональна величине входного напряжения. В данном разделе представлены такие преобразователи и различные способы считывания получен­ ного результата в компьютер. 6.2.1. Принципы преобразования напряжение-частота Преобразователь напряжение-частота (рис. 6.23) состоит из источника коммутиру­ емого тока, входного компаратора и одновибратора. Компаратор сравнивает положи­ тельное входное напряжение У1 с напряжением Ух. Если У1 >Ух, запускается одно­ вибратор, который вырабатывает один импульс фиксированной длительности. Импульс, формируемый одновибратором, подается через транзисторный ключ на выход схемы и одновременно коммутирует выход генератора тока с входом компара­ тора на время t = 1,1RtCt. В течение этого времени ток генератора заряжает конден­ сатор С1, и напряжение Ух становится больше У1. В конце этого временного интер­ вала одновибратор сбрасывается, отключая источник тока от входа компаратора. Затем конденсатор С1 начинает разряжаться через резистор R1. Когда напряжение Ух на конденсаторе С1 сравняется с напряжением У1, компаратор срабатывает, за­ пуская одновпбратор, и цикл повторяется. Таким образом, на выходе схемы форми­ руется частота, пропорциональная входному напряжению.
l222 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН с, Rt Vs ----1---CJ------~~ Генератор mока +Vnum --------.., 1 ' Чacmomнt)u бt>xog Оgнобuбраmар f Рис. 6.23. Принцип работы преобразователя напряжение-частота 6.2.2. Преобразователь напряжение-частота LМЗЗ1 Нелинейность преобразования напряжения в частоту у микросхемы LМЗЗ 1 (National составляет 0,01% на шкале частот 1Гц-100 кГц. Если Semiconductor, RS411-652) напряжение питания микросхемы равно +5 В, то ее выход совместим с ТТЛ и КМОП 4 и 8 подается логикой. Вьrход можно нагружать на три ТТЛ входа. На контакты напряжение питания микросхемы, и они соответственно соединяются с отрицатель­ ным и положительным проводами источника питания. Напряжение источника питания составляет от 4 до 40 В. Ток потребления 2 внутренней схемой подается опорное напряжение 1,9 В. Резистор установки величины тока Rs включается между выводом 2 и <~землей». При этом ток через резистор равен 1,9/Rs. К кон­ такту 5 подключается RС-цепочка, управляющая длительностью импульса одно­ вибратора. На контакт 7 подается входной сигнал, а с помощью контакта 6 уста­ навливается порог. Контакт 3 - выход микросхемы с открытым коллектором. Выходной ток ограничен порогом 50 мА. Схема с применением преобразователя LМЗЗ 1, подключенного к эксперимен­ тальной плате параллельного порта, изображена на рис. 6.24. Частотный выход соединен с контактом S1. Программа управления измеряет частоту выходного сигнала микросхемы LМЗЗ 1, для этого используется встроенный в компьютер таймер/счетчик 8253. 3 мА при напряжении питания Текст программы 5 В. На контакт LM331.PAS Ргоgгаm LM331_Voltage_Fгequency, (•Программа управления преобразователем LM331 •) uses gгaph, сгt dos, vаг t1me_peг1od геаl, •) \1oexp\tpl1b1 pas} Ргосеduге in1t_8253(low_count_byte h1gh_count_byte byte) (•Загрузка файла библиотеки {$I с
6.2. ПРЕОБРАЗОВАТЕЛИ НАПРЯЖЕНИЕ-ЧАСТОТА l223 j комnораmора +58 Rt 8xog 5,ВК 100К +58 51 Цuсрробоо бt>xog GND CI 12К 1 мкФ Koнmaкmtj на эксnерuменmольноо 47 Рис. (•Загрузка 5К nлame nароллельно20 nopma 6.24. Схема на преобразователе LМЗЗ 1 low_byte и high_byte в третий таймер 825З.•) {•Тактовая частота 825З: 2Х119З180 = 2З86З60 Гц, период тактовых импульсов 1/f = 0,419 beg1n (•Управляющее слово= b6h = 1011011оь: 10 = выбор счетчика 2; 11 = чтение/запись сначала младшего байта, 011 = режим З; О= двоичный счет на 16.•) рогt($4З): =$Ь6; poгt($42):=low_count_byte; =h1gh_count_byte; 1; рогt($4З). =$80; end; Funct1on геаd_825З: integeг; а потом старшего; (•Загрузка управляющего слова в регистр рогt ($4З): (•Загрузка старшего байта.•) рогt($61):=рогt($61) ог (•Отключение внутреннего динамика.•) (•ВОН - команда фиксации для третьего счетчика.•) (•Считывание двух восьмибитовых регистров.•) vаг low_byte,h1gh_byte:byte; beg1n low_byte: =ро гt ( $42); h1gh_byte·=poгt($43); гead_825З.=low_byte+256•h1gh_byte; end; 8253.•) (•Загрузка младшего байта.•) нс.•)
l224 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН J Fuпct1oп f1пd_peг1od(Addгess iпtegeг,B1t_we1ght iпtegeг) геаl, (•Определение периода входного цифрового сигнала Входной сигнал зависит от адреса входного порта (Addгess) и бита Бит B1t_we1ght=1 1, B1t_we1ght=2 Бит 7, Bit_we1ght=128 •) Бит О, vаг count Aveгage_пumbeг,t1me1, t1me2 iпteger, Ьеg1п (•Определение периода цифрового сигнала переменной Aveгage_пumbeг Он будет использоваться для установки значения •) гереаt uпt1l poгt(Add гess) апd ( •Сигнал=1 гереаt uпt1l poгt(Addгess) (•Сигнал=О t1me1 Bit_we1ght=B1 t_wюght, and B1t_we1ght=O, =геаd_8253, (•Считывание количества тактов гереаt uпt1l poгt(Addгess) апd Bit_wюght=Blt_we1ght, t1me2 =геаd_8253, *) •) 8253 первый раз (•Сигнал снова равен (•Считывание количества тактов 8253 второй раз Aveгage_пumbeг =гouпd(100/(T1me1-T1me2)), (•Нахождение переменной Aveгage_пumbeг if =1, B1t_we1ght=B1t_we1ght, B1t_we1ght=O, •) 1 •) •) •) Aveгage_пumbeг=O theп Aveгage_пumbeг гереаt uпt1l poгt(Address) апd гереаt uпt1l poгt(Addгess) апd t1me1 =геаd_8253, fог couпt =1 to (•Сигнал=1 (•Сигнал=О (•Считывание количества тактов Aveгage_пumbeг do •) •) 8253 первый раз (•Нахождение заднего фронта цифрового сигнала •) •) Ьеg1п гереаt unt1l poгt(Addгess) апd Blt_wюght=Blt_we1ght, гереаt uпt1l poгt(Address) and B1t_we1ght=O, ( •Сиrнал=1 *) (•Сигнал=О •) епd, T1me2 =геаd_8253, (•Считывание количества тактов 8253 второй раз •) F1пd_peг1od =((T1me1-t1me2)•1/(2•1193180)•1e6/Aveгage_пumbeг), епd, (•Главная программа•) Ьеg1п Ceпtгoп1c_address, 1Пlt_8253(255,255) (•Инициализация третьего таймера 8253 •) гереаt (•P_addгess+1 - адрес порта состояния, 8 - вес бита DB3 •) gotoxy(15, 10) wг1te( T1me рег1оd of output s1gпal [пs] , t1me_peг1od 8 1), gotoxy(15, 11), wrlte( Fгequeпcy of the output s1gпal [Hz]. , 1/time рег1оd•1еб 8 1), delay( 5000), t1me_peг1od =f1nd_peг1od(P_addгess+l, 8) uпt1l keypгessed, епd 6.3. Цифровые датчики интенсивности света Оптоэлектронные датчики превращают световой поток в электрический сигнал определенной частоты. С выхода прибора снимается ток или напряжение, пропор­ циональное интенсивности светового потока. Подобные микросхемы, как правило, содержат усилительные схемы для повышения чувствительности датчика. Если информацию с такого датчика необходимо загрузить в ПК, то между ним и ком­ пьютером требуется включить АЦП. Микросхема TSL220 (Texas lnstrumeвts, RS194-278) - это преобразователь ин­ тенсивности света в частоту. Внутри корпуса микросхемы находятся кремниевый
l225 6.3. ЦИФРОВЫЕ дАТЧИКИ ИНТЕНСИВНОСТИ СВЕТА фотодиод 4 J мм 2 и преобразователь. На выходе формируется последовательность импульсов с частотой, пропорциональной интенсивности света, который падает на фотодиод (рис. 6.25). С1п1 Bxog ycuлumeл~ +58 в~хоg ycuлumeл~ Vcc Tpu22ep Фomoguog Wмumma >--+-----1 Оgнобuброmор Чосmоmньш б~хоg J_ 'L----+-------' KoммymamOptj сброса GND '--------------------------{51-------' Рис. 6.25. Назначение выводов и внутренняя блок-схема преобразователя TSL220 Преобразователь состоит из интегратора на операционном усилителе (ОУ), транзисторных ключей, триггера Шмитта и одновибратора. Выходная частота микросхемы TSL220 определяется током фотодиода и емкостью интегрирующе­ го конденсатора. Частотный диапазон устройства устанавливается подбором конденсатора. Руководство по выбору номиналов элементов содержится в техни­ ческой документации изготовителя. Конденсатор соединен с катодом фотодиода (контакт 4) и выходом ОУ (контакт 6). Выходной сигнал совместим по уровню с КМОП схемами. Если устройство соединяется со схемами ТТЛ, то нужно при­ менить нагрузочный резистор 40 В при потребляемом токе 3,3 кОм. 7,5 мА. Напряжение питания может быть от 4 до Схема на базе этого преобразователя и экспериментальной платы параллелыюго порта приведена на рис. 6.26. Выход микросхемы TSL220 соединен с контактом S1 на плате. Программа управления измеряет частоту выходного сигнала. Она напи­ сана на языке ТР6 и использует встроенный в компьютер таймер/счетчик Текст программы Progгam TSL220 TSL220, (•Программа управления преобразователем свет-частота (•Конденсатор О 01 мкФ, 1% •) TSL220 •) 8253.
l226 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН +58 +58 Чacmamнtjo B"xog C1nt 0,01 S1 мкФ GND Koнmaкmtj на эксnерuменmальнао t-----~ плате nораллелDно20 порmо GND Рис. 6.26. Схема с использованием микросхемы TSL220 (•Если интенсивность света слишком мала, эта программа не будет работать.•) (•Выход TSL220 соединен с контактом 81 экспериментальной платы параллельного порта.•) uses gгaph, cгt,dos; vаг time_peг1od: геаl; (•Загрузка файла библиотеки.•) {$! c:\ioexp\tplib1.pas} Ргосеduге iп1t_8253(low_couпt_byte, (•Загрузка (•Тактовая high_couпt_byte:byte); low_byte и high_byte в третий таймер 8253.•) частота 8253: 2Х1193180 = 2386360 Гц, период тактовых импульсов 1/f = 0,419 begiп (•Управляющее слово= Ьбh = 10110110Ь: 10 = выбор счетчика 2; 11 = чтение/запись сначала 011 = режим 3; О= двоичный счет на 16.•) младшего байта, а потом старшего; рогt($43) :=$Ь6; (•Загрузка управляющего слова в регистр $42): =low_couпt_byte; ро гt( $43): =high_couпt_byte; (•Загрузка младшего байта.•) рогt($61):=рогt($61) ог (•Отключение внутреннего динамика.•) ро гt( рогt($4З): =$80; 1; (•Загрузка старшего байта.•) (•ВОН - команда фиксации для третьего счетчика.•) епd; Fuпctioп геаd_8253: iпtegeг: (•Считывание двух восьмибитовых регистров счетчика.•) vаг low_byte,high_byte:byte; begiп low_byte:=poгt($42); high_byte:=poгt($43); гead_8253:=low_byte+256•h1gh_byte; епd; 8253.•) нс.•)
6.3. ЦИФРОВЫЕ ДАТЧИКИ ИНТЕНСИВНОСТИ СВЕТА 12271 Fuпct1oп f1пd_peг1od(Address:1пtegeг;Bit_we1ght:iпtegeг):гeal; (•Определение периода входного цифрового сигнала. Входной сигнал зависит от адреса входного порта (Addгess) и бита. Бит Bit_weight=1 1, Bit_weight=2 Бит 7, B1t_we1ght=128.•) Би1 О, vаг couпt, aveгage_пumbeг, time1, time2: iпtegeг; Ьеg1п (•Определение длительности нулевого уровня цифрового сигнала. Она будет использоваться для установки значения переменной Aveгage_пumbeг.•) гереаt uпtil poгt(Addгess) апd гереаt uпtil poгt(Addгess) апd B1t_weight=Bit_weight; Bit_weight=O; time1:=гead_8253; (•Сигнал=О. (•Считывание количества тактов гереаt uпtll poгt(Addгess) апd Bit_weight=Bit_we1ght; time2:~гead_8253; 8253 •) •) первый раз.•) (•Сигнал снова равен (•Считывание количества тактов Aveгage_пumbeг:=гouпd(100/(T1me1-T1me2)); lf (•Сигнал=1. 8253 1. •) второй раз.•) (•Нахождение переменной Aveгage_пumbeг.•) Aveгage_пumbeг=O theп Aveгage_пumbeг:=1; гереаt uпtil poгt(Addгess) апd гереаt uпtil poгt(Addгess) апd Bit_weight=Bit_weight; Bit_weight=O; t1me1: =геаd_8253; fог couпt:=1 to Aveгage_пumbeг do (•Сигнал=1. (•Сигнал=О. (•Считывание количества тактов 8253 •) •) первый раз.•) (•Нахождение отрицательного фронта цифрового сигнала.•) begiп гереаt uпtil poгt(Addгess) апd гереаt uпtil poгt(Addгess) апd Bit_weight=Blt_weight; ( •Сигнал=1. •) Bit_weight=O; (•Сигнал=О.•) епd; T1me2:=гead_8253; (•Считывание количества тактов 8253 второй раз.•) Fiпd_peгiod:=((Time1-t1me2)•1/(2•1193180)•1e6/Aveгage_пumbeг); епd; (•Главная про1рамма.•) begiп Ceпtгoпic_addгess; (•Инициализация третьего таймера 1Пit_8253(255,255); 8253.•) гереаt (•P_addгess+1 - адрес порта состояния, 8 - вес бита DВЗ.•) gotoxy(10, 10); wг1te('Тime peгiod of output sigпal fгom TSL220 [пs]: ', time_peгiod:8:1); gotoxy(10, 11); wг1te( 'Fгequeпcy of the output sigпal [Hz]: ·, 1/time рег1оd•1е6:8:1); delay(2000); time_peг1od:=f1пd_peгiod(P_addгess+1, 8); uпtil keypгessed; епd. 6.3.1. Линейная матрица световых детекторов Оптоэлектронный датчик 64 TSL21S TSL215 (Texas lnstruments) состоит из двух секций по 128 пикселов. Пикселы име­ расположены на расстоянии 125 мкм между центрами. пиксела, организованных в линейную матрицу из ют размеры 120х70 мкм и Работа датчика подразделяется на два этапа: интегрирование и вывод данных.
l228 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН На первом этапе каждый пиксел накапливает заряд, пропорциональный интен­ сивности падающего света; лучше освещаемые участки матрицы получают боль­ ший заряд. На втором этапе напряжение заряда каждой точки выводится через аналоговый выход. Это напряжение можно оцифровать с помощью АЦП. Назначение выводов и внутренняя блок-схема светового детектора приведены на рис. ние питания и 8- +5 6.27. На контакты В. Контакты 5 и 12 1 и 7, обозначенные Vdd, TSL215 подается напряже­ соединяются с общим проводом. Контакты 4 CLK 2 и 10) это аналоговые выходы первой и второй секции АО1 и АО2. На вход (контакт 3) подаются тактовые импульсы. Входы Sl1 и SI2 (контакты Vdd АО -~=~ь _°_n_Po~~-~~~ce~~~--J S1 S2 53••• Бу<j)ерн"О 01 02 S64 Внеwн1=1~ нагрузка pe2ucmp 03 064 64-розроgнt>О pe2ucmp cgбu20 Toкmoбtjo 2енераmор CLK SI Рис. 6.27. Назначение выводов и внутренняя блок-схема TSL2 l 5
6.3. ЦИФРОВЫЕ дАТЧИКИ ИНТЕНСИВНОСТИ СВЕТА l229 j используются для управления временем интегрирования и последовательностью вывода точек для двух секций микросхемы. Выходы и 6) - S01 и S02 (контакты 13 это последовательные выходы двух секций. Данное устройство имеет два режима вывода: параллельный и последователь­ ный. В параллельном режиме данные выводятся через выходы АО 1 и АО2 под управлением входов CLK, SI 1 и SI2. Входы SI 1 и SI2 соединены между собой. Для оцифровки двух аналоговых сигналов необходимы два канала АЦП. В последо­ вательном режиме (рис. 6.28) АО 1 и АО2 соединены между собой. С па чала выво­ дятся значения напряжений точек первой секции, а затем обходим всего один АЦП. поступает на вход SI1. соединен с SO 1 Сначала на вход SI1 SI2. - второй, при этом не­ Внешний сигнал управления подается положительный фронт, пос­ ле чего этап интегрирования завершается, и начинается этап вывода данных. Одновременно начинается новый этап интегрирования. Сразу после первого тактового импульса на выходе АО1 появляется напряжение первой точки первой секции. На вход SI 1 необходимо подать ноль до прохождения отрицателыюго фронта тактового импульса. Все остальные значения напряжений точек первой секции выводятся по прохождении еще ПослеgобоmельнtjО 63 фронтов тактовых импульсов. По бхоg CLK Все20 64 CLK mокmоб moкmo Ь4 moкmo 128 t I _~ 1~1 ~---------t,_,,_ _ _ _ _ _ _____..: Послеgобаmельнtjо " uxog Лuнuu Г11~.-----~П~- __J SO 1, Sl2 Пuкселt> Лuнuu А01, АО2 АО1 6.28. 128 1>?:1:><::1 (1 Рис. 1 64) А02 (65 128) Временные диаграммы последовательного режима вывода данных
12зо 1 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН фронту 64-го тактового импульса дит Sl2 S01 переходит из нуля в единицу, что перево­ также из нуля в единицу. По фронту 65-го импульса выход АО1 перехо­ дит в третье состояние с высоким сопротивлением. В :JTOT момент заканчивается этап интегрирования и начинается этап вывода данных из второй секции. Следу­ ющие тактовых импульса выводят значения напряжений точек второй секции. 64 По фронту 129-го импульса выход S02 переходит в единичное состояние, и АО2 переходит в третье состояние с высоким сопротивлением. На рис. изображена экспериментальная схема, в которой матрица 6.29 TSL215 настроена на режим последовательного вывода. Микросхема TSL215 соединена с экспериментальной платой параллельного CLK подключен к контакту D1, вход SI1 - к контакту D2 на плате, выход микросхемы - к осциллографу, отображающему электрический сигнал, ко­ порта. Вход торый соответствует интенсивности света, воспринимаемого матрицей датчиков. Программа на языке ТР6 генерирует сигналы CLK и SI1. Некоторые варианты приложений с использованием этой микросхемы приведены на рис. +58 6.30. Послеgоеюmельнь~u бхоg 02 CLK 01 GNO Конmокmь~ но эксnерuменmольноо nлame (nuксел<> nороллелt)но20 1 128) nopma RL 2К ..L К комnьюmеру АUП Рис. 6.29. Схема с использованием матрицы TSL2 l 5 а) в) б) Исmочнuк Исmочнuк nароллельно20 nараллель1-ю20 сбеmа c~ema Лuнзо ОDьекm 1 ' Рис. Q _.. TSL215 6.30. Обьекm 1 1 1 ' TSL215 Варианты применения матрицы TSL215 1 1 а - TSL215 1 1 обнаружение перемещения, б - обнаружение края предмета, в - обнаружение изображений
6.3. ЦИФРОВЫЕ ДАТЧИКИ ИНТЕНСИВНОСТИ СВЕТА Текст программы !2з1 I TSL215.PAS Program TSL215; (•CLK соединен с 01, SI uses dos, Crt; var i, pola ri ty: intege r; dummy: real; с 02.•) {$! c:\ioexp\tpl1b1.pas} Procedure time_delay; var iJ: integer; begin for lJ :=1 to 1 do ij :=ij; end; Procedure Read_pixel; begin write_data_port(P_address,0+2); write_data_port(P _address, 1+2); for I:=1 to 128 do beg1n wr1te_data_port(P_address,O+O); time_delay; write_data_port(P_address, 1+0); time_delay; end; end; (•Главная программа.•) beg1n Centronic_address; Repeat read_pixel; delay(З); unt1l keypressed; end. 6.3.2. Другие Микросхема цифровые оптоэлектронные датчики IS1 U60 (Sharp, RS577-897) - это инфракрасный приемник для пуль­ 6.31). Он помещен в пластиковый корпус тов дистанционного управления (рис. и содержит схему, способную принимать модулированный инфракрасный сигнал частотой 38 кГц и преобразовывать его в последовательность импульсов. Устрой­ ство питается от напряжения +5 В и потребляет ток 3 мА. Цифровые сигналы для надежного приема информации должны иметь длительность высокого и низкого уровней не менее 400-800 мкс. Среднее расстояние срабатывания равно 5 м при 30°. Микросхемы IS485 и IS486 (Sharp, RS197-031) - это оптические детекторы на триггере Шмитта (рис. 6.32). Они помещены в пластиковый корпус со встроен­ угле приема до ным ограничивающим фильтром дневного света. Устройство состоит из фотодиода,
!2з2 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ "'" +58 Q) Е "'" "":> Q) Е :i: " ""' ~ о а. "' - о Bt>xog GND Рис. 6.31. Назначение выводов и внутренняя блок-схема 151U60 +58 о о R 8<>xog Общuu +58 В шоg Рис. 6.32. Назначение выводов и внутренняя блок-схема детекторов 15485 и 15486 усилителя, стабилизатора напряжения, триггера Шмитта и усилителя, совмес­ тимого с ТТЛ/ТТЛШ и КМОП логикой. Напряжение питания микросхемы мо­ жет быть от 4,5 до 17 В На выходе необходимо использовать нагрузочный - 50 кОм). При величине нагрузочного резистора в 1 кОм нарастания выходного импульса составляет 100 нс, время спада - 50 нс, приема равен ±20°. тор (500 Ом резис­ время а угол 6.4. Цифровые датчики температуры Для измерения температуры в цифровых устройствах необходимы температур­ ный датчик, схема управления и АЦП. Последние модели температурных датчи­ ков совмещают эти компоненты в одном кристалле.
6.4. ЦИФРОВЫЕ ддтчики ТЕМПЕРАТУРЫ 6.4.1. 12зз 1 Термометр Микросхема 051620 DS1620 (Dallas, RS218-3810) - это девятиразрядный термометр и тер­ мостат, служащий для измерения и отображения температуры (рис. 6.33). Он имеет три выхода, которые используются при работе микросхемы в режиме термостата. Настройки выходного сигнала можно запрограммировать и сохранить во внутрен­ ней энергонезависимой памяти. Устройство измеряет температуру от с шагом 0,5 °С, преобразование занимает -55 до +125 °С 1 с. u Peгucmp cocmoS1HUS1 уnраблS1ЮЩО>-l ЛО2UКО => :> IJ I I о U О Q_ D'>D u I QJ => " Tpu22ep максuмальноu meмnepamypt) ю о Tpu22ep мuнuмольноu meмnepamyptj B~xogнoU комnароmор ,___ _ _ _ _ _ ___, 7 Th gh Тlow Tcom Рис. 6.ЗЗ. Назначение выводов и внутренняя блок-схема термометра DS 1620 Передача данных от микросхемы к внешнему устройству осуществляется по трехпроводной последовательной шине: CLK/CONV (контакт 2), DQ (контакт 1) RESET (контакт 3). Эти выходы совместимы с уровнями ТТЛ. Thigh (кон­ такт 7) - выход триггера высокой температуры. Если температура превышает установленный верхний порог, то выход Tl1igh сигнализирует об этом высоким 11 уровнем и остается в таком состоянии до тех пор, пока температура не упадет ниже заданного порога. Tlow (контакт 6) - выход триггера низкой температуры. Если температура опускается ниже определенного нижнего предела, то на нем появ­ ляется сигнал высокого уровня, сохраняющийся до тех пор, пока температура не под­ нимется выше указанного предела. Tcom (контакт 5) - это выход комбинированного Tcom = 1, когда температура превышает триггера высокой и низкой температуры. верхний предел, 4 и 8 соединены Tcom =О, когда она опускается ниже нижнего предела. Контакты с отрицательным и положительным проводами источника питания. Потребляемый ток в режиме ожидания равен 1 мкА, в рабочем режиме - 1 мА. Управление устройством осуществляется в два этапа: сначала команды управ­ ления последовательно загружаются в микросхему, а затем девятиразрядное число,
l234 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН соответствующее температуре, либо считывается, либо записывается. Микросхе­ ма имеет девять команд: О Read temp {Адh): чтение значения регистра, содержащего результат последне­ го измерения, О - 9 бит данных; Start conversion Т (EEh): запуск процесса измерения температуры. Данные не передаются; О О О О Stop convert Т (22h): остановка измерения. Данные не передаются; Write ТН (01h): запись верхнего предела в триггер высокой температуры 9 бит данных; Write TL (02h): запись нижнего предела в триггер низкой температуры 9 бит данных; Read ТН (A1h): чтение содержимого триггера высокой температуры - 9 бит данных; о Read TL (A2h): чтение содержимого триггера низкой температуры - 9 бит данных; О о Write configuration (OCh): запись настроечных данных в регистр настройки 8 бит данных; Read configuration (ACh): чтение настроечных данных из регистра настройки 8 бит данных. Настроечное слово управляет режимами работы микросхемы DS1620. Оно со- храняется в регистре настройки. Функции битов регистра приведены ниже: DONE THF TLF ХХХ Х любое DONE О = 1= THF CPU 1SHOT идет преобразование преобразование завершено флаг высокой температуры. Если температура равна или выше верх­ него предела, то бит THF = 1. Он остается в единичном состоянии до тех пор, пока его не сбросят, записав ноль, или не отключат питание устройства TLF флаг низкой температуры. Если температура равна или ниже нижне­ го предела, то бит TLF = 1. Он остается в единичном состоянии до тех пор, пока его не сбросят, записав ноль, или не отключат питание устройства CPU если CPU = О, то вход CLK/CONV управляет началом цикла изме­ рения; в противном случае микросхема работает в режиме обмена 1SHOT если информацией с внешним устройством 1SHOT = 1, микросхема производит один цикл измерения пос­ ле поступления команды; в противном случае ИС настроена на не­ прерывное измерение температуры Данные о температуре имеют девятибитовый формат. Дискретность представ­ ления температуры равна 1/2 °С. Некоторые соотношения между значениями тем­ пературы и выходными данными приведены ниже: +125 °С +25 °С О 11111010 (OOFA) о 00110010 (0032)
6.4. ЦИФРОВЫЕ ДАТЧИКИ ТЕМПЕРАТУРЫ +1/2 °С о 00000001 00000000 -1/2 °С 1 11111111 -25°С 1 11001110 -55 °С 1 10010010 О С 0 о / 235 j (0001) (0000) (01FF) (01СЕ) (0192) Временные диаграммы передачи данных представлены на рис. 6.34. Передача RST (контакт 3). начинается при поступлении положительного фронта на вход Если на этот вход подать О, то передача прекращается. Процессами чтения и за­ писи управляет тактирующий вход микросхемы. Один тактовый цикл состоит из отрицательного фронта и следующего за ним положительного. При записи ин­ формации состояние битов данных должно оставаться неизменным во время про­ хождения положительного фронта. При считывании данные выводятся из устрой­ ства по каждому отрицательному фронту тактовых импульсов. Когда на тактовом входе высокий уровень, выход DQ (контакт 1) имеет высокое сопротивление. При чтении данных младший бит передается первым. Через этот контакт можно как принимать, так и передавать данные. Схема с использованием термометра подключенного к эr<сперимен­ DS 1620, тальной плате параллельного порта, приведена на рис. Поскольку вывод DQ может 6.35. использоваться как для чтения, так и для запи­ си, а на экспериментальной плате параллельного порта таких двунаправленных а) 1m CLK 1 1 Нуле ба о : ~обень OQ '--------___) Команgа Мл 9-разр"gн1:1е gaннtte бum а Cm бum meмnepomype 6) Загрузка б Загрузка gоннtхх б 051620 команgtt 051620 Л1lГ CLK 1 1 1 1 1 ~ OQ Комонgа Мл бum 9-poзpogнtte gонн!:)е о Cm бum meмnepamype Рис. 6.34. Временные диаграммы рабаты микросхемы-термометра DS 1620 а - паследавательность выгрузки данных, б - паследавательность загрузки данных
l236 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН 4 7К +58 Th gh ВС548 01 Контакт~ на SI эксnерuменmальноО nлome параллельного napmo Tlow CI С2 тсоm GND Рис. 6.35. Схема с использованием микросхемы-термометра DS 1620 линий нет, необходимо применять транзистор. База транзистора соединена с кон­ тактом Когда ИС настроена на прием информации, данные поступают из ком­ D1. пьютера на контакт D1, а затем через транзистор в инверсном виде - на микросхему. Когда она передает информацию, транзистор должен быть закрыт (это достигается подачей низкого уровня на его базу через тот же контакт), и данные поступают на контакт S1. Вхолы и CLK/CONV RST соединены с контактами С1 и С2. После прохождения положительного фронта по входу RST микросхема настраивается на прием управляющей информации. Необходимые данные считываются с линии D1 DS1620 настраивается на вывод дан­ команды D1 переходит в нулевое состо­ под управлением тактовых импульсов. Если ных, то после загрузки в нее управляющей яние, а биты данных последовательно выводятся под управлением тактовых им­ пульсов и поступают на контакт S1. Если микросхема должна принимать данные, они также загружаются под управлением тактовых импульсов. Программа на язы­ ке ТРб иллюстрирует работу этой ИС. Текст программы Progгam DS1620.PAS DS1620_temperature_sensor, (•Программа управления температурным датчиком (•Вх~ход данных CLK/ CONV uses crt, dos, ($1 с DQ соединен с соединен с С1 RST - S1 DS1620 •) 01 при при чтении и с записи с С2 *) \1oexp\tpl1b1 pas} Procedure Wrlte_protocol(datax byte), (•Запись формата данных в DS1620 •) var 1 byte, Ьеg1п wr1te_control_port(P_address, 1+0), delay( 1), wr1te_control_port(P_address, 1+2), (•RST=O CLK=1 •) ( * RST становится равным ввода/вывода•) (•CLK =1 •) delay(1) 1 для запуска цикла
6.4. ЦИФРОВЫЕ дАТЧИКИ ТЕМПЕРАТУРЫ (•Передача битов формата в \ 237 DS1620.•) for 1:=1 to 8 do begin write_contгol_port(P_address,0+2); delay( 1); write_data_port(P_address, 1-round((datax and bit_weight(1))/bit_we1ght(i))); (•Загрузка битов формата в 01 на экспериментальной плате, линия инвертирована.•) delay( 1); wri te_cont rol_po rt ( Р _add ress, 1+2); delay(60); end; delay( 50); end; Procedure Write_tempeгature(temp:byte); (•Запись значения температуры (temp) после записи формата, temp =О - 250. Отрицательная температура не поддерживается.•) var i,datax:byte; beg1n datax: =temp•2; (•Передача битов формата в DS1620.•) for i:=1 to 9 do beg1n write_control_port(P_address,0+2); delay( 1); if i<=S then write_data_port(P_address, 1-round((datax and bit_we1ght(1))/bit_weight(i))) else wr1te_data_port(P_address,O); (•Ввод формата данных в 01 на экспериментальной плате, линия инвертирована.•) delay( 1); write_control_port(P _address, 1+2); delay( 60); end; delay(90); end; Function Temperature: геаl; var i, tempx: integer; b1tx:arгay[1 .. 9] of byte; beg1n write_data_port(P_address,0); for i:=1 to 9 do begin write_control_port(P_address,0+2); delay(1); bitx[i]:=read_status_port(P_address) and 1; write_control_port(P_address, 1+2); delay(1); end; write_control_port(P_address, 1+0); delay( 10); tempx:=O; for i:=1 to 8 do tempx:=tempx+b1t_weight(i)•bitx[i]; Temperature:=(tempx+O•bitx[9]•256)/2; end; Procedu re Example1; j
l 2за 1 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН (•Пример показывает, как можно установить температурный предел и считать установленное значение в компьютер.•) begiп writelп('Example 1, ТН апd writelп('Read1пg ТН апd TL wгite_pгotocol(12); wг1te_pгotocol(O); wгite_pгotocol(1); wгite_tempeгatuгe(35); wгite_pгotocol(2); wг1te_tempeгatuгe(25); wгite_pгotocol(161); wг1telп('H1gh tempeгatuгe TL are loaded with 35 апd 25 deg С'); tempeгatuгe values fгom the DS1620'); (•OCh =запись команды настройки.•) ( •OOh = режим непрерывного измерения температуры.•) (•01h =команда записи верхнего температурного предела.•) (•85D = верхний предел в градусах Цельсия.•) (•02h =команда записи нижнего температурного предела.•) (•20D =нижний предел в градусах Цельсия.•) (•A1h =команда считывания содержимого ЦПУ в ТН.•) l1mit:',tempeгatuгe:5:1, · С'); (•Считывание верхнего предела 0 температуры.•) (•A2h =команда считывания содержимого ЦПУ в TL.•) lim1 t. ·, tempeгatuгe: 5·1, · С ·): (•Считывание нижнего wг1te_pгotocol(l62); wг1teln( · Low tempeгatuгe 0 предела температуры.•) end: Ргосеduге Example2; (•Проверка других свойств.•) Ьеg1п wгlte_pгotocol( 12); wг1te_pгotocol(01): (•Запуск режима однократного измерения.•) wгite_protocol (34); (•22h =остановка режима однократного измерения.•) wгiteln; гереаt wг1 te_pгotocol (170); ( •AAh = команда считывания температуры. *) gotoxy( 8, 10); wгlte('DS1620 stopped, Old tempeгatuгe measuгed Ьу DS1620 [deg С]: ·, tempeгatuгe:5:1); DS1620 считывается старое значение температуры.•) (•После остановки delay(5000); uпtll keypгessed; гeadln; wr1 te_protocol (238); (•EEh =начало преобразования температуры.•) гереаt wг1te_pгotocol( 170); ( •AAh = команда считывания температуры.*) gotoxy(5, 12); wгlte( · DS1620 act1ve, ргеsепt tempeгature measuгed Ьу DS1620 [deg С]. tempeгatuгe:5:1); (•Многократное измерение нового значения температуры.•) delay(5000); uпt1l keypгessed; end; (•Главная программа.•) begiп ceпtгonic_addгess; example1, example2; end. 6.4.2. Цифровой температурный датчик Микросхема SMAF.TEC (LJK Technology) - это температурный датчик, который позволяет передавать в компьютер информацию о температуре только по одной
6.4. ЦИФРОВЫЕ ДАТЧИКИ ТЕМПЕРАТУРЫ линии (рис. 6.36). l239 I На выход микросхемы подается ТТЛ/КМОП совместимый прямоугольный сигнал частотой 4 кГц и изменяемой скважностью, зависящей от температуры. По данным измерения скважности такого сигнала можно вычис­ лить значение температуры. Для работы датч1ша не нужны АЦП, для сопряже­ ния с внешним устройством используется только один провод. Диапазон измеря­ емой температуры от -45 до °С. Общая погрешность измерения менее +130 во всем диапазоне. Напряжение источника питания от ния 4,75 до 7 2 °С В, ток потребле­ мкА. 200 О 1мкФ 2 г ~3 ·- -Н ~ - +58 Koнmaкmt:1 Темпераmурнt>О gomчuк -о SMARTEC S1 бt>xag numaнue 2 3 - ::: GND ~ общuu Рис. 6.36. параллельного парта Bug снuзу 1 - на эксnерuменmальноО nлame Подкnючение температурного датчика SMARTEC к экспериментальной плате параллельного порта Контакт это выход прямоугольного сигнала, контакты 1- 2 и 3 соединены с по­ ложительным и отрицательным проводами источника питания. Скважность линей­ но зависит от измеряемой температуры и определяется по следующей формуле: Скважность (%) ~ 0,320 + 0,00470 х температура (°С). Выход соединен с одной из линий входного порта ПК. Для вычисления темпе­ ратуры необходимо программно определить длительность временных интервалов высокого и низкого уровней выходного сигнала. На рис. 6.36 изображено подключение температурного датчика к эксперимен­ тальной плате параллельного порта. Программа управления написана на языке ТР6. Текст программы Ргоgгаm SMT.PAS temperature_SMT_sensor (•Последовательный выход данных (контакт 1) соединен с uses Сгt, dos, {$I с \1oexp\TPLIB1 PAS} var С_ог _F, l datax unltx byte, аггау[1 12] of byte, сhаг, Funct1on temperature real, (•Вычисление скважности и определение температуры•) vаг lp,hp l total_scan long1nt, S1 •)
j240 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Ьеgш lp =О; (•На входе О, hp: =О; (•На входе 1, total_scan.=300000, (•Общее число for i:=1 to Total_scan do счетчик состояния сбрасывается.•) счетчик состояния сбрасывается") опросов.•) Ьеgш if port(P_address+1) and 8=0 then lp:=lp+1, if port(P_address+1) and 8=8 then hp:=hp+1; (•Если вход=О, то low_count=low_count+1 •) (•Если вход= 1, h1gh_count=h1gh_count+1.•) то end, temperature:=(hp/Total_scan-0.32)/0.0047; end, (•Главная программа.•) Ьеgш Centгon1c_address; (•Выбор параллельного порта.•) repeat gotoxy(10, 10); wгite('Temperature unt1l end 6.4.3. from the SMT temperature sensor: temperatuгe:5·2, ·•с·); keypгessed; Жидкокристаллические температурные модули Температурный модуль (Maplin FE33L) имеет встроенный температурный датчик и ЖК дисплей, которые установлены на миниатюрной печатной плате с 16-кон­ тактным ножевым разъемом. Печатная плата размещена в небольшом пластико­ вом корпусе вместе с элементом питания напряжением 1,5 В. Модуль не только измеряет и показывает температуру, но и отображает время. Потребление тока 15 - мкА. Некоторые характеристики модуля приведены ниже: о термометр: 3,5 разряда работают как индикатор градусов Цельсия или Фа­ ренгейта. Диапазон измеряемой температуры от щей способностью О, 1 °С. Точность ± 1 °С +70 °С с разрешаю­ 0-40 °С и ±2 °С для выбирается 1О или 1 с. Сигнали­ -20 до в диапазоне других диапазонов. Период дискретизации: зирует о самой высокой и самой низкой температурах. При измерении тем­ пературы выходные данные выводятся последовательно в двоично-десятич­ ном коде, формат которого представлен на рис. О часы: 3,5 О источник питания: одна батарея 1,5 0,5 с/сут.; В, работающая более года. Экспериментальная схема изображена на рис. с контактами 6.38; разряда показывают часы и минуты. Точность S 1 и S2 6.37. Контакты 10 и 9 соединены на экспериментальной плате параллельного порта через два транзисторных ключа. Программа на языке ТР6, приведенная ниже, считывает последовательные данные и преобразовывает их значение в температуру. Текст программы Ргоgгаm TMODULE.PAS Temperature_LCD_Module; (•Выход синхроимпульсов (контакт 10) соединен с Последовательный выход данных (контакт uses crt,dos; 9) S1. соединен с Линия инвертирована. S2. Линия инвертирована.•)
l241 6.4. ЦИФРОВЫЕ ДАТЧИКИ ТЕМПЕРАТУРЫ а) R 6) Koнmaкmt:1 на эксnерuменmальноО плате nораллельного nopma + +58 4К Переключенuе uэмеренu~ eguнuц meмnepamypt:1 S1 LO HI Bt>xog S2 cuнxpau мnульсоб GND Вt>2рузка nослеgобаmельнt:1х gоннt:1х о Требога meмnepamype "бt:1сока~ Переключатель uзмеренu~ lО meмnepamypa" 5 128 бременu с Усmанобка мuнуm Усmанобка часоб uлu 1 с ,_.,__,_ _ _ _ _ _ ____. GND ~-------------------------- Рис. 6.37. Жидкокристаллический температурный модуль· {$I с а - модуль; 6 - схема включения \1oexp\tpl1b1.pas} var C_or_F,1:byte, Datax:array[1 .. 12] of byte, Uп1tx сhаг, Fuпct1oп Temperature: геаl: (•Цикл считывания данных с температурного ЖК модуля.•) Ьеg1п wr1te_data_port(P_address, 1); (•Нахождение заголовка - кратковременного (1 repeat repeat uпt1l read_status_port(P _address) мс) положительного импульса.•) апd 1=1; (•Нахождение логического О Линия инвертирована.•) repeat uпt1l read_status_port(P _address) апd 1=0; (•Нахождение логической Линия инвертирована.•) delay(З), (•Задержка на 3 мс.•) 1. 1
\ 242 \ 6. ИЗМЕРЕНИЕ АНАЛОfОВЫХ ВЕЛИЧИН / 1 бмс f .------ Vdo 01 vss Vdo vss '--/ '-----./ / Даннt>е PIN9~ PIN 1 О 1 1 1 1 1 1 1 1 1 1 1 1 1 1 : :uluF: 1 1 ~ ~ 1"'"' \ N Рис. N 1МС 1 ! t .......~ .......~ 1 ! 1 о о 01 Иgeнmu<puкamop QOHHt:IX 02 03 04 05 80 40 20 10 Об 8 07 08 09 010 011 012 013 4 2 1 0,8 0,4 0,2 О, 1 6.38. Формат последовательных выходных данных C_oг_F:=гouпd(гead_status_poгt(P_addгess) апd 2/2); (*Получение результата в градусах Цельсия (=1) или градусах Фаренгейта (=О).•) if uпt1l С_ог_F=1 theп uп1tx.=·c· else гead_status_poгt(P_addгess) апd uп1tx:='F'; 1=0; (•Считывание двоично-десятичных данных. Последовательность считывания: fог 80,40,20, 10,8,4,2, 1,08,04,02,01.*) i:=1 to 12 do Ьеg1п гереаt uпt1l гead_status_poгt(P_addгess) апd гереаt uпtil гead_status_poгt(P _addгess) апd гереаt uпt1l гead_status_poгt(P _addгess) апd 1=1; 1=0; 1=1; datax(1]:=1-гouпd(гead_status_poгt(P_addгess) апd (*Нахождение логического О.•) (•Нахождение логической 1. •) (*Нахождение логического О.*) 2/2); (•Считывание бита данных. Бит инвертирован•) епd; (•Генерация значения температуры.•) Tempeгatuгe:=10*(8•datax[1]+4•datax[2]+2*datax[3]+1*datax[4])+ 1•(8•datax[5]+4•datax[6]+2•datax[7]+1•datax[8])+ 0.1•(8*datax[9]+4•datax[10]+2•datax[11]+1*datax[12]); епd; · (•Главная программа.•) begiп Ceпtгoп1c_addгess; (*Выбор параллельного порта.•) гереаt gotoxy(20, 10): wг1te('Tempeгatuгe fгom delay(5000); until keypгessed; епd. the module: ·,tempeгatuгe:5:1, · 0 ·,uпitx);
6.5. ЦИФРОВЫЕ ДАТЧИКИ ВЛАЖНОСТИ l243 I Цифровые датчики влажности 6.5. Жидкокристаллический модуль влажности (Maplin, ZA38R) имеет такое же устрой­ ство, как и модуль температуры/времени, описанный выше. Он измеряет относи­ тельную влажность в диапазоне 25-96% и сохраняет минимальный и максималь­ ный результат, полученный после последнего сброса (рис. 6.39). Датчик влажности размещен на плате. Обычно ЖК дисплей показывает текущее значение влажности, но при нажатии кнопоr\ MIN и МАХ на дисплее соответственно отображаются мишrмальное и максимальное значения, которые хранятся во внутренней памяти датчика. Эту память можно очистить, нажав обе кнопки одновременно. Для вывода значений относительной влажности в четырехразрядном двоично­ десятичном формате используются четыре выхода М1 см. рис. 6.40. пульса, затем - М4 (контакты 4-7) - Сначала по каждой выходной линии передается по два синхроим­ - четыре бита данных, отображающих состояния кнопок. И только после этого выводятся два разряда значения влажности (старший разряд идет первым). Схема модуля влажности показана на рис. 6.39. Модуль соединен с эксперимен­ тальной платой параллельного порта, четыре выхода Нормольнвn :~:жно - с контактами S1 - S4 на 0tJAX OZIN Koнmaкmt) на эксперuменmальноо плаmе nароллельно20 nopma + + Усmанобка -Q +58 -О S1 максuмума- 4К Усmонобка Vdd ZТХ300 4К 4К 4К М1 М2 М3 S2 М4 К1 К2 К3 GND ~е """"''~moo 1 -------·-+-О Рис. 6.39. Жидкокристаллический модуль влажности и его включение GND
l244 j 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Не JLJLJLJLJLJLJLJL JLJLJLJLJLJLJLJL JLJLJLJLJLJLJLJL JLJLJLJLJLJLJLJL М1 М2 М3 М4 Kog~ Пербао / UU<j)pO Вторая UU<j)pO ------------Вес клабuw М1 М2 М3 М4 о 1 о о о о 1 1 1 о о Рис. 6.40. ucnoльзyemc>i о Onucaнue М1 М3 1 u 2 М4 клабuwа Нажато клабuwа HaжOmt) клабuwu М2 2 1 Нажато бumоб 8 4 2 Временные диаграммы выхода nосnедовотельных донных плате через четыре транзисторных ключа. Программа на языке ТР6, приведенная ниже, считывает данные из модуля и на их основе вычисляет влажность. Текст программы HMODULE.PAS Program Hum1d1ty_LCD_module, ( * М1 (контакт 4) соединен с S1 М2 (контакт 5) соединен с S2 МЗ (контакт 6) соединен с sз М4 (контакт 7) соединен с S4 uses Crt,dos {$I с Линия инвертирована Линия инвертирована Линия инвертирована Линия инвертирована *) \1oexp\TPLIB1 PAS} var C_or_F, l byte, datax аггау[1 12) of byte, unltx char Funct1on Input_data byte, (•Все входы порта состояния инвертированы•) beg1n input_data =5-read_status_port(P_address), end, Funct ion Hum1dlty real, (•Считывание значения влажности из модуnя влажности var keypressed_data d1g1t_1st d1g1t_2nd byte, •)
6.6. ЦИФРОВЫЕ ДАТЧИКИ РАСХОДА ЖИДКОСТИ 1245 I Ьеg1п (•Нахождение логического О перед заголовком.•) repeat uпtil input_data=15; delay( 500); (•Нахождение логической (•Задержка 500 1 на всех входах.•) мс.•) (•После задержки на входе О.•) (•Заголовок (два положительных импульса) пропускается.•) repeat repeat uпtil input_data=15; uпtil iпput_data=O; (•Нахождение логической 1.•) (•Нахождение логического О.•) 1. •) гереаt uпtil iпput_data=15; (•Нахождение логической repeat (•Нахождение логического О.•) uпtil input_data=O; (•Считывание данных о нажатии клавиши.•) repeat uпt1l input_data<>O; (•Ввод данных о нажатии клавиши.•) Keypressed_data:=iпput_data; if keypгessed_data<15 theп beg1n (•Пропуск одного синхроимпульса.•) repeat until repeat uпt1l end else repeat unt1l 1. •) iпput_data=15; (•Нахождение логической iпput_data=O; (•Нахождение логического О.•) iпput_data=O; (•Считывание первой цифры.•) repeat until iпput_data<>O; d1git_1st:=1nput_data; (•Ввод данных о нажатии клавиши.•) (•Пропуск одного синхроимпульса.•) repeat until iпput_data=15; repeat until input_data=O (•Нахождение логической 1. •) (•Нахождение логического О.•) (•Считывание второй цифры.•) repeat uпt1l iпput_data<>O; (•Ввод данных о нажатии клавиши.•) digit_2пd:=iпput_data; if digit_2пd=15 theп d1git_2пd:=O; (•Генерация значения влажности.•) Humidity:=(d1g1t_1st)•10+(d1g1t_2nd); end; (•Главная программа.•) begiп Ceпtгoпic_address; (•Выбор параллельного порта.*) Repeat gotoxy(20, 10); write('Humidity from the module:',humidity:5:1, delay(5000); uпtil keypressed; '%'); епd. 6.6. Цифровые датчики расхода жидкости Цифровой датчик расхода жидкости (UCC lnternational, RS185-9982) контактный датчик жидкостного потока (рис. 6.41 ). это трех­ В его канале расположена нейлоновая крыльчатка, насаженная на вал из нержавеющей стали; когда в канале
l246 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН +58 - Блок Bxog~щuo nomaк - cuнuo gamчuкa -- -- --... - ..... Крtiльчоmка Bxog~щuU Bt:1xog~щuo namoк поток t +58 Блок gomчuкo Конmокmьt но эксnерuменmольноО nлame nороллельного nopma 8t:1xogs:iщuO Рис. nomoк 6.41. Схемы датчика расхода жидкости протекает жидкость, крыльчатка вращается. В датчик также встроены инфракрас­ ный излучатель и детектор. Все устройства размещены внутри датчика, внешних элементов не требуется. Крыльчатка, вращаясь под воздействием потока, периодически закрывает сво­ ими лопастями инфракрасный детектор, что приводит к появлению на выходе детектора прямоугольных импульсов, которые после усиления подаются на вы­ ходные контакты устройства. Частота следования импульсов пропорциональна скорости потока жидкости. Каждый литр воды, протекающей через датчик, при­ близительно соответствует 1 до 20 л/мин. 752 импульсам. Датчик измеряет сr<орость потока от
6.7. ЦИФРОВЫЕ ДАТЧИКИ МАГНИТНОГО ПОЛЯ На рис. 6.41 l247 j изображена схема устройства, в котором датчик соединен с экс­ периментальной платой параллельного порта. Выходная последовательность импульсов подается на контакт S 1 платы. Скорость потока вычисляется по ко­ личеству импульсов за установленный промежуток времени Как правило, это делается программно: сначала фиксируется начальное время, а затем подсчиты­ ваются импульсы датчика. Когда их число достигает определенного значения, программа снова фиксирует время, после чего вычисляет количество импуль­ сов в секунду и, на основе полученного результата, скорость потока воды. 6.7. Цифровые датчики магнитного поля В разделе описаны элеюронные приборы, предназначенные для измерения харак­ теристик магнитного поля. 6.7.1. Цифровой датчик FGM-3 индукции магнитного поля Чтобы измерить магнитную индукцию посредством цифровых систем, необходи­ мы датчик, схема преобразования и АЦП. Последние разработки в этой области позволили объединить все три устройства в одном корпусе, что значительно упрос­ тило процесс измерения и улучшило его качество. FGM-3 (Speake & Со.) - это трехконтактный датчик, два контакта которого - выход (рис. 6.42). Устройство изме­ ряет индуrщию магнитного поля до 10 нТл. На выход подается цифровой сигнал частотой от 50 до 120 кГц. Период сигнала пропорционален величине индукции магнитного поля, воспринимаемого датчиком. FGM-3 имеет низкий температур­ ный коэффициент, равный 0,003% на 1 ·с. Высокая чувствительность устройства соединены с источником питания, а третий позволяет измерять индукцию магнитного поля Земли. Датчик можно использо­ вать для ориентирования на местrюсти. ~ -о +58 -о S1 Деmекmар маенumнаео поля FGM-3 GND ~ Конmакn1ьt на эксnерuменmо льна О плоте параллельного napma Рис. 6.42. Датчик магнитной индукции FGM-3 и схема его подкnючения
[ 2481 6. ИЗМЕРЕНИЕ АНАЛоrовых ВЕЛИЧИН Напряжение источника питания +S В. Методика измерения заключается в под­ счете количества импульсов за фиксированный промежуток времени. Затем опре­ деляется частота сигнала и вычисляется величина индукции магнитного поля. 6.7.2. Цифровой датчик магнитного поля Микросхема UCN3121 (Allegгo, RS307-446) - это интегральный переключатель с открытым коллектором, основанный на эффекте Холла. Он состоит из датчика Холла, усилителя, триггера Шмитта, стабилизатора напряжения и ключа с откры­ тым коллектором (рис. 6.43). i- Cmaбuлuэamap Vcc наnроженuq Общuо Дсn1чuк Холла GND Рис: 6.43. Назначение выводов и внутренняя блок-схема датчика UCNЗ 121 Это пороговый датчик Когда магнитное поле в датчике Холла превышает по­ рог, на выходе логический ноль. Если магнитное поле ниже порога, на выходе единица. Напряжение источника питания может изменяться от минальным током потребления 5 мА. Выходной каскад коллектором. который выдает ток до 25 - 4,5 до 24 В с но­ это каскад с открытым мА. Для соединения выхода со схемами ТТЛ/КМОП необходимо между входом питания и выходом подключить нагру­ зочный резистор номиналом 1О кОм. Более подробные характеристики прибора содержатся в документации изготовителя. 6.8. Радиосистемы точного времени Приемники радиосигналов точного времени позволяют получить доступ к систе­ ме эталонного времени, которая работает с точностью до секунды за миллион лет. Радиосигналы точного времени генерируются Национальной физической лабо­ раторией (NPL) в Англии. Каждую минуту передается двоичный код, содержа­ щий время, дату и день недели. NPL - часть международной сети, которая позво­ ляет сверятъ часы с точностью до наносекунды в любой точке мира. Позывной передатчика точного времени Передатчик MSF NPL, расположенного в Регби, - MSF1. ежеминутно посылает в эфир поток данных, содержащий информацию о времени. В первые семнадцать и последние восемь секунд пере­ дается служебная информация, необходимая для синхронизации приемников, в остальные секунды - сведения о времени в двоично-десятичном коде. Формат кода временн 1 MSF приведен в табл. 6.1, а формат передаваемого радиосигнала Данные об аналогичных российских системах в открытой печати отсутствуют. науч. ред. - Прим.
6.8. Таблица 6.1. Двоичный код времени передатчика Секунда Описание РАДИОСИСТЕМЫ ТОЧНОГО ВРЕМЕНИ /249/ MSF Двоично-десятичный формат Описание Служебная информация о Служебная информация Служебная информация 2-16 17 Год (десятки) 18 Год (десятки) 80 40 19 Год (десятки) 20 20 Год (десятки) 21 Год (единицы) 10 8 22 Год (единицы) 23 Год (единицы) 24 Год (единицы) Год (00-99) 4 2 25 Месяц (десятки) 26 Месяц 27 Месяц 28 29 Месяц 30 Число (десятки) 20 31 32 Число (десятки) 10 8 33 34 Число 35 Число 36 День недели 37 День недели 38 День недели 39 40 41 Час 42 Час 43 Час 44 Час 45 Минута (десятки) 40 46 Минута (десятки) 20 47 Минута (десятки) 48 Минута 10 8 49 Минута 50 51 Минута 10 8 Месяц (01-12) Число ( 01-30) 4 2 Месяц Число 4 2 Число 4 2 День недели Час (десятки) 20 Час Час (десятки) 10 8 4 2 (1-7) (01-24) Минута (00-59) 4 2 Минута 52 Всегда О 53-58 Всегда 59 Всегда О о Служебная информация Служебная информация 1 о Служебная информация
12so 1 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН показан на рис. 6.44. Несущая частота равна дой секунды длительностью нулю, а 200 мс - 100 и 200 60 кГц. Она передается в начале каж­ мс. Длительность 100 мс соответствует единице. 80 20 40 10 4 8 2 10 1 1 1 Гоg, nербао цuq>pa=9 Приемный модуль MSF Гоg, : (Maplin 1 1 Месяц, : Месяц, : : nербао : бmорао: : цu!ga : цu,2'fa : бmорао uuq>pa=7 ЕМ2 8 МК68У) и антенна MSF (Maplin МК72Р) составляют приемник кода времени с цифровым последовательным выходом для подключения внешних декодирующих устройств. Приемник обла­ дает высокой чувствительностью при узкой ширине полосы пропускания 10 Гц. Он имеет два режима работы: режим ожидания с малым потреблением мощно­ сти и активный режим под управлением входа PON. мальный потребляемый ток равен - 500 Входы Vcc источника питания может быть от 1 мкА, во 1,5 до 3,5 В первом случае макси­ втором мкА. Напряжение В. и GND соединены с положительным и отрицательным проводами источника питания. Для устра­ нения помех в цепи питания используется RС-фильтр первого порядка с сопротив­ лением резистора 1 кОм и емкостью электролитического конденсатора 10 мкФ. Приемная антенна представляет собой колебательный контур с индуктивностью на ферритовом стержне, она специально разработана для данного приемного модуля. Схема на базе экспериментальной платы параллельного порта представлена на рис. 6.45а. Цифровой выход МSF-приемника соединен с контактом S1 на экспери­ ментальной плате. Уровень напряжения МSF-приемника приводится к уровням ТТЛ логики с помощью транзисторного ключа. Программа декодера написана на языке ТР6. Текст программы Р MSF_RES.PAS rog ram MSF_rece1 ve r, (•Программа управления приемником MSF, выход данных соединен с контактом на экспериментальной пдате параллельного порта.•) uses crt, dos, {$1 c:\1oexp\tpl1b1.pas} Funct1oп Per1od:byte; (•Определение, что передается каждую секунду, 1 или О.•) S1
6.8. РАДИОСИСТЕМЫ ТОЧНОГО ВРЕМЕНИ 1251 а) Прuемнuк МSF-анmенно Конmокm" S1 но эксnерuменmольноО +58 nлome nороллельного nopmo GND 6) 1К ,-----1=1--- + 38 MCM-RS232 (MSF) Х1 Х2 Х3 Х4 Х5 Хб Х7 Х8 Пumoнue Послеgобоmельн"о Послеgобоmел1:>1-1t)О бхоg +98 l)t)xog 500К 741 -98 Рис. 6.45. Приложение приемника 1 N4148 MSF: а - схема с использованием экспериментальной ппаты параллельного порта; 6 - применение модуля MCM-RS232 Ьеg1п repeat uпt1l read_status_port(P_address) апd 1=1, (•Определение логической 1.•) delay( 15• 11), (•Задержка около 150 мс •) if read_status_port(P_address) апd 1=1 theп рег1оd·=1 else per1od:=O; (•Если порт состояния все еще 1, то передавалась 1, если же он равен О, то передаваемые данные тоже должны быть О.•) delay(700•11), end; (•Задержка около 700 мс.•) 1
j 2s2 I 6. ИЗМЕРЕНИЕ АНАЛОГОВЫХ ВЕЛИЧИН Ргосеduге get_time_bit; (•Получение данных о времени.•) vаг couпt,i:byte; Yeaг,Moпth,Day_of_moпth,Day_of_week,houг,m1пute:iпtegeг; Tbit:array[1 .. 60) of геаl; begiп (•Определение данных, передаваемых между 3 и 16 с (все равны О).•) couпt: =О; гереаt if period=O theп couпt: =count+1 else count: =О; uпtil Couпt>=14; (•Определение начала передачи данных.•) гереаt uпtil рег1оd=1; Tbit[1]:=1; (•Данные о годе, (•Получение следующих for i:=2 to 36 do 35 бит 3.') бит данных.•) TB1t[i]:=peг1od; (•Формирование информации о времени.•) Yeaг:=гouпd((B•Tb1t[1)+4•Tbit[2]+2•Tbit[3]+Tb1t[4))•10+(8•Tb1t[5]+4•Tb1t [6]+2•Tbit[7]+Tbit[B])); Moпth:=гouпd(Tbit[9]•10+(8•Tbit[10]+4•Tb1t[11]+2•Tb1t[12]+Tbit(13])); Day_of_Moпth:=гouпd(10•(2•Tbit[14]+Tbit[15])+(8•Tbit[16]+4•Tbit[17]+2•Tbit[18]+Tb1t[19])); Oay_of_week:=гouпd(4•Tbit[20]+2•Tbit[21]+Tbit[22]); houг:=гouпd(10•(2•Tbit[23]+Tbit[24])+(8•Tbit[25]+4•Tb1t[26]+2•Tbit[27]+ Tbit[28))); Miпute:=rouпd(10•(4•Tbit[29]+2•Tb1t[30]+Tbit[31])+(8•Tbit[32]+4•Tbit[33]+2•Tb1t[34]+Tbit[35])); 'Year: ·, уеаг); ·, Moпth); wгitelп('Day of moпth: ·,oay_of_moпth); wгitelп( ·oay_of_week: ·, Day_of_week); wгitelп('Houг: · ,Ноuг); wг1telп( 'Miпute: ·, miпute); writelп( wгitelп( · Moпth: епd; (•Главная программа.•) begiп ceпtгoпic_addгess; гереаt clrscг; get_time_Ьi t; uпtil keypгessed; епd. Сигнал с выхода МSF-приемника можно подать на микроконтроллерный деко­ дирующий модуль MCM-RS232 о времени в стандартном формате (Mapliн RS232 MK73Q), который выдает информацию интерфейса, но с ТТЛ уровнями. Для под­ ключения к ПК требуется внешнее преобразование к двуполярному уровню. Мо­ дуль RS232 также непрерывно выдает информацию о точном времени, но компью­ теру в этом случае не нужно самостоятельно декодировать данные. Модуль имеет выход управления. Питание на микросхему (вход Х8) необязательно подавать по­ стоянпо, вход Х8 может быть соединен со схемой управления, которая отвечает за
6.9. КЛАВИАТУРА !2sз 1 периодическую подстройку времени в соответствующих приложениях. Схема под­ ключения модуля MCM-RS232 приведена на рис. 6.45б. Набор команд для связи с компьютером подробно описан в технической документации изготовителя. 6.9. Клавиатура Существует два вида клавиатур, подключаемых к компьютеру: со сканированием и с кодированием. Блок-схема 12-клавишной сканирующей клавиатуры показана на рис. 6.46. Кла­ виши расположены в узлах матрицы, у которой четыре линии строк и три линии столбцов. На линии столбцов по очереди по­ дается отрицательный импульс. В этот мо­ мент проверяется состояние четырех линий +58 Сmолбц" с-о строк. Если нажатых клавиш нет, все линии строк имеют высокий уровень (они подключе­ ны к напряжению +5 В через нагрузочные ре­ зисторы). Если же клавиша нажимается, и на линии столбца, соответствующего нажатой клавише, все еще ноль, то адекватная линия строки также становится равной нулю. Зная номера столбца и с1 роки, можно получить позицию нажатой клавиши. В клавиатуре с кодированием использова- вы специализированные микросхемы, кото- Рис. 6.46. Матричная клавиатура Зх4 рые обнаруживают нажатие клавиши и показывают ее код в параллельном виде на выходе. Компьютер считывает данные и определяет, какая клавиша нажата. Пример такого устройства ММ74С922 (National Semiconductors). - микросхема
7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ В данной главе рассказывается, как соединить компьютер с другими устройства­ ми, такими как цифро-аналоговые преобразователи, часы, модули памяти и гене­ раторы сигналов. 7.1. Цифро-аналоговые преобразователи Цифро-аналоговый преобразователь (ЦАП) - это устройство, которое трансфор­ мирует двоичный код в пропорциональное ему аналоговое напряжение или ток. ЦАП широко используется при синтезе речи, музыки и во многих других случа­ ях, когда необходимо обеспечить компьютерное управление внешними аналого­ выми устройствами в реальном масштабе времени. 7.1.1. Простой ЦАП R-2R Простой ЦАП можно построить с помощью резисторной матрицы R-2R, как по­ казано на рис. 7 .1. Такое устройство годится для приложений, не требующих боль­ шой точности преобразования. Чтобы получить высокое качество преобразова­ ния, необходимо использовать специализированные интегральные схемы ЦАП. 7.1.2. ЦАП с параллельным вводом ZN428 Микросхема ZN428 (GEC-Plessey) представляет собой восьмиразрядный цифро­ аналоговый преобразователь с буфером-защелкой для входных данных. Он состо­ ит из матрицы R-2R и быстродействующих коммутаторов, что обеспечивает время преобразования, равное 800 нс. Формируемое микросхемой опорное напряжение составляет 2,5 В. Напряжение источника питания +5 В, ток потребления в режиме покоя 20 мА На рис. 7.2 приведены расположение выводов и внутренняя блок-схема устрой­ ства. Сначала на шину данных подаются 8 бит данных, затем на вход ENABLE
7.1. ЦИФРО-АНАЛОГОВЫЕ ПРЕОБРАЗОВАТЕЛИ Все 20К 10К 10К 20К 20К DO 10К 20К Dl peзucmopJ;J 10К 20К 20К 10К 20К D4 D3 D2 0,258m, 1% 10К 20К 10К 2,2К 20К D7 D6 D5 10К 10К Bxog цuq>poбJ;Jx gaннJ;Jx в~хоg Рис. 7.1. Простая схема ЦАП аналогобого сuаноло на основе резисторной матрицы D81 Млоgшuо бum DBO DB4 NC АналагобJ;JО бJ;Jxog Vref п Cmapwuo бum Vref out АнологобJ;JО АнологобJ;JО общuо общuо общuо Vcc общuо --~~~~~--;10 8J;Jxog опорного нonpRжeнuR Uопарн=2,58 Bxog опорного нопрRженuR DBO DB1 D82 D83 DB4 ЦАП, буq>ер бxogнJ;Jx gOHHJ;JX Рис. 7.2. Резuсmuбноо моmрuцо muпa R-2R Расположение выводов _и внутренняя блок-схема ZN428 l 2ss 1
l256 I 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ (контакт 4) - отрицательный импульс. При этом данные с шины загружаются во внутренний буфер и преобразуются в аналоговое напряжение. Схема с использованием ЦАП ZN428, подключенная к экспериментальной пла­ 7.3. те параллельного порта, представлена на рис. +58 ~-----< 1 о>-----~ Vcc DS 390 D7 Dб DS D4 D3 D2 Bt)xogнoe Анологоб"О оноло2обое б"хоg D1 I с1 нonps.iжeнue 10мкФ GND Koнmoкm!j но эксnерu мента льноо плоте параллельного nopma Рис. 7.3. Схема с использованием ЦАП ZN428 Восемь цифровых входов соединены с контактами ENABLE - D1 - DS платы, вход с контактом С1. Форму аналогового сигнала можно наблюдать при по­ мощи осциллографа. Программа последовательно посылает в ЦАП числа от О до 255, вследствие чего на выходе формируется пилообразное напряжение. Демон­ страционная программа написана на языке ТР6. Текст программы ZN428.PAS Program ZN428_DAC; (•Программа управления для ЦАП (•Программа демонстрирует, uses crt,dos; var i:1nteger; ZN428.•) как микросхема генерирует пилообразное напряжение.•)
7.1. ЦИФРО-АНАЛОГОВЫЕ ПРЕОБРАЗОВАТЕЛИ j 257 I {$I c:\1oexp\tplib1.pas} Procedure V_out(data:byte); (•Вывод двоичного кода для изменения напряжения на выходе.•) begiп Write_data_port(P_address,data); write_control_port(P_address,O); (•Помещение данных (data) Данные записываются в write_coпtrol_port(P_address, в шину данных.•) (•ЕпаЫе переводится в состояние логического нуля. 1); (•ЕпаЫе ZN428.•) = 1.•) епd; (•Главная программа.•) begin Centroп1c_address; i:=O; repeat V_out(1); (•Входная последовательность О, си гнал. 1,2,3, ... ,255 дает на выходе треугольный •) i:=i+1; (•i увеличивается if i=255 then i:=O; until keypressed; end. на 1. •) 7.1.3. ЦАП DAC0854 с последовательным интерфейсом ввода/вывода Микросхема DAC0854ВIN (National Serniconductor, RS853-315) - это четырехка­ нальный восьмиразрядный цифро-аналоговый преобразователь с последователь­ ным интерфейсом ввода/вывода (рис. 7.4). +5 В, ток потребления 14 мА. Шесть uифро­ вых линий ввода/вывода (AU, CLK, CS, INT, D1 и DO) управляют всеми опера­ uиями преобразователя. DAC0854 содержит четыре ЦАП, для каждого из кото­ рых имеется вход опорного напряжения (Vref) и выход аналогового напряжения (Vout). В микросхеме сеть два входа для подачи напряжения смещения (VЬias 1 и Vbias 2) и вход для подключения источника питания (AVcc). Встроенный ис­ точник опорного напряжения формирует напряжение 2,65 В (выход Vref out). Микросхема DAC0854 способна работать в двух режимах: записи и чтения. В первом случае 8 бит uифровых данных заносятся в ЦАП и преобразовываются в аналоговое напряжение; во втором - данные, записанные в ЦАП, считываются Напряжение источника питания обратно. Запись или чтение могут выполняться одним или всеми ЦАП сразу. Ре­ жим устанавливается с помощью управляющего слова, которое помещается в ре­ гистр управления. Управляющее слово заносится в DAC0854 - это последовательность битов, которая через вход данных. Функции битов управляющего слова приведены ниже: бит бит 1 (стартовый бит) 2 (режим чтения/записи) всегда О = 1= 1 RD /WR RD /WR - режим записи режим чтения
j 2ss 1 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА с ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ Vout 2 Vbias 1 cs AU CLK out DO 3 GND 1NТ DI DVcc г 8К Вхоgноо ЦАП1 peeucmp 1 AU 4 о а> CLK о ВхоgноО "''° п п I D'-.. cs о; о Ф О> ЦАП2 peeucmp 2 <О Vб"х 2 Е о о'° INi '°g, '°() DI с: "Е ""' () "'" о е- ВхоgноО Q_ peeucmp 3 ЦАП3 I ~ DO Вхоgноо peeucmp 4 8К 20 18 Vопорн Рис. 7.4. 1 Vопорн 15 2 Vопорн 16 12 3 Voropн 4 Vопорн б"х Назначение выводов и внутренняя блок-схема ЦАП DAC0854 бит 3 (глобальная операция) О= доступ к одному ЦАП бит 4 (управление обновлением) О= нет обновления 1= 1= доступ ко всем ЦАП обновление аналогового выхода
7.1. ЦИФРО-АНАЛОГОВЫЕ ПРЕОБРАЗОВАТЕЛИ бит 5 6 бит (адрес) А1 (адрес) АО - l259 1 выбор каналов ЦАП выбор каналов ЦАП При доступе к одному каналу ЦАП входы АО и А1 указывают один из четырех каналов. Если выбрана глобальная операция (бит 3 = 1), биты 5 и 6 пропускаются (управляющее слово в таком случае состоит только из четырех битов). Если бит управления обновлением равен 1, то входные цифровые данные преобразовыва­ ются в аналоговое напряжение по отрицательному фронту импульса этом на входе AU CS. При (асинхронное обновление) должен быть высокий уровень. Все операции начинаются по отрицательному фронту на входе щего слова поступают на вход D1. CS. Биты управляю­ Каждый бит передается в ЦАП по положитель­ ному фронту тактового импульса. Временные диаграммы режима записи приве­ дены на рис. 7.5. Засрузко gаннt)Х ~ Taкmt) Обноблечсе бt)хоgно20 ноnроженuо ~ l cs 1 Старт о О! о А1 АО 080 LS8 081 D82 DВ3 084 085 D86 В~~ !" Бumt> уnраблоюще20 слаба .1. .[ Vout Рис. 7.5. Временные диаграммы режима записи Диапазон выходного напряжения цифро-аналогового преобразователя может быть различным. Если в качестве опорного напряжения используется внутренний источник на 2,65 В, а для получения напряжения смещения на входе VЬias приме­ няется схема делителя напряжения, то диапазон напряжений составит Соотношение между выходным напряжением (Vout) и 0,31- 2,81 В. входными цифровыми дан­ ными выражается следующей формулой: Vout DATA 2,500 256 + 0,310, = где значение DATA представлено в десятичном формате. Схема подключения ЦАП DAC0854 к экспериментальной плате параллельно­ го порта показана на рис. Контакты СТ.К, с входом CS и D1, контакт 7.6. S1 - языке ТР6; здесь процедура ЦАП, а D1, D2 и DЗ платы соединены с входами DO. Программа управления написана на ALL_DAC( DATA: byte) записывает данные (DATA) во все ONE_DAC(address, DАТЛ: byte) - в один ЦАП, определенный пере~1сшюй
l2601 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ (Vout=2 5х0АТА/256+0 31 О) 2 Koнmoкmt) 3 4 на эксnерuменmальноu плате Vonopн пароллельнога 2 658 Vref out порто +58 1о ок Vref 01 Vref 3 02 Vref Vкалuбр 03 Vbюs S1 2 13 I GNO 7 Рис. 7.6. Схема 1 408 Vb as 1 подключения ЦАП DAC0854 1 ОмкФ 11 3К I ...!... О 1 мкФ к экспериментальной плате паралпель наго порта add ress Таким образом, микросхема DAC0854 генерирует пилообразный сигнал по всем четырем каналам Форму сигнала можно наблюдать на экране осциллографа Текст программы DAC0854.PAS Program DAC0854_dr1ver (•Программа управления четырехканальным ЦАП DAC0854 •) (•Соединение с экспериментальной платой параллельного порта CS - выбор чипа D2 CLK - такты 01 DI - вход данных DЗ DO - выход данных S1 •) uses crt dos {$1 с \1oexp\TPLIB1 pas} var commaпd l D аггау[1 procedure byte 130] of byte Iп1t (•Инициализация линий управления •) Ьеg1п wr1te_data_port(P_address 1+2+0) епd ( •Clock=CS=1 •)
7.2.ЦИФРОВЫЕПОТЕНЦИОМЕТРЫ Procedure load_data(data·byte); (•Процедура загрузки данных, CS=O, Oata остается постоянным, Сlосk=переход 1261 \ 0-1 •) begiп wr1te_data_port(P_address,0+0+4•data), wr1te_data_port(P_address,l+0+4•data); (•Вывод данных.•) (•Clock переходит из О в 1 для загрузки данных.•) wr1te_data_port(P_address,O+O+O); ( •Clock=O. *) епd; Procedure All_DAC(data:byte); var l lпteger; Ьеg1п load_data( 1); load_data(O); load_data( 1); load_data( 1); (•Загрузка стартового бита.•7 (•Загрузка бита RD/WR=O, операция записи.•) (•Загрузка бита глобальной операции, 1, (•Загрузка бита разрешения обновления, ИЗ 0 В открытие глобальной операции.•) 1, обновление в момент перехода CS 1. *) (•Загрузка данных.•) for 1:=1 to 8 do load_data(rouпd(data апd b1t_weight(i)/b1t_we1ght(1))); wrlte_data_port(P_address,0+2+0); (•Переход CS из О в 1 для обновления данных.>) епd, Proceduгe Oпe_DAC(address,data.byte); var l · 1пteger; Ьеg1п load_data( 1), load_data(O); load_data(O): load_data( 1); (•Загрузка стартового бита.•) (•Загрузка бита RD/WR=O. операция записи.•) (•Загрузка бита глобальной операции, О, (•Загрузка бита разрешения обновления, ИЗ 0 В апd *) обновление в момент перехода CS 1 •) load_data(гouпd(address апd load_data(address операция с одним ЦАП 1, 2/2)), 1); (•Загрузка адреса А1.•) (•Загрузка адреса А2 •) (•Загрузка данных.•) for 1:=1 to 8 do load_data(rour1d(data апd b1t_we1ght(1)/b1t_weight(1))), wrlte_data_port(P_address,0+2+0), (•Переход CS из О в 1 для обновления данных.>) епd; (•Главная программа.•) begiп Ceпtroп1c_address; lПl t; repeat for 1:=1 to 255 do unt1l keypressed, опе_DАС(З,1), епd. 7.2. Цифровые потенциометры Цифровые потенцио.\1стры изменяют сопротивление под управлением цифровых схем и используются в качестве цифровых регуляторов громкости в аудиоаппа­ ратурс и уситпелях.
j262 I 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ Серия Х9С103 (Xicor)- это КМОП потенциометры с долговременной памятью (рис. 7.7). К ним относятся несколько устройств: Х9С103 (RS299-480), Х9С503 (RS299-496) и Х9С104 (RS299-503), которые имеют максимальное сопротивление 10, 50 и 100 кОм соответственно. Шаг изменения сопротивления равен максималь­ ному сопротивлению, деленному на 99. Напряжение источника питания +5 В, по­ требляемый ток 1 мА в режиме регулировки и 0,5 мА в режиме ожидания. Серия Х9С содержит входную секцию управления, счетчик, декодирующую секцию, энергонезависимую память и резисторную матрицу, состоящую из 99 ре­ зисторов. Между любыми двумя резисторами на обоих концах матрицы располо­ жены точки отвода, причем каждая точка связана с выводом регулировочного контакта и VL (VW) через транзисторный ключ. Два конца резисторной матрицы VH эквивалентны фиксированным контактам механического потенциометра и могут соединяться с напряжением от -5 до +5 В. VW - это регулировочный контакт, который представляет собой аналог подвижного контакта механическо­ го потенциометра. Положением регулировочного контакта управляют три входа: CS (выбор мик­ росхемы), V/О (вверх/вниз) и INC (увеличение). Вход V/D (1 =вверх, О= вниз) управляет увеличением или уменьшением значения счетчика. При подаче на вход INC отрицательного фронта положение регулировочного контакта изменяется на один шаг вверх или вниз. Подача на вход CS сигнала низкого уровня разрешает 7-разр"gн"О реберсuбн"о счеmчuк 7-розр"gноо энереонезобuсuмо):! ПQM):!mb Уnробляюща" Vcc 8 r - - - - - . . i J\02\JKO >------- Vss 4 Рис. 7.7. Назначение выводов и внутренняя блок-схема потенциометра серии Х9С
7.2. ЦИФРОВЫЕ ПОТЕНЦИОМЕТРЫ l263 j доступ к микросхеме. Значение счетчика сохраняется во встроенной энергонеза­ висимой памяти, если сигнал высокого уровня поступит на входы CS и INC. Пос­ ле этого микросхема переходит в режим ожидания с малым потреблением мощ­ ности, пока на вход CS снова не будет подан сигнал низ1<ого уровня. Схема подключения потенциометра к экспериментальной плате параллельно­ го порта приведена на рис. 7.8. Входы INC, V /D и CS соединены с контактами D1, D2 и DЗ на экспериментальной плате. VW измеряется с помощью омметра. Значение сопротивления между и +58 I 01 0,1мкФ 02 03 Омметр GNO КонmокmЬ1 но эксnерuменmольноо nлome nароллельного nopma Рис. 7.8. Схема подключения потенциометра X9Cl 03 к эксперимен­ тальной плате параллельного порта Текст программы Program X9C104.PAS Х9С104, •) (•Программа управления цифровым потенциометром Х9С104 (·С~инение с экспериментальной платой параллельного порта: INC (увеличение) 01 V/D (вверх/вниз): 02 CS (выбор микросхемы) 03.•) uses crt,dos; {$1 c:\ioexp\tpl1b1.pas} var up_down,step:byte; Procedure INC_R(step,up_dowп:byte); (•Увеличение или уменьшение сопротивления между (•Направление задается переменной VL и VW на величину step.•) up_down.•) var i: byte; beg1n for 1: =1 to step do Ьеg1п wr1te_data_port(P_address, 1+2•(up_dowп)+O); delay( 100); wr1te_data_port(P_address,0+2•(up_down)+O), delay(100); wr1te_data_port(P_address, 1+2•(up_down)+O), delay(100); end; (•Clock=1.•) (•Clock=O •) (•Clock=1.•) VL
!264 J 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ wr1te_data_port(P_address, 1+2•(up_down)+4); end; (•Запоминание положения.•) Procedure test; beg1n wr1te('Increase [1] ог decrease [О] resistance between VL and VW: '); readln( up_down); wп te( · Input steps ( 1 to 100): ·); readln( step); INC_R(step,up_down), end; (•Главная программа.•) beg1n centron1c_address, repeat cerscr, test; readln; unt1l keypressed; end. 7.3. Модули памяти Модули памяти используются для хранения цифровых данных. RAM - это моду­ ли памяти со случайным доступом, позволяющие в любой момент считать или записать данные; если источник питания выключается, данные теряются. ROM модули памяти только для чтения, перед применением в них необходимо запи­ сать информацию. В модули PROM записать информацию можно только один раз, в то время как в стираемые модули кратно. Память EPROM EPROM это разрешается делать много­ по способу стирания информации бывает двух типов: стираемая ультрафиолетовым светом (UVEPROM) и электрически (EEPROM). Модули могут иметь параллельный или последовательный интерфейс ввода/вы­ вода. Параллельный интерфейс состоит из восьми двунаправленных линий дан­ ных, нескольких линий адреса и линий управления. Для последовательного интер­ фейса требуются только три линии управления и одна выходная линия. Кристаллы с шиной РС имеют две линии ввода/вывода. Модули памяти с шиной (Dallas Touch Memories) MicroLAN используют лишь одну линию. 7.3.1. Модуль EEPROM объемом 2 Кб с последовательным вводом/выводом Микросхема SТ9ЗС56С (SGS-Thomson) - ST93CS6C это долговременная КМОП EEPROM объемом 2048 бит с последовательным вводом/выводом (рис. 7.9). Ее память мо­ жет быть организована двумя способами: 128 слов по 16 разрядов или 256 слов по 8 разрядов в каждрм. Любая ячейка памяти стирается и записывается до 1 млн раз. Vcc (контакт 8) и Vss (контакт 5) соединены с положительным и отрицатель­ ным проводами источниr<а питания +5 В. Номинальный ток потребления 2 мА в активном режиме и 50 мкА в режиме ожидания. Контакт 1 - это вход выбора микросхемы, rюнтакт 3 - вход данных, а контакт 2 - вход тактового сигнала. Су­ ществует семь команд для управления операциями чтения/записи:
7.3.МОДУЛИ ПАМЯТИ о READ j265 / (чтение); о WRIТE (запись); о EWEN (разрешение стирания и записи); EWDS (запрещение стирания и записи); ERASE (стирание); ERAL (стирание всего содержимого); WRAL (запись всего объема информации). о о о о Vcc Загрузка s Vcc с DU о ORG nocлeg обоmел ьн i::jX gOHHi::jX ТакmЬ1 В"грузко 4 В"бар nослеgобоmельнtiх gанн!::jх мuкросхемti В"бар сnособо Vss opгaнuзauuu goннtix Vss Рис. 7.9. Назначение выводов и логическая схема ST93C56 Рабочий цикл состоит из трех или четырех шагов. Временные диаграммы при­ ведены на рис. 7.10. no nоложumельному q>poнmy 1 1 1 1 s 1 1 1 Аgресн"е Kag anepauuu Разроg" gанн"х (ба разроg" бремо зanucu) г------~ о ОР1 : 1 ОР2 ; А7 : Аб ; 1 1 1 ОР3 ОР4 Kog onepouuu нeкomoptiX о AS 1 1 А4 1 1 А3 1 1 А2 А1 АО gлР : О 15 : О 14 i О 13 i О 12 : О 1 1 i О 1О i Разроg" gонн"х (ба бремо чmенuо) uнсmрукцuО 1 о Рис. 7.10. 1 : 015: 1 1 1 014: 013: 012: 011 :010 Временные диаграммы работы микросхемы ST93C56C На первом шаге генерируется начальное условие, которое заставляет ПЗУ ре­ агировать на поступающие команды. Оно предусматривает подачу высокого уров­ ня на вход выбора микросхемы, стартового бита на вход данных и положитель­ ного фронта на тактовый вход микросхемы. Затем следует двухбитовый код, который определяет выполняемую операцию. На следующем шаге в микросхему передаются биты адреса и на последнем - данные. Загрузка битов происходит по положительному фронту тактового импульса. Биты адреса заносятся в мюсросхе­ му, начиная со старшего (шаг 3). На шаге 4 выполняются только операции чтения
/ 266 / 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ и записи данных. Биты данных (сначала старший бит) записываются или считы­ ваются по положительному фронту тактового импульса. Набор команд приведен в табл. 7.1. Таблица 7.1. Команды управления операциями чтения/записи Команда Код операции Адрес Данные REAO 10 А7-АО 015- 00 WRITE 01 А7-АО D15- 00 EWEN 00 11ХХХХХХ нет EWOS 00 оохххххх нет ERASE 11 А7-АО нет ERAL 00 юхххххх нет WRAL 00 01ХХХХХХ 015- 00 Микросхема ST93C56C соединена с экспериментальной платой параллельно­ го порта, как показано на рис. контакт S1 - к 7.11. Q. Организация Контакты памяти D 1, D2 и DЗ подключены к S, С и D, - 128 слов по 16 разрядов (вывод ORG не подключен). Текст программы управления на языке ТР6 приведен ниже. +58 s 01 02 1 0.1мкФ о 03 Q S1 GNO КонmакmЬ1 на зксnерuменmа льноо nлome параллельного nopma Рис. 7.11. Схема подключения микросхемы ST93C56C к экспери­ ментальной плате параллельного порта Текст программы 9356.PAS Program EEPROM_93C56_dr1ver; (•Программа управления FEPROM, организация памяти 128х16.•) (•Соединение с экспериментальной платой параллельного порта: S - выбор микросхемы 02, С - такты 01, D - вход данных 03, О - выход данных S1. •) uses crt, dos, {$! с \1oexp\TPLIB1 pas}
7.3. МОДУЛИ ПАМЯТИ var byte, D:array[1 .. 130) of byte; commaпd. procedure Init, (•На все входы управления подан низкий уровень •) Ьеg1п write_data_port(P_addгess,O+O+O), епd; Procedure load_data(data:byte); (•Процедура загрузки данных, Select=1, Dаtа=постоянные, Сlосk=переход 0-1 •) Ьеg1п wr1te_data_port(P_address,0+2+4•data); delay(1); wr1te_data_port(P_address,1+2+4•data); (•Select (•Clock и Data=1.•) переходит из О в для загрузки данных.•) delay(1), write_data_port(P_address,0+2); delay( 1); (•Select=1, Clock=Data=O. •) епd; Procedure Start; (•Генерация условия начала. Select=1, Data=1, Сlосk=переход 0-1.•) Ьеg1п wr1te_data_port(P_address,O+O+O); write_data_port(P_address,0+2+4), wп te_data_po rt ( P_add ress, 1+2+4), wr1te_data_port(P_address,0+2+0); delay( 1), delay(1 ); delay(l), delay(l), ( •Select, Clock и Data=O. •) ( •Select, Data=1; Clock=O *) (•Все входы равны 1.•) (•Select=1; Data и Clock=O.•) епd, Procedure Eгase(eпaЫe_flag·booleaп); (•Команды разрешения и запрета стирания.•) var i·byte, Ьеg1п (•Генерация условия начала •) Start; load_data( 0); (•Загрузка первого бита кода операции (•Загрузка второго бита кода операции load_data(O); if eпaЫe_flag theп (•Загрузка 1 и 1 - команда разрешения стирания •) О.•) О •) Ьеg1п load_data( 1); load_data( 1); епd else (•Загрузка О и О - команда запрета стирания.•) begiп load_data( 1); load_data( 1); епd; fo r 1: =1 to 6 do load_data (О), delay( 1); wr1te_data_port(P_address,O); delay(10); епd, (•Загрузка шести холостых бит адреса. •) (•Все входы=О для блокирования команды •) l267 I
( 26~] 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ Procedure ErJse_all; (•Стирание всех ячеек памяти, запись во все ячейки 1. •) var i: byte; begin Start; (•Генерация условия начала.•) load_data(O); (•Загрузка первого бита кода операции О.•) load_data(O); (•Загрузка второго бита кода операции О.•) load_data(l); (•Загрузка 1 и О.•) load_data(O); for i:=1 to 6 do load_data(O); (•Загрузка шести холостых бит адреса.•) wr1te_data_port(P_address,O+O+O); ( •Select=O. •) delay( l); write_data_port(P_address,0+2+0); (•Select=1 для проверки состояния.•) delay( 1); repeat until read_status_port(P_address) апd 1=1; (•Ожидание состояния готовности.•) write_data_port(P_address,O+O+O); (•Select=O для прекращения выполнения операции.•) end; Procedure write_all(byte_low, byte_high:byte); (•Запись во все ячейки памяти byte_high и byte_low. •) vаг i:byte; Ьеg1п Start; (•Генерация условия начала.•) load_data(O); (•Загрузка первого бита кода операции О.•) load_data(O); (•Загрузка второго бита кода операции О.•) load_data( О); (•Загрузка О и 1.•) load_data( 1); for i:=1 to 6 do load_data(O); (•Загрузка шести холостых бит адреса.•) (•Загрузка byte_high, сначала старший бит.•) for i:=8 downto 1 do load_data(round((byte_h1gh апd bit_weight(1))/Ыt_weight(i))); (•Загрузка byte_low, сначала старший бит.•) fo r i: =8 downto 1 do load_data( rouпd ( ( byte_low and Ь1 t_weight (i)) /blt_weight (1))) ; wri te_data_port ( Р _add ress, О+О+О); write_data_port(P_address,0+2+0); repeat uпtil read_status_port(P_address) and 1=1; write_data_port(P_address,O+O+O): end; Procedure WriteROM(address, byte_low,byte_high:byte); (•Запись byte_h1gh и byte_low в две восьмиразрядные ячейки памяти.•) var i:byte; begin Start; (*Генерация условия начала.•) load_data(O); (•Загрузка первого бита кода операции О.•) load_data( 1); (•Загрузка второго бита кода операции 1. •) (•Загрузка адреса.•) for i:=8 downto 1 do begin load_data(rouпd(address апd епd; (•Загрузка for 1:=8 bit_weight(i)/bit_weight(1))); (•Загрузка адреса О.•); byte_high, 1 do dowпto сначала старший бит.•) load_data(rouпd((byte_h1gh and bit_weight(1))/bit_weight(i)));
7.3. МОДУЛИ ПАМЯТИ l269] (•Загрузка Ьуtе_lоw,сначала старший бит.•) fог i:=B dowпto 1 do load_data(гouпd((byte_low апd bit_weight(i))/bit_weight(i))); write_data_port(P_addгess,O+O+O); wгite_data_port(P_address,0+2+0); гереаt uпtil read_status_port(P_address) wri te_data_port( P_add гess, О+О+О); end; апd 1=1; Fuпct1oп readROM(addгess.~:byte):byte; (•Считывание двух байтов из 128 ячеек памяти. х=О считывает младший байт, х=1 vаг l,high_byte, low_byte,dummy:byte; Ьеg1п sta гt; load_data(l); load_data(O); (*Генерация условия начала.*) (•Загрузка кода операции 1. *) (•Загрузка кода операции О.•) (•Загрузка адреса.•) for i:=B dowпto 1 do begiп load_data(rouпd(address апd b1t_weight(i)/bit_weight(i))); епd; (•Загрузка адреса О.•); dummy:=O; fог i:=B dowпto 1 do (•Начало считывания старшего байта.•) begiп write_data_port(P _address, 0+2); delay( 1); ( •Clock=O. Select=1. •) write_data_port(P_address, 1+2); delay(1); (•Clock=1.Select=1. •) dummy·=dummy+гead_status_port(P_address) апd 1•bit_we1ght(i); (•Считывание бита данных, сначала старший бит.*) write_data_port(P_address,0+2); епd; h1gh_byte:=dummy; dummy:=O; (•Начало считывания младшего байта.•) for i:=B dowпto 1 do begin wr1te_data_port(P_address,0+2); delay(1); write_data_poгt(P _address, 1+2); delay( 1); dummy:=dummy+read_status_port(P_address) апd 1•bit_weight(i); wгite_data_port(P_address,0+2); епd; low_byte:=dummy; (•Установка значения данных.•) if if х=О theп х=1 theп readROM:=low_byte; readROM:=high_byte; епd; Procedure Program_ROM; (•Тестовая программа.•) var strx;striпg[250]; i:byte; begiп writelп("This wr1telп; is the message origiпally stored iп the EPROM"); - старший байт.•)
/ 2701 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ for i:=1 to 125 do beg1n write(chr(readROM(i,O)),chr(readROM(1, 1))); end; wrlteln; wri te( · Press RETURN to cont1nue ... ·); readln; for i:=1 to 250 do strx[i):=· ·; writeln( ·rnput the message which will Ье programmed into the eeprom: · ); readln(strx); for i:=1 to 125 do wr1teROM(i,ord(strx[2•i-1]),ord(strx[2•i])); writeln('The EEPROM has been programmed ·); writeln('This is the message stored in the EPROM now'); for i:=1 to 125 do begin wr1te(chr(readROM(i,O)),chr(readROM(i. 1))); end; readln; end; (•Главная программа.•) begin Centronic_address; in1 t; erase(true); р rog ram_ rom; end. 7.3.2. EEPROM с шиной 1 2 С Микросхема 24LC16B (Microchip, аналог Х24С16Р, Xicor, RS125-1401) - это 16 Кбит с шиной I2C (см. главу 4). Микросхема выполняет фушщии ведомого устройства. Память организована как 2048 ячеек по 8 разрядов каждая; ячейки можно стирать и снова записывать в них информацию до 1 млн раз. Напряжение источника питания от 2,5 до 5 В, потребляемый ток 1 мА в активном режиме и 10 мкА в режиме ожидания. Выводы АО, А1 и А2 не используются. Вход WP обеспечивает защиту от запи­ EEPROM объемом си (высоким уровнем). Обычно для разрешения записи он соединяется с «зем­ лей~>. SCL и SDA - это линии тактового сигнала и данных РС (рис. 7.12). Данные записываются и считываются по шине 12С. Операция записи имеет два режима: побайтовой и постраничной записи. В первом случае в ячейку памяти за­ писывается один байт, во втором - в модуль записывается 256 байт за одно обра­ щение. При чтении доступны режим чтения текущего адреса и случайный режим чтения. После прохождения условия «CTAPTi> в микросхему заносится восьмиразряд­ ный ведомый адрес от ведущего передатчика. Биты адреса (начиная со старшего) равны: 1, О, 1, О, В2, В1, ВО н R/W. Биты с 7 по 4- это постоянный адрес микро­ схемы, биты В2, В1 и ВО определяют один из четырех блоков памяти, а бит устанавливает, какая операция будет проводиться: для операции чтения для операции записи R/W = R/W R/W = 1, О. После передачи ведомого адреса в микросхему
7.3. МОДУЛИ ПАМЯТИ l271 1 Vcc WP А 1 (не uсnользуеmсе) WP А2 (не uсnользуеmсе) SCL Vss SDA ----1 7 >------ УnрабленuR SDA SCL EEPROM-мampuuo Упробленuе ббоgом/ ч::аненuем бьбоgом uнcpopмauuu Защumа gaннtjx X-geкogep Буq>ер cmpohuць У -geкogep Уnраблен.Jе чmенuем/запuсью Vcc Рис. 7.12. Vss 4 ,___ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ___, Назначение выводов и внутренняя блок-схема модуля памяти 24LCl 6В посылается адресный байт, который определяет местоположение ячейки памяти в выбранном блоке. Его значение может быть от О до 255. Если проводится опера­ ция записи, то следом за ней в микросхему записывается восемь бит данных. В режи­ ме случайного чтения после записи адресного указателя снова генерируется условие «СТАРТ», а потом передаются биты адреса и бит R/W, установленный в 1 (для ре­ жима чтения). Затем данные, хранящиеся в памяти, считываются бит за битом. Вре­ менные диаграммы операций чтения и записи представлены на рис. а/ 7.13. Пog"llбepжgeнue г-т---r--т--т--г-т--г--1\ ~~~ Cmopm БumЬI ynpaблeнus:i Аgреснье розроgь Paзps:igь gонн!::jх Hem Бumtj Рис. 7.13. доступе ynpaблeнus:i Аgреснье розроgь Бumi::j уnробленu~ Paзps:igtj nogmбepжgeнuo goннtjx Временные диаграммы операций чтения и записи а - при записи байта, б - при случайном
!272 j 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ На рис. приведена схема модуля 7.14 24LC16B, соединенного с эксперимен­ 01 управляет линией SDA, дан­ через контакт S 1. Контаrп С 1 управляет линией SCL. тальной платой параллельного порта. Контакт ные с которой считываются г-------------------1 1 1 +58 1 2,7К 1 1 +58 SDA 01 S1 GND С1 ВС548 Koнrnaкmi::j на эксперuменmольноо nлame nароллельт-ю20 порта 1 1 1 1 1 1 'GND 1 1 1 1 L-------------------~ Инmерсреос 1 2 С Рис. 7.14. Экспериментальная схема 24LCl 6В Текст программы 2416.PAS на ТР6 Program IIC_memory; (•Программа управления модулем памяти 24LC16B.•) (•Компьютер выступает в качестве ведущего устройства, другие микросхемы ведомые•) (•Соединение с экспериментальной платой параллельного порта. D1=SDA, C1=SCK, S1=SDA.•) I'C: SCL=1, SDA=1· шина не условие SCL=1, SDA=1 - О: условие SCL=1, SDA=O - 1: (•Уело вия шины допустимые данные· ""СТАРт·· ··стоп·· данные постоянны, когда изменение данных: занята когда SCL=1 SCL=O.•) uses cгt,dos; {$1 c:\1oexp\tpl1b1.pas} vаг 1, lJ: integeг, Ыock,address,data:byte; ( •ТРБ программная библиотека I2C Funct1on BCD(data:byte):byte; № 1, преобразование в двоично-десятичный формат (•Преобразование двоичного кода в двоично-десятичный beg1n BCD·=гound((data end; d1v 10)•16+10•frac(data/10)): •) •)
7.3. МОДУЛИ ПАМЯТИ ( * ТРБ программная библиотека I2C № 2, запись данных в линию l273 SDA. *) Procedure SDA(data:byte); SOA. •) (•Помещение данных в линию Ьеg1п wr1te_data_port(P_address, 1-data) епd; ( •ТРБ программная библиотека I'C № 3, Procedure SCL(data:byte); (•Помещение данных в линию SCL.•) управление линией SCL. *) Ьеg1п wr1te_coпtrol_poгt(P_addгess, 1-data); епd; ( •ТРБ программная библиотека I'C № 4, инициализация шины I'C. *) Ргосеduге INП, (•Генерация условия инициализации, SDA=SCL=1.•) begiп SDA(1 ); SCL(1); delay(100), епd; ( •ТР6 программная библиотека Proceduгe I'C N° 5, генерация условия ··стдрт··. *) START; (•Генерация условия ""СТАРТ' . *) Ьеg1п SDA(1); SCL(1); SDA(O); SCL(O); епd; (•ТРБ программная библиотека I'C № 6, генерация тактовых импульсов для подтверждения.•) Ргосеduге АСК, (•Генерация подтверждения и соответствующих тактовых импульсов.•) Ьеg1п SCL(1); SCL(O); епd; ( •ТРб I'C TRANSMIT(data:byte); программная библиотека Ргосеduге № 7, передача данных в шину I2C. *) (•Передача данных через шину.•) vаг i:byte, Ьеg1п fог i:=B dowпto 1 do Ьеg1п SDA( гоuпd (data апd bi t_weight (i) /Ь1 t_weight( l))); (•Помещение данных в линию когда SCL( 1); SCL(O); (•SCL=O - 1 •) ( *SC L=1 - О. * ) епd, SDA(1 ), (•SDA АСК; (•Генерация тактовых импульсов подтверждения.•) епd; становится равным 1.•) SCL=O. *) SDA, J
j274 \ 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ (•ТРб программная библиотека I2C № 8, прием данных от шины I'C") Fuпctioп receive(stop_flag:booleaп);byte; (•Прием данных через шину.•) var i, dummy: byte; begiп dummy:=O; for i:=S dowпto 1 do begin SCL(1 ); ( •SCL становится равным 1. •) delay( 1): dummy:=dummy+(read_status_port(P_address) and 1)•bit_weight(i); (•Считывание данных с линии SDA.•) delay( 1); SCL(O): ( •SCL=1 - О.•) епd; if stop_flag begin SDA( 1); theп (•Если приняты последние данные, то SDA=1") АСК; end else begin SDA(O): (•Если принятые данные еще не последние, то SDA=O для подтверждения.•) (•Генерация тактовых импульсов подтверждения.•) АСК: SDA(1 ); end; recei ve: =dummy; end; ( •ТРб программная Procedure STOP; библиотека I'C № 9, генерация условия "СТОП"") (•Генерация условия "СТОП"") begiп SDA(O): SCL(1); SDA ( 1) ; end; ( •SDA=O") (•SCL=1") ( • SDA=O - 1" ) Procedure Write_ROM_byte (Ьlock,Address,data:byte): (•Запись байта только для чтения, Ыосk и address определяют ячейку памяти.•) Ьеg1п sta rt; (•Генерация условия "СТАРТ"'.•) transm1t(128+32+2•Ьlock); (•Передача битов управления, (=О, t ransmit ( add ress); t raпsm1 t (data): stop: delay( 50); end; RD/WR (•Передача адреса ячейки памяти внутри блока.•) (•Передача данных.•) (•Генерация условия окончания.•) Functioп Read_ROM_byte(Ьlock,Address:byte):byte: begin start; адреса блока и настройка режима записи).•) (•Генерация условия "СТАРТ".•)
7.4. СИСТЕМЫ ОТСЧЕТА РЕАЛЬНОГО ВРЕМЕНИ t 1275 j (•Передача битов управления, адреса блока и RD/WR raпsm1t(128+32+2•Ыосk); (=О, t raпsmit( address); start; настройка режима записи).•) (•Передача адреса ячейки памяти внутри блока.•) (•Генерация условия "СТАРТ".*) (•Передача битов управления, адреса блока и RD/WR traпsmit(128+32+2•Ыock+l); (=1, настройка режима чтения).•) (•Прием данных.•) Read_ROM_byte:=receive(true); stop; (•Генерация условия ·стоп-.*) епd; Procedure test_write_read; begiп write('Select а memory Ыосk (0, 1, 2 and 3): · ); readlп(Ыock); write( ·select ап address in the Ыосk (0-255): · ); readlп(address); wrlte( ·rпput the data to Ье written to ROM: · ); readlп(data); write_ROM_byte(Ьlock,address,data); wri telп; writeln (' The da ta wri tteп to the ROM: ', read_ROM_byte( Ыосk, add ress)); writeln( 'Press опе RETURN to coпtiПLle апd two RETURN to stop· ); read1п; de lay( 4000); епd: (•Главная программа.•) begin centron1c_address; repeat cerscr; Test_write_read; uпtil keypressed; епd. 7.4. Системы отсчета реального времени Микросхемы отсчета времени - обязательный компонент систем управления внеш­ ними объектами в реальном масштабе времени. Такие микросхемы, как правило, состоят из автономной схемы отсчета времени/даты и интерфейсных схем сопря­ жения, которое обычно осуществляется через параллельную шину, имеющую во­ семь разрядов для данных и несколько линий управления. В качестве примера можно привести микросхемы HD146818 и MSM6242. В последнее время появи­ лись новые типы ИС этого класса, например МК41Т56 и PCF8573, поддержива­ ющие работу с шиной 12С. Количество линий ввода/вывода в них существенно меньше. Мпкросхема МК41Т56 (SGS-Thoшson) емом памяти 512 - это маломощный хронометр с объ­ бит, которые организованы в 64 байтовых слова. Первые восемь байт используются для хранения значения времени и даты. Устройство поддер­ живает работу с шиной 12С в качестве ведомого устройства. Микросхема постоян­ но следит за напряжением питания: если оно падает ниже определенного уровня, передача данных блокируется, что предотвращает запись ошибочной информации. При использовании-литиевой батареи на ных превышает 10 лет. 3 В, емкостью 30 мЛ.ч, срок хранения дан­
!276 I 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ Назначение выводов и внутренняя блок-схема приведены на рис. ты 8 и 4 соединены тания на +5 В 7.15. Контак­ с положительным и отрицательным проводами источника пи­ Секунgr> Генератор 32 768кГ ц Делumель МuнуmЬ' ЧОСD ДенD Дота Сброс Схема уnробленu):I numoнu):I Mec):lu Гоg Уnробленuе Уnробл):lющо\:1 Pe2ucmp л огuко ogpeco ббоgо/ ОЗУ (56х8) бr>боgо Рис. 7.15. Назначение выводов и внутренняя блок-схема МК41 Т56 Устройство потребляет ток 3 мА в активном режиме и 1 мА в режиме ожида­ (SDA = SCL = 1). Входы OSCO и OSC1 соединены с кварцем 32,768 МГц. SCL - это линия синхронизации, а SDA - двунаправленная линия данных шины РС. FT/OUT- выход проверки частоты. После записи во внутренний регистр ния микросхемы соответствующего управляющего слова на выходе появляется пря­ моугольный сигнал частотой 512 Гц. Этот выход может использоваться как про­ граммно управляf'МЫЙ. Функции 64 байт ячеек памяти таковы: адрес=О регистр секунд (биты адрес= 1 регистр минут (биты адрес=6 0-6, 00-59, двоично-десятичный формат) 0-6, 00-59, двоично-десятичный формат) регистр часов (биты 0-5, 00-23, двоично-десятичный формат) регистр дней (биты 0-2, 01-07, двоично-десятичный формат) регистр чисел (биты 0-5, О 1-31, двоично-десятичный форма1) регистр месяцев (биты 0-4, 01-12, двоично-десятичный формат) регистр лет (биты 0-7, 00-99, двоично-десятичный формат) адрес=7 регистр управления (см. далее) адрес=8-G3 ОЗУ адрес=2 адрес=3 адрес=4 адрес=5
7.4. СИСТЕМЫ ОТСЧЕТА РЕАЛЬНОГО ВРЕМЕНИ 1277 / Функции битов регистра управления определены следующим образом: бит бит бит управление выходом, О или 7 6 5 биты бит проверки частоты (если 1 1, проверка частоты) знаковый бит 4-0 не используются Данные можно считать или записать в микросхему по шине РС. Операция запи­ си устанавливает значения времени и даты. Операция считывания извлекает из нее данные. После генерации условия «СТАРТ» в память микросхемы заносятся 8 бит данных из ведущего передатчика. Адрес ведомой микросхемы имеет следующий формат (старший разряд слева): 1, 1, О, 1, О, О, О, стоянный адрес хронометра на шине. Бит пись (R/W =О) или чтение (R/W = 1). Эти биты составляют по­ R/W. определяет тип операции R/W - за­ Когда адрес ведомой микросхемы пере­ дан, в нее посылается адрес, определяющий конкретную ячейку памяти. Он записывается в регистр адреса и принимает значения от О до записи передаются 8 бит 64. Затем в режиме данных, которые и помещаются в указанную ячейку па­ мяти. После этого в режиме чтения снова генерируется условие «СТАРТ», потом передаются биты адреса ведомой микросхемы, где бит R/W установлен в 1. И на­ конец, считываются данные, хранящиеся в указанной ячейке памяти. Временные диаграммы работы ИС представлены на рис. 7.16. а) Старт Cmon ' ' О>А 1 ~----~1 Agpecнt1e розряgt1 беgомого Agpecнt1e : розряgt1 Разр~gЬ' gоннЬ1х ОсmольнЬ'е бumЬ' 1 R/W gаннЬ'х 6) Cmon Cmopm ' ' О1А 1 ----~1 Agpecнt1e разряgt1 : беgомо20 Рис. 7.16. Agpecнt1e ~----~, розряgt1 Agpecнt1e розряgt1 беgомого 1 R/W Разр~gЬ' : gаннЬ'х 1 R/W Временные диаграммы работы МК41 Т56: а - запись; 6 - чтение Схема соединения МК41Т56 с экспериментальной платой параллельного пор­ та показана на рис. 7 .17. Контакт D 1 управляет S1. Контакт считываются при помощи контакта Текст программы 4156.PAS линией SDA, данные с которой С1 управляет линией на ТР6 Program IIC_t1mer, (•Программа управления хронометром МК41Т56 •) (•Компьютер выступает в качестве ведущего устройства, другие микросхемы ведомые•) (•Соединение с экспериментальной платой параллельного порта: 01 = SDA, С1 = SCK, S1 = SDA •) SCL.
l278 / 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ г-------------------1 1 : 1 1 1 2,7К +58 +58 SDA D1 S1 1 1 1 GND ~------:----i 1 1 SCL 1 1 1 1 С1 Конmокm~ но эксnерuмен mольноО nлome ВС548 1 1 1 1 1 GND 1 nороллельно20 1 1 порто 1 1 L-------------------~ Инmep<jJeOc 12 С Рис. 7.17. Экспериментальная схема МК41 Т56 I2C: SCL=1, SDA=1: SCL=1, SDA=1 - О· SCL=1, SDA=O - 1: (•Условия шины шина не занята условие "СТАРТ" условие 'СТОП" допустимые данные: данные постоянны, изменение данных· когда когда SCL=1 SCL=O •) uses crt,dos, {$1 c:\1oexp\tplib1\pas} var 1, lJ: iпteger, secoпd,m1пute,hour,day,date,moпth,year,coпtrol_word·byte; ( •ТР6 программна11 библиотека Fuпctioп I2C № 1, преобразование в двоично-десs~тичный формат *) BCD(data.byte)·byte, (•Преобразование двоичного кода в двоично-десятичный.•) beg1n BCD:=rouпd((data d1v 10)•16+10•frac(data/10)); епd; (•ТР6 программная библиотека l 2C № 2, запись данных в линию SDA.•) Procedure SDA(data.byte); (•Помещение данных в линию SDA.•) Ьеg1п wrlte_data_port ( Р _add ress, 1-data), епd; (•ТР6 программная библиотека I2C № Procedure SCL(data·byte); (•Помещение данных в линию SCL •) 3, управление линией SCL. •)
7.4. СИСТЕМЫ ОТСЧЕТА РЕАЛЬНОГО ВРЕМЕНИ l279 I begiп write_coпtrol_port(P_address, 1-data): епd: ( •ТР6 программная библиотека I2C № 4, инициализация шины I2C. •) Procedure INIТ: (•Генерация условия инициализации, SDA=SCL=1. •) begiп SDA(1); SCL(1): delay(100); епd; ( • ТР6 программная библиотека I2C № 5, генерация условия "СТАРТ"") Procedure START: (•Генерация условия "СТАРТ".•) begiп SDA(1): SCL(1); SDA(O); SCL(O); епd; (•ТР6 программная библиотека Ре № Procedure 6, генерация тактовых импульсов для подтверждения.•) АСК; (•Генерация подтверждения и соответствующих тактовых импульсов.•) Ьеg1п SCL(1); SCL(O); епd; ( •ТРб программная библиотека I 2C № 7, передача данных в шину l2C *) Procedure TRANSMIT(data:byte): (•Передача данных через шину.•) var 1: byte; Ьеg1п dowпto for i:=B 1 do begiп SDA(rouпd(data апd b1t_weight(1)/b1t_we1ght(1))); (•Помещение данных в линию когда SCL(1): SCL(O); (•SCL=O - 1. •) (•SCL=1-0.•) епd; становится равным SDA(1 ); (•SDA АСК; (•Генерация тактовых импульсов подтверждения.•) 1 •) епd: ( • ТРб программная библиотека I2C № 8, прием данных от шины I2C. •) Fuпct1oп rece1ve(stop_flag:booleaп);byte; (•Прием данных через шину.•) var i,dummy:byte; begiп dummy: =О; for i:=B dowпto 1 do begiп SCL(1 ): delay( 1); (•SCL становится равным 1.•) SCL=O. •) SDA,
12so] 7. СОПРЯЖЕНИЕ КОМПЬЮПРА с ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ dummy:=dummy+(гead_status_poгt(P_addгess) апd (*Считывание данных с линии delay( 1); SCL(O); (*SCL=1 - 1)*blt_we1ght(i); SDA. *) О.•) епd; if stop_flag theп Ьеg1п SDA(1); (*Если принRты последние данные, то SDA=1. *) АСК; епd else Ьеg1п SDA(O); (•Если nринRтые данные еще не последние, то АСК; ( * ГенерациR SDA=O *) длR подтверждениR.*) тактовых импульсов подтверждениR. SDA(1 ); епd; гeceive:=dummy; end: ( *ТР6 программнаR библиотека Ргосеduге I2C № 9, генерациR условиR "СТОП".*) STOP; ( * ГенерациR условиR "СТОП".*) begiп SDA(O); SCL(1); SDA(1); end; (•SDA=O.•) (•SCL=1.•) (•SDA=O - 1. *) ргосеduге iп1t_t1me; (·~нициализациR времени.•) begiп wг1te( ·rпput secoпd: · ): minute: · ); initial houг: · ); iпitial day: ·); ini tial date: · ) ; iпitial moпth: · ); in1t1al геаd ( secoпd); wгite("lпput iпit1al гead(m1nute): wгite( гead(houг): · Iпput wгlte( · Iпput wгi te( · Iпput wгite( 'Iпput гead(day); гead(date); гead(moпth); wгite('lпput iпitial уеаг:·); wгite( ·rпput initial геаd(уеаг); contгol woгd: · ); геаd ( сопt го l_wo гd); епd; ргосеduге iпit_41T56(second,m1nute,houг,day,date,month,yeaг,contгol_word: (*Установка значениR секунд, минут, часов, днR недели, числа, begiп tгaпsm1t(O); ( •ГенерациR условиR "СТАРТ".*) (*Передача подчиненного адреса, R/W=O.*) (•Смещение указателR на адрес 9.*) tгaпsmit(BCD(second)); (•Передача секунд.*) staгt; tгansmlt(208); tгaпsm1t(BCD(m1пute)); t гaпsmi t( BCD( hou г)): (*Передача минут.•) ( * ..... *) tгaпsmit(BCD(day)); t гaпsmi t( BCD(date)); traпsmi t ( BCD(moпth)); tгansmit(BCD(yeaг) ); t гaпsmi t( BCD( сопt гol_woгd)); епd; byte); месRца и года.•)
7.5. ГЕНЕРАТОРЫ СИГНАЛОВ С ЦИФРОВЫМ УПРАВЛЕНИЕМ / 281 1 fuпctioп MK41T56(x:byte):real; var data:array[1 .. 500] of byte; Ьеg1п start; traпsmit(208); (•Генерация условия ··стдРГ. *) (•Передача подчиненного адреса, R/W=O. *) traпsmit(O); (•Смещение указателя на адрес О•) start; (•Новая генерация условия ··стдРГ для чтен1:1_я. traпsmit(208+1); (•Передача подчиненного адреса for i:=1 to 6 do data[1]:=receive(false); data[7]:=rece1ve(true); (•Считывание данных *) 208+1 D, R/W=1.•) (•Считывание данных с подтверждением.•) без подтверждения.•) (•При чтении адрес регистра увеличивается автоматически.•) (•Преобразование данных в формат времени.•) if if if if if if if х=1 theп х=2 theп MK41T56:=data[1] MK41T56:=data[2] апd апd х=З theп MK41T56:=data[З] апd х=4 theп х=5 theп х=б theп х=7 theп MK41T56:=data[4] MK41T56:=data[5] MK41T56:=data[6] MK41T56:=data[7] апd апd апd апd (64+32+16)/16•10+data[1] апd (8+4+2+1); (64+32+16)/16•10+data[2] апd (8+4+2+1); (32+16)/16•10+data[З] and (8+4+2+1): (4+2+1); (32+16)/16•10+data[5] апd (8+4+2+1); (32+16)/16•10+data[6] апd (8+4+2+1); (128+64+32+16)/16•10+data[7] and (8+4+2+1); епd; procedure show_time; Ьеg1п writelп(" Inter IC bus 41Т456 Тimег· ); wri telп; write( ·rпput initial second: · ); writelп(MK41Т56(1):5:0); write( ·rnput initial minute: · ); writeln(MK41Т56(2):5:0); write( ·rпput initial hour: · ); writelп(MK41Т56(3):5:0); write("Iпput initial day: · ); writelп(MK41Т56(4):5:0); write("Iпput initial date: · ); wr1telп(MK41Т56(5) 5:0); write("Iпput initial moпth: · ); writelп(MK41Т56(6):5 О); write('Iпput initial уеаг: · ); writelп(MK41Т56(7):5:0); епd; begiп centronic_add ress; iпi t_ time; iп i t; ( • flнициал изация линий SCL и SDA. *) in1t_41T56(secoпd,miпute,hour,day,date,moпth,year,coпtrol_word); repeat clrscr; show_ time; delay( 10000); uпtil keypressed; end. 7.5. Генераторы сигналов с цифровым управлением Генераторы сигналов с цифровым управлением позволяют формировать цифро­ вые и аналоговые сигналы с частотой, устанавливаемой цифровой схемой управ­ ления. Микросхемы 8253/8254 - это интегральные таймеры/счетчики, которые широко используются для генерации цифровых сигналов. Микросхемы и ML2036 - программируемые генераторы синусоидальных колебаний. HSP45102
j 2a2 I 7.5.1. 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ Программируемый таймер/счетчик Микросхема (рис. 7.18) 8254 снабжена тремя 16-разрядными программируемыми счетчиками, каждый из которых имеет по три линии ввода/вывода: и OUTPUТ. На вход GATE CLK, GATE CLK подается тактовый сигнал частотой от О до 8 МГц. Вход управляет запуском и остановкой счетчика. Если на этот вход поступает сигнал высокого уровня, то счетчик включается. На выходе О UTPUT появляется выходной сигнал счетчика. Режимы работы микросхемы задаются с помощью восьмиразрядной двунаправленной шины данных и пяти линий управления (АО, А1, WR, RD и CS). Данные записываются в четыре внутренних регистра: Буq>ер gоннt:йх Счеmчuк О Логuко чmенuо/ Счеmчuк 1 Счеmчuк 2 зonucu Peгucmp уnробленuо GND Рис. Vcc 7.18. Назначение выводов и внутренняя блок-схема 8253/8254 регистр
7.5. ГЕНЕРАТОРЫ СИГНАЛОВ с ЦИФРОВЫМ УПРАВЛЕНИЕМ 12sз 1 управления и три регистра счетчиков. Состояние входов АО и А1 для выбора кон­ кретного регистра можно охарактеризовать следующим образом: о АО= О, А1 =О - выбор регистра счетчика 1; = 1, А1 = О - выбор регистра счетчика 2; АО = О, А1 = 1 - выбор регистра счетчика 3; АО= 1, А1 = 1 - выбор регистра управления. о АО о о Перед использованием счетчики необходимо настроить посредством записи управляющего слова в регистр управления. Функции битов управляющего слова показаны ниже. Биты бит бит бит бит 7 = О, 7 = О, 7 = 1, 7 = 1, Биты бит 7 (SC1) 6=О 6= 1 6=О 6= 1 бит бит бит 5 (RW1) и и 6 (SCO) выбирают настраиваемый счетчик: настройка счетчика О настройка счетчика настройка счетчика 1 2 команда считывания 4 (RWO) управляют форматом чтения и записи каждого регис­ тра счетчика: бит бит бит бит 5 = О, 5 = О, 5 = 1, 5 = 1, Биты бит бит бит бит 4= О 4= 1 4= О 4= 1 3 (М2), 2 (М1) команда загрузки счетчика чтение/запись только младшего байта чтение/запись только старшего байта чтение/запись сначала младшего, затем старшего байта и 1 (МО) управляют выходными режимами. Всего сущест­ вует шесть выходных режимов: бит бит бит 3 = О, 3 = О, 3 = х, 3 = х, 3 = 1, бит 2 = О, 2 = О, 2 = 1, 2 = 1, 2 = О, бит 3 = 1, бит 2 бит бит бит бит бит бит бит режим О бит 1= О 1= 1 1= О 1= 1 1= О О, бит 1= 1 режим бит бит бит - генерация фронта 1 - одновибратор режим 2 - генератор с изменяемой скважностью режим 3 - генератор прямоугольных импульсов режим 4 - генератор программного строб-им­ режим пульса = 5 - генератор аппаратного строб-им­ пульса Бит О настраивает формат данных в регистрах счетчиков: О 1- 16-разрядный двоичный счетчик 4-разрядный двоично-десятичный счетчик Чтобы записать данные в микросхему, необходимо подать информацию на вхо­ ды DO- D7 и АО и А1 для выбора регистра. Затем по отрицательному импульсу WR данные загружаются в выбранный регистр. Во время операции не­ обходимо, чтобы на входе CS был низкий уровень сигнала, иначе микросхема на входе будет заблокирована. Каждый счетчик няется на рис. 7.19. 8254 имеет шесть выходных режимов, работа которых пояс­
1284 j 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ а) г) CW=10 LSE3=4 CW= 16 LSB=4 CLK J GATE ! 1 1 1 ~~~~~~!_4~~3~-2~---' OUT 6) о оuт д) CW=12 LSB=3 CW=18 LSB=3 WR~ WR 1 CLK GATE CLK l п 3 OUT в) 2 о FF е) 3 Рис. 7.19. 3 OUT CW= 14 LSB=3 OUT 1 1 1 1 GATE 2 1 1 ! 1 1 ~ CW=1A LSB=3 2 Выходные режимы 8254 а - генератора фронта, 6 - одновибратора, в - генератора импульсов с изменяемой скважностью, г - генератора прямоугольных импульсов, д - генератора программного строб-импупьса; е - генератора аппаратно-программного строб-импульса Режим генератора фронта (режим О, рис. 7.19а) используется для генерации прерывания на выходе по истечении определенного промежутка времени. После записи в регистр управления управляющего слова числа 10 (десятичное) на вы­ ходе счетчика О устанавливается низкий уровень. Когда количество тактовых импульсов на единицу превысит значение, записанное в счетчик, на его выходе появляется сигнал высокого уровня.
l2ss \ 7.5. ГЕНЕРАТОРЫ СИГНАЛОВ с ЦИФРОВЫМ УПРАВЛЕНИЕМ Режим од11овибратора (режим 1, рис. 7.19б) применяется для генерации отри­ цательного импульса. Длительность периода времени, когда на выходе счетчика удерживается низкий уровень, зависит от частоты тактовых импульсов и числа, записанного в счетчик. Режим генератора импульсов с изменяемой скважностью (режим Если в счетчик записано число ся через N N, то сигнал низкого уровня 2, рис. 7.19в). на его выходе появит­ тактов. На следующем такте сигнал на выходе счетчика снова станет единицей. Таким образом, счетчик работает как генератор импульсов с частотой, равной тактовой частоте, деленной на N. Режим генератора прямоугольных импульсов (режим 3, рис. 7.19г). Если в счет­ чик записано четное число, то на выходе будет сигнал прямоугольной формы со скважностью 50%. Частота сигнала равна таю.рвой частоте, деленной на число, которое записано в счетчик. Если записанное число нечетное, то длительность единицы будет на один тактовый интервал больше, чем длительность нуля. Режим генератора программного строб-импульса (режим 4, рис. 7 19д). В этом режиме значение счетчика автоматически уменьшается сразу после записи в него начального значения, причем скорость уменьшения равна тактовой частоте. Как только значение счетчика достигает нуля, он вырабатыв;~ет отрицательный им­ пульс длительностью, равной длительности тактового импульса. Таким образом, импульс появляется через N+1 тактов после записи в счетчик числа Режим аппаратно генерируемого строб-импульса (режим гичен режиму 4, 5, N. рис. 7.19е) анало­ однако начало обратного отсчета инициируется положительным импульсом на входе GATE. По положительному фронту импульса на входе GATE начинается процесс отсчета. Со следующим тактовым импульсом значение счет­ чика уменьшается, а когда оно достигает нуля, на выход OUT поступает отрица­ тельный импульс длительностью, равной длительности одного тактового импуль­ са. Таким образом, на выходе подачи на вход GATE OUT импульс появляется через N+1 тактов после сигнала высокого уровня. На рис. 7.20 изображена схема на основе программируемого таймера/счетчика 8254, подключенного к экспериментальной плате параJ1лельного пор га. Контакты D 1 и D2 на плате предназначены для последовательного ввода данных в регистр сдвига 74LS164, с восьмиразрядного параллельного выхода которого данные по­ даются в микросхему 8254. Контакты D5, D6, D7 и D8 соединены с входами WR, А1, АО и CS. Для опытов используется счетчик 2. На вход CLK2 подаегся тактовый сигнал, на вход GATE 2 - сигнал высокого уровня для разблокирования счетчика. Про­ грамма на языке ТР6 переводит счетчик в режим генератора прямоугольного на­ пряжения. Частота сигнала устанавливается программно. Текст программы 8254.PAS Program m1n1_s1g_generator, (•Программа управления таймером/счетчиком 8254 •) (•Соединение с экспериментальной платой параллельного порта 01=данные, 05=WR, 74LS164, D8=CS для 8253 •) 02=такты для Об=А1, 07=АО и
j 286 I 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ +58 06 07 08 8254 05 о r CLKO i ~ оuто ~l GATEO -r 1~ с; 01 l CLK1 GATE1 оuт1 Bxog 02 mакmuоующе20 -- CLK2 GNO Koнmoкmt:::i1 OUT2 но +58 GATE2 эксnерuменmольноL. nлome nоролrельного 12>-----~ nopmo Bt:::i1xog mокmuрующес:о сu2ноло с uлu Рис. сuгноло coeguн~emcs:i осuuллогроq:юм чосrrюmомером 7.20. Схема на базе программируемого таймера/счетчика 8254 uses dos,crt, {$I с \1oexp\tpl1b1 pas} const base_frequency=2457600, (•Частота тактового сигнала 8254 •) var command byte, output_f requency long1nt, pгocedure setb1t(b1tnumbeг, b1tvalue byte), b1tnumber=1-8 b1tvalue=O beg1n if b1tvalue=1 then command =command or b1t_we1ght(b1tnumber), lf b1tvalue=O then command =command and (255-b1t_we1ght(b1tnumber)), end, (•Установка значения определенного бита команды procedure in1t1al1zat1on, (•Установка всех линий в 1 •) или 1 •)
7.5. ГЕНЕРАТОРЫ СИГНАЛОВ С ЦИФРОВЫМ УПРАВЛЕНИЕМ Ьеg1п command: =127; write_data_port(P_address,com~aпd); (•Ввод команды в порт данных.•) output_frequeпcy:=1000; епd; procedure loaddata(address,data:byte); (•Загрузка данных в регистр сдвига 74LS164 и запись в 8254, address выбирает счетчик (0-2), регистр управления data определяет в данные для записи регистры. (1) в 00 загружаются данные sw[i] (2) на 01 (CLOCK) подается перепад 0-1-0 (4) 07 (CS) = О для разблокирования ИС (5) в 06 и 05 (АО и А1) должен быть загружен ( 6) на 04 ( WR) подается перепад 1-0-1, после 04 все время должно быть равно 1.•) Во время загрузки необходимый адрес загрузки var d: аггау[ 1.. 8] of byte; i,AO,A1:byte; begiп if address=O if address=1 theп begiп АО:=О; А1:=0; епd; theп begiп А0:=1; А1 :=О; епd; if address=2 if address=З theп Ьеg1п АО:=О; А1 :=1; епd; theп Ьеg1п АО:=1; А1:=1; епd; (•Определение битов данных для последовательной передачи в 74LS164.•) for i:=8 downto 1 do begiп d[ i]: =О; if data>=bit_weight(1) theп Ьеg1п data:=data-bit_weight(i); d[ i]: =i; епd; епd; (•Загрузка данных в регистры 74LS164.*) for i:=1 to 8 do begiп setbit( 1, d[ i]); write_data_port(P_address,commaпd): setbit( 2, О); write_data_port ( P_add ress, commaпd); write_data_port(P_address,commaпd); setbit(2, 1): write_data_port(P_address,commaпd); setbit(2, 0): епd: (•Занесение данных в ИС setbit( 7, АО): setblt(6,A1); setblt(5, О); setbit(5, 1): 8254.•) write_data_port(P_address,commaпd); wri te_data_port( Р _add ress, commaпd); write_data_port(P_address,commaпd); епd; procedure sigпal_generator(base_frequeпcy, frequeпcy:loпgiпt); (•Настройка счетчика 2 в режим var divisor:loпgint: high_byte_O,low_byte_O:byte; 3- режим генератора сигналов.•) l287 \
l2ss I 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА с ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ begin divisor:=round(base_frequency/frequency); high_byte_O:=div1sor div 256; low_byte_O:=divisor mod 256; if divisor>65000 then writeln('Error in delay time· ); loaddata( З, $Ь6); (•Загрузка управляющего слова.•) loaddata(2,low_byte_O); (•Загрузка младшего байта.•) loaddata(2,high_byte_O); (•Загрузка старшего байта.•) end; procedure test_825З; begin write( ·rnput output frequency [Hz] (О to quit): · ); readln (output_ f requency); signal_generator(base_frequency,output_frequency); end; (•Главная программа.•) beg1n centronic_address; initialization; repeat if output_frequency>O then until output_frequency=O; end. 7.5.2. test_825З Генератор с числовым программным управлением Микросхема HSP45102 (Harris Semiconductor, RS284-977) - HSP45102 это генератор с чис­ ловым программным управлением, который последовательно выдает 12-разряд­ ный двоичный код, представляющий собой значения синусоидальной функции за один период. Частота и фаза колебания задаются программно. Частота сигна­ ла определяется одним из двух предустановленных 32-разрядных слов, которые объединены в один 64-разрядный регистр. Слово, указывающее выходную час­ тоту, выбирается с помощью входа управления SEL_ L/M. Фаза сигнала зависит от состояния входов РО и Р1, которые устанавливают начальный сдвиг фазы 90°, 180° и Назначение выводов и внутренняя блок-схема приведены на рис. (контакты 0°, 270°. 8 и 22) и GND (контакты 7, 15 и 21) 7.21. Входы Vcc соединены с положительным и ну­ левым проводами источника питания. Напряжение питания +5 В. Потребляемый - 500 мкА. CLK (кон­ такт 16) - это вход тактового сигнала. Максимальная тактовая частота 33 МГц. SCLK (контакт 14), SD (контакт 13), MSB/LSB (контакт 11) и SFTEN (кон­ такт 10) - входы секции управления частотой. SCLK и SD - тактовый вход и вход последовательных данных. Данные на входе SD сдвигаются во внутренние реги­ стры микросхемы по положительному фронту импульсов SCLК. SFTEN - это ток в активном режиме равен 99 мА, а в режиме ожидания вход разрешения сдвига. Для разрешения сдвига данных на него необходимо по­ дать низкий уровень. Если MSB/LSB = 1, то первый сдвигаемый бит интерпре­ тируется как старший, если О - как младший. Значение генерируемого гармони­ ческого колебания можно вычислить по формуле: Выходная частота (Гц) ~ N х Fclk/2 32 ,
_ _ _ _ _ _ _ _ _ _ _7_._5_.Г_Е_Н_ЕРАТОРЫ СИГНАЛОВ С ЦИФРОВЫМ УПР_~ВЛЕНИЕМ i289] РО, ~--~32 CxeJVo Аккумvл>-1mор усmонобкu ПЗУ qюзd чocmomd 13 32 23 28~ OUTO SEL_L(М 9 ~-----------~ ~--------------< 8, 22 Vcc Рис. где 7.21. N- оuт11 7, 21 15 >------~ GND Назначение выводов и внутренняя блок-схема генератора HSP45102 число, записанное в выбранное слово установки частоты, а Fclk - частота тактового сигнала. LOAD (контакт (контакт 9) - 18), TXFR (контакт 17), ENPHAC (контакт это управляющие входы аккумулятора фазы. аккумулятор фазы, SEL_ L/M устанавливает слово выбора частоты. Если па пего подан сигнал высокого уровня, то указываются младшие го регистра частоты, а если низкого Если на входе - 32 разряда 64-разрядно­ старшие. TXFR низкий уровень, то слово выбора частоты, определенное SEL_L/M, rrередастся из регистра частоты во входной рсшстр акку­ фазы. Входы РО (контакт 20) и Р1 (контакт 19) - это входы установки значением мулятора 12) и SEL_L/M ENPHAC открывает
l290 J 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ фазы, с помощью которых можно задать сдвиг фазы 0°, 90°, 180° и схема имеет 12-разрядную выходную шину данных (контакты 270°. Микро­ 1-6, 23-28). Значения данных находятся в диапазоне OOOh-FFFh, нулевой уровень гармоничес­ кого колебания соответствует коду 800h. Для преобразования 12 бит данных в ана­ логовый сигнал необходимо использовать ЦАП. Схема на базе генератора HSP45102 изображена на рис. 7.22. Контакты D1 и С1 SD и SCLK микросхемы HSP45102, вывод CLK на плате соединены с выводами (контакт 16) - с выходом тактового генератора. Восемь старших разрядов выход­ ной шины данных микросхемы (выходы О UT разрядному ЦАП ZN428E. 4- О UT 11) подключены к восьми­ Остальные четыре выхода не используются. Управляю­ щие входы соединены либо с «землей», либо с проводом +5 В. Выходной сигнал ЦАП (гармоническое колебание) можно наблюдать на экране осциллографа. Текст программы 45102.PAS на ТР6 Program HSP45102, (•Программа управления для генератора HSP45102 •) Bxog mокmuрующеео СU?.НОЛО Рис. 7.22. Схема с использованием генератора HSP45 l 02 Bt>xog онолоеобоео ноnр~женu~. с соеguненн~о осuuллогроq:юм
7.5. ГЕНЕРАТОРЫ СИГНАЛОВ С ЦИФРОВЫМ УПРАВЛЕНИЕМ l291 j (*Соединение с экспериментальной платой параллельного порта: 01 uses соединен с SD, С1 .- с SCLK.•) cгt,dos: {$1 c:\ioexp\tplib1.pas} vаг output_frequeпcy:real; ргосеduге load_frequeпcy(frequency:гeal); (•Загрузка значения частоты в регистр частоты генератора.•) (•Значения частоты приведены в герцах.•) var i, j , k: byte: Ьуtех:аггау[1 .. 4] of byte; п:loпgiпt; begin n:=round(frequency•256•256•256•256/2.457e6): (•Преобразование п в четыре восьмиразрядных байта bytex[1] - bytex[4].•) bytex[4]:=round(п/256/256/256); n:=n-bytex[4]•256•256•256; Ьуtех[З]: =round ( п/256/256); n:=n-bytex[3]•256•256; bytex[2]: =round( n/256): n:=n-bytex[2]•256; bytex[ 1]: =round ( n); (•Загрузка первых 32 бит данных.•) fог i:=1 to 4 do begiп fo г j: =1 to 8 do begin write_data_poгt( Р _add ress, гоuпd( bytex[ i] and bit_weight(j )/bi t_weight(j))); write_control_port(P_address,O); write_coпtгol_port(P_addгess, 1); write_contгol_poгt(P_addгess,O); епd; епd; (•Загрузка вторых fог 32 бит данных.*) i:=1 to 4 do Ьеg1п fог j: =1 to 8 do Ьеg1п wri te_data_poгt (Р _add ress, rouпd( bytex[ i] write_coпtгol_port(P_address,O); write_coпtrol_poгt(P_addгess, 1); write_coпtrol_poгt(P_addгess,O); епd; end; епd; test_45102; begin write(' Input output frequency [Hz] (0 to quit): · ); геаd ln (output_ f геquепсу); proceduгe load_frequency(output_fгequency); end; апd bit_weight( j )/bit_weight( j)));
l292 j 7. СОПРЯЖЕНИЕ КОМПЬЮТЕРА С ДРУГИМИ ЦИФРОВЫМИ УСТРОЙСТВАМИ beg1n centron1c_address, repeat test_45102, unt1l output_frequency=O, end 7.5.3. Программируемый генератор синусоидальных колебаний ML2036 Микросхема ML2036 (Micro Linear) представляет собой генератор синусоидальных колебаний, который формирует гармонический сигнал частотой от О до 50 кГц при помощи нескольких дополнительных элементов обвязки. Управляющие данные загружаются в ИС последовательно по положительному фронту тактового им­ пульса. С восьмиразрядного ЦАП аналоговый сигнал поступает на ФНЧ, кото­ рый нужен для улучшения формы гармонического колебания, подаваемого на выход микросхемы. Генерируемое колебание имеет амплитуду ±Vref или ±0,5Vref в зависимости от настройки управляющих входов. При использовании кварца на 4,1943 МГц генератор может выдавать сигнал частотой от 0,5 Выходная частота вычисляется по следующей формуле: Выходная частота (Гц)~ часто га х где N- N/8388680, число, записываемое в счетчик микросхемы ML2036. Гц до 32,768 кГц.
8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ И УДАЛЕННЫЙ ДОСТУП Глава посвящена вопросам дистанционного управления компьютером, а также сетевым приложениям. Приводится описание электронных устройств, осущест­ вляющих обмен цнфровыr-.ш данными с помощью средств радиосвязи. 8.1. Телекоммуникационные схемы Микросхема РСDЗЗ 11 С (Pliilips Seшiconductors, RS273-545) генерирует двухто­ DTMF или несущие частоты для модемов (рпс. 8.1). Она питается от источника + 5 В и потребляет ток 0,9 мА. Ток в режиме ожидания составляет всего 3 мкА. нальные частоты в формате Встроенный тактовый генератор с кварцевой стабилизацией частоты требует наличия внешнего кварца на и OSCO. 3,58 МГц, который подключается к выводам OSC1 Микросхема соединяется с компьютером через параллельный порт или шину РС. Если на вход MODE (режим) подать сигнал высокого уровня, то ИС начнет работать через параллельную шину; если же оставить вход неподключен­ ным или подать низкий уровень, будет использоваться шина РС. Выходной сиг­ нал с выхода TONE фильтруется посредством встроенного фильтра с управляемыми конденсаторами и активного RС-фильтра нижних частот. Благодаря встроенному ис­ точнику опорного напряжения выходной сигнал шvеет уровни напряжения от 190 мВ ( средпеквадратическое 150 до значение). В режиме параллельного обмена данными PCD3311C настраивается с помо­ DO - DS. Данные на ука­ щью управляющего слова, записываемого через входы занные входы должны подаваться до появления положительного фронта на вхо­ де STROBE. По отрицательному фронту этого импульса информация заносится в микросхему, а на выходе TONE формируется выходной сигнал. Сигнал на вы­ ходе остается неизменным до прихода следующего отрицательного фронта на вход STROBE. Временные диаграммы работы микросхемы показаны на рис. 8.2.
/ 294 \ 8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ И УдАЛЕННЫЙ ДОСТУП OSC1 osco Vdd >-------------<16 Формuробоmело mакmоб Vss 151-----~ • RC-cpuлomp нuзкuх 7 Тон частот Cmpoб­ uмny!lьc '--------i81--------------------------' АО Входы (DTMF D5 и D4 выбирают режимы работы, а DЗ - DO - комбинацию частот или несущие частоты для модемов). Микросхему PCD3311C можно подключить к экспериментальной плате парал­ лельного порта для получения системы набора телефонного номера на базе ПК. При этом выводы DO - D5 необходимо соединить с контактами D 1 - D6, а вход STROBE - 8.2. с контактом С1. Интегральные схемы модемов Микросхема ТСМЗ 105 (Texas Instruments) - это модем с частот1юй мщшпуляцuей (ЧМ), функционирующий в полосе стандартного телефонного канала (рис. 8.3). Модем работает в дуплексном режиме. Передатчик представляет собой програм­ мируемый синтезатор частот, который формирует две частоты, соответствующие
8.2. ИНТЕГРАЛЬНЫЕ СХЕМЫ МОДЕМОВ j295 "загрузка Загрузка 1 Сmроб-uмnульс I Загрузка 1 1 - DO \~-~--/ D1 _ / 02\~~~/ \~--+--'! D3 D4\ / \~_.....__,/ ~-----~ D5 1 r Генераr~ор ' бt:Jключен Тон Рис. О и 8.2. 1 Генератор Включен : Hem бt)хаgнаго сuенала Генератор Включен Ecm~ бl'jxogнoa СU2НОЛ Л Л -----.,----------+--------..,..---- V V- Временные диаграммы режима параллельного обмена данными 1 двоичного кода. Приемник демодулирует входной аналоговый сигнал и вы­ дает на выход либо О, либо 1в зависимости от входной частоты. Напряжение источника питания равно +5 В, потребляемый ток - 5,5 мА. К вы­ OSC1 и OSC2 подсоединен кварц на 4,4336 МГц. С помощью входов TXR1 и TXR2 выбирается скорость работы модема, а посредством TRS - используемый протокол. TXD и ТХА - это цифровой вход и аналоговый выход передатчика. RXA и RXD - аналоговый вход и цифровой выход приемника. CDT - выход де­ водам тектора несущей. Низкий уровень на нем означает, что приемник не может при­ нять сигнал. Порог определения несущей регулируется по входу CDL. Передатчик состоит из ЧМ модулятора, представляющего собой программиру­ емый синтезатор частоты, который генерирует частоты делением тактовой частоты 4,4336 МГц. Коэффициент деления устанавливается входами TRS, TXR1 и TXR2. Если TRS = TXR 1 = TXR2 = О, то частота для передачи единицы равна 1300, а для нуля - 2100 Гц. Приемник демодулирует входной аналоговый сигнал. Для получения модема микросхема соединяется с экспериментальной платой последовательного порта. Канал связи можно организовать, используя различные физические носители: звуковые или световые волны, а также радиоволны. 8.3. Радиосвязь В разделе приводится описание интегральных микросхем, которые предназначе­ ны для обмена цифровыми данными с помощью радиосвязи.
l296 I 8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ И УдАЛЕННЫЙ RXT ~-----------~-----~~~~---'16'>--~---~~-----~~ RXA О2ранuчumель - FSK- RXD geмogyлs:irnop Деmекmср несущео 05С2 TXR1 TXR2 TRS ТХА Рис. 11 8.3. Фuльmр FSK- nepegamчuкa fv'ogyл>=imop 0---------<1 4 ТХ D Назначение выводов и внуrренняя блок-схема микросхемы ТСМЗ 105 8.3.1. FM передатчик и приемник TMX/SILRX Микросхемы FM радиоприемников и передатчиков работают на частотах 418 и 433 МГц и специально созданы для телеметрии и приложений дистанционного управления. Для передачи на этих частотах необходимо получить разрешение соответствующих ведомств 1 • 1 В Российской Федерапии вопросы распределения радиочас1отного ресурса находятся в компетенuии Государственного комитета по радиочастотам. - Прим. пауч. ред.
8.3. РАДИОСВЯЗЬ l297 J Передатчик ТМХ Назначение выводов и внутренняя блок-схема передатчика ТМХ (Radioшetrix, RS740-290) (контакт 3). приведены на рис. Выводы и 1 4 8.4. ~1 30мм 00 .10 1 ?мм _l___ Назначенuе DD 0 ~ 000 0 0 о 1 Напряжение питания подается на вход Усе внутрисхемно соединены и образуют общий провод. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 ВЧ ВЧ конmакmоб общсО бшоg +Vnum Общuu НЧ бхоg Paccmoqнue межgу 1 2 3 4 5 конmак.mамu 2 54мм Vcc 2 >--------------- Полособоu Wupoкonoлocнt::)u Генератор чocmomнt::)O GND Рис. 8.4. срuльmр 2 К антенне 41 SМГц мog;лs:~mop 4_;>-----------~-- Назначение выводов и внутренняя блок-схема передатчика ТМХ-418-А Передатчик функционирует в широком диапазоне напряжения питания (+6 ... +12 В) и имеет но~шнальный рабочий ток чие частоты 418 и 433 МГц. DATA IN (контакт 6 мА при напряжении 6 В. Рабо­ 5) - вход модулятора, совмести­ мый с уровнями напряжений логики КМОП при условии, что схема управле­ ния имеет такое же напряжение питания. Антенна соединяется с контактом 2. Полученные на входе цифровые данные подаются на RС-фильтр нижних час­ тот, который ограничивает полосу частот модулированного сигнала до 1О кГц. Затем они поступают на частотный модулятор. Модулятор управляется варика­ пом: изменяя емкость последнего, можно менять частоту генератора. Централь­ ная частота генератора равна 418 МГц и определяется резонатором поверхност­ ных акустических волн. Промодулированный высокочастотный сигнал подается на контакт 2, который соедпнен с антенной. Антенна передатчика бывает трех типов: спиральная, рамочная или штыревая (см. рис. 8.6). Спиралышя антешш небольшого размера ( 17 мм длиной и 2,5 мм диаметром). Она имеет высокую добротность и, следовательно, нуждается в на­ стройке для конкретной длины волны. Рамочная антенна состоит из рамки в виде
\298 \ 8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ И УдАЛЕННЫЙ ДОСТУП дорожки печатной платы, которая настраивается с помощью переменного конден­ сатора. Штыревая а11-те1аю выполнена из провода, стержня, дорожки печатной платы длиной примерно 16,5 см. Модуль радиопередатчика сертифицирован в Сообществе МРТ1340 1 , его ис­ пользование на территории Великобритании разрешено для телеметрии, дистан­ ционного управления и разработки устройств, удовлетворяющих следующим тре­ бованиям: о передающая антенна относится к одному из трех вышеперечисленных типов; о модуль передатчика соединен непосредственно с антенной без помощи внеш­ них проводов. Увеличение мощности передатчика какими-либо методами не допускается; .о модуль нельзя модифицировать или использовать вне пределов его уста­ новки; о модуль применяется только для передачи данных. Передача голоса или му­ зыки запрещена; о оборудование, в котором используется модуль, должно иметь контрольную метку, размещенную внутри блока и хорошо видимую. Минимальные размеры метки 10х15 мм, а высота букв и рисунков может быть примерно следующей: «МРТ о настройка подстроечного конденсатора - - не менее 2 мм. Формулировка 1340 W.Т. LICENCE ЕХЕМРТ~; заводская установка, конечный пользователь ее изменить не может. Приемник S/LRX Назначение выводов и внутренняя блок-схема приемника RS7 40-304) представлены на рис. SILRX (Radiometrix, 8.5. Напряжение питания подается на контакт 5. Антенный вход - контакт 1. Кон­ 4 выступают в качестве заземления. Модуль работает от напряжения питания 4,5-9 В и потребляет ток порядка 13 мА. Рабочие частоты 418 и 433 МГц. такты 2 и Входной радиосигнал, принятый антенной, подается на полосовой фильтр че­ рез конденсатор. Предварительный усилитель радиочастоты усиливает сигнал перед тем, как он поступает на первый каскад смесителя. Первый гетеродин настроен на частоту 433,92 МГц для получения первой ПЧ 15,92 МГц. Затем сигнал проходит на второй смеситель, в котором гетеродин настроен на частоту 16 МГц. Вторая ПЧ равна 80 кГц. После этого сигнал усиливается, демодулиру­ ется и поступает на выход (контакт 7) через фильтр нижних частот третьего порядка. Приемник имеет выход ПЧ, который подается на контакт 3. Выход приемника совместим с логическими уровнями КМОП. К приемнику может быть подключена любая из антенн (рис. 1 8.6). В Российской Федерации вопросы, связанные с сертификацией радиопередатчиков, на­ ходятся в компетенции Министерства связи. - При.>.t. науч. ред.
8.3. РАдИОСВЯЗЬ ~1 48мм о Нознаценuе 0 t::З§Do0 §000000 D О Dt::З о §0 § = t::ЗCJ 000000 ~ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ! 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 конmакmомu конmакmоб: 1 2 еч ВЧ 3 B"xog gemeкmopa бхоg б"хоg 4 GND 5 6 7 Vcc B"xog npegycuлumeлo B"xog gанн"х 1 1 Прuмецанuе· Paccmo~нue межgу \ 299 \ кoнmaкmtJ 2 u 4 coeguнeнtJ бнуmрu 34567 2,54мм Перб"О Bmopou гemepoguн гemepoguн 433,92МГц 1бМГц B"xog -------------.; 3 gemeк­ mopa Bmopou ВЧ ПолособоU смесumе.гь, срuльmр geмogyлomop 418МГц u бхоg усuлumель ФНЧ - ПЧ Рис. 8.5. 5кГц, лumeл>=1 mpemьeeo napogкa Назначение выводов и внутренняя блок-схемо 8.3.2. АМ B"xog nr;egycu- SILRX-418 передатчик и приемник АМ-ТХ1/ АМ-ННRЗ Микросхема АМ-ТХ1 (RF Solutions) - это миниатюрный передатчик в гибрид­ ном исполнении с амплитудной манипуляцией (рис. 8.7), его можно использовать для передачи данных от любого стандартного КМОП/ТТЛ источника со скорос­ тью 1200 бод. Для управления передатчиком нужно всего две линии. Модуль эко­ номичен, потребляет 2,3 мА. Выход соединен с рамочной или штыревой антен­ ной. Дальность действия более 100 м. Рабочие частоты 418 и 433 МГц. Устройство сертифицировано МРТ1340 для применения в телеметрии и связи при условии использования антенн, изображенных на рис. 8.6. Микросхема АМ-ННRЗ (RF Solutions) - это компактный модульный радио­ приемник, 1<оторый можно использовать для приема сигнала, посылаемого АМ передатчи1<ом. Расположение выводов приведено на рис. с уровнем ТТЛ/КМОП. Напряжение источника питания 2,5 8.8. Выход совместим +5 В, потребляемый ток мА. 8.3.З. Эксперименты по передаче данных с помощью радиосвязи На рис. 8.9 изображена схема, преобразующая 12 бит данных из параллельной формы в последовательную для передачи последовательных данных с помощью
[Зоо] 8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ и УДАЛЕННЫЙ ДОСТУП а) ---~------ео Контакт (ВЧ бt>xog) 2 26 бuткоб npoбogo О 5мм guаметр 2 Контокт r--------,.------e 6) 5мм 2 (ВЧ бt>xog) Bнympeннs:is:i Порожка wupuнou 1 мм nлощаgь 401 Осм 2 --jf-----'---e Контакт Конgенсотор в) 15 1 (GND) 5nФ 16 5см (оnтuмольно) ------------е Контокт Пробаg г) neчomнos:i Xapaкmepucmuкu gорожка онmенн Размер Сmобuльносmь xapaкmepucmuк бt>xog) Рамочно>:~ J' J' J' J' J' J' J' J' J' усmанобкu (ВЧ ux кoмбuнouus:i Cnupaльнas:i Эср<ректuбность Пpocmoma uлu 2 Штt>ребао J' J' J' J' J' J' J' J' J' J' J' J' J' J' J' Рис. 8.6. Различные типы антенн для радиопередатчиков ТХМ-418 а - спиральная, 6 - рамочная, в - штыревая, г - характеристики антенн 11 5мм +V SIDE +v """[[ GND ~----~~-----~ MegнtJU 330 U вх =+5В от ПЛ uлu КМОП (О npoбog guаметром 1 1 Sмм / 4 5В) Максuмальна>~ плащаgь 2 70Омм - 220nФ +v АХ 1-5nФ ТХ1 rоберхносmь ВЧ землu общuu Пepecmpaue.юeмas:i Рис. 8.7. рамочнш1 Назначение выводов и типовое включение модуля передатчика АМ ТХ 1 антенна
8.3. РАДИОСВЯЗЬ ~ 38мм -т- Назначенuе """l 1 7 12 3 10 +Vnum 7 10 11 12 ВЧ 8.8. ВЧ ВЧ общuо Антенно общuо 14 ПЧ абщuО ПЧ Контрольно~ тачка в~хоg gаннш 15 AF Vcc Vnum ПЧ Vnuro 15 Прuмечанuе Paccmo~,-,ue конmакmамu конrnакmоб 1 2 3 13 1 Рис. 1301 1 конmакm~ 2 u 4 coeguнeн[j бнуmрu 2 Расположение выводов АМ-ННRЗ +:'>В т 0,1мкФ I RF OUT АО GND А1 IJ ~ ~ Vcc А2 о Вхоgн~е Q_ gанн~е ф IJ I '-' ф Q_ "' А4 А5 <{ ТХМ-418-А А6 Моgуль uлu АМ-ТХ1 paguonepegomчuкo А7 -тт: DO о-------·---ф D1 п I I с§! о-------------~ D2 о--------------' 030------------------' Рис. 8.9. Схема радиопередатчика цифровых данных передатчиков ТХМ-418 или АМ-ТХ1. В качестве параллельно-последовательного преобразователя применяется микросхема НТ-12Е. 12 бит данных могут поступать с экспериментальной платы параллельного порта. Адресные входы микросхемы АО - Аб соединены с контактами с контактами С 1 - D 1 - D7 на плате, а входы данных С4 на плате. Вход ТЕ соединен с I<онтактом ной платы, вход А7 - постоянно с «землей1>. DO - DЗ D8 эксперименталь­
s. СЕТЕВЫЕ ПРИЛОЖЕНИЯ и УДАЛЕННЫЙ ДОСТУП lзо21 На рис. 8.10 изображена схема, которая принимает радиосигнал и трансформи­ рует последовательные данные в параллельные. Используются приемные модули SILRX-418 и AM-HHR3 и преобразователь НТ-120. Такая система позволяет од­ ному передатчику, соединенному с экспериментальной платой параллельного пор­ та, передавать четыре бита данных одному из 127 приемников. Она может приме­ няться в приложениях дистанционного управления. Пару приемник/передатчик допустимо также использовать в беспроводных системах обмена данными. В подоб­ ные устройства часто включают АЦП с последовательным вводом/выводом. 8.4. Модули приемопередатчиков В разделе приводится описание миниатюрного приемопередатчика, а также да­ ются общие рекомендации по организации пакетной радиосвязи. 8.4.1. Приемопередатчик BiM-418-F Модуль приемопередатчика BiM-418-F пмеет (рис. 8.11) и BiM-433-F (Radiometrix). Первая две модификации: BiM-418-F 418 МГц работает в диапазоне +58 С1 r О 1 мкФ 1 I ---------+----uVT J_ ---------+----<JOO г-------+----<>О -----+---О 1 02 ----+--{~03 +58 RL 1 4,7К г----, пч АО RX1 SILRX-418 uлu AM-HRR3 Моgуль Рис. poguonpueмнuкo 8.1 О. А1 А2 ON 'ON'=O 'OFF'=1 OFF Схема радиоприемника цифровых данных А3 А4 А5 Аб А7 ~ L ____ _J SW1 В"бор ogpeco
8.4. МОДУЛИ 33мм б g оuну, 23мм б ПРИЕМОПЕРЕдАТЧИКОВ щuрuну о - nрuемн1...ка nepegamчuю~ о о Ша2 --- - конмокmоб ~1 30,4Вчм Рис. \зозj 8.11. Назначение выводов приемопередатчика BiM-418-F и сертифицирована Сообществом по радиосвязи Великобритании (МРТ1340). Вторая создана для Европы и функционирует в диапазоне 433,92 МГц. Обе моде­ ли способны организовать двунаправленную полудуплексную передачу ланных со скоростью до 40 Кб/с на расстоянии до 30 м в здании и до 120 м на открытом пространстве. Принцип работы блоков передатчика и приемника такой же, как у передатчика серии ТМХ и приемника SILRX, описанных выше. Контакты 9, 10 и 18 - это выводы заземления (О В), подключенные к отрицательному проводу источника питания. Контакт 17 соединен с положительным проводом источника питания (Усе). Необходим источник постоянного напряжения от 4,5 до 5,5 В. В режиме приема или передачи модуль потребляет ток 12 мА, в режиме ожндания - 1 мкА. Контакт 14 - вход передаваемых данных. Оп может управляться непосредствен­ но КМОП логикой, работающей от такого же напряжения питания, что и сам модуль. На этот контакт разрешается подавать аналоговые сигналы, генериру­ емые модемами или DТМF-кодерами. Контакт 12 - выход принятых данных, не­ посредственно соединенный с КМОП логикой. Контакт 13 - выход аналоговых сигналов, он подключается к модемам пли DТМF-декодсрам. Контакт захвата несущей (CD). 11 - вывод Когда модуль функционирует в режиме приема, ноль на этом выходе означает, что уровень принимаемого сигнала выше установленного порога. Контакты 15 (ТХ) и 15 = 1, 15 = 1, контакт 16 (RX) используются для установки режима рабо­ 16 16 режим ожидания; ты модуля: о контакт о контакт контакт = 1- =О режим приема;
1~04 j 8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ И УДАЛЕННЫЙ ДОСТУП о контакт о контакт Контакты 15 = О, 15 =О, 1и 3 - контакт контакт 16 = 1 16 =О - режим передачи; режим циклического самотестирования. зто общий провод высокочастотной секции модуля. Они внут- рисхемно соединены с контактами 9, 10 и 18 и с шасси корпуса, контакт 2- с ан­ тенной. Для этих модулей рекомендуется использовать три типа антенн. Конфи­ гурация антенн и таблица с их свойствами приведены па рис. 8.6. 8.4.2. Требования к передаваемым последовательным данным Для качественной передачи данных необходимо соблюдать несколько ограниче­ ний. Длительность импульса (то есть время между двумя ближайшими фронта­ ми) последовательного кода должна находиться в диапазоне от 2.5 мкс до 2 мс. Для BiM перед передачей данных необходимо послать преамбулу 10101010 длительностью минимум 3 мс. Приемник настроен на получение высокочастот­ ного сигнала со средним заполнением 50:50 и средней длительностью периода 4 мс, то есть количество нулевых и единичных битов за время 4 мс должно быть примерно одинаковым. Данное соотношение допускается изменять до 30:70 или 70:30, однако это может привести к снижению помехоустойчивости и увеличению приемника ошибок при приеме. Модули приемопередатчиков используются для передачи сигналов в формате протокола между компьютерами. Экспериментальная схема приведена на RS232 рис. 8.12. Обмен данными в последовательном формате осуществляется со скоро­ стью от 4,8 до 38,3 Кб/с. Для того чтобы передаваемые данные удовлетворяли требованиям BiM, их необходимо пакетировать. Пакетированные данные состоят из следующих частей: о о 3 мс преамбула (55h или AAh) для подстройки приемника один или два байта FFh; BiM; о 1 байт 01h в качестве флага начала передачи; о байты данных; о биты кою рольной суммы. Антенно +58 RD о+-----1 ТО о+-----11 12 RX D 4 2 ТХD BIM стs RTS nрuемнuк:о DTR nepegomчuкa GND Koнmaкmtj о- но эксnерuменmальноО nлame nослеgобаmельно20 порта Рис. 8.12. Схема радиомодема
8.5. МОДЕМ для РАБОТЫ в БЫТОВОЙ ЭЛЕКТРОСЕТИ LM 1893 На практике формат пакета зависит от конкретной реализации. Существует три способа обеспечения среднего коэффициента заполнения 1зоs 1 50:50. Первый способ заключается в делении каждого байта пополам. Первая полови­ на - это передаваемые биты данных, вторая - их дополнение до 1. При передаче каждого байта гарантированный коэффициент заполнения составляет ди 256 возможных 1<0мбинаций восьмиразрядного кода 70 50:50. Сре­ комбинаций состоят из четырех единиц и четырех нулей и при этом имеют коэффициент заполнения 50:50. Например, 17h, 1Bh, 27h, E8h и т.д. Их можно передать между двумя последо­ вательными портами в формате RS232 с одним стартовым битом, одним стоповым битом и без проверки на четность. Реальную информацию допустимо закодиро­ вать, используя только указанные комбинации. В этом состоит второй способ. По третьему способу каждый байт передается дважды. Первый байт содержит фак­ тические данные, а второй - дополнение первого до циент заполнения составляет 8.5. 1 в каждом Модем для работы в бытовой электросети Микросхема разряде. Коэффи­ 50:50. LM1893 (Naiional Seп11conductors) - LM1893 это двухканальный приемо­ передатчик, разработанный специально для обмена данными между удаленными терминалами с использованием бытовой электросети в качестве канала связи на расстояния в пределах одной подстанции. Расположение выводов микросхемы показано на рис. 8.13, типовое включение Напряжение питания должно быть от такт 14) соединены - на рис. 8.14. 14 до 30 В. Усе (контакт 15) и GND (кон­ с положительным и отрицательным проводами источника пи­ тания. Режимы приема (Rx) и передачи (Тх) выбираются с помощью входа Tx/Rx (контакт 5). Если Tx/Rx = 1, то микросхема работает в режиме передачи (Тх). Входные данные со скоростью до 5 Кб/с подаются на вход DATA IN (контакт 17). Несущая частота находится в диапазоне R3, R1 50-300 кГц и определяется элементами и С8. Сигнал подается на формирователь синусоидального колебания, за­ тем через схему автоматической регулировки усиления (АРУ) поступает на вы­ ходной усилитель тока. Схема АРУ обеспечивает постоянный уровень сигнала на выходе при изменении волнового сопротивления электросети. Рис. 8.1 З. Расположение выводов LM 1893
1зо6 I 8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ и УДАЛЕННЫЙ ДОСТУП +188 РежuмЬ' Т1 - 1 -nepegoчa бхоgноо mpaнcqJOpмamop А042 С1 0-npueм UK Т1 L---i"~Ф 2 3 С3 О,33мкФ С2 О,22мкФ N ----\ N 4 }-+-----CJ-~-----1 6 С 1, С2 u С3 qJuльmpyющue конgенсаmор", 2508 01 1 5КЕ47А В режuме nepegoчu gонн~е nogoюmc~ но о б режuме npueмo но конmакm 12 Рис. 8.14. Схема включения микросхемы Элементы С4 и R2 конmокm 17, LM 1893 управляют динамическими характеристиками схемы АРУ. Напряжение возбуждения с контакта 10 (выход при работе в режиме передачи и вход в режиме приема) вызывает резонанс напряжений в колебательном конту­ ре, образованном первичной обмоткой трансформатора Т1 и конденсатором СЗ. Конденсатор СЗ подбирается таким образом, чтобы резонансная частота колеба­ тельного контура была равна частоте несущей. Далее с вторичной обмотки это­ го трансформатора информация поступает в электропроводку. Элементы и D1 R1 используются для защиты микросхемы от кратковременных бросков напря­ жения, которые в бытовой сети происходят достаточно часто. Если Tx/Rx =О (контакт 5), то микросхема работает как приемник. Блок пере­ датчика при этом отключен. Сигнал, поступающий на вход схемы, представляет собой смесь различных сигналов, присутствующих в сети питания. Входной сигнал подается на входной фильтр верхних частот, состоящий из конденсаторов С1 и С2. Колебательный контур - это полосовой фильтр, который также подавляет помехи. Описанные меры позволяют значительно ослабить напряжение сети 240 В и им­ 10). После пульсные помехи. Затем сигнал поступает на вход микросхемы (контакт преобразований и детектирования принятая информация в последоsательном дво­ ичном коде подается на выход с открытnrм коллектором (контакт приемной части микросхемы определяются конденсаторами 8.6. Интерфейс Интерфейс RS485 CS, 12). Параметры С6 и С7. RS485 представляет собой улучшенную версию интерфейса RS232. Он широко используется при разработке систем управления и передачи данных.
8.6. ИНТЕРФЕЙС RS485 1307 I Для улучшения качества передачи данных и уменьшения шума в I<анале связи применяется шина, выполненная в виде витой пары. Максимальная скорость пе­ редачи данных составляет В основе 10 Мб/с, максимальное расстояние - 1200 м. RS485 лежит приемник с дифференциальным входом для подавления синфазных помех. Передача данных через этот интерфейс защищена лучше, по­ скольку канал связи имеет более стабильные характеристики, чем интерфейс RS232. Подключение передатчиков и приемников к каналу связи согласовано. На практике величина волнового сопротивления·канала связи равна величине выход­ ного сопротивления передатчика. Микросхема SN75176B (Texas Instruments, RS630-904) - это устройство, позво­ ляющее достаточно просто организовать обмен данными в соответствии со спе­ цификацией на интерфейс может контролировать 32 RS485 (рис. 8.15). Одно устройство управления RS485 приемника. Все передатчики и приемники подсоедине­ ны к шине двумя проводами, режим работы шины полудуплексный: два и более передатчика одновременно функционировать не могут. Остальные либо имеют высокое сопротивление, либо работают в режиме приема. На рис. 8.16 изображе­ на простая локальная сеть с использованием протокола RS485 и эксперименталь­ ной платы последовательного порта. п дJ U п -58 L-ов QЕ;-б~сокuО уробень gло б~боgа gанн~х RЕ-нuзкuо уробень gло Moga gанн~х 8.7. Инфракрасные линии передачи данных IrDA (Infra-Red Data Association) - это Ассоциация передачи данных в инфра­ красном диапазоне, объединяющая несколько фирм-производителей в области технологии оптической передачи данных. Ее цель - разработка стандарта для об­ мена данными с помощью ИК излучения. Такая технология применяется при организации обмена информацией между настольными/портативными компью­ терами и принтерами, телефонными и факсимильными аппаратами. Большое пре­ имущество обмена данными в инфракрасном диапазоне белей связи между устройствами. Технология IrDA - полное отсутствие ка­ подразумевает работу на относительно небольших расстоя­ ниях: так можно уменьшить потребляемую мощность и устранить взаимовлияние различных устройств. Угол диаграммы направленности равен лучают сигнал в диапазоне 850-900 нм. Стандарт IrDA-1 30°. ИК диоды из­ поддерживал скорость
\зоs \ 8. СЕТЕВЫЕ ПРИЛОЖЕНИЯ и УДАЛЕННЫЙ ДОСТУП +58 120 На2рузочнt)Q peзucmop Koнmaкmt) на эксnерuменmольнао nлame rюслеgобаmелы-1020 napmo Рис. 8.16. Схема преобразования протокола RS232 в протокол RS485 передачи данных до 115,2 Кб/с в 4 Мб/с. полудуплексном режиме, затем был принят стан­ дарт со скоростями до Протокол IrDA- зто продолжение ся с последовательным выходом диод - RS232 (или UART). Светодиод соединяет­ RS232 через передающий ИК интерфейс, фото­ с приемником через приемный ИК интерфейс. Излучающий интерфейс уменьшает длительность импульсов RS232 максимум до 3/16 исходной, что сокращает потребляемую светодиодом мощность. На приемном конце ИК интер­ фейс восстанавливает исходную длительность импульсов для их нормальной об­ работки протоколом RS232. Существует несколько разновидностей модулей для приложений IrDA. Они со­ стоят из светодиода, устройства управления, фотодиода и усилителя. В качестве примера можно привести микросхему 4780) - см. рис. HSDL-1000-101 (Hewlett Packard, RS193- 8.17. На вход модуля поступают укороченные последовательные импульсы. С помо­ щью светодиода они преобразуются в световые сигналы. Световые инфракрасные импульсы, принимаемые фотодиодом, преобразуются в сигналы с уровнями ТТЛ. Приемный и передающий ИК интерфейсы, изменяющие их длительность, не вхо- · дят в состав модуля. Для сопряжения интерфейсов и передающий ИК интерфейс показано на рис. 8.18. IrDA и RS232 можно использовать приемный HSDL- 7000 (Hewlett Packard, RS233-2242), как
8.7. ИНФРАКРАСНЫЕ линии ПЕРЕДАЧИ дАННЫХ Назноченuе 00 1 2 3 4 5 6 7 В +58 конmакmоб Конgенсаmар кaмneнcauuu Конgенсаmар разб>1зкu Unum Bt)xog npuн>1mt)x ОбщuО Bxog gоннt)х gл>1 gнебного сбеmо Rled в gаннt)Х LED А nepf'goчu Komog cбemaguoga Аноg 1зо9 8 cбemoguogo RI 300 12345678 TXD б Vp1n Фomoguog Koмnapomop Рис. 8.17. СХ 1 СХ2 СХ3 конgенсаmор конgенсаmор О, 1 мкФ СХ4 4 кoмneнcauuu gнебно20 разб>~зкu, 0,4мк~ сбеmа, О,22мкФ 7мкФ Расположение выводов и внутренняя блок-схема HSDL-1000 +58 --ОУсmанобка cкopocmu 1----.о 1-разреwено О-запрещено Рис. 8.18. Схема для передачи данных по оптическому каналу связи , , ., I
lзto 1 8. сmВЫЕ ПРИЛОЖЕНИЯ и УдАЛЕННЫЙ ДОСТУП Микросхема CS8130 (Crystal Semiconductor, RS207-2473) - это инфракрасный 8.19). Он принимает данные от микросхемы UART со скоростями от 1200 до 115200 бод. Для работы микросхемы необходимы внешний фотодиод и светодиод. Напряжение источника питания от 2,7 до 5,5 В, потребля­ емый ток 2,5 мА. приемопередатчик (рис. +58 1 D1 PD410PI.;-. 0,1мкФ RTS RD CTS +58 LED1 LED2 5,2 TD DTR 5,2 LED1 u LED2. Рис. GL550 (Shorp) 8.19. Расположение выводов и типовое включение микросхемы CSB 130 uнmeplj)eOc
8.7. ИНФРАКРАСНЫЕ ЛИНИИ ПЕРЕДАЧИ ДАННЫХ Микросхема имеет четыре режима передачи: пуляции (АМ) на частоте 500 IrDA, режим амплитудной мани­ кГц, режим дистанционного управления на частоте кГц и режим непосредственного доступа. В режиме 38 ветствует логическому О, отсутствие излучения Длительность импульса составляет от скорости 1,6 1200). @:!!] - IrDA ИК излучение соот­ логической 1. 1,6 (для скорости 115200) до 78 мкс (для Кроме того, может использоваться фиксированная длительность мкс для всех скоростей. Исходная скорость для режима IrDA равна 9600 бод, 1200 до 115200 бод. В режиме АМ при­ частоте 500 кГц соответствует логическому О, 1. Допустимы скорости 9600, 19200 и 38400 бод. но разрешается установить скорость от сутствие несущего колебания на отсутствие несущей - логической Режим дистанционного управления аналогичен режиму АМ, за исключением час­ тоты несущей, которая равна 38 кГц. Этот режим, как правило, применяется для дистанционного управления телевизионными приемниками. В режиме непосред­ ственного доступа ИК передатчик отображает то, что имеется на входе Логическая 1 соответствует выключенному светодиоду, логический О ченному. На приемном конце высокий уровень на выходе товой энергии не обнаружено, а низкий - RXD - TXD. вклю­ означает, что све­ что был принят световой импульс. При передаче данные сначала записываются в микросхему через вход TXD, а затем передаются с помощью выбранного способа модуляции. Режим передачи выбирается путем записи управляющего слова в соответствующий внутренний регистр управления. Для изменения режимов работы в микросхеме имеются раз­ личные регистры управления. Режимы приема также выбираются посредством записи управляющего слова во внутренние регистры. Данные записываются в ре­ гистры управления при подаче на вывод D/C (контакт 15) сигнала низкого уров­ ня. Детальное описание микросхемы приведено в документации изготовителя.
СПИСОК ЛИТЕРАТУРЫ 1. Owen Bishop. Easy Add-on Projects for Spectrum, ZX81 and Асе, ISBN 0859340996. Bernard Babani PнЬlishing Ltd., 1983. 2. Roger G. Gilbertson. Muscle Wires Project Book, ISBN 1-879896133. Mondotronics, Inc., 1994. 3. Hans-Peter Messmer. Tlie IndispensaЬle РС Hardware Book, ISBN 0201624249. Addison-Wesley, 1993. 4. Mustafa А. Mustafa. Microcomputer Interfacing and Applications, Second edition, ISBN 0750617527. Butterwortli- Heinemann, 1994. 5. Que Corporation. Using Visual Basic 3, ISBN 156529763Х, 1995. 6. Micliael Tooley. Elcctroпic Circuits Haпdbook, ISBN 0434919683. ButterwortliHeinemann, 1990. 7. Data slieets for coшponents from various шanufacturers.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ А в АМ радиопередатчики 300 Ввод данных через порт Аналого-цифровые преобразователи игровой 45 параллельные 189 последовательный 39 последовательного приближения 192 параллельный 21 процессор 217 с двойным интегрированием 195 с последовательным интерфейсом 205 г Генераторы цифровые вольтметры 199 DTMF 293 Аналоговые генераторы сигналов 60 Антенна логического состояния 59 д рамочная 297 спиральная 297 Датчики штыревая 298 влажности 243 Аудиоусилители 170 магнитной индукции с частотным выходом 247 Б расхода жидкости с цифровым Базовые адреса портов игрового 43 параллельного 18, 19 последовательного Буферы 113 35 выходом 245 Джойстики 4 1 Дисплей жидкокристаллический растровый 181
1З14 I СОПРЯЖЕНИЕ ПК С ВНЕШНИМИ УСТРОЙСТВАМИ Микросхемы отсчета времени 275 светодиодный многоразрядный растровый 178 Модем для работы в бытовой растравы й 17 6 электросети 305 семисегментный Модемные интегральные схемы 294 многоразрядный 172 Модули памяти EEPROM с шиной 1 2 С 270 и радиоприемников и передатчиков 295, 300 Игровой порт 4 1 Измерение временных интервалов 46 Инвертор напряжения 55 Инфракрасная связь lrDA 307 Инфракрасные световые датчики демодулятор 38 кГц 231 о Опорное напряжение 54 Оптопары Дарлингтона 149 на триггере Шмитта 231 на триггере Шмитта 150 Источник транзисторные 149 опорного напряжения 54 питания ТТЛ/КМОП совместимые 149 49 изолированный 56 к п Пакетированные данные 304 Кварцевые генераторы 60 Клавиатура 253 Команды AND() 19 INP() 23 INT 21 OR 25 OUT 23 РЕЕК() 19 PORT() 23 PTINT 21 SHL 25 SHR 25 STICK() 44 STRIG() 44 Коэффициент передачи по току 150 Параллельно-последовательное преобразование 134 Параллельный порт 13 Последовательная передача данных 26 Последовательный порт RS232 26 Преобразователи напряжение-частота 221 свет-частота 224 ТТЛ/RS232 123 Приемопередатчик с поддержкой многих стандартов 31 О Программы на Т urbo Pascal для платы GАМЕ-порта 94 для платы LРТ-порта 7 6 для платы порта RS232 84 на Visual Basic л для платы GАМЕ-порта 98 Логические пробники 57 для платы LРТ-порта 79 для платы порта RS232 88 м Программируемое устройство Магнитный переключатель 248 информации 116 Матрица ввода/вывода параллельной Программируемые генераторы R-2R 254 синусоидальныхколебаний 288, 292 световых датчиков 227 цифровые 281
ПРЕДМmtЫЙУКАЗАТЕЛЬ Программная библиотека l Устройства коммутации 00 Пьезоэлектрические динамики 170 двигателями динамиками р мостовые 146 последовательного порта на полевых транзисторах реле с сухими контактами сдвига сиренами па ралл ел ьно­ 134 170 двухфазными 168 однополярными 132 четырехфазными Регулируемые генераторы опорного напряжения 55 стабилизаторы напряжения 52 Реле оптоэлектронные полупроводниковые 153 158 шаговыми двигателями последовательно­ параллельные 154 153 на транзисторах Дарлингтона 115 последовател ьн ые 159 164 на МОП транзисторах с защитой 146 Регистры защелки 164 169 многоканальные Дарлингтона Реализация шины 1 2 С на базе параллельного порта 1з1s 1 166 ц Цифро-аналоговые преобразователи 163 с параллельным интерфейсом с 254 257 с последовательным интерфейсом Цифровые потенциометры Светодиоды инфракрасные 157 ч маломощные 156 многоцветные 156 стандартные 155 Система точного времени 26 l Частотная модуляция 294 MSF 248 ш Системы отсчета реального времени с шиной 1 2 с 275 Шаговая последовательность Сопряжение КМОП и ТТЛ 148 двигателя Стабилизаторы напряжения Шаговые двигатели с малым падением напряжения 166 двухфазные 166 52 стандартные однополярные четырехфазные 50 Стабилитрон 50 Шины Считывание данных из памяти ПК 1 2 с 143 20 совместимые ИС т 143 MicroLAN 14 7 RS485 306, 307 SPI 147 Температурные датчики с ЖК дисплеем 240 со скважностью, зависящей. от температуры э 238 у Экспериментальная плата порта Удвоитель напряжения 56 игрового Универсальный асинхронный параллельного приемопередатчик (UART) последовательного 65 125 67 62 166
Пей Ан Сопряжение ПК с внешними устройствами Главный редактор Захаров И. М. Научный редактор Маи,онашвили М. А. Выпускающий редактор Левицкая Т. В. Технический редактор Александрова О. С. Графнка Бахарев А. А. Дизайн обложки Ид № Панкусова Е. Н. 01903 Под11исано в нечать от 30.05.2000 30.04.2001. Формат 70X100 1/ G. 1 Гарнитура «Петербург>>. Печать офсет!lая. Усл. 11еч. л. 20. Издательспю «дМК Пресс», Тираж 3000 105023, экэ. Зак. № 19 9. Москва, пл. Журавлева,/\. Электронные адреса: \V\V\\'.dшkpress.rн, info@dшk.rн Отпечатано на ордена Трудового Красно~о Знамени ГУП Чеховский полиграфический комбинат Министерства Российской Федера11ии 110 делам 11ечати, телерадиовещания и срс;1ств массовых комму11икшшй 142300, r. Чехов Московской области Тел. (272) 71-336. Факс (272) 62-536 2/8.