Разделы
Публикации
Популярные
Новые
|
Главная » Сопряжение цифровых, аналоговых сигналов 1 ... 54 55 56 57 58 59 замысловатая задача (необязательная): набросайте алгоритм, который бы это делал. 21.5. Упражнение. (Только если у вас осталось время.) Напишите программу для преобразования и вывода на десятичный дисплей двоичного числа, заданного при помощи переключателей. Замечание: это не так просто делается, как может показаться с первого взгляда. Команда DAA не переводит непосредственно двоичное число в десятичное; она только воздействует на непосредственный результат арифметической операции над двумя упакованными двоично-десятичными операциями. Подсказка 1. Постройте вашу программу по такому образцу: Begin: Считать состояние переключателей Преобразовать в десятичную систему Вывести на дисплей Перейти к метке Begin Подсказка 2. Если тактовая частота достаточно высока, преобразование можно выполнить посредством последовательного уменьшения введенного числа до нуля при одновременном увеличении (в десятичной системе) содержимого другого регистра. Напомним, что команда iNR не действует на флаг CY, поэтому не забудьте сначала его очистить (или использовать ADH). Лабораторная работа 22. Микропроцессор IV Материал для чтения: гл. И, разд.5-П.8, стр. 189-209, т. 2. Задачи в основном тексте. Нашим следующим упражнением, под которое целиком отведено это занятие, будет построение частотомера с использованием микропроцессорной техники, которую мы изучали в трех последних работах. На этом примере будет продемонстрировано основное преимущество управляемых микропроцессорами приборов - возможность сочетать последовательные операции переключения с цифровыми вычислениями. Обычный способ измерения частоты состоит в подсчете иа фиксированном интервале времени числа нулей входного сигнала, как предлагает рис. 22.1. См. также Рис. 22.1. Традиционная блок-схема частотомера. разрешение 0,1; 0,01 Гц, время счета соответственно 10, 100 с и т. д. чика = /(Гц). Показания счет- разд. 14.10 (стр. 367) и рис. 14.23 в основном тексте. Микропроцессорная версия такой схемы в общем была бы вполне практичной, но для получения высокой точности при измерении низких частот понадобились бы, как это было указано, большие интервалы времени. Вы, возможно, уже сталкивались с этим неудобством, если когда-нибудь пытались использовать частотомер таким способом. Альтернативным подходом, который можно практиковать, если имеется возможность производить вычисления, является измерение периода входного сигнала и вычисление обратной елу велычикь/при помощи схемы, показанной на рис, 22.2, См. по этому поводу разд. 14.10 (рис. 14.25, стр. 369, т. 2). Именно этим мы сегодня и займемся. Устройство, которое мы используем, позволит проводить измерения в диапазоне от 2,5 до 9,9 Гц (наш дисплей имеет два десятичных разряда); несложная переделка позволяет получить шкалу до 0,99 Гц при разрешении 0,01 Гц. Снетчик Рис. 22 2. Схема измерения периода. Показания счетчика ~Т, f-\lT, Сначала мы соберем аппаратуру, необходимую для управляемой компьютером реализации нашей схемы, а затем перейдем к развитию программного обеспечения, которое превратит собранные схемы в частотомер. Всего нам понадобятся четыре устройства ввода / вывода: I) датчик входной частоты; 2) управление счетчиком (сброс); 3) устройство считывания состояния счетчика; 4) дисплей, предпочтительно десятичный. 22.1. Переделки существующей схемы. 1) Восстановите соединение входа ENABLE буфера переключателя DIP с выключателем WRITE, как это было до упражнения 21 3 Дешифратор 74LS138 оставьте на месте; сегодня он нам еще понадобится. 2) Новый тактовый генератор. v 390 ОМ is. гт>-г^> 1000 ПФ 1> 1 кОм -П Г 1 МГ4 Рис. 22.3. Тактовый ТТЛ-генератор на 1 МГц. Внимание используйте здесь микросхемы 7404, а не 74LS04. Если в вашем распоряжении нет двух генераторов сигналов, то придется использовать в качестве одновременного источника различных частот тот единственный, который у вас есть. Хотя предлагаемая схема > и не является ортодоксальным членом семейства ТТЛ, никто еще не слышал, чтобы она не работала. 22.2. Схема включения счетчика. В качестве эталона частоты мы воспользуемся синхросигналом частотой 1 кГц с макетной панели: любое отклонение ее величины от точного значения можно впоследствии компенсировать. В прецизионной версии нашего прибора следовало бы вместо этого использовать кварцованный генератор. При правильном выборе масштаба для диапазона измерения до 9,9 Гц младшему значащему биту счета должен соответствовать интервал времени 2 мс (см. приведенные ниже вычисления), поэтому мы включили делитель на два между синхросигналом и 8-битовым таймером, состояние которого считывается на шину данных. Для диапазона до 0,99 Гц нам понадобится предварительное деление на 16; убедитесь, что знаете, как это сделать, когда это потребуется. Схема иа рис. 22,3,- Прим, перев. Более интересная версия нашего прибора могла бы иметь на входе усилитель постоянного тока с переменным коэффициентом усиления и регулируемым пороговым уровнем, что позволило бы приспосабливаться к любым типам входных сигналов. Здесь же мы для простоты будем иметь дело только с входным прямоугольным сигналом большой амплитуды от генератора сигналов. Когда вы включите питание этой схемы, проверьте при помощи логического пробника, достигает ли сигнал буфера с тремя состояниями. 22.3. Программа для измерения периода. Собранную схему желательно испытывать при помощи сравнительно простой программы, каковой и является программа 22.L считать текущее показание счетчика импульс сброса на счетчик вывести на дисплей текуш,ее показание ввести компаратор как бит О вычеркнуть (маской) все другие биты повторять цикл, пока не будет бнт = 0 опять то же; повторять цикл, пока ие будет бит=1 ( программный триггер ) повторить все снова Программа 22.1. Измерение периода. Она просто выводит на дисплей показание счетчика (в шестнадцатеричной системе счисления), соответствующее одному периоду входного сигнала.
Специального упоминания здесь заслуживает способ реализации счетного триггера из схемы на рис. 22.2. Компьютеру необходимо знать точное время изменения знака (скажем, с отрицательного на положительный) входного сигнала, чтобы в нужный момент прочитать показание счетчика и сбросить его для измерения следующего интервала времени. Осуществить это можно было бы, просто соединив вход (если он уже приведен к уровням ТТЛ) с выводом NMI (немаскируемое прерывание) процессора; в этом случае вся программа была бы просто программой обслуживания прерывания, кончающейся командой HLT. Мы, однако, предпочитаем решить эту задачу при помощи программного триггера , который командует: ждать, пока не окажется Dq~0, затем ждать, пока не окажется Dl, и тогда обслужить счетчик , так что показание, счетчика считывается вскоре после прохождения положительного фронта входного сигнала. Этот цикл снимает показания с входного сигнала один раз за каждые 29 тактов, поэтому в определении времени перехода (изменение знака) входного сигнала имеется неопределенность в 29 мкс (тактовая частота= 1МГц). Дополнительно к этому существует задержка приблизительно на 10 мкс между считыванием показания счетчика и моментом его сброса. Каждая из этих ошибок вносит свой вклад в погрешность измерения периода, но обе они незначительны в сравнении с разрешающей способностью счетчика, которая равна 2 миллисекундам. Вопрос: почему задержка между детектированием положительного фронта и считыванием показания счетчика не вносит ошибки в измерение периода? Сделайте себе таблицу назначений портов наподобие той, какую мы видели выше (21.3), и внесите в нее значения кодов внешних устройств ww, хх, уу и zz, которое в распечатке ассемблера соответствуют именам COUNT, RESET, DISPLAY и SENSE. Эти значения вы должны определить, исходя из рис. 22.4 или из вашей собственной схемы, если назначения портов в ней другие. Введите программу и проверьте как работает ваша схема. Определите и запишите для справок в будущем диапазон входных частот, в котором показания счетчика соответствуют периодам. С чем связаны ограничения этого диапазона ца каждом из концов? I 1 1 CKft 1593 Шина данных (8) I I М I I 7415244 Do j>y СЕР LSIbt > й Pi +5 - СЕР IS161 1кОм 4,7 кОм tN9t4 ENABLE (дисплей данных) l ll iUL
+ 5 ]OR(i Рис. 22.4. Схемы, связанные со счетчиком. Еще раз справьтесь в приложении В (расположение выводов). Не забудьте о необычном расположении выводов питания схемы 74LS93. Вместо 74LS365 можно было бы использовать практически любой буфер с тремя состояниями. 22.4. Десятичный частотомер. Чтобы превратить период в числовое значение частоты, нам надо вычислить обратную ему величину. Этим занимается программа 22.2. Использованный в ней алгоритм очень прост; сосчитать, сколько раз можно вычесть делитель из (т. е. прибавить его 2-е дополнение к) делимого, прежде чем наступит переполнение . Заметим, что бит переноса (CY) устанавливается при каждом успешном вычитании и остается очищенным только после того, как произведено первое лишнее вычитание. Если вам непонятно, почему так получается, посмотрите в разд. 8.03 (стр. 502, т. 1) об арифметических действиях со 2-м дополнением. Мы не занимаемся сейчас округлением частного до ближайшего целого числа; оио всегда округляется вниз, что приводит к ошибке (в среднем) на полразряда. Вы могли бы подумать о способе это исправить: такое усовершенствование заняло бы в программе несколько лишних строк. Значение делимого (бОООю) выбрано так, чтобы для входной частоты / Гц на дисплей выводилось число 10 / , которое мы читаем как п- m Гц, где п и /п - два разряда. Тактовая частота, которая в действительности поступает на счетчик, равна половине частоты (1 кГц) синхросигнала с макетной панели, т. е. составляет 500 Гц (см. рис. 22.4). В течение одного периода (1 с) иа счетчике набегает 500 единиц, а на дисплей надо вывести 10 / поэтому делимое= 10/Х 500 = 5000. Какова самая низкая частота, которую можно измерить при помощи такой схемы? Как можно было бы расширить диапазон? Прежде всего проверьте линейность вашего частотомера; его абсолютная калибровка, вероятно, окажется никуда не годной, но линейность должна быть хорошей. Почему показание дисплея иногда скачет сразу иа две единицы младшето разряда.
; определить порты ; ввести текущее показание счетчика ; импульс сброса иа счетчик ; установить в паре per, ; 2-е дополнение показания ; загрузить в HL делимое ; очистить А. Начать деление ; очистить CY для проведения AAA ; десятичное показание А ; 16-битовое сложение ВС (- показание) с HL ; повторить цикл, пока деление не будет закончено ; вывести результат на дисплей ; ввести компаратор как бит О ; вычеркнуть остальные биты ; повторить цикл, пока ие станет бит = О ; то же самое; повторять цикл, пока не окажется бит = 1 ; ( программный триггер ) повторить все снова Программа 22.2, Программа частото.мера. Это - модифицированная версия программы 22.1, в которую здесь вставлена программа вычисления в десятичной системе величины, обратной показанию счетчика. Отметим, что здесь использована двухрегистровая (16 бит) арифметика. например мекду 8,4 и 8,6 Гц? В качестве последнего шага как следует откалиб-руйте ваш прибор, для чего при помощи лабораторного частотомера определите точное значение частоты килогерцевого синхросигнала макетной панели затем вычислите, пользуясь приведенным выше выражением, новое значение делимого н, наконец, проверьте точность готового прибора. 22.5. Диапазон 0,99 Гц. Перестройте ваш^ схем> таким образом, чтобы между входом синхросигнала (1 кГц) и измеряющим время счетчиком был включен предварительный делитель на 16 (передвиньте отвод ИМС 74LS93 на рис. 22.4). Подсчитайте новое значение делимого, нужное, чтобы правильно выполнять деление, н испытайте прибор. Если вам захочется получить представление о преимуществах, которые имеет наш способ измерения частоты по сравнению с более традиционными (если у вас хватит терпения), подключите лабораторный частотомер параллельно нашему и сравнивайте! Лабораторная работа 23. Микропроцессор V Материал для чтения: гл. 11 до конца. Задачи в тексте. Сегодня мы заканчиваем серию посвященных микрокомпьютерам лабораторных работ, и в последней из них займемся аналого-цифровой техникой. Наш главный принцип остается неизменным; он состоит в том, что все управляющие сигналы внешних устройств соединяются с различными портами В/В, так что последовательные опера- ции превращаются в последовательные команды IN и OUT управляющей программы. На этог раз нашей главной задачей будет построение цифрового вольтметра с десятичным выходом; проект этого вольтметра основан на использовании популярного (и недорогого) двоичного 8-битового ЦАП 1408, с которым мы встречались в лабораторной работе 17, так что компьютеру придется заняться прюбразованиями из двоичной системы счисления в десятичную. Мы закончим работу примером компьютерного графопостроителя; этот простой проект должен принести нам огромное удовлетворение. 23.1. Цифро-аналоговые преобразования. Необходимость осуществлять захват данных, которые высылаются на шину в процессе преобразования, объясняет, зачем Шина I данных
+ 15 6,8 hOm 1n914 Ж 15 ВьиоД 1 Ш 270 пФ Рис. 23.1. ЦАП 1408 соединен с шиной данных через восьми канальную фиксирующую схему 74LS377. Дешифратор 74LS138 входит в состав уже существующей схемы; для вывода ЦАП использован код устройства О (имя устройства LATCH). в схеме на рис. 23.1 нужна фиксирующая схема. Микросхема 74LS377 - это запускаемая по положительному фронту 8-битовая фиксирующая схема, которая загружается с шины данных по переднему фронту импульса IORQ, когда гарантировано устойчивое состояние линий данных (см. временные диаграммы В/В для Z 80, приложение В). Проверьте действие ЦАП при помощи простой программы (программа 23.1): 00 = 00 D3 00 02 ЗС 03 СЗ 00 LATCN BEGIN: EQU О ; определить порт LATCH OUT LATCH ; фиксировать содержимое А на преобразователе INR А ; приращение А JMP BEGIN ; повторить Программа 23.1. Процедура для испытания цифро-аналогового преобразования. Если это еще не сделано, вернитесь к использованию исходной схемы тактового генератора (одновибратор) из лабораторной работы 20 (рис. 20.4), чтобы можно было менять скорость работы системы. Теперь проверьте, получается ли на выходе удовлетворительная наклонная при амплитуде 4 В; для проверки используйте вольтметр (низкая тактовая частота) или осциллограф (высокая тактовая частота). Каково измеренное время установления использованного таким способом ЦАП? Если устройство, исполмующее аналоговый выход, требует, чтобы он устанавливался (скажем, через 10 мкс) после начала выполнения следующей команды, то может ли наша схема удовлетворить этому требованию? Если не может, могли бы вы придумать программ-иы5 путь для того, чтобы обойти эту проблему? Выход схемы Н08 74LS3S5 Г'----1 Рис. 23.2. Вход компаратора. Имя устройства COMPAR, его код I. Входное напряжение задается прн помощи потенциометра от -15 Б. 23.2. Следящий АЦП. Мы сохраним код устройства 2 под именем DISPLA, а следовательно, и соединение выхода дешифратора с входом ENABLE (дисплея данных). На рис. 23,3 показана блок-схема процедуры аналого-цифрового преобразования для Ввести данные с иомпаратора Увеличить/? Уменьшить R т рис. 23.3. Блок-схема аналого-цифрового преобразования. Ей соответствует программа 23.2. этой схемы, действие которой в точности аналогично действию следящего преобразователя, построенного нами в лабораторной работе 17 Пронаблюдайте за поведением определить порты В/В показание компаратора. Устанавливает бит 0. выбрать бит 0. Установить флаги перейти к приращению в противном случае уменьшить per. С переслать новое значение в А выслать в ЦАП вывести на дисплей новое значение повторить приращение С перейти к основному циклу
Программа 23.2. Следящий АЦП. (оно должно быть вам знакомо по прошлому) нового преобразователя в то время, когда вы вращаете в обе стороны потенциометр 2,5 кОм. Чтобы ближе познакомиться с процессом слежения, испытайте преобразователь как при низких, так и при высоких тактовых частотах. 23.3. Цифровой вольтметр. Отличие аналого-цифровых преобразователей вообще от цифровых вольтметров состоит в том, что последние рассчитаны иа интерфейс с ВАМИ, т. е. с пользователем, поэтому их дисплей должен быть. 1) градуированным в вольтах (а не в условных единицах ), 2) десятичным, 3) изменяющимся не чаще, чем, можег быть, 10 раз в 1 с. Последнее ограничение нужно для того, чтобы глаз наблюдателя успевал различать цифры иа дисплее. Эту проблему нельзя решить просто путем понижения тактовой частоты, поскольку установление окончательного значения заняло бы тогда в нашем измерителе многие секунды. Вместо этого нам придется АЦ-прео6ра50бание Г!реобра50вать а десятичною систему Вывести в = 200 Т Рис. 23.4. Блок-схема цифрового вольтметра. устроить так, чтобы показания дисплея менялись гораздо реже, чем происходит обновление данных на фиксирующей схеме ЦАП Наша стратегия в этом вопросе ясна из рис 23.4, а поставленная задача решается программой 23 3. Наибольшее десятичное число, которое может показать наш дисплей, равно ЭЭю, что соответствует менее чем половине точности АЦП, имеющего 256 ступенек . Поскольку для получения полной шкалы достаточно всего семи двоичных разрядов, а результат меньше страдает от отбрасывания младшего значащего разряда, чем старшего, мы делаем один циклический сдвиг накопителя вправо (адрес 001 lie) перед тем, как перевести результат в десятичную систему счисления. Теперь мы можем использовать для калибровки потенциометр на входе, как это показано на рис, 23 5, и воспользоваться магазином сопротивлений, включенным последовательно с внутренним сопротивлением нашего вольтметра Вместо всего этого можно было бы использовать иа входе переменное напряжение очень низкой частоты. Входная клемма вольтметра Ш ком Рис. 23.5. Схема для калибровки и тестирования.
определить порты В/В ; ввести показание компаратора. Устанавливает бит О t выбрать бит О ; взять дополнение бита О ; сдвниуть в бнт 1 ; уменьшить А: теперь А=е - 1 ; прибавить предыдущее значение в С ; выслать новое значение в ЦАП ; и сохранить его опять в С ? уменьшить регистр счетчика В ; н повторять цикл, пока ие закончится счет ; перед сдвигом очистить флаг CY ; сдвинуть вправо. Бнт О теряется ; прибавить 1: нсключенче ошибки в О ; переслать ответ в D ; очистить А ; начать десятичное преобразование: ; десятичное показание А возрастает на 1 ; в то время как D уменьшается, ; пока не обратится в нуль ; убрать лишнюю единицу ; в десятичной системе ; вывести на дисплей новое значение , снова загрузить регистр счетчика ; повторить МЗР 1408 СЗР 2 кОм МЗР 1408 СЗР 2 КОМ Рис. 23.6. Дисплей X~Y. Если вы используете в качестве входов каждой из схем 1408 четыре старших значащих бита, полный размах выхода увеличится, а относительный уровень шумов понизится. Таким путе* можно получить более чистые иа вид точки. 23.4. X - К-дисплей. Теперь мы можем при помощи двух ЦАП вывести на экран осци.тлографа обе координаты {X и Y) некоторой точки. Чтобы ие нуждаться в информации, связанной с яркостью свечения на экране (что было бы необходимо для затемнения переходных состояний при дйнженни X hY в соответствующие им порты), мы можем использовать простой трюк, показанный на рнс. 23.6. X н V высылаются одновременно в один н тот же порт как старшая н младшая половины одного байта. Укажем на связанное с таким приемом ограничение разрешающей способности: адресуемое пространство представляет собой массив точек размером 16Х 16. Сначала испытайте эту схему при помощи программы 21.2, которая должна выводить на дисплей диагональные линии точек. Чем определяется наклон этих линий? Наконец, испытайте программу 23.4, которая последовательно выводит на дисплей загрузить HL в 1-й адрес таблицы загрузить счетчик: ххдлина таблицы переслать коорд. из таблицы в накопитель вывести на осциллограф (символический порт) приращение (двойной регистр) уменьшить счетчик в В
луч. 0 и повторить Программа 23.4. Программа вывода списка иа дисплей. Таблица координат начинается в ячейке OOlOie, а ее длина (т. е. число точек) находится в ячейке 0004i6. список координат, записанных в памяти в виде таблицы. Нарисуйте на клетчатой бумаге расположение точек для этих координат (например, ваши инициалы или, может быть, ваш взгляд на эту книгу.) Приложение А. Комплектация В приведенном списке перечислены все небольшие детали, необходимые для проведения этих лабораторных работ. По поводу оборудования см. введение. Если иег других указаний, линейные ИМС должны выбираться в корпусах ми-ии-DIP, а цифровые ИМС-в пластмассовых DIP; оба типа могут быть в недорогом коммерческом исполнении для диапазона температур 0-i-70°C. По поводу линейных ИМС, типы корпусов которых подробно перечислены и различны у разных изготовителей, см. их описания в соответствующих приложениях. Жирным шрифтом указаны те детали, которые употребляются часто и должны быть запасены в достаточном количестве. Небольшие наборы сопротивлений, которые предлагаются фирмами Ohmiie или Stackpole в небольших ящиках, удобны для обеспечения работ сопротивлениями на 0,25 Вт. Если потенциометры ие предусмотрены как часть макетных панелей, особенно удобными могут быть металлокерамические однооборотные (например. Bourns 3386 Р, CTS 326 Y) и их аналоги. Лучше всего припаять короткие отрезки голого провода (типа 22 по Британскому сортаменту) к более массивным компонентам (тумблеры, кнопочные выключатели, лампы, индикаторы) и по паре изолированных жестких проводов (типа 22) к трансформатору и громкоговорителю, чтобы облегчить их установку на макетных панелях. 1 ... 54 55 56 57 58 59 |
© 2004-2024 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки. |