ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 28.12.2024

Просмотров: 604

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Задание №6

Составить электрические структурную и принципиальную схемы микропроцессорной системы, а также составить блок-схему и написать программу для решения задачи: выполнять последовательный опрос восьми аналоговых каналов через аналоговый коммутатор, управляемый трехразрядным адресным кодом. Аналоговый сигнал выбранного канала оцифровывать с помощью восьмиразрядного униполярного АЦП. В каждой серии опросов аналоговых каналов максимальное значение выводить в порт вывода 3, а минимальное – в порт вывода 4. Считать, что аналоговые сигналы нормированы к входному напряжению АЦП. Выполнить трансляцию в объектную программу.

Задание №7

Составить электрические структурную и принципиальную схемы микропроцессорной системы, а также составить блок-схему и написать программу для решения задачи: непрерывно производить замеры с помощью униполярного восьмиразрядного АЦП и в каждой серии из 100 измерений в порт вывода выводить результаты, лежащие в диапазоне значений от Uвх1 до Uвх2, где Uвх1 и Uвх2 вводятся через два других униполярных АЦП, либо через тот же АЦП, что и контролируемое напряжение, но путем коммутации каналов через аналоговый коммутатор с цифровым управлением. Причем не обязательно, что Uвх1 < Uвх2. Считать, что аналоговые сигналы нормированы к входному напряжению АЦП. Выполнить трансляцию в объектную программу.

Задание №8

Составить электрические структурную и принципиальную схемы микропроцессорной системы, а также составить блок-схему и написать программу на языке Ассемблера для решения задачи: измерять с помощью униполярных восьмиразрядных АЦП амплитуды каналов тока и напряжения и рассчитывать значение мощности. Результат расчета мощности выводить в виде двухбайтового кода в порты вывода. Считать, что аналоговые сигналы нормированы к входному напряжению АЦП и умножение реализовать через сдвиги и сложение. Выполнить трансляцию в объектную программу.

Задание №9

Составить электрические структурную и принципиальную схемы микропроцессорной системы, а также составить блок-схему и написать программу для решения задачи: производить серию из 16 опросов 12-разрядного униполярного АЦП с параллельным выходным кодом и среднее значение выводить в 2 восьмиразрядных порта вывода. Считать, что аналоговые сигналы нормированы к входному напряжению АЦП. Произвести трансляцию в объектную программу.


Задание №10

Составить электрические структурную и принципиальную схемы микропроцессорной системы, а также составить блок-схему и написать программу для решения задачи: постоянно с периодичностью в 1 секунду опрашивать униполярный восьмиразрядный АЦП и выводить 0 в первый разряд порта вывода если Uвх < и 1 – еслиUвх, где- максимальное входное напряжение АЦП. ЕслиUвх, отобразить сигнал ошибки в виде светящегося светодиода. Считать, что аналоговые сигналы нормированы к входному напряжению АЦП. Выполнить трансляцию в объектную программу.

Общие рекомендации по выполнению заданий

Общие рекомендации касаются разработки аппаратной части микропроцессорной системы. Для реализации всех заданий наиболее оптимальной является структура микропроцессорной системы с общей шиной (рис.1). Схему необходимо адаптировать под конкретный микропроцессорный комплект. Приведенная на рисунке схема ориентирована на МП-комплект серии 580. Именно ее рекомендуется использовать как базовую. В каждом задании эту структуру необходимо дополнить необходимой периферий, необходимым количеством портов ввода-вывода. Вместо надписи «ВНЕШНИЕ УСТРОЙСТВА ВВОДА-ВЫВОДА» необходимо изобразить, например, блок АЦП, бинарных датчиков и т.д. в соответствии с индивидуальным вариантом задания. Ненужные блоки можно не изображать. Например, в большинстве заданий не требуется организовывать каналы прерывания и контроллер прерывания можно не изображать. В пояснительной записке нужно привести описание этой схемы, которое подробно рассматривается в [1,2].

Рис.1. Схема структурная микропроцессорной системы с общей шиной.

В качестве электрической принципиальной схемы можно предложить несколько реализаций. Один из вариантов рекомендуемой схемы приводится на рис.2. Отличаются они в основном организаций подключения портов ввода-вывода. Можно подключать порты ввода-вывода как ячейки памяти по управляющим сигналам MR и MW с непересекающимся адресным пространством портов и памяти, а можно как собственно порты ввода-вывода с пересекающимся адресным пространством с памятью по управляющим сигналам IOR и IOW. Кроме того, можно по разному организовывать дешифратор адреса портов: либо на основе готовой микросхемы дешифратора (именно такой вариант приводится на рис.2), либо на микросхемах элементарных логических функций.


В схеме организовано 2 порта ввода и 2 порта вывода на основе микросхем КР580ИР82. Микросхема имеет трехстабильные выходы Q0…Q7. Управление состоянием выходов осуществляется по инверсному статическому входу (output enable), имеющим тот же смысл, что и сигнал выбора CS в структурной схеме. Поскольку порты ввода подключаются в общую шину данных, то, чтобы они не включались в эту шину одновременно друг с другом и с памятью, выходы их необходимо активизировать только при наличии обращения к конкретному порту. Это достигается путем подачи на входлогического 0. Вход STB (strob) служит для записи входных данных в выходные триггеры. Этот вход является прямым динамическим.

Рис.2. Схема электрическая принципиальная микропроцессорной системы с общей шиной.

Таким образом, для опроса конкретного порта ввода необходимо на его вход подавать логический ноль, а на входSTB - перепад с 0 на 1. Для выходных портов нет необходимости переводить их выходы в высокоимпедансное состояние. Поэтому на вход у них подается постоянно логический ноль путем подключения этих входов к земле. Управление же осуществляется только по входуSTB путем защелкивания в них выходных данных при наличии обращения к конкретным портам вывода. Управляющие сигналы активизации портов ввода-вывода формируются путем объединения сигналов IOR и IOW и унитарного выходного кода с выхода дешифратора адреса, реализованного на микросхеме К155ИД10. Таким образом, активизация соответствующего порта происходит только тогда, когда происходит совпадение сигналов IOR или IOW и его адреса с шины адреса. Остальное описание, выбор адресного пространства и логику формирования управляющих сигналов портов на основе элементов базовых логических функций из имеющихся сигналов IOR и IOW и кода адреса студенту необходимо описать самостоятельно в разделе разработки принципиальной схемы.

Память в представленной на рис.2 схеме представлена микросхемами ПЗУ и ОЗУ по 2 кБайт каждая. Выбор адресного пространства ПЗУ или ОЗУ осуществляется разрядом A11 шины адреса микропроцессора. При нуле в этом разряде активизируется микросхема ПЗУ, при единице – микросхема ОЗУ. Логику настройки и формирование управляющих сигналов на микросхемы памяти студенту необходимо описать в разделе разработки принципиальной схемы.


Поскольку по формулировке некоторых заданий в системе требуется организовать только один канал прерывания, то в данном случае нет необходимости устанавливать контроллер прерывания. Сигнал INT можно заводить сразу на микропроцессор, а функцию идентификации номера прерывания выполняет регистр DD7, который при подтверждении прерывания микропроцессором (сигнал INTA) пропускает в шину данных код команды запроса прерывания (команда RST n в микропроцессоре КР580ВМ80А). Этот код на входе регистра устанавливается постоянным путем подключения определенных разрядов к шине питания или к земле и настройки команды, таким образом, на определенный адрес прерывания n. В случае отсутствия подключаемых устройств по прерыванию этот регистр можно не включать в принципиальную схему.

При выборе и описании элементной базы можно руководствоваться [3,4], а также ресурсами сети Internet. В приложении 2 приводится система команд для микропроцессора КР580ВМ80.


Рекомендации по выполнению заданий по вариантам

Рекомендации по выполнению заданий по вариантам относятся в большей степени к программной части разработки.

Рекомендации к заданию 1. Для подсчета количества единиц необходимо установить факт наличия единицы в каждом разряде. Для этого достаточно сдвинуть байт влево или вправо и проверить значение флага переноса. При наличии единицы в младшем или старшем бите, в зависимости от направления сдвига, она зафиксируется во флаге переноса. Сдвинув байт 8 раз можно, таким образом, проверить на наличие единиц все 8 разрядов байта. Подсчитать количество единиц можно путем инкремента счетчика с его начального нулевого значения при каждом сдвиге, если единица была зафиксирована во флаге переноса. Иначе инкремент счетчика единиц пропускается. В качестве счетчика единиц можно использовать любой регистр общего назначения. Очевидно, что сдвиг байта лучше организовать в цикле из 8 шагов, используя для этого стандартные методы программирования циклических структур на языке Ассемблера. Поскольку подсчитывать количество единиц нужно в шестнадцатиразрядном слове, то необходимо будет поочередно подсчитать количество единиц одного байта, а затем второго с накоплением их суммы в одном и том же регистре – счетчике единиц.

Для индикации результата подсчета на двухразрядном десятичном семисегментном индикаторе необходимо сформировать 16 семисегментных кодов. Поскольку необходимо отображать только две десятичные цифры (максимальное количество единиц может быть 16), а для управления одного семисегментного индикатора требуется 7 разрядов по количеству его сегментов, то индикаторы единиц и десятков можно подключить параллельно к одному порту вывода, в котором старший восьмой разряд может использоваться как бит выбора индикатора единиц или десятков. Этим разрядом можно управлять ключами, которые будут коммутировать к питанию или к земле либо индикатор единиц, либо индикатор десятков. Если вход одного ключа подключить напрямую к этому биту, то вход другого ключа нужно будет подключить через инвертор. Таким образом, будет реализован принцип динамической индикации, когда будут поочередно высвечиваться значения единиц и десятков. Сформировав, таким образом, 16 кодов индикатора, их последовательность можно разместить в соседних ячейках ПЗУ как константы. В первой ячейке этой области будет храниться семисегментный код числа 00, во второй – 01 и т.д. Если теперь к адресу первой ячейки (базовому адресу) области памяти с этими кодами прибавить двоичный код суммы единиц (смещение относительно базового адреса), то получится адрес ячейки памяти, в которой хранится нужный семисегментный код. Достаточно извлечь из памяти с полученным адресом ее содержимое и вывести его в порт вывода, куда подключен семисегментный индикатор.