Проектирования микропроцессорной системы управления объектом

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    924,15 Кб
  • Опубликовано:
    2012-12-17
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирования микропроцессорной системы управления объектом

микропроцессорная управление аппаратная алгоритмСодержание

Введение

1. Разработка аппаратных средств

1.1 Разработка структурной схемы

1.2 Разработка карты распределения адресного пространства МПС

1.3 Разработка микропроцессорного модуля

1.4 Разработка модуля ПЗУ

1.5 Разработка модуля энергонезависимого ОЗУ

1.6 Разработка модуля ввода аналоговых величин

1.7 Разработка модуля вывода управляющих сигналов

1.8 Разработка модуля клавиатуры

1.9 Разработка модуля индикации и аварий сигнализации

2. Расчет электрического сопряжения

2.1 Расчет сопряжения по цепям данных

3. Расчет аппаратных затрат

4. Расчет потребляемой мощности

5. Выбор фильтров питания

6. Построение временной диаграммы работы МПС

7. Разработка програмного обеспечения

Заключение

Приложение. Спецификация используемых элементов

Обозначения и сокращения

 

АЦП

аналого-цифровой преобразователь

ВС

вычислительная система

ЗУ

запоминающее устройство

МПМ

микропроцессорный модуль

МПС

микропроцессорная система

ОЗУ

оперативное запоминающее устройство

ОМЭВМ

однокристальная микро ЭВМ

ПЗУ

постоянное запоминающее устройство

УВВ

устройство ввода-вывода

ЦАП

цифро-аналоговый преобразователь

ЭВМ

электронно-вычислительная машина



Введение


Целью курсового проектирования является приобретение навыков разработки микропроцессорных систем (МПС) на примере проектирования микропроцессорной системы для управления некоторым объектом.

МПС принимает информацию об объекте управления в виде входных сигналов от внешних аналоговых и цифровых датчиков (X1 - X7), вырабатывает управляющие воздействия (цифровые - Y1, Y2, Y3 и аналоговый Y4) в соответствии с законом управления и подает их на исполнительный механизм. Также в МПС от ОУ поступают сигналы прерывания (INT1 и INT2) от датчика аварийной сигнализации и от датчика напряжения питания. На рисунке 1 представлена схема взаимодействия МПС с объектом управления.

Рис.1. Объект, управляемый МПС

В ходе предварительной оценки поставленной задачи, были определены следующие основные принципы проектирования:

минимизация аппаратных затрат;

обеспечение возможности расширения управляющих алгоритмов и аппаратной конфигурации.

В данном курсовом проекте разрабатываются структурная и принципиальная электрические схемы МПС и программные модули, обеспечивающие выполнение заданного алгоритма управления, осуществляется оценка параметров МПС.

Основой МПС является однокристальная микроЭВМ (ОМЭВМ) фирмы ATMEL AT89C52. Также в курсовом проекте используются АЦП и ЦАП фирмы Analog Devices, контроллер клавиатуры и вспомогательные элементы фирм Analog Devices, MAXIM и других. Для схем управления выберем серию микросхем КР1533.

микропроцессорная управление аппаратная алгоритм

1. Разработка аппаратных средств

 

.1 Разработка структурной схемы


Структурная схема МПС приведена на рис.2.

Для внешних двоичных сигналов X1-X4, сигналов прерывания INT1 и INT2 заданы стандартные КМДП уровни напряжения. Так как диапазон входных напряжений высокого и низкого уровня микросхем серии 1533 достаточно широк, следовательно, это дает возможность использовать входные сигналы без каких либо преобразований.

Рассмотрим основные модули, сигналы и шины представленной схемы МПС.- микропроцессорный модуль. Он является центральным блоком МПС и состоит из микроконтроллера AT89C52, регистра-защелки RGA для разделения адреса от данных, дешифратора для разделения обращения к памяти/внешним устройствам, регистра для приема сигналов Х1 - Х4 и кварцевого резонатора для стабилизации тактовой частоты. Микроконтроллер содержит внутренние ОЗУ, ПЗУ, контроллер прерываний и таймеры/счетчики. Также для обеспечения запаса и возможности модификации управляющих алгоритмов в МПС включены внешние ПЗУ и ОЗУ. MPM отвечает за прием сигналов от двоичных датчиков Х1 - Х4, обработку прерываний INT1 - INT3. Также MPM отвечает за выработку сигналов управления, адреса и данных.

Для связи устройств в МПС используются шина данных BD, включающая в себя восьмиразрядную параллельную шину данных и последовательную шину для связи устройств по протоколу I2C, шина адреса BA, шина управления BC.- энергонезависимое ОЗУ. При нормальной работе МПС может использоваться как обычное ОЗУ. При обнаружении ситуации отказа блока питания используется для хранения содержимого регистров микроконтроллера. На NVRAM поступают сигналы адреса и данных, а также управления. На выходе NVRAM формирует данные при считывании.

Рис.2. Микропроцессорная система. Схема электрическая структурная

- блок памяти ПЗУ. Применяется для хранения управляющей программы, если объем внутренней ПЗУ недостаточен для хранения алгоритмов управления. Объем ПЗУ выбран с запасом в 10 - 20 раз для возможности модификации управляющей программы. На вход модуля поступают сигналы адреса и управления, на выходе - данные для считывания.- блок индикации. Предназначен для отображения информации о состоянии МПС и вывода на индикацию сигналов Х1 - Х4 и цифрового кода Q4. Также блок содержит узел аварийной звуковой сигнализации. На входе блока - сигналы адреса, управления и данных.- блок ввода аналоговой информации. Предназначен для ввода значений аналоговых величин X5 - X7. Для ввода аналоговых величин используется аналоговый мультиплексор и одноканальный АЦП, работающий по протоколу I2C. Входными данными являются величины X5 - X7, сигналы адреса, данных и управления. Выходными сигналами являются сигналы данных, т.е. оцифрованные значения величин X5 - X7.- блок вывода управляющих двоичных сигналов Y1 - Y3 и напряжения Y4. Для вывода сигналов Y2, Y3 используется программируемый таймер, для вывода сигнала Y4 - параллельный ЦАП. На входе блока сигналы адреса, данных и управления, на выходе - управляющие сигналы Y1 - Y4.- блок управления микропроцессорной системой по средствам клавиатуры, входящей в блок. Данный блок содержит контроллер клавиатуры, работающий по протоколу I2C, который позволяет освободить микропроцессор от опроса клавиатуры. Также блок содержит схему формирования сброса МПС. На входе блока - клавиатурная матрица из 24 клавиш и кнопка сброса, на выходе - сигналы данных и прерывания.

 

1.2 Разработка карты распределения адресного пространства МПС


В микроконтроллере AT89C52 имеется внутренняя память программ объемом 8 килобайт и внутренняя память данных объемом 256 байт. Для того, чтобы обеспечить возможность модификации управляющих алгоритмов, подключим к микроконтроллеру дополнительно внешнюю память программ и данных.

Микроконтроллер AT89C52 имеет возможность расширения памяти программ и памяти данных до 64 килобайт. Выберем, с учетом резерва, емкость внешнего ПЗУ равной 8-ми килобайтам, следовательно, для ее адресации достаточно 13-ти адресных линий. Емкость внешнего ОЗУ также выберем равной 8-ми килобайтам. Внешнее ОЗУ сделаем энергонезависимым (NVRAM), в соответствии с требованиями технического задания.

Так как обращение к внутренней и внешней памяти данных, а также к памяти программ реализуются с помощью разных инструкций микроконтроллера, следовательно, допускается перекрытие их адресов. Также, особенностью микроконтроллера является использование только косвенного способа адресации при обращении к старшим 128 байтам внутренней памяти данных. Так как операции со стеком используют косвенную адресацию, то эту область памяти можно использовать под стек.

В соответствии с техническим заданием в МПС используется отображение внешних устройств на память. Поэтому с помощью шины А15 разобьем адресное пространство на 2 части по 32 кб. Также, для предотвращения лишней нагрузки на шину адреса при обращении к внешнему ПЗУ, будем формировать сигнал выбора микросхемы ОЗУ путем построения комбинационно - логической схемы для объединения сигналов A15, , .

Диапазон адресов 0000h - 7FFFh используем для адресации внешнего ОЗУ, но фактически использоваться будет только диапазон 0000h - 1FFFh, так как емкость внешнего ОЗУ 8 кб, 8000h - FFFFh - для адресации внешних устройств. Внешнее ПЗУ будет использовать диапазон адресов 2000h - 3FFFh. Подробнее распределение адресного пространства указано в таблице 1.

Таблица 1

Распределение адресного пространства МПС.

BA15

BA14

BA13

BA12

Устройство

Используемый диапазон адресов

0

Х

Х

Х

NVRAM

0000h - 1FFFh

0

Х

Х

Х

ROM

2000h - 3FFFh

Внешние интерфейсные устройства

1

0

0

0

Выбор аналогового мультиплексора8000h - 8003h



1

0

0

1

Выбор ЦАП9000h



1

0

1

0

Выбор программируемого таймераA000h - A003h



1

0

1

1

Управление контроллером дисплеяB000h - B003h



1

1

0

0

Сигнал выбора регистра для ввода X1 - X4C000h



BA15

BA14

BA13

BA12

Устройство

Используемый диапазон адресов

1

1

0

1

Сигнал выбора регистра для вывода X1 - X4 на индикациюD000h




Так как АЦП и контроллер клавиатуры работают по интерфейсу I2C они не имеют сигналов выбора микросхем и в таблицу не включены, т.к. протокол I2C имеет собственный механизм идентификации устройств, подключенных к шине I2C.

1.3 Разработка микропроцессорного модуля


Схема электрическая принципиальная микропроцессорного модуля МРМ приведена на рис.3.

В состав микропроцессорного модуля входят микроконтроллер AT89С52 (DD2), описание микросхемы в приложении В, кварцевый резонатор (ZQ1), регистр для фиксации адреса (DD8), системный дешифратор (DD9), регистр (DD7) для приема цифровых сигналов X1 - X4, а также схема формирования сигнала выбора внешней ОЗУ  (DD3.1, DD1.2, DD1.3).

Данный микроконтроллер работает как с внутренней памятью программ, так и с внешней. Для такого режима необходимо на вход EA/Vpp микроконтроллера АТ89С52 подать логическую "1”. Это осуществляется подключением данного входа к источнику питания через резистор R19. Выберем R19 C1-4 1 кОм 0.25Вт ± 5%.

Для генерации тактовой частоты в рассматриваемом микроконтроллере используется внутренний генератор. Для настройки и стабилизации требуемой частоты (12 МГц) необходимо подключить внешний кварцевый резонатор ZQ1 на

МГц. Выберем резонатор ZTA - 12 МГц. Его необходимо подключить к входам XTAL2 и XTAL1 микросхемы AT89C52. В цепь резонатора дополнительно включаются конденсаторы С1 и С2. Производителем рекомендованы следующие номиналы С1 и С2: С1=С2= 30pF ± 10pF. Выберем в качестве С1 и С2 конденсаторы X7R NPO - 30 пФ ± 20%.

Для сопряжения с внешними устройствами используются четыре восьмиразрядных порта ввода/вывода или 32 линии ввода/вывода. Каждую линию можно рассматривать как независимую друг от друга. Все порты кроме их прямого назначения для обмена данными с внешними устройствами могут иметь и другое функциональное назначение.

Двунаправленный порт P0 служит для передачи информации по 8-разрядной шине данных (BD0 - BD7). Через этот же порт выводится младший байт 16-разрядного адреса (BA0 - BA7). Для фиксации младшего байта адреса используется 8-разрядный регистр адреса КР1533ИР22 (DD8). Запись в него производится по сигналу мультиплексирования адреса и данных - стробу адреса ALE. Вход  заземлим, т.к. микроконтроллер единственное устройство, управляющее шиной адреса.

Рис 3. Микропроцессорный модуль. Схема электрическая принципиальная

Порт Р2 используется для вывода старшего байта адреса (BA8 - BA15)

Порт P1 - многофункциональный. Его линии используются для вывода управляющих сигналов (таблица 2).

На выводе порта Р1.0 формируется сигнал запуска АЦП. Вывод Р1.1 используется как вход от третьего источника прерывания. Так как этот вывод является источником внешних тактовых сигналов для таймера/счетчика 2, то, загрузив в регистр таймера/счетчика 2 значение FFh и настроив таймер на прием внешних тактовых сигналов, при приходе импульса INT таймер 2 переполнится и сформирует прерывание. Выводы порта Р1.2 и Р1.3 используется для управления цифро-аналоговым преобразователем. Вывод Р1.4 используется для выдачи управляющего сигнала Y1, выводы Р1.5 и Р1.6 используются для управления драйвером дисплея и программируемым таймером соответственно. Вывод порта Р1.7 используется для выдачи аварийной сигнализации.

Таблица 2

Назначение выводов порта Р1

Вывод порта

Сигнал

Назначение

Р1.0

Сигнал запуска АЦП


Р1.1

INT3

Внешнее прерывание

Р1.2

HBEN

Управление ЦАП

Р1.3

Управление ЦАП


Р1.4

Y1

Внешний управляющий сигнал

Р1.5

CS1

Управление драйвером дисплея

Р1.6

CE0

Управление таймером

Р1.7

ALM

Сигнал аварийной сигнализации


Порт Р3 также многофункциональный. Его линии используются для вывода управляющих сигналов (таблица 3). На выводах Р3.6 и Р3.7 порта Р3 формируются сигналы записи  и чтения  соответственно. В данной МПС эти сигналы предназначены для считывания и записи данных в или из периферийных блоков МПС.

По заданию МПС должна принимать и обрабатывать три сигнала прерывания INT1, INT2, INT3. Микроконтроллер АТ89С52 способен обрабатывать только два внешних прерывания  и  по входам Р3.2 и Р3.3 соответственно. Причем возможна обработка, как по спаду, так и по уровню. В разрабатываемой МПС сигнал INT3 формируется программно, поэтому выводы Р3.2 и Р3.3 используются для фиксации только прерываний INT1 и INT2 соответственно. Выводы Р3.0 и Р3.1 используются для программной организации шины I2C, порт P3.4 используется для управления программируемым таймером, порт P3.5 - для управления внешним сторожевым таймером.

Таблица 3

Назначение выводов порта Р3

Вывод порта

Сигнал

Назначение

Р3.0

SCL

Синхронизация I2C

Р3.1

SDA

Данные I2C

Р3.2

INT1

Внешнее прерывание

Р3.3

INT2

Внешнее прерывание

Р3.4

CE1

Управление таймером

Р3.5

WDI

Управление сторожевым таймером

Р3.6

Сигнал записи


Р3.7

Сигнал чтения



Для формирования сигналов выбора внешних устройств воспользуемся дешифратором. Выберем дешифратор КР1533ИД7 (DD9) 3 - в - 8. На информационные входы будем подавать сигналы BA14 - BA12. На вход разрешения С1, в соответствии с выбранным распределением памяти будем подавать сигнал А15, входы  и  заземлим. В результате получим 8 сигналов выбора внешних и интерфейсных устройств.

Для формирования сигнала выбора ОЗУ  построим комбинационно - логическую схему из 2 - х элементов КР1533ЛЛ1 (DD1.2 DD1.3) и КР1533ЛИ8 (DD3.1) для объединения сигналов  и А15.

Для ввода данных Х1 - Х4 в микроконтроллер используем регистр КР1533ИР22 (DD7). Чтение с регистра будем производить при помощи комбинации сигнала выбора регистра  и сигнала чтения . На вход С регистра подается логическая "1" через резистор R1 C1-4-0.125 1 кОм ±5% Регистр подключается к шине данных (выходы выводятся из третьего состояния) только на момент считывания данных.

.3.1 Организация шины адреса ВА. Шина адреса в МПС реализована на основании портов Р0 и Р2 микроконтроллера, через которые выводятся соответственно старший и младший байты адреса. Так как порт Р0 мультиплексированный, то для сохранения младшего байта адреса применяется регистр. Для адресации памяти используются 13 младших адресных линий, линия адреса А15 отвечает за разделение обращения к памяти/внешним устройствам, линии А14, А13, А12 используются для управления дешифратором и выработки сигналов выбора микросхем. Также, в режиме обращения к внешним устройствам, линии А0 и А1 используются для задания режима работы внешних устройств.

.3.2 Организация шины данных BD. Шина данных в МПС реализована на основании порта Р0, имеет разрядность 8 бит и используется для обмена данными между устройствами МПС.

.3.3 Организация шины управления BC. Шина управления в МПС включает сигналы выборки устройств МПС, сигналы управления периферийными устройствами МПС, сигнал сброса микроконтроллера и сигнал управления аварийной сигнализацией. Номера и сигналы шины управления указаны в таблице 4.

Таблица 4

Сигналы шины управления.

Номер

Сигнал

Назначение

1

Выбор аналогового мультиплексора


2

Выбор ЦАП


3

Выбор таймера


4

Выбор контроллера дисплея


5

Сигнал для выбора регистра ввода Х1 - Х4


6

Сигнал выбора ОЗУ


7

Сигнал чтения


8

Сигнал записи


9

Сигнал запуска АЦП


10

HBEN

Сигнал разрешения загрузки старшего байта в ЦАП

12

Сигнал обновления регистров ЦАП


13

Y1

Внешний управляющий сигнал

14

INT3

Прерывание от клавиатуры

15

CS1

Сигнал управления контроллером дисплея

16

CE0

Управление таймером

17

ALM

Сигнал аварийной сигнализации

18

Сигнал для выбора регистра вывода Х1 - Х4


19

RST

Сброс МПС

20

CE1

Управление таймером

21

WDI

Управление сторожевым таймером

1.4 Разработка модуля ПЗУ


Схема электрическая принципиальная модуля ПЗУ ROM приведена на рис.4.

Для построения ROM используем микросхему К573РФ6А (DD11). Эта микросхема представляет собой перепрограммируемое ПЗУ со стиранием ультрафиолетовым излучением, выполненное в металлокерамическом корпусе.

Микросхема К573РФ6А может работать в режимах хранения (невыбор), считывания, стирания и программирования. В разрабатываемой МПС нам понадобятся только режимы хранения и считывания. Поэтому будем считать, что вся необходимая информация была занесена в память К573РФ6А заблаговременно с помощью программатора. Очевидно, что возможно менять управляющую программу МПС посредством перепрограммирования схем модуля ПЗУ. Так как микросхема имеет прозрачное окно для пропуска стирающего излучения, то во избежание преждевременной потери информации окно корпуса микросхемы К573РФ6А должно быть защищено от воздействия ультрафиолетового и видимого излучений специально защитной плёнкой или дополнительным защищённым корпусом. Микросхема К573РФ6А имеет информационную ёмкость 65536 бит, организованную как 8К8.

Схема электрическая принципиальная

Микросхема используется для обеспечения указанного в техническом задании резерва для хранения команд. Модуль ПЗУ содержит всего одну микросхему К573РФ6А без дополнительных управляющих схем. В таком случае общая емкость памяти программ системы составляет 16К 8.

Рис.4. Постоянное запоминающее устройство

Адресные входы А0 - А12 микросхемы подключаются к линиям BA0 - BA12 шины адреса соответственно. Входы/выходы данных DIO0 - DIO7 подключаются к линиям BD0 - BD7 шины данных соответственно.

Для обеспечения режимов хранения и считывания на вход  подаётся логическая единица через резистор R20 выберем R20 C1-4 1 кОм 0.25Вт ± 5%, на вход UPR подаётся напряжение питания UCC. Вход  микросхемы заземляется. Данные на выходах появляются после поступления сигнала выбора микросхемы . Для выбора микросхемы используем сигнал обращения к внешней памяти программ микроконтроллера АТ89С52 . В отсутствии этого сигнала, т.е. в режиме невыбора, информационные выходы микросхемы находятся в третьем состоянии.

1.5 Разработка модуля энергонезависимого ОЗУ


Схема электрическая принципиальная модуля энергонезависимого ОЗУ NVRAM представлена на рис.5.

Для построения энергонезависимого ОЗУ выберем микросхему памяти DS1225AB - 150 фирмы MAXIM (DD14). При необходимости этот же модуль можно использовать как обычное ОЗУ. В проектируемой МПС достаточно включить одну микросхему DS1225AB, так как в совокупности с внутренней памятью емкости общей памяти данных системы хватает для хранения данных системы даже с учетом запаса.

Данная микросхема представляет собой статическое ОЗУ со встроенным источником питания. Первоначально источник питания изолирован, и его потери из-за утечек составляют 0.5%. Изоляция нарушается при первом подключении внешнего питания.

При наличии внешнего питания микросхема работает как обычное статическое ОЗУ. При падении напряжения ниже 4.62 В память защищается от записи, все выходы переводятся в состояние высокого импеданса, при этом обеспечивается завершение текущего цикла записи. При падении напряжения питания ниже 3 В происходит подключение внутреннего источника питания. При подключенном внутреннем источнике питания содержимое памяти может сохраняться до десяти лет. После включения внешнего питания защита от записи сохраняется в течение 120 мс максимум.

Рис.5. Оперативное запоминающее устройство

Схема электрическая принципиальная

Микросхема имеет емкость 8К х 8, чего вполне достаточно для организации требуемого техническим заданием резерва в 10 - 20 раз.

Сигнал выбора  поступает на вход  микросхемы. Адресные входы А0 - А12 микросхемы подключаются к линиям BA0 - BA12 шины адреса соответственно. Входы/выходы данных DQ0 - DQ7 подключаются к линиям BD0 - BD7 шины данных соответственно. Вход  (запись) микросхемы подключен к выводу  микроконтроллера, а вход  (чтение) подключен к выводу  микроконтроллера. Запись и считывание в/из

микросхемы DS1225AB осуществляется подачей низкого уровня на вход соответствующего режима, при низком уровне на входе выбора микросхемы . Описание микросхемы представлено а приложении Ж.

1.6 Разработка модуля ввода аналоговых величин


Схема электрическая принципиальная модуля ввода аналоговых величин (AINP) представлена на рис.6.

Модуль состоит из аналогового мультиплексора (DD5), схемы преобразования аналоговых сигналов (аналого-цифровой преобразователь (АЦП) (DD6)) и источника опорного напряжения для АЦП. Также в модуль включен инвертор КР1533ЛН2 (DD4.1) для согласования активного уровня сигнала выбора мультиплексора. Описание микросхем представлено в приложениях Г, Д и Л.

Преобразование входных аналоговых величин X5 - X7, поступающих от объекта, в цифровую форму N5 - N7 осуществляется 2-х канальным АЦП фирмы Analog Devices AD7992 при помощи аналогового мультиплексора ADG409 этой же фирмы. Второй канал АЦП используется для подачи на него опорного напряжения. В качестве источника опорного напряжения для АЦП и ЦАП применим высокоточный источник опорного напряжения фирмы Analog Devices ADR540B. Данный источник обеспечивает напряжение 4,096 В ± 0,2%. Для предотвращения превышения максимально допустимого тока через ADR540B включим в цепь питания источника опорного напряжения резистор R5. Рассчитаем R5 в соответствии с документацией на микросхему:

,

Рис.6.

где IIN - ток, проходящий через ADR540 в режиме стабилизации напряжения (50 мкА) IOUT - ток, потребляемый АЦП и ЦАП (2 мкА, т.к. АЦП и ЦАП это КМОП микросхемы следовательно это только ток утечки). Рассчитаем R5:

 Ом.

Выберем R5 C1-4 24 кОм 0.25Вт ± 5%. Выберем С16 в соответствии с документацией на микросхему K10-17 1 мкф - 20% +80%.

Выбор данного АЦП сделан, исходя из следующих критериев:

·        последовательный ввод информации в микроконтроллер в соответствии с техническим заданием;

·        двенадцатиразрядное разрешение цифрового эквивалента обеспечивают допустимую погрешность обработки не более 0,1% в соответствии с техническим заданием;

·        низкое потребление и наличие энергосберегающего режима;

·        высокая производительность (tconv=2 мкс)

Последовательный ввод информации в микроконтроллер осуществляется по интерфейсу I2С. Так как рассматриваемый в работе микроконтроллер AT89C52 аппаратно не поддерживает данный интерфейс, необходимо программно формировать все необходимые сигналы и их временные параметры. Для реализации протокола I2C выделим порты Р 3.0 (SCL) и Р 3.1 (SDA).

Для начала процедуры ввода аналоговых величин сначала необходимо выбрать канал для ввода. Это производится с помощью аналогового мультиплексора. Выбор мультиплексора осуществляется сигналом ,

выбор коммутируемого канала осуществляется разрядами А0 и А1 шины адреса. Соответствие между разрядами адреса и номером канала указано в таблице 5. Напряжения будут поступать на входы мультиплексора SA1 - SA3 соответственно. Также перед началом работы необходимо задать одноканальный режим работы АЦП. Это производится записью управляющего слова в РУС АЦП.

Таблица 5

Номера каналов мультиплексора

А0

А1

Номер канала

0

0

SA1

0

1

SA2

1

0

SA3


В соответствии с протоколом I2C АЦП имеет адрес, этот адрес задается при помощи входа AS. Назначим АЦП адрес, равный 0100 001х, подключив вход AS к земле.

Для записи управляющего слова в регистр управляющего слова (РУС) аналого-цифрового преобразователя сначала необходимо подать на шину I2C адрес АЦП, принять от него сигнал подтверждения, далее передать в АЦП адрес РУС и само слово. Для одноканального режима работы с использованием второго входа как входа для источника опорного напряжения управляющее слово будет иметь вид, указанный в таблице 6.

Таблица 6

Управляющее слово

D7

D6

D5

D4

D3

D2

D1

D0

0

1

0

1

0

0

0

0


Подробнее назначение битов управляющего слова см. в описании АЦП в приложении Д.

Так как в соответствии с техническим заданием необходимо опрашивать каналы один раз за цикл управления, следовательно, выберем режим 1 работы АЦП. В этом режиме команда на начало преобразования данных задается сигналом , данный сигнал формируется на порте Р 1.0 микроконтроллера, его длительность не менее 1 мкс, в соответствии с технической документацией на АЦП. После подачи импульса  АЦП начинает преобразование входного сигнала в цифровую форму. Время преобразования - не менее 2 мкс. После преобразования результат может быть считан из АЦП. Входной сигнал может лежать в пределах от 0 до Vref.

В соответствии с типовой схемой включения подключим к выводам питания конденсаторы С4: K10-17 0.1 мкФ +80% - 20% и С5 К53 - 18 - 16В - 10мкФ +50% - 20% и конденсатор С3: K10-17 0.1 мкФ (+80-20) % к выводу источника опорного напряжения. Также подключим подтягивающие резисторы R2 и R3 к выводам SCL и SDA соответственно, так как. эти выводы у АЦП имеют открытый коллектор. Согласно документации на микросхему АЦП и шину I2C выберем резисторы R2 и R3 C1-4 4,7 кОм 0.25Вт ± 5%.

1.7 Разработка модуля вывода управляющих сигналов


Схема электрическая принципиальная модуля вывода управляющих сигналов (OUTP) представлена на рис.7.

Модуль состоит из ЦАП (DD10) для выработки аналогового управляющего сигнала Y4, программируемого таймера/счетчика (DD12) для выработки управляющих сигналов Y2 и Y3, генератора тактовой частоты для таймера/счетчика (DD13) и источника опорного напряжения для ЦАП (DA1).

Также в модуль включены инверторы КР1533ЛН2 (DD4.3 - 4.5).

Преобразование цифровой величины Q4 в аналоговый управляющий сигнал Y4 производится при помощи ЦАП AD5341 фирмы Analog Devices. Выбор ЦАП сделан исходя из следующих критериев:

·        параллельный ввод информации в ЦАП в соответствии с техническим заданием;

·        двенадцатиразрядное разрешение цифрового эквивалента обеспечивают допустимую погрешность обработки не более 0,1% в соответствии с техническим заданием;

·        наличие энергосберегающего режима;

Значение опорного напряжения также выбрано исходя из требований технического задания. При значении опорного напряжения 4,096 и при двенадцатиразрядном разрешении ЦАП значение В, что соответствует требованиям технического задания. Описание микросхем приведено в приложениях Е и Л.

Рис.7. Модуль вывода управляющих сигналов. Схема электрическая принципиальная

Параллельный ввод информации в ЦАП производится через 8-ми разрядную шину данных. Так как ЦАП имеет разрядность 12 бит, следовательно, запись информации в ЦАП будет производится за 2 цикла записи. Для выдачи сигнала разрешения загрузки старших 4-х бит () используем порт микроконтроллера P1.2, для выдачи сигнала разрешения обновления выходного регистра ЦАП () используем порт микроконтроллера P1.3.

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

После окончания процедуры записи информации в ЦАП необходимо обновить содержимое выходного регистра ЦАП. Это производится подачей сигнала , причем сигнал может быть подан вне зависимости от сигнала выбора ЦАП .

Так как ЦАП имеет схему внутрисхемного сброса, то вход внешнего сброса не используется, также не используется вход . Эти выводы подключим к Ucc через резистор R14. Рассчитаем R4: На входы  и

должна быть подана логическая единица, минимальное UIH для AD5341 составляет 2,4 В, входной ток - 1мкА, следовательно:  Ом, выберем резистор C1-4 1,2 МОм 00.25Вт ± 5%. Также в соответствии с типовой схемой включения включим в цепь питания ЦАП конденсаторы C6: K10-17 0.1 мкФ +80% - 20% и C7: К53 - 18 - 16В - 10мкФ +50% - 20%.

Выдача управляющего сигнала Y1 производится с порта микроконтроллера P1.4, его длительность формируется программно, в соответствии с техническим заданием.

Управляющие сигналы Y2 и Y3 формируются с помощью программируемого таймера КР580ВИ53, что также указано в техническом задании.

Выбор таймера осуществляется сигналом , разряды шины А0 и A1 необходимы для программирования таймера. Для сигналов разрешения работы каналов 0 и 1 используем порты микроконтроллера Р1.6 и Р3.4 соответственно. Для обеспечения загрузки данных таймер подключается к 8-ми разрядной шине данных. Для выдачи управляющих сигналов необходимо запрограммировать таймер на нужный режим работы и подать сигнал разрешения выдачи (CE0 или CE1).

В качестве источника тактовой частоты для таймера КР580ВИ53 используется генератор КР1810ГФ84. Для нормальной работы генератора ко входам X1 и X2 необходимо подключить кварцевый резонатор и конденсатор малой емкости. Исходя из технической документации на генератор выберем С8: X7R NPO 20 пФ ±10%, резонатор ZQ2: ZTA - 500 кГц.

1.8 Разработка модуля клавиатуры


Схема электрическая принципиальная модуля клавиатуры (KEYB) приведена на рис.8.

Модуль состоит из клавиатурной матрицы 8 строк Ч 3 столбца, состоящей из кнопок K0 - K23, в их числе 16 клавиш шестнадцатеричного кода и три командные клавиши: ПУСК, ВВОД и МЕНЮ. Кнопка СБРОС (K24) подключается к земле и схеме формирования сброса микроконтроллера при включении питания, поэтому в клавиатурную матрицу не входит, внешнего сторожевого таймера MAX6317H и контроллера клавиатуры MAX7347 (DD17) фирмы MAXIM.

Рис.8. Модуль клавиатуры. Схема электрическая принципиальная

Данный контроллер имеет интерфейс I2C для связи с микроконтроллером. В соответствии с документацией на шину I2C зададим адрес контроллеру, равный 0111010х путем подключения входа А0 к Ucc через резистор R20. Последний разряд отвечает за необходимую операцию (0 - чтение, 1 - запись в регистры контроллера клавиатуры). Контроллер использует статический механизм опроса клавиатурной матрицы, имеет средства защиты от дребезга и позволяет

использовать кнопки с сопротивлением до 5 кОм в нажатом состоянии. Также контроллер имеет средства защиты от "ложного нажатия" кнопок при одновременном нажатии нескольких кнопок на клавиатуре. Подробнее см. описание микросхемы в приложении К.

На каждое зафиксированное нажатие клавиши контроллер формирует прерывание и микропроцессор должен считать из контроллера код нажатой клавиши. Для начала работы контроллера необходимо задать режим его


Таблица 7

Управляющие слова

Адрес РУС

D7

D6

D5

D4

D3

D2

D1

D0

01h

0

0

0

0

0

0

0

0

03h

1

0

1

0

0

0

0

0

04h

1

0

0

0

0

0

0

0


Регистр по адресу 01h отвечает за защитный интервал при нажатии кнопки, по адресу 03h за настройку выхода  как выхода прерывания, по адресу 04h за запуск контроллера и начала процедуры опроса клавиатуры. Также этот регистр предназначен для перевода контроллера в энергосберегающий режим.

Для организации самой клавиатурной матрицы используем кнопки DTS - 24N (SWT 9). Для данного типа кнопок коммутируемое напряжение - 12 В, рабочий ток 0,05 А, сопротивление в нажатом состоянии не более 0,1 Ом. Данные кнопки полностью удовлетворяют требованиям технической документации на контроллер клавиатуры.

Произведем расчет резистора R20: на вход AD0 должна быть подана логическая единица, минимальное UIH для MAX7347 равно 2,2В, входной ток IIH равен 1мкА, следовательно  Ом, выберем резистор C1-4 2,4 МОм 0.25Вт ± 5%

Расчет подтягивающих резисторов R2 и R3 был произведен при рассмотрении аналого-цифрового преобразователя.

В модуль клавиатуры также входит схема сброса микроконтроллера. Схема состоит из микросхемы MAX6317H фирмы MAXIM. Эта микросхема представляет собой формирователь импульса сброса нужной длительности при включении питания и имеет встроенный сторожевой таймер. Подробнее см. описание микросхемы в приложении М. Для организации сброса микроконтроллера необходимо на вход RST подать сигнал высокого уровня на время, превышающее два машинных цикла. Период тактовой частоты генератора равен Т = 83 нс. Тогда длительность одного машинного цикла равна Тм = 12·83 = 1000 нс = 1 мкс, где 12 - это число периодов сигнала тактового генератора в машинном цикле. Таким образом, напряжение высокого уровня на входе RST для сброса микроконтроллера необходимо удерживать не менее 2 мкс, т.е. tСБР = 2 мкс. Уровень логической единицы при сбросе UIH RST = 0,7·UCC MIN = 3,675 В. Параметры импульса сброса микросхемы MAX6317H полностью удовлетворяют требованиям документации на микроконтроллер.

Так как по требованиям технического задания необходимо реализовать функцию аппаратной защиты от программных сбоев и микроконтроллер AT89C52 не имеет встроенной защиты, то используем микросхему MAX6317H как сторожевой таймер. По требованиям технической документации на выход  микросхемы необходимо подключить резистор номиналом 100 кОм. Выберем резистор R21: C1-4 100 кОм 0.25Вт ± 5%.

1.9 Разработка модуля индикации и аварий сигнализации


Схема электрическая принципиальная модуля индикации и аварийной сигнализации (IND) приведена на рис.9.

Модуль состоит из 4 - х семисегментных светодиодных индикаторов с десятичной точкой для индикации значения Q4, драйвера дисплея ICM7212 фирмы MAXIM для управления индикаторами, динамической головки BA1 для выдачи звуковой сигнализации и светодиодов VD1 - VD4 для индикации

сигналов X1 - X4. Описание использованных микросхем и элементов приведено в приложении Н и И.

Так как значение Q4 вычисляется по формуле Q4=500 + N7/4, где N7 это преобразованное в цифровую форму напряжение X7, следовательно Q4 не может превышать значения Q4=500 + 4096/4=1524, следовательно 4 - х семисегментных индикаторов с десятичной точкой достаточно для отображения Q4.

Выберем семисегментные индикаторы c десятичной точкой SA56 - 11SRWA фирмы KingBright, имеющие параметры: IПР = 10 мА, UПР TYP = 1,85 UПР MAX = 2,5 В. Подключим индикаторы согласно типовой схеме включения микросхемы и рассчитаем сопряжение: при всех 28 горящих сегментах и токе IПР = 10 мА, рассеиваемая мощность микросхемы ICM7212 будет равна: В  Вт, что превышает

допустимые параметры эксплуатации микросхемы. Следовательно, данные индикаторы нельзя напрямую подключать к ICM7212. Для соблюдения параметров эксплуатации драйвера снизим питающее напряжение индикаторов до U = 3 В. Для этого используем регулятор напряжения LM317 фирмы ON Semiconductor. Для задания выходного напряжения в этой микросхеме используется внешний делитель. Рассчитаем значение сопротивления R8 согласно документации на микросхему, где R9=240 Ом: , но так как ток  мкА, то можно воспользоваться упрощенной формулой:

Рис.9. Модуль индикации и аварийной сигнализации. Схема электрическая принципиальная

, так как для управления индикатором высокая точность выходного напряжения не важна. Расчет R8: , откуда Ом. Выберем R8=330 Ом,  В. Проверим параметры ICM7212:  В,  Вт, что удовлетворяет параметрам эксплуатации ICM7212. Выберем R9: C1-4 240 Ом 0.25Вт ± 5%, R8: C1-4 330 Ом 0.25Вт ± 5%. Также, согласно типовой схеме включения микросхемы LM317 в цепь выходного напряжения включим конденсатор C17 = 1 мкФ. Выберем C17 Z5V 1 мкФ +80% - 20%.

Также, для отображения одной десятичной точки на индикаторе подключим его вывод к земле через резистор R10. Значение R10: Необходимо обеспечить напряжение на светодиоде не менее 2 В, следовательно В,  Ом. Выберем R10: C1-4 100 Ом 0.25Вт ± 5%. при этом падение напряжения на R10 будет равно В, следовательно напряжение на диоде будет не менее 2 В, что удовлетворяет условиям сопряжения.

Выберем для индикации сигналов X1 - X4 светодиоды АЛ102А, имеющие параметры: Iпр. =5 мА; Iпр. макс. =10 мА; Uпр. макс. =2.8 В. "Зажигание" светодиодов производится током низкого уровня буферных элементов КР1533ЛН2. Диоды загораются при подаче на буферные элементы логической "1" и в элементы втекает ток IILКР1533лн1 = 24 мА. Для ограничения этого тока поставим резисторы R12 - R15. Рассчитаем их, исходя из условий:

При Iсвеч = Iсвечmax = 10мА падение напряжения на диоде UVD1 не более 1.8В. Тогда R12min= (UCCmax-UOLЛН1min-UVD1) /Iсвечmax=295 Ом.

При Iсвеч = Iсвечmin = 5мА падение напряжения на диоде UVD1 не более 2.4В. Тогда R12max= (UCCmin-UOLЛН1max-UVD1) /Iсвечmin=490 Ом. Пусть R12-360 Ом, выделяемая мощность 38мВт. Выберем в качестве R12 - R14 резисторы С1-4 360 0.25Вт ± 5%.

В качестве динамической головки для выдачи звуковой сигнализации применим головку 0.25ГДШ2, которая имеет следующие параметры: номинальная мощность 0.1 Вт (макс.0.25 Вт), номинальное сопротивление 50 Ом, номинальный диапазон воспроизводимых частот 450 - 3150 Гц.

Рассчитаем значения токов:

= 44,7 мА

= 70,7 мА

Управление динамической головкой производится в порта Р1.7 микроконтроллера через элемент КР1533ЛН2 (DD4.2). Резисторы R17 и R18 необходимы для согласования токов динамика и выхода микросхемы. Резистор R16 служит для ограничения тока через динамическую головку. Для коммутации тока на головку используем транзистор VT1 КТ501Б. Для него: постоянный ток коллектора Iк = 300 мА, предельное напряжение Uкэмах = 15 В, предельное напряжение Uкбмах = 15 В, β = 40 ¸ 120, падение напряжения Uкэ нас = 0.4 В. Для того, чтобы обеспечить ток Iном через коллектор транзистора минимально-необходимый ток базы должен быть IБ min= S ·Iном / b = 2 · 41/40 = 2.1 мА.

Номиналы резисторов R17 и R18 рассчитываются исходя из следующих условий:

-       ток через элемент КР1533ЛН2 (DD4.2) не должен превышать предельно допустимого;

-       ток через базу транзистора не должен быть меньше минимально-необходимого.

Тогда получим:

³ (UCCmax - UOLКР1533ЛН2min) / IOLКР1533ЛН2min = 425Ом,+ R18 £ (UCCmin - UКБmax) / Iбmin.

возьмем равным 430 Ом. В этом случае получаем:

£ (UCCmin - UКБmax) / Iбmin - R17 = 1429 Ом.

Номинал резистора R18 возьмем равным 1500 Ом, выделяемая мощность на резисторах R17 и R18 PR17= 0.06 Вт и PR18=0.007 Вт

Выберем в качестве R17 и R18 резисторы C1-4 430 Ом 0.25Вт ± 5% и C1-4 1,5 кОм 0.25Вт ± 5% соответственно.

Резистор R16 необходим для ограничения тока, протекающего через динамическую головку. Его номинал выбирается таким образом, чтобы ток не оказывался больше предельно-допустимого тока Imax или меньше номинального тока Iном.

³ (UCCma x - UКЭнас min) / Ima x= 27 Ом,£ (UCCmin - UКЭнасmax) / Iном = 41 Ом.

Выберем номинал резистора равным R16 = 33 Ом, максимальный ток через резистор:

R17max = (UCCmax - UКЭнас min) / (R16 + Rном) = 66 мА

Тогда выделяемая мощность:

R16 = I2R16max · R16 = 0.143 Вт.

В качестве резистора R16 будем использовать C1-4 33 Ом 0.25Вт ± 5%.

2. Расчет электрического сопряжения


2.1 Расчет сопряжения по цепям данных


К шине данных микропроцессорной системы подключены: регистр адреса КР1533ИР22, микросхема постоянного запоминающего устройства К573РФ6А, микросхема энергонезависимой памяти DS1225AB, регистр для приема сигналов X1 - X4 КР1533ИР22, цифро-аналоговый преобразователь AD5341, регистр для вывода сигналов X1 - X4 КР1533ИР22, контроллер дисплея ICM7212, программируемый таймер КР580ВИ53.

Постоянно подключенными к шине данных являются устройства: таймер КР580ВИ53 и регистры адреса и выдачи сигналов X1 - X4 КР1533ИР22. Рассмотрим возможные варианты подключения устройств:

Если работаем с регистром ввода X1 - X4, то:

Для токов высокого уровня:

OH (P0) ≥ IIHКР1533ИР22+ ILIК573РФ6А+ ILIDS1225AB+ ILIAD5341+ ILIICM7212+ IIHКР1533ИР22+ IIHКР1533ИР22+ IIHКР580ВИ53

мкА ≥ 20 мкА + 10 мкА + 1 мкА + 1 мкА + 1 мкА + 20 мкА + 20 мкА + 20 мкА

мкА ≥ 53 мкА - условие выполнено

Для токов низкого уровня:

OL (P0) ≥ IILКР1533ИР22+ ILIК573РФ6А+ ILIDS1225AB+ ILIAD5341+ ILIICM7212+ IILКР1533ИР22+ IILКР1533ИР22+ IILКР580ВИ53

мА ≥ 0,1 мА + 10 мкА + 1 мкА + 1 мкА + 1 мкА + 0,1 мА + 0,1 мА + 0,1 мА

мА ≥ 0,413 мА - условие выполнено

Если работаем с ПЗУ, то:

Для токов высокого уровня:

OH (P0) ≥ IIHК573РФ6А+ ILIКР1533ИР22+ ILIDS1225AB+ ILIAD5341+ ILIICM7212+ IIHКР1533ИР22+ IIHКР1533ИР22+ IIHКР580ВИ53

мкА ≥ 100 мкА + 20 мкА + 1 мкА + 1 мкА + 1 мкА + 20 мкА + 20 мкА + 20 мкА

мкА ≥ 203 мкА - условие выполнено

Для токов низкого уровня:

OL (P0) ≥ IILК573РФ6А+ ILIКР1533ИР22+ ILIDS1225AB+ ILIAD5341+ ILIICM7212+ IILКР1533ИР22+ IILКР1533ИР22+ IILКР580ВИ53

мА ≥ 1,6 мА + 20 мкА + 1 мкА + 1 мкА + 1 мкА + 0,1 мА + 0,1 мА + 0,1 мА

мА ≥ 1,933 мА - условие выполнено.

Если работаем с ОЗУ, то:

Для токов высокого уровня:

OH (P0) ≥ IIHDS1225AB+ ILIК573РФ6А+ ILIКР1533ИР22+ ILIAD5341+ ILIICM7212+ IIHКР1533ИР22+ IIHКР1533ИР22+ IIHКР580ВИ53

мкА ≥ 1 мкА + 10 мкА + 20 мкА + 1 мкА + 1 мкА + 20 мкА + 20 мкА + 20 мкА

мкА ≥ 93 мкА - условие выполнено

Для токов низкого уровня:

OL (P0) ≥ IILDS1225AB+ ILIК573РФ6А+ ILIКР1533ИР22+ ILIAD5341+ ILIICM7212+ IILКР1533ИР22+ IILКР1533ИР22+ IILКР580ВИ53

мА ≥ 1 мкА + 10 мкА + 20 мкА + 1 мкА + 1 мкА + 0,1 мА + 0,1 мА + 0,1 мА

мА ≥ 0,033 мА - условие выполнено

Если работаем с цифро-аналоговым преобразователем:

Для токов высокого уровня:

OH (P0) ≥ IIHAD5341+ ILIDS1225AB+ ILIК573РФ6А+ ILIКР1533ИР22+ ILIICM7212+ IIHКР1533ИР22+ IIHКР1533ИР22+ IIHКР580ВИ53

мкА ≥ 1 мкА + 1 мкА + 10 мкА + 20 мкА + 1 мкА + 20 мкА + 20 мкА + 20 мкА

мкА ≥ 93 мкА - условие выполнено

Для токов низкого уровня:

OL (P0) ≥ IILAD5341+ ILIDS1225AB+ ILIК573РФ6А+ ILIКР1533ИР22+ ILIICM7212+ IILКР1533ИР22+ IILКР1533ИР22+ IILКР580ВИ53

мА ≥ 1 мкА + 1 мкА + 10 мкА + 20 мкА + 1 мкА + 0,1 мА + 0,1 мА + 0,1 мА

мА ≥ 0,033 мА - условие выполнено

Если работаем с контроллером дисплея:

Для токов высокого уровня:

OH (P0) ≥ IIHICM7212 + ILIDS1225AB+ ILIК573РФ6А+ ILIКР1533ИР22+ ILIAD5341+ IIHКР1533ИР22+ IIHКР1533ИР22+ IIHКР580ВИ53

мкА ≥ 1 мкА + 1 мкА + 10 мкА + 20 мкА + 1 мкА + 20 мкА + 20 мкА + 20 мкА

мкА ≥ 93 мкА - условие выполнено

Для токов низкого уровня:

OL (P0) ≥ IILICM7212 + ILIDS1225AB+ ILIК573РФ6А+ ILIКР1533ИР22+ ILIAD5341+ IILКР1533ИР22+ IILКР1533ИР22+ IILКР580ВИ53

мА ≥ 1 мкА + 1 мкА + 10 мкА + 20 мкА + 1 мкА + 0,1 мА + 0,1 мА + 0,1 мА

мА ≥ 0,033 мА - условие выполнено

Если работаем с постоянно подключенными устройствами:

Для токов высокого уровня:

OH (P0) ≥ ILIHКР1533ИР22+ ILIК573РФ6А+ ILIDS1225AB+ ILIAD5341+ ILIICM7212+ IIHКР1533ИР22+ IIHКР1533ИР22+ IIHКР580ВИ53

мкА ≥ 20 мкА + 10 мкА + 1 мкА + 1 мкА + 1 мкА + 20 мкА + 20 мкА + 20 мкА

мкА ≥ 53 мкА - условие выполнено

Для токов низкого уровня:

OL (P0) ≥ ILIКР1533ИР22+ ILIК573РФ6А+ ILIDS1225AB+ ILIAD5341+ ILIICM7212+ IILКР1533ИР22+ IILКР1533ИР22+ IILКР580ВИ53

мА ≥ 20 мкА + 10 мкА + 1 мкА + 1 мкА + 1 мкА + 0,1 мА + 0,1 мА + 0,1 мА

мА ≥ 0,433 мА - условие выполнено

Рассчитаем сопряжение для емкостной нагрузки:

СLIM (P0) ≥ СINКР1533ИР22 + СINК573РФ6А + СINDS1225AB + СINAD5341 + СINICM7212 + СINКР1533ИР22 + СINКР1533ИР22 INКР580ВИ53 + СМ

100 пФ ≥ 10 пФ + 8 пФ + 10 пФ + 3 пФ + 5 пФ + 10 пФ +10 пФ +10 пФ + 10 пФ.

пФ ≥ 76 пФ - условие выполнено.

3. Расчет аппаратных затрат


За единицу сложности аппаратных затрат принимается один 16-выводной корпус. Если корпус имеет большее число внешних выводов: 24, 28, 40 или 48, то его сложность оценивается с помощью коэффициента пересчёта, значение которого равно соответственно 2, 3, 5 или 6. В таблице 8 представлены данные об используемых в МПС микросхемах с точки зрения аппаратных затрат.

Таблица 8

Данные о выводах микросхем

Микросхема

Число выводов

Количество микросхем

Коэффициент пересчета

Условные корпуса

AT89C52

40

1

5

5

КР1533ИД7

16

1

2

2

КР1533ИР22

20

3

2

6

DG409

8

1

1

1

КР580ВИ53

24

1

2

2

К1810ГФ84

18

1

2

2

MAX7347

16

1

1

1

ICM7212

40

1

5

5

КР1533ЛН2

14

2

1

2

КР1533ЛЛ1

14

1

1

1

КР1533ЛЕ1

14

1

1

1

КР1533ЛИ1

14

1

1

1

MAX6317H

6

1

1

1

LM317

3

1

1

1

ADR540B

3

1

1

1

DS1225AB

28

1

3

3

AD7992

10

1

1

1

AD5341

20

1

2

2


Аппаратные затраты составляют 21 микросхему или 39 условных корпусов.

4. Расчет потребляемой мощности


Список элементов, их потребляемая мощность (при UCCMAX = 5,25В и IССMAX) и количество приведены в таблице 9.

Таблица 9

Потребляемая мощность

Микросхема

Количество

Максимальный ток потребления, мА

Максимальная мощность, мВт

AT89C52

1

20

105

КР1533ИД7

1

10

52,5

КР1533ИР22

3

25

131,25

DG409

1

12

63

КР580ВИ53

1

115

603,75

К1810ГФ84

1

50

262,5

MAX7347

1

0,1

0,33

ICM7212

1

115

603,75

КР1533ЛН2

2

40

420

КР1533ЛЛ1

1

30

157,5

КР1533ЛЕ1

1

30

157,5

КР1533ЛИ1

1

30

157,5

MAX6317H

1

0,02

0,105

LM317

1

50

262,5

ADR540B

1

15

78,75

DS1225AB

1

75

393,75

AD7992

1

0,25

1,3

AD5341

1

0,35

1,8

Резисторы R1-R21

21

-

0.87

Светодиоды VD1-VD4

4

40

210

Светодиодные индикаторы HG1-HG4

4

280

1470

Пьезоголовка BA1

1


250

Итого:



5338,37


В итоге потребляемая мощность МПС составила 5,338 Вт.

5. Выбор фильтров питания


Для защиты интегральных микросхем от помех в цепь питания микросхем включаются конденсаторы:

-       для защиты от низкочастотных помех конденсатор большой ёмкости (20 мкФ)

-       для защиты от высокочастотных помех необходимы конденсаторы меньшей ёмкости (0.01 - 0.1мкФ)

Конденсаторы от ВЧ помех ставятся по всей плате равномерно.

Конденсаторы от НЧ помех ставятся в непосредственной близости от микросхем ближе к выводам питания и земли микросхем памяти.

Поскольку для микросхем ЦАП AD5341, АЦП AD7992, мультиплексора DG409 и источника опорного напряжения помехозащищающие конденсаторы уже выбраны в соответствии с документацией, то на оставшиеся 19 корпусов установим 3 конденсатора (C10, С11, С12) по 0.1 мкФ для защиты от помех ВЧ. А также произведем аналогичную защиту цепи питания +3В, используя конденсаторы С14, С15.

Будут использованы конденсаторы Z5V - 0,1 мкФ +80% - 20%.

В качестве конденсатора для защиты от помех низкой частоты используем 1 конденсатор К53 - 18 - 16В - 20мкФ +50% - 20% (С9) и такой же конденсатор на цепь питания в +3,3В.

6. Построение временной диаграммы работы МПС


В соответствии с техническим заданием необходимо построить временную диаграмму работы микропроцессорной системы в режиме записи в оперативно-запоминающее устройство. Приведем в таблице 10 необходимые для построения временные параметры микроконтроллера AT89C52 для тактовой частоты 12 МГц. Временная диаграмма приведена на рисунке 10.

Таблица 10

Временные параметры микропроцессорной системы

Символ

Параметр

Min (нс)

Max (нс)

Длина импульса ALE

127


tAVLL

Время предустановки адреса до сигнала ALE

43


tLLAX

Время удержания адреса после сигнала ALE

48


tWLWH

Длина импульса 400



tLLWL

Задержка от ALE до 200300



tAVWL

Время удержания адреса до сигнала 203



tQVWX

Время предустановки данных до 23



tQVWH

Действительные данные

433


tWHQX

Удержание данных после сигнала 33




Рис.10. Временная диаграмма работы микропроцессорной системы в режиме записи в ОЗУ

7. Разработка програмного обеспечения


Программное обеспечение реализовывалось по следующим алгоритмам:

и алгоритм формирования Y3 и Y2:


Листинг программы:; объявляем сегмент с побитовым доступом для флагов I2C и других: dbit 1: dbit 1CBusy: dbit 1: dbit 1: dbit 1: dbit 1: dbit 1at 30h: ds 3: ds 20: ds 20: ds 2: ds 3: ds 2: ds 2: ds 1: ds 2: ds 1: ds 1; Счетчик битов для I2C: ds 1; Счетчик байтов для I2C: ds 1; Адрес ведомого: ds 3; таймаут: ds 8; Буфер передачи I2C, 8 байт: ds 8; Буфер приема I2C, 8 байтequ 10_ADDR equ 01110100b_ADDR equ 01000010bstart3hint1_alarm13hint2_power23hint3_keyb40h: dw 7FFh; константа Q0: db 24; K: dw 1F4h; A0: db 4; A1equ 0C8h; глубина стека от 200 до 255 байт - 55 байтbit P1.0; сигнал запуска АЦПbit P1.2; разрешение загрузки старшего байта в ЦАПbit P1.3; обновление регистров ЦАПbit P1.4; управляющий сигналbit P1.5; управление контроллером дисплеяbit P1.6; управление таймером КР580ВИ53bit P1.7; аварийная сигнализацияbit P3.0; синхронизация I2Cbit P3.1; данные I2Cbit P3.4; управление таймером КР580ВИ53bit P3.5; управление сторожевым таймером:SP,#stack-1IE,#7Fh; запретим прерыванияP1,#10011100bP3,#11000011bWDI; сбросим watchdogWDI

; // // // // // // // // // // // // // // //

; инициализация Т2 как источника внешнего прерывания0C9h,#00000000B; перезапускаемый режим (0C9h - адрес T2MOD)0C8h,#01001000B; Режим таймера Т2. Счетчик, счет от внешнего входа (0C8h - адрес T2CON)0CDh,#0FFH; Запись значения в таймер Т2 (0CDh - адрес TH2)0CCh,#0FFH; Запись значения для 16 разрядного счета (0CCh - адрес TH2)

; // // // // // // // // // // // // // // //

; инициализируем АЦПXmtDat,#00000010b; адрес РУСXmtDat+1,#01010000b; управляющее словоSlvAdr,#ADC_ADDR; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#2;SendData;

; теперь необходимо вернуть указатель на регистр результатаXmtDat,#00000000b; адрес регистра результатаSlvAdr,#01000010b; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#1;SendData;

; // // // // // // // // // // // // // // /

; инициализируем контроллер клавиатурыXmtDat,#00000001b; адрес РУСXmtDat+1,#00000000b; управляющее слово для 0х01XmtDat+2,#00000000b; управляющее слово для 0х02 - автоувеличение адресаXmtDat+3,#10100000b; управляющее слово для 0х03 - автоувеличение адресаXmtDat+4,#10000000b; управляющее слово для 0х04 - автоувеличение адресаSlvAdr,#KEYB_ADDR; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#5;SendData;

; теперь необходимо вернуть указатель на регистр FIFOXmtDat,#00000000b; адрес регистра FIFOSlvAdr,#01110100b; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#1;SendData;

; // // // // // // // // // // // // // // // // // /

; загрузим константыDPTR,#constQ0; константа Q0A,#00h; старший байтA,@A+DPTR;Q0,A; старший байтA,#01h; младший байтA,@A+DPTRQ0+1,A; младший байтDPTR,#constK; уставка KA,#00h;A,@A+DPTR;K,A;DPTR,#constA0; константа A0A,#00h; старший байтA,@A+DPTR;A0,A; старший байтA,#01h; младший байтA,@A+DPTRA0+1,A; младший байтDPTR,#constA1; константа A1A,#00h;A,@A+DPTR;A1,A

; // // // // // // // // // // // // // // // // // // IE,#0BFh; разрешим прерывания_CYCLE:DPTR,#0C000hA,@DPTR; введем X1 - X4DPTR,#0D000h@DPTR,A; выведем X1 - X4CALC_Q1; посчитаем Y1no_Y1; проверяем, надо ли выводить Y1Y1Y1_DELAY; задержка 90 мсY1_Y1:

; введем Х5, Х6, Х7Y1AINPUTCALC_Q2Y2_OR_Y3CALC_Q4OUTP_Y4IND

; DELAYWDI; сбросим watchdogWDIR7,#6_DELAY1:TMOD,#00000001b; режим таймера 0 - счетчикTH0,#HIGH (65536-536)TL0,#LOW (65536-536)TR0; запустим таймер_DELAY: jnb TF0,MAIN_DELAY; подождали 65 мсTF0TR0R7, MAIN_DELAY1MAIN_CYCLE

; // // // // // // // // // // // // // // // //

; рассчет Q1_Q1:A; введем значение X1X1,CA; выдвинем второй бит иC,X1; сделаем OR с первымX1,C; сохраним результатA; выдвинем третий бит иC,X1; сделаем OR с предыдущимX1,C; сохраним результатA; выдвинем четвертый бит иC,X1; сделаем OR с предыдущим

; конец, результат 0 или 1 образовался во флаге С

; // // // // // // // // // // // // // // // //

; задержка для Y1_DELAY:TMOD,#00000001b; режим таймера 0 - счетчикTH0,#HIGH (65536-60000)TL0,#LOW (65536-60000)TR0; запустим таймер_DELAY_M1:TF0,Y1_DELAY_M1; подождали 60 мс, надо еще 30TF0TR0TH0,#HIGH (65536-30000)TL0,#LOW (65536-30000)TR0; запустим таймер_DELAY_M2:TF0,Y1_DELAY_M2; подождали еще 30 мсTF0TR0

; // // // // // // // // // // // // // // // // /:DPTR,#8000h; выбор канала мультиплексораA,#00h@DPTR,A; выставим номер канала; подождемR1,#N5; адрес первого байто массива N5R7,#N; в массиве 10 элементов_CYCLE_N5:CONVST; включение АЦП; ожидание перехода АЦП из спящего в нормальный режимCONVST; захват сигнала и запуск конвертации на АЦПSlvAdr,#ADC_ADDR; загрузим адрес с запросом записи - последний бит "0"R0,#RcvDat;ByteCnt,#2;RcvData; так как процедура чтения сама увеличивает адрес на 1, то сама сформирует адрес с запросом на чтениеR0A,#01hA,@R0; уберем из старшего байта старшие 4 бита@R1,A; запишем старший байт элемента массива N5R0; адрес младшего байта из АЦПR1; адрес следующего байта массива N5A,@R0; младший байт из АЦП@R1,A; младший байт элемента массива N5R1; адрес следующего элемента массива N5R7,AINPUT_CYCLE_N5R1,#N6R7,#NDPTR,#8001h; выбор канала мультиплексораA,#00h@DPTR,A; выставим номер канала; подождем_CYCLE_N6:CONVST; включение АЦП; ожидание перехода АЦП из спящего в нормальный режимCONVST; захват сигнала и запуск конвертации на АЦПSlvAdr,#ADC_ADDR; загрузим адрес с запросом записи - последний бит "0"R0,#RcvDat;ByteCnt,#2;RcvData; так как процедура чтения сама увеличивает адрес на 1, то сама сформирует адрес с запросом на чтениеR0A,#01hA,@R0; уберем из старшего байта старшие 4 бита@R1,A; запишем старший байт элемента массива N5R0; адрес младшего байта из АЦПR1; адрес следующего байта массива N5A,@R0; младший байт из АЦП@R1,A; младший байт элемента массива N5R1; адрес следующего элемента массива N5R7,AINPUT_CYCLE_N6DPTR,#8002h; выбор канала мультиплексораA,#00h@DPTR,A; выставим номер канала; подождемCONVST; включение АЦП; ожидание перехода АЦП из спящего в нормальный режимCONVST; захват сигнала и запуск конвертации на АЦПSlvAdr,#ADC_ADDR; загрузим адрес с запросом записи - последний бит "0"R0,#RcvDat;ByteCnt,#2;RcvData; так как процедура чтения сама увеличивает адрес на 1, то сама сформирует адрес с запросом на чтениеR0A,#01hA,@R0; уберем из старшего байта старшие 4 битаR1,#N7; адрес N7@R1,A; запишем старший байт N7R0R1A,@R0; младший байт из АЦП@R1,A; запишем младший байт N7

; // // // // // // // // // // // // // // // // // // // _Q2:R7,#N; записываем счетчик элементов в массиве Q2R0,#N5; начальный адрес массива N5R1,#N6; начальный адрес массива N6sum+2,#00h; обнуляем старший байт суммы QiQ2+2,#00h; обнуляем старший байт суммы массива Q2_Q2_cycle:sum,#00h; обнуление буфера промежуточных суммsum+1,#00h;sum+2,#00h;A,@R0; получение старшего байтаA; сдвиг вправо старшего байта элемента массива N5R5,A; запись старшего байта элемента массива N5 в R1R0; увеличение адреса для доступа к младшему байту массива N5A,@R0; получение младшего байта элемента массива N5A; сдвиг вправо младшего байта массива N5, в результате имеемR4,A; поделенный на 2 элемент массива N5C;R0; увеличение индекса для доступа к след. элементам массиваA,@R1; получение старшего байта элемента массива N6R3,A; запись старшего байта элемента массива N6 в R3R1; увеличение адреса для доступа к младшему байту массива N6A,@R1; получение младшего байта элемента массива N6R2,A; запись младшего байта элемента массива N6 в R2R1; увеличение индекса для доступа к след. элементам массива

; подсуммирование КA,R4; младший байт N5/2A,#K; подсуммирование КR4,A;A,R5; старший байт N5/2A,#0; учет переполненияR5,A;A,R4; младший байт N5/2A,R2; сложение с младшим байтом N6sum,A; запись младшего байта промежуточной суммыA,R5; старший байт N5/2A,R3; сложение со старшим байтом N6sum+1,A; запись среднего байта промежуточной суммыCALC_Q2_m11;sum+2; учет переполнения_Q2_m11:;A,R0ACCA,R1ACC

; сложение Q и текущей суммы элементовR0,#Q2; адрес Q2R1,#sum; адрес sumR3,#3; количество байтов Q2C;_Q2_addm:;A,@R0; запись байта Q2A,@R1; сложение с байтом sum@R0,A; запоминание байто суммыR0; адрес следующего байта Q2R1; адрес следующего байта sumR3,CALC_Q2_addm; счет количества байтовACCR1,ACCACCR0,ACCR7,CALC_Q2_cycle; счет количества элементов массива

; деление суммы Q2 на NR4,Q2+2; старший байт суммы Q2R3,Q2+1; средний байт суммы Q2R2,Q2; младший байт суммы Q2R0,#N; делительA,R4; старший байт суммы Q2B,R0; делительAB;R4,A; получение старшего байта частногоR5,B; текущий остаток

;B,R0; делительR1,#16; количетво разрядов делимого_Q2_dwb3:;C;A,R2;A; сдвиг влево младших разрядов частногоR2,A;A,R3;A; сдвиг влево старших разрядов частногоR3,A;A,R5;A; сдвиг влево текущего остаткаA,B,CALC_Q2_dwb1; сравнение текущего остатка с делителем_Q2_dwb1:;CALC_Q2_dwb2; переход, если остаток меньше делителяA,B; вычитание делителя из текущего остаткаR2; запись 1 в очередной разряд частного_Q2_dwb2:;R5,A; сохранение остаткаR1,CALC_Q2_dwb3; повторить 16 разQ2+2,R2; запишем младший байт суммы Q2Q2+1,R3; запишем средний байт суммы Q2Q2,R4; запишем старший байт суммы Q2

; // // // // // // // // // // // // // // // /_OR_Y3:

; сравним вычитанием Q2-Q0C; Вычитание осуществляем с заемом.A,Q2+2; младший байт Q2A,Q0+1; вычитаем младший байт Q0A,Q2+1; средний байт Q2A,Q0; вычитаем старший байт Q0A,Q2; старший байт Q2A,0; проверка, был ли заемC,ACC.7; по результам вычитания анализируем получившееся значение на знак.CREATE_Y2; если C=1 (Q2<Q0), переход на метку_Y3:; если Q2>Q0, формируем Y3DPTR,#0A003h; запись управляющего слова в РУС канала 2A,#10110110b; канал 2, тип - двоичный счетчик, режим 3 (делитель частоты), режим загрузки младший, затем старший@DPTR,A; выведем словоDPTR,#0A002h; загрузим канал 2A,#0F4h; данные для загрузки - младший байт (для периода 1 мс при периоде CLК 2 мкс загрузим 500 или 1F4h)@DPTR,A; выведем данныеA,#01h; старший байт@DPTR,A; выведем данныеDPTR,#0A003h; запись управляющего слова в РУС канала 1A,#01110010b; канал 1, тип - двоичный счетчик, режим 1 (ждущий мультивибратор), режим загрузки младший, затем старший@DPTR,A; выведем данныеDPTR,#0A001h; загрузим канал 1A,#30h; данные для загрузки - младший байт (для формирования импульса разрешения счета каналу 2 на 60 мс, при периоде CLK 2 мкс загрузим 30000 или 7530h)@DPTR,A; выведем данныеA,#75h; старший байт@DPTR,A; выведем данныеCE1; разрешим счет каналу 1CE1_Y2:DPTR,#0A003h; запись управляющего слова в РУС канала 0A,#00110010B; канал 0, тип - двоичный счетчик, режим 1 (ждущий мультивибратор), режим загрузки младший, затем старший@DPTR,A; выведем слово; подождемDPTR,#0A000h; загрузка канала 0A,#98h; данные для загрузки - младший байт (для 30 мс при периоде 2 мкс загрузим 15000 или 3А98h)@DPTR,A; выведем данныеA,#0H; старший байт@DPTR,A; выведем данныеCE0CE0

; // // // // // // // // // // // // // // // /_Q4:A,Q4CA,N7; получение старшего байта N7A; сдвиг вправо старшего байта N7R3,A; запись старшего байта N7 в R3A,N7+1; получение младшего байта N7A; сдвиг вправо младшего байта массива N5, в результате имеемR2,A; поделенный на 2 элемент N7CA,R3; получение старшего байта N7A; сдвиг вправо старшего байта N7R3,A; запись старшего байта N7 в R3A,R2; получение младшего байта N7A; сдвиг вправо младшего байта массива N5, в результате имеемR2,A; поделенный на 2 элемент N7

; поделили, теперь прибавим А0CA,R2; младший байт N7A,A0; подсуммирование КR2,A;A,R3; старший байт N7A,A0+1;R3,A;Q4+1,R2; запишем Q4Q4,R3

; // // // // // // // // // // // // // // // /_Y4:DPTR,#9000h; адрес ЦАПA,Q4+1; младший байт Q4@DPTR,A; выведем; подожемHBEN; разрешение загрузки старшего байтаA,Q4; старший байт@DPTR,A; выводHBEN; сбросим HBENLDAC; обновим регистр ЦАПLDAC; сбросим LDAC

; // // // // // // // // // // // // // // // /:R3,Q4; старший байт 4R2,Q4+1; младший байтR0,#10; делительR7,#4; 4 знакоместаDPTR,#0B000h; выберем первое знакоместо_CYCLE:DIV_LED@DPTR,A; выведем очередной разряд Q4CS1; запишем в контроллерCS1DPTRR7, IND_CYCLE

; // // // // // // // // // // // // // // // /_LED:; в R3, R2 делимое и результат, в R0 делитель, в А - остаток.A,R3; старший байт делимогоB,R0; делительABR3,A; старший байт частногоA,B; текущий остатокB,R0; делительR1,#8; количество разрядов остатка_LED_dwb3:C; очистим СA,R2A; сдвиг младших частногоA,R2A; сдвиг остаткаA,B,DIV_LED_dwb1; сравнение остатка с делителем_LED_dwb1:DIV_LED_dwb2; переход, если остаток меньше делителяA,B; вычитание делителя из текущего остаткаR2; запись 1 в очередной разряд частного_LED_dwb2:R1,DIV_LED_dwb3; повторить 8 раз

; // // // // // // // // // // // // // // // // // // // // // _DELAY:R7,#0C7h; задержка примерно на 1 мс_DELAY1:R7,ALM_DELAY1

; // // // // // // // /прерывания // // // // // // // // // /_alarm:DPTR,#0C000hA,@DPTR; введем X1 - X4DPTR,#0D000h@DPTR,A; выведем X1 - X4IND_LOOP:ALM; звуковая сигнализация 500 ГцALM_DELAY;ALMALM_DELAYINT1_LOOP

; // // // // // // // // // // // // // // // // // /_power:DPTR,#1000hA,#0FFh@DPTR,AR0, #0FFh_LOOP:DPTRA,@R0@DPTR,AR0, INT2_LOOP

; // // // // // // // // // // // // // // // // // // // // // /_keyb:

; не реализовано, т.к. не указано в задании

; // // // // // /прерывания закончились // // // // // // // // // //

; Процедуры для работы с I2С:; задержка на 5 мкс (2 на call, 2 на ret, 1 на nop)

; // // // // // // // // // // // // // // // // /:; установка SCL в 1SCLPin; установитьSCLPin,$; подождать, пока не установится в 1

; // // // // // // // // // // // // // // // // // /:; посылка stop условия и освобождение шиныSDAPin; установка SDA в 0SCLHigh; установка SCL в 1BitDly; задержкаSDAPin; посылка stop условияBitDly; задержкаI2CBusy; шина свободна

; // // // // // // // // // // // // // // // // // :; процедура посылки байта, байт для посылки в АссBitCnt,#8; Set bit count.:A; выдвинем 1 бит в СSDAPin,C; выставим бит на шинеSCLHigh; импульс синхронизацииBitDly; задержкаSCLPin; конец импульсаBitDlyBitCnt,SBloop; повторить для 8 битSDAPin; освободим линию для приема подтверженияSCLHigh; SCL для подтвержденияBitDlySDAPin,SBEX; получено ли подтверждениеNoAck; если не получено, фиксируем:SCLPin; завершение приема подтвержденияBitDly

; // // // // // // // // // // // // // // // // // // // :; процедура посылки старт-условия и адреса ведомого I2C устройства

; адрес ведомого в переменной SlvAdrI2CBusy; займем шинуNoAck; очистим флаг подтвержденияBusFault; и флаг ошибкиSCLPin,Fault; проверка, свободна ли шинаSDAPin,FaultSDAPin; начало посылки старт-условия (SCL в 1, SDA 1->0)BitDly; задержкаSCLPin; сброс SCLBitDly; завершение старт процедурыA,SlvAdr; получим адрес ведомого иSendByte; пошлем его в шину:BusFault; если ошибка, то установить флаг; и выйти

; // // // // // // // // // // // // // // // // // // // // /:; процедура посылки данных (мах 8 байт) в I2C устройство

; в переменной ByteCnt сколько байт послать

; в переменной SlvAdr адрес ведомого

; в регистре R0 адрес буфера с даннымиGoMaster; занимаем шину и посылаем адресNoAck,SDEX; если ведомый не отвечает, то ошибка:A,@R0; получим очередной байт из буфераSendByte; пошлем его в шинуR0; перейдем к следующему байтуNoAck,SDEX; если была ошибка, выходимByteCnt,SDLoop; повторить до конца буфера:SendStop; передача закончена, посылка стоп-условия и освобождение шины

; // // // // // // // // // // // // // // // // // :; прием байта от I2C устройства

; в Асс принятый байтBitCnt,#8; счетчик бит:SCLHigh; прочитаем очередной битBitDlyC,SDAPin; перепишем в СA; перепишем бит в АSCLPin; очистим SCLBitDlyBitCnt,RBLoop; повторим для 8 битAcc; сохраним АссA,ByteCnt;A,#1,RBAck; проверим, последний байт или нетSDAPin; на последний байт подтверждение не выдаемRBAClk; и переходим сразу к выдаче SCL:SDAPin; выдаем подтверждение на непоследний байт:SCLHigh; CLK для подтвержденияAcc; восстановим АBitDly; задержкаSCLPinSDAPin; очистим SDABitDly

; // // // // // // // // // // // // // // // // // // // // // // :; процедура приема байтов (мах 8) от ведомого I2C устройства

; в переменной ByteCnt сколько байт принять

; в переменной SlvAdr адрес ведомого

; в регистре R0 адрес буфера для данныхSlvAdr; формирование адреса ведомого с запросом на чтениеGoMaster; посылка адресаNoAck,RDEX; проверка, ответил ли ведомый:RcvByte; принимаем байт@R0,A; сохраняем егоR0; переходим к следующему адресу буфераByteCnt,RDLoop; повторим для всех байт:SendStop; послать стоп-условие и освободить шину

; // // // // // // // // // // // // // // // // // // // // // // .

Заключение

В результате проектирования была создана микропроцессорная система для управления объектом.

Основные характеристики:

·   Используется микроконтроллер AT89С52;

·   В МПС имеется память двух типов: ПЗУ емкостью 8 Кбайт и ОЗУ емкостью 8 Кбайт;

·   Для ввода используется клавиатура, состоящая из 25 клавиш;

·   Для вывода используются светодиодные индикаторы, кроме того, имеется световая аварийная сигнализация;

·   МПС принимает информацию в виде 3 аналоговых и 6 двоичных сигналов, из которых 2 являются сигналами от датчиков аварийных ситуаций;

·   МПС выдает информацию в виде 1 аналогового и 3 двоичных сигналов.

Возможно расширение управляющих алгоритмов МПС. Также имеются возможности по расширению аппаратной конфигурации: в системе остался один незадействованный аналоговый вход, шесть клавиш, не имеющих функциональной нагрузки.

Основными результатами проектирования являются принципиальная электрическая схема МПС и программа, реализующая управляющие алгоритмы МПС.

Приложение. Спецификация используемых элементов


обозначение

Наименование

Кол-во

Примечание

Микросхемы:

1

DD1

КР1533ЛЛ1

1


2

DD2

AT89C52

1

Atmel

3

DD3

КР1533ЛИ1

1


4

DD4,DD18

КР1533ЛН2

2


5

DD5

DG409

1

Analog Devices

6

DD6

AD7992

1

Analog Devices

7

DD7, DD8, DD16

КР1533ИР22

3


8

DD9

КР1533ИД7

1


9

DD10

AD5341

1

Analog Devices

10

DD11

К573РФ6А

1


11

DD12

КР580ВИ53

1


12

DD13

КР1810ГФ84

1


13

DD14

DS1225AB

1

Maxim

14

DD15

ICM7212

1

Maxim

15

DD17

MAX7347

1

Maxim

16

DA1

ADR540B

1

Analog Devices

17

DA2

MAX6317H

1

Maxim

18

DA3

LM317

1

ON Semiconductor

Резисторы:

18

R1, R19, R20

C1-4-0.25-1 кОм ±5%

3


19

R2, R3,R21

C1-4-0.25-100 кОм ±5%

3


20

R5

C1-4-0.25-24 кОм±5%

1



обозначение

Наименование

Кол-во

Примечание

21

R8

C1-4-0.25-330 Ом±5%

1


22

R9

C1-4-0.25-240 Ом±5%

1


23

R10

C1-4-0.25-100 Ом±5%

1


24

R12. R15

C1-4-0.25-360 Ом±5%

4


25

R16

C1-4-0.25-33 Ом±5%

1


26

R17

C1-4-0.25-430 Ом±5%

1


27

R18

C1-4-0.25-1,5 кОм±5%

1


Конденсаторы:

28

С1, C2

X7R NPO 30 пФ ± 20%

2


29

С3, C4, C6, C13

K10-17 0.1 мкФ - 20% +80%

4


30

С5,C7

К53 - 18 - 16В - 10мкФ +50% - 20%

2


31

С8

X7R NPO 20 пФ - 20% +80%

1


32

С9, C14

К53 - 18 - 16В - 20мкФ +50% - 20%

2


33

C16

К10-17 1мкф - 20% +80%

1


34

С10, C11, C12, C15

К10-17 0,1 мкФ - 20% +80%

4


Светодиоды:

35

VD1. VD4

АЛ102А

4


36

HG1-HG4

SA56 - 11SRWA

4

KingBright

Резонаторы:

37

ZQ1

ZTA - 12 МГц, кварцевый

1


38

ZQ2

ZTA - 500 кГц, керамический

1


Кнопки:

39

K0. K24

DTS-24N, (SWT-9) кнопка тактовая

25



обозначение

Наименование

Кол-во

Примечание

Пьезоголовки:

40

ВА1

0.25ГДШ2

1


Транзисторы

41

VT1

КТ501Б

1



Похожие работы на - Проектирования микропроцессорной системы управления объектом

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!