95093

Электронный медрегистратор

Курсовая

Коммуникация, связь, радиоэлектроника и цифровые приборы

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

Русский

2015-09-19

5.94 MB

1 чел.

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное  образовательное учреждение

высшего профессионального образования

«Рыбинский государственный  авиационный технический университет

имени П. А. Соловьева»

Факультет радиотехники, электроники и информатики

Кафедра вычислительных систем

КУРСОВОЙ ПРОЕКТ

по дисциплине

Микропроцессорные системы

на тему

Электронный медрегистратор

Расчетно-пояснительная записка

Студент группы ВС-07                            Осокин С. Н. 

                                                                                       (Подпись, дата)

Руководитель канд. техн. наук, проф.     Комаров В. М.

                                                                                     (Подпись, дата)

Нормоконтролер канд. техн. наук, проф.    Комаров В. М.

                                                                                   (Подпись, дата)

Рыбинск,  2011

«Утверждаю»

Зав. кафедрой    

 к.т.н., проф. ______ Комаров В. М.

 (подпись)   

«____» _________________ 2011 г.

    (дата)      

Техническое задание на курсовой проект

по дисциплине «Микропроцессорные системы»

на тему  «Электронный медрегистратор»

 

1 Назначение устройства

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

2.   Технические требования к устройству

    Устройство должно обеспечивать:

2.1 Возможность работы в двух режимах: режим подготовки (задание таймера и пороговых значений пульса) и режим измерения (изменение скорости человека и замер его пульса);

2.2 Источник информации от оператора – данные, введенные с десятичной клавиатуры;

2.3 Ввод данных осуществляется посимвольно, справа налево;

2.4 При возникновении ошибки ввода необходимо продолжать ввод до тех пор, пока данные не будут введены правильно;

2.5 Признаком окончания ввода данных является нажатие клавиши «ОК» на клавиатуре;

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

2.7 Диапазон времени от 0 до 99.99 с;

2.8 Контроль правильности вводимой информации о времени;

2.9 При возникновении ошибки ввода осуществляется  вывод сообщения Err;

2.10 Задание пороговых значений пульса производится клавишами с автоповтором «Увеличить» и «Уменьшить»»;

2.11 Значения пульса будут задаваться в зависимости от нажатой кнопки «Max» или «Min» и выводиться на последовательность из трех восьмисегментных индикаторов;

2.12 Начало работы осуществляется по нажатию кнопки «Старт»;

2.13 Поскольку таймер реализует обратный счет, то отсчет времени будет производиться от максимального значения к минимальному;

2.14 Для изменения скорости человека используются два датчика-кнопки, устанавливаемые на обувь;

2.15 Для отображения положения ноги используются две лампочки, каждая из которых показывает положение ноги (поднята/отпущена) и соответствует своему датчику-кнопке;

2.16 Для измерения текущего значения пульса человека используется датчик пульса, при этом используется звуковой способ измерения;

2.17 Информация о текущем пульсе выводится на последовательность из трех восьмисегментных индикаторов;

2.18 При превышении пороговых значений пульса прозвучит сигнал тревоги;

2.19 Если скорость человека будет увеличиваться, а пульс при этом будет уменьшатся,  прозвучит сигнал тревоги, также и наоборот;

2.20 Для принудительного прекращения работы предназначена кнопка «Стоп»;

2.21 Признаком окончания работы программы является остановка таймера и звуковой сигнал;

2.22 Сигнал тревоги звучит до тех пор, пока не нажмут клавишу «Стоп»

3 Элементная база

Микропроцессор К1810ВМ88;

4 Перечень технической документации

  1.  Анализ технического задания;
    1.  Представление устройства в виде «черного ящика»;
    2.  Разработка архитектуры устройства;
      1.  Архитектура процессора;
      2.  Архитектура памяти;
      3.  Архитектура ввода/вывода;
    3.  Разработка аппаратной части устройства;
      1.  Структурная схема устройства
      2.  Функциональная схема устройства
      3.  Принципиальная схема устройства
      4.  Расчет дискретных элементов
    4.  Разработка программной части устройства
      1.  Представление программы в виде «черной сферы»
      2.  Статическая модель программы;
      3.  Структура данных программы;
      4.  Алгоритмы;
      5.  Исходный текст программы;

Разработчик: студент гр. ВС-07__________  Осокин С.Н.

Содержание

Введение ………………………………………………………………

7

1

Анализ технического задания  .............................................................

8

2

Разработка архитектуры устройства ………………………………...

11

2.1

Архитектура процессора  …………………………………………….

11

2.2

Разработка архитектуры памяти ……………………..........................

11

2.3

Разработка архитектуры интерфейса ………………………..............

12

3

Разработка аппаратной части устройства ……………………...........

20

3.1

Структурная схема устройства ………………………………………

29

3.2

Функциональная схема устройства ……………………….…………

21

3.3

Принципиальная схема устройства ………………………………….

25

3.3.1

Принципиальная схема устройства  в целом ……………………….

25

3.3.2

Принципиальная схема модуля микроЭВМ ……….………………

26

3.3.3

Принципиальная схема модуля индикации ………………………..

32

4

Расчет дискретных элементов ……………………………………….

34

4.1

Модуль микроЭВМ  …………………………………………………

34

4.1.1

Расчет элементов цепи автоматического сброса  ………………….

34

4.1.2

Расчет резисторов для задания уровня логической единицы………

35

4.1.3

Расчет резистора для ограничения тока светодиода   ……………...

37

4.1.4

Выбор  кварцевого резонатора и элементов цепи управления       пьезокерамическим излучателем  ……………………………………

38

4.1.5

Расчет элементов микрофонного усилителя ………………………..

39

4.2

Модуль индикации ……………………………………………………

46

5

Разработка программной части устройства………………………….

53

5.1

Представление программы в виде «черной сферы» ………………..

52

5.2

Статическая модель программы ……………………………………..

54

5.3

Структура данных программы ……………………………………….

58

5.4

Алгоритмы …………………………………………………………….

61

5.5

Исходный текст программы ………………………………………….

76

Заключение …………………………………………………………

90

Список использованных источников ………………………………

91


Введение

Микропроцессоры и микропроцессорные системы внесли в развитие вычислительной техники качественно новые свойства. Целиком выполненные по интегральной технологии на миниатюрном кристалле, они легко встраиваются в станок,  электронные весы, кухонную печь, в автомобиль, светофор и во многие другие устройства, возможности которых могут быть существенно расширены благодаря применению такого «электронного мозга».

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

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

1 Анализ технического задания

Из анализа технического задания следует, что устройство должно обеспечивать:

-  возможность работы в двух режимах: режим подготовки (задание таймера и пороговых значений пульса) и режим измерения (изменение скорости человека и замер его пульса);

- данные от оператора вводятся с десятичной клавиатуры;

- ввод данных осуществляется посимвольно, справа налево;

- при возникновении ошибки ввода необходимо продолжать ввод до тех пор, пока данные не будут введены правильно;

- признаком окончания ввода данных является нажатие клавиши «ОК» на клавиатуре;

- для отображения состояния таймера используется комбинация из четырех семисегментных индикаторов;

- диапазон времени от 0 до 99,99 с;

-  выполняется контроль правильности вводимой информации о времени;

-  при возникновении ошибки ввода осуществляется  вывод сообщения «Err»;

- задание пороговых значений пульса производится клавишами с автоповтором «Увеличить» и «Уменьшить»»;

- значения пульса будут задаваться в зависимости от нажатой кнопки «Max» или «Min» и выводиться на последовательность из трех семисегментных индикаторов;

- начало работы осуществляется по нажатию кнопки «Старт»;

- таймер реализует обратный счет, поэтому отсчет времени будет производиться от максимального значения к минимальному;

-  для изменения скорости человека используются два датчика-кнопки, устанавливаемые на обувь («Левая» и «Правая»);

- для отображения положения ноги используются два светодиодных индикатора, каждый из которых показывает положение ноги (поднята/отпущена) и соответствует своему датчику-кнопке;

- для измерения текущего значения пульса человека используется датчик пульса, при этом используется способ измерения при помощи микрофона;

- информация о текущем пульсе выводится на последовательность из трех семисегментных индикаторов;

- При превышении пороговых значений пульса прозвучит сигнал тревоги;

- Если скорость человека будет увеличиваться, а пульс при этом будет уменьшатся,  прозвучит сигнал тревоги, и наоборот;

- для принудительного прекращения работы предназначена кнопка «Стоп»;

- признаком окончания работы программы является остановка таймера и звуковой сигнал;

- сигнал тревоги звучит до тех пор, пока не будет нажата клавиша «Стоп».

Данные требования реализуемы. На основании сформулированных выше требований, можно изобразить лицевую панель устройства (рисунок 1.1), а также представить разрабатываемое устройство в виде «черного ящика» (рисунок 1.2).

Рисунок 1.1 – Лицевая панель устройства

Рисунок 1.2 – Представление электронного медрегистратора в виде «черного ящика»

В устройстве следует использовать динамическую индикацию, что отражено на рисунке 1.2.

Исходя из этих представлений, начинается техническое проектирование устройства.

2 Разработка архитектуры устройства

Разработка архитектуры устройства сводится к разработке архитектуры процессора, архитектуры памяти и архитектуры интерфейса [1 – 3].

2.1 Архитектура процессора

В соответствии с техническим заданием в курсовом проекте должен использоваться микропроцессор К1810ВМ88. Это однокристальный микропроцессор, поэтому архитектура процессора полностью определена (рисунок 2.1).

Рисунок 2.1 – Архитектура процессора разрабатываемой МПС

2.2 Разработка архитектуры памяти

При разработке архитектуры памяти будем использовать ПЗУ для хранения программы работы процессора и ОЗУ – для хранения данных программы. Изучение листинга программы показывает, что максимальный объем хранимых в ОЗУ данных не превышает 88 байтов, а объем программного кода не превышает 1652 байта, не считая 5 байтов команды длинного перехода на стартовый адрес. В связи с этим  для ПЗУ и для ОЗУ достаточен объем в 2 Кбайта.

Распределение адресного пространства процессора между ОЗУ и ПЗУ осуществляется за счет адресной линии A19. При нулевом значении этой адресной лини выбирается ОЗУ, при единичном – ПЗУ. Это связано с особенностями начального запуска МПС на базе МП К1810. На рисунке 2.2 приведена архитектура памяти разрабатываемой МПС.

Рисунок 2.2 – Архитектура памяти разрабатываемой МПС

2.3 Разработка архитектуры интерфейса

Архитектура интерфейса разрабатывается на основе схемы представления устройства в виде «черного ящика» (рисунок 1.2).

Кнопки являются одноразрядными устройствами ввода и должны подключаться к входам портов ввода. Все кнопки, кроме кнопки «Min/Max», являются кнопками без фиксации. Кнопка «Min/Max» является кнопкой с фиксацией.

Клавиатура представляет собой матрицу «сухих» контактов, реализуется на кнопках без фиксации. Данные с клавиатуры вводятся через порт ввода, сигналы активации строк клавиатуры формируются с выходов порта вывода.

Датчики  представляют собой кнопки,  являются одноразрядными устройствами ввода и должны подключаться к входам портов ввода.

Двоичные индикаторы  является одноразрядными устройствами вывода и должны подключаться к выходам порта вывода.

7-сегментные индикаторы с десятичной точкой являются 8-разрядными устройствами вывода. При большом числе индикаторов рекомендуется использовать динамическую индикацию.   В данном случае для 10 индикаторов при динамической индикации потребуется  задействовать по 8 разрядов у 2 портов вывода (1 порт управляет сегментами у всех индикаторов, другой – включением 8 из 10 индикаторов) и 2 разряда у еще одного порта вывода (управление включением 2 оставшихся индикаторов).  При статической индикации потребовалось бы задействовать 8 разрядов у 10  портов вывода.

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

Для получения данных о пульсе будем использовать звуковой метод измерения. В качестве датчика воспользуемся микрофоном. Для ввода параметров пульса человека необходимо преобразовать аналоговый сигнал с микрофона в последовательность импульсов ТТЛ-уровня. Для этого будет использован усилитель-формирователь.

Микрофон является устройством, постоянно готовым к обмену. Поэтому для обмена данными с ним будем использовать синхронный обмен.

Архитектура подключения кнопок и датчиков положения ног человека приведена на рисунке 2.3  и на рисунке 2.4.

Рисунок 2.3 – Архитектура подключения кнопок (начало)

Рисунок 2.4 – Архитектура подключения кнопок (продолжение) и датчиков положения ног

Архитектура подключения датчика пульса приведена на рисунке 2.5. Архитектура подключения клавиатуры приведена на рисунке 2.6.

Рисунок 2.5 – Архитектура подключения датчика пульса


Рисунок 2.6 – Архитектура подключения клавиатуры


Архитектура подключения светодиодных индикаторов и динамика изображена на рисунке 2.7.

Рисунок 2.7 – Архитектура подключения светодиодных индикаторов и динамика

Архитектура подключения 7-сегментных индикаторов с точкой приведена на рисунках 2.8 ÷ 2.9.

Таким образом, потребуется 2 порта ввода и 3 порта вывода.


Рисунок 2.7 – Архитектура подключения 7-сегментных индикаторов с точкой (начало)

Рисунок 2.8 – Архитектура подключения 7-сегментных индикаторов с точкой (продолжение)

Рисунок 2.9 – Архитектура подключения 7-сегментных индикаторов с точкой (окончание)


3 Разработка аппаратной части устройства

Разработка аппаратного обеспечения сводится к разработке электрических схем устройства. Для этого необходимо выполнить разработку всех электрических схем: структурной, функциональной и принципиальной; рассчитать их дискретные электрорадиоэлементы и составить перечни элементов к принципиальным схемам.

Основная элементная база определяется типом микропроцессора. Поскольку тип микропроцессора К1810ВМ88 указан в задании, то в качестве основной элементной базы для построения устройства будем использовать микросхемы МПК К1810, к которому относится этот микропроцессор [1 ÷ 3]. Кроме того, будем использовать буферные элементы и регистры  МПК КР580, логические элементы и функциональные узлы серий КР1531, КР1533, операционные усилители серии КР140.

3.1 Структурная схема устройства

Проектируемое устройство является типовой МПС. Поэтому в его состав входят процессор, память и интерфейс, объединенные шинами адреса, данных и управления. Полная структурная схема устройства приведена на чертеже МПС.МРЕГ.00.000Э1. Эта схема разработана на основе типовой структуры МПС и представления разрабатываемого устройства в виде «черного ящика».

В ПЗУ хранится программа работы устройства. Процессор (ЦП) считывает команды этой программы и выполняет их. Это обеспечивает управление ходом вычислительного процесса и решение поставленной задачи. При этом через интерфейс считывается входная информация. Эта данные обрабатываются процессором и выводятся на дисплей, двоичные индикаторы и динамик. ОЗУ предназначено для хранения промежуточных данных, управляющих признаков и системной информации. Распределение адресного пространства между ПЗУ и ОЗУ осуществляется старшей адресной линией A19. При этом ОЗУ выбирается при A19 = 0, а ПЗУ – при A19 = 1. Следовательно, ОЗУ расположено в младшей половине, а ПЗУ – в старшей половине адресного пространства. Расположение ПЗУ в старшей половине адресного пространства необходимо для обеспечения начального запуска программы при включении устройства.

 Для процессора К1810ВМ88 оперативная память состоит из одного банка. Объем оперативного запоминающего устройства – 2 Кбайта – определяется объемом используемых программой данных и минимальным объемом одной микросхемы ОЗУ. Кроме того, на ОЗУ от процессора поступает адрес (адресные линии А0 ... А10 с ША), строб чтения из памяти с низким уровнем активности MEMR, строб записи в память с низким уровнем активности MEMW с ШУ и двунаправленная шина данных D0 ... D7. Объем ПЗУ составляет также 2 Кбайта, что определяется объемом управляющей программы. Адрес и данные в ПЗУ поступают так же, как и на  ОЗУ, только, в отличие от ОЗУ, ПЗУ допускает только чтение.

Через интерфейс вводится информация с 5 кнопок и 12-кнопочной клавиатуры на лицевой панели, 2 датчиков на ногах человека и датчика пульса на руке человека. Через интерфейс   информация выводится на 10 семисегментных индикаторов с десятичной точкой, на 2 светодиодных индикатор  и динамик, расположенные  на лицевой панели.

3.2. Функциональная схема устройства

Функциональная схема раскрывает построение блоков структурной схемы, т. е. входящие в них функциональные узлы и связи между ними.

Полная функциональная схема проектируемого устройства приведена на чертеже МПС.МРЕГ.00.000Э2.

В функциональной состав схемы входят:

- процессор;

- память;

- интерфейс;

- усилитель сигнала с микрофона.

В состав процессора входят следующие функциональные узлы: системный генератор (SG), микропроцессор (CPU), регистр адреса (RGA), буфер данных (BD), дешифратор управляющих сигналов (DC) и цепь автоматического сброса.

Системный генератор SG обеспечивает формирование тактовой импульсной последовательности CLK, обеспечивающей функционирование всего устройства. Кроме того, он формирует сигнал готовности READY, поступающий на вход микропроцессора CPU, и сигнал системного сброса RESET, который используется для установки микропроцессора в начальное состояние после включения устройства.

Поскольку в проектируемом устройстве не используется асинхронный аппаратный обмен, то на вход готовности генератора SG подан постоянный уровень логической «1». Это соответствует принципу «постоянно готовой системы», т. е. постоянной готовности всех блоков устройства к обмену данными, что приемлемо для простых устройств.

Цепь автоматического сброса (элементы R2, C2, VD1) служит для формирования сигнала RESET при включении устройства или кратковременном пропадании питающего напряжения. Это обеспечивает запуск программы с начального адреса.

Микропроцессор CPU работает в минимальном режиме, что характерно для простых однопроцессорных устройств. Это обеспечивается подачей уровня логической «1» на его вход управления режимом .

Шина адрес/данные AD0/AD7 микропроцессора является мультиплексированной. Это значит, что в первом такте цикла шины на эти линии выдается адрес, а в последующих тактах передаются данные. Тип информации на линиях AD0/AD7 определяется уровнем сигнала на выходе ALE микропроцессора. При ALE = 1 на линиях AD0/AD7 присутствует адрес, который и сохраняется в регистре адреса RGA под действием этого сигнала.

Регистр адреса RGA служит для демультиплексирования шины адрес/данные AD0/AD7, а также для буферирования всех линий адреса. На выходе регистра формируется буферированная шина адреса BA0 –BA10 и BA19, к которой подключаются устройства памяти и множество портов интерфейса.

Буфер данных BD служит для буферирования шины данных AD0 – AD7, что позволяет подключить к ней элементы памяти и множество портов ввода/вывода. Передача данных через буфер осуществляется по стробу данных , а направление передачи определяется сигналом . На выходах  B0 – B7 буфера данных формируется буферированная шина данных D0 – D7, через которую и передаются входные данные от всех входных блоков устройства и выдаются выходные данные на все выходные блоки устройства.

Дешифратор управляющих сигналов DC служит для формирования инверсных сигналов управления системной шиной:

MEMR – чтение из памяти;

MEMW – запись в память;

IOR – ввод из портов интерфейса;

IOW – вывод в порты интерфейса.

Этот дешифратор декодирует сигнал распределения адресного пространства между памятью и интерфейсом , а также стробы выполнения операций чтения RD и записи WR, поступающие с выходов микропроцессора  CPU.

Память устройства реализована на функциональных элементах EPROM и RAM. EPROM представляет собой ППЗУ с ультрафиолетовым стиранием информации, а RAM – статическое ОЗУ. Использование таких элементов характерно для построения системы памяти простых устройств. Разрядность шины адреса и ПЗУ и ОЗУ равна 10, что определяется их объемом в 2 Кбайта. Для селекции ОЗУ и ПЗУ используется адресная линия А19. Прямой сигнал  А19 подается на вход выборки микросхемы ОЗУ, а инверсный сигнал – на вход выборки микросхемы ППЗУ.

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

Сигналы обращения к портам формируются с помощью дешифраторов на логических элементах. Сигналы обращения к портам ввода поступают на их входы выборки  в инверсной форме, а к портам вывода – на входы записи STB в прямой форме, что соответствует уровням активности этих входов. Селекция портов ввода и портов вывода осуществляется сигналами  и .

Усилитель сигнала с микрофона состоит из нескольких узлов. В качестве датчика удобно использовать электретный микрофон, обладающий малыми размерами (диаметр 6 мм, высота 3,5 мм) и высокой чувствительностью в широком диапазоне частот [4]. Схема подключения рекомендована производителем  [4].

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

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

Операционный усилитель питается от напряжения  ±15 В, уровень      ТТЛ-сигнала составляет +5 В, поэтому сигнал на выходе усилителя нужно ограничить, например, с помощью стабилитрона.

3.3 Принципиальная  схема устройства

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

Разбиение выполним с учетом предполагаемого количества элементов схемы, количества связей между отдельными частями функциональной схемы и рисунка лицевой панели устройства (рисунок 1.1). Схему разобьем на 2 модуля: модуль микроЭВМ и модуль индикации. На модуле индикации разместим элементы схемы динамической индикации, остальные элементы разместим на модуле микроЭВМ и на лицевой панели, при этом число связей между модулями будет минимальным.  На лицевой панели разместим кнопку с фиксацией и резистор для регулировки коэффициента усиления микрофонного усилителя. Микрофон и датчики положения ног размещаются вне устройства.

3.3.1 Принципиальная схема устройства в целом

Принципиальная схема устройства в целом приведена на чертеже             МПС.МРЕГ.00.000Э3.

 В ее состав входят 2 печатных модуля:

-  модуль микроЭВМ (А1), включаемый в разъем  СНО64-32/95x11Р-24-B  (X1). Здесь используется розетка этого разъема.  Вилкой для этого разъема является вилка соединителя СНП59-32/94x11В-23-B;  

-  модуль индикации (А2), включаемый в разъем  СНО64-32/95x11Р-24-B  (X2). Здесь используется розетка этого разъема.  Вилкой для этого разъема является вилка соединителя СНП59-32/94x11В-23-B.

Кроме того, в ее состав входит модуль питания KN50A-220T051515-CL  производства российской компании «Александер Электрик» [5]. Данный модуль формирует питающие напряжения  +5 В с током нагрузки до 5 А, +15 В с током нагрузки до 0,8 А и –15 В с током нагрузки до 0,8 А. Предохранитель FU1 служит для защита источника питания от перегрузки.

Регулировочный  резистор  R1 типа СП3-9б-0,5 Вт-1 МОм ±10 % служит для регулировки коэффициента усиления оконечного каскада микрофонного усилителя.

Кнопочный переключатель с фиксацией SB1 типа ПКн197-2   с колпачком зеленого цвета [6] используется в качестве кнопки «Min/Max».

Сдвоенный кнопочный переключатель  с фиксацией SB2 типа ПКн197-5   с колпачком красного цвета [6] используется в качестве кнопки «Сеть», т. е. для включения и выключения питания напряжения сети переменного тока 220 В 50 Гц.

Напряжение питания сети переменного тока 220 В 50 Гц подается через вилку 4-х контактного разъема 2РМ14Б4Ш1Е1 [7].

Датчики положения ног человека подключаются через вилку                    7-контактного разъема РС7ТВ [7].

Датчик пульса человека подключаются через вилку   4-х контактного разъема РС4ТВ [7].

Таким образом, все соединители выбраны разные, и возможность перепутать их при подключении отсутствует.

3.3.2 Принципиальная схема модуля микроЭВМ

Принципиальная схема   модуля микроЭВМ приведена на чертеже             МПС.МРЕГ.01.000Э3.

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

Для построения процессора в основном использованы элементы МПК        БИС К1810 и элементы серии КР580, КР1531 и КР1533.

Системный генератор SG реализован на микросхеме К1810ГФ84 (DD71), микропроцессор (CPU) – на микросхеме К1810ВМ86 (DD10), дешифратор управляющих сигналов DС – на микросхеме КР1533ИД7 (DD1), адресный регистр RGA – на микросхемах КР580ИР82 (DD2, DD3), буфер данных – на микросхеме КР580ВА86 (DD4). Цепь автоматического сброса реализована на элементах R2, C2, VD1. Элементы R2, C2 представляют собой интегрирующую цепь, обеспечивающую плавное нарастание напряжения на входе  генератора SG. Выбирая соответствующим образом постоянную времени этой цепи можно обеспечить заданную длительность сигнала сброса RESET, которая должна быть не менее 50 мкс. Диод VD1 служит для быстрого восстановления состояния цепи автоматического сброса при кратковременном пропадании питающего напряжения.

Для построения ППЗУ использована микросхема К573РФ5 (DD8), а для построения ОЗУ – микросхема КР537РУ10 (DD9). Для формирования сигнала выборки ППЗУ используется элемент  ИЛИ-НЕ (DD5.1) , включенный как инвертор.

Порты ввода/вывода реализованы на микросхемах КР580ИР82. При этом порт вывода  KbdPort  с адресом  0FEh  построен на микросхеме DD14, порт ввода KeyPort с адресом  0DFh построен на микросхеме DD11, порт ввода IndKbdPort с адресом  0EFh построен на микросхеме DD12.

Дешифратор портов вывода построен на микросхеме DD6 (4 элемента 2ИЛИ, из которых для дешифрации задействованы 2). Входы неиспользованных элементов 2ИЛИ подключены к общему проводу.

Дешифратор портов вывода построен на микросхеме DD5 (4 элемента 2ИЛИ-НЕ, из которых для дешифрации задействованы 3).  Микросхема взята из серии КР1531, имеющей больший выходной ток (до 20 мА), чем микросхемы серии КР1533 [8, 9, 10], так как сигналы с выходов DD5 будут передаваться через разъем.

Резистор R1 служит для поддержания уровня логической единицы на входах микросхем.

Резисторы R15 – R25 служат для задания уровня логической «1» при неактивных кнопках.

Кнопки SB1 – SB16 служат для ввода информации от оператора.

Схема индикации реализована на светодиодах  VD8 и VD9. Резисторы  R28 и R29 служат для ограничения тока через светодиодные индикаторы.

Излучатель пьезокерамический (BA1)  служит для формирования звукового сигнала. Схема включения (резисторы R26 и R27, транзистор VT1) рекомендована производителем [11].

Регистр DD14 используется в качестве буфера шины данных, предназначенного для передачи данных на модуль индикации через разъем.

Предварительный усилитель сигнала с микрофона (рисунок 3.1) реализован на микросхеме DA1.

Рисунок 3.1 – Предварительный усилитель сигнала с микрофона

 Резистор R3 служит нагрузкой для микрофона [4]. Конденсатор является разделительным и служит для отделения постоянной составляющей сигнала от переменной. Резисторы  R4 и  R5 служат для задания нулевого смещения по постоянному току на входе операционного усилителя. Резистор  служит для компенсации обратных токов операционного усилителя [12].  Резистор  R7 служит для подстройки коэффициента усиления в процессе настройки схемы. Резистор  R8 служит для установки нуля на выходе усилителя при отсутствии звуковых колебаний.

В качестве источника напряжения +3 В используется источник опорного напряжения на операционном усилителе DA2 (рисунок 3.2).  

Рисунок 3.2 – Источник опорного напряжения

Стабилизатор собран на стабилитроне VD1 и резисторе  R10. Резистор  R8 служит для точной установки значения опорного напряжения на выходе усилителя.

Выпрямитель собран на диоде VD2 и резисторе  R11. На выходе выпрямителя присутствуют полуволны отрицательной полярности.

Регулируемый усилитель с ограничителем собран на микросхеме  DA3 (рисунок 3.3). Резистор R1 является внешним и устанавливается на лицевой панели.

Рисунок 3.3 – Регулируемый усилитель с ограничителем

Резисторы R12  и  R1 определяют коэффициент усиления усилителя. Резистор R14  задает рабочий ток стабилитрона VD4.

На выходе будет напряжение положительной полярности, так как усилитель является инвертирующим. Пока напряжение на выходе не превышает напряжение стабилизации, стабилитрон представляет собой очень большое сопротивление и не влияет на работу усилителя. При увеличении напряжения до напряжения стабилизации стабилитрон «пробивается», т. е. его сопротивление падает, и он становится источником фиксированного напряжения, несмотря на то, что напряжение на выходе усилителя должно расти в соответствии с коэффициентом усиления.

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

Все элементы принципиальной схемы модуля микроЭВМ соединены в соответствии с функциональной схемой.

Для передачи всех сигналов, внешних по отношению к модулю микроЭВМ, используется разъем СНП59-32/94x11В-23-B (X1). Этот разъем представляет собой 32-контактный разъем для печатного монтажа. В модуле микроЭВМ используется вилка этого разъема.

Для предотвращения паразитных высокочастотных колебаний в цепи питания +5 В установлены керамические конденсаторы  К10-17-25 В емкостью 0,068 мкФ (С6 – С18), которые размещаются в непосредственной близости от микросхем. Для подавления низкочастотных помех в цепи питания +5 В используется один электролитический конденсатор К-53-14-6,3В емкостью 100 мкФ  (С3). Этот конденсатор  устанавливается в непосредственной близости от разъема.

Для предотвращения паразитных высокочастотных колебаний в цепях питания +15 В  и –15 В установлено по одному  керамическому конденсатору                  К10-17-25 В емкостью 0,068 мкФ (С17 и С18), которые размещаются в непосредственной близости от микросхем. Для подавления низкочастотных помех в цепях питания +15 В  и –15 В используется по одному  электролитическому конденсатору К-53-14-6,3 В емкостью 100 мкФ  (С4 и С5). Эти конденсаторы  устанавливается в непосредственной близости от разъема [13].

3.3.3 Принципиальная схема модуля индикации

Принципиальная схема   модуля индикации приведена на чертеже             МПС.МРЕГ.02.000Э3.

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

Порты вывода реализованы на микросхемах КР580ИР82. При этом порт вывода  KbdPort  с адресом  0FEh  построен на микросхеме DD1, порт вывода  IndSelPort  с адресом  0FBh  построен на микросхеме DD2.

Схема индикации реализована на полупроводниковых семисегментных индикаторах  с десятичной точкой  HG1 – HG10, транзисторах VT1 – VT18, резисторах  R1 – R26.

В схеме с динамической индикацией используются ключи для управления сегментами и ключи для управления индикаторами. 

Ключ для управления свечением сегмента изображен на рисунке 3.4. Ключ открывается при единичном уровне сигнала на выходе порта вывода. Микросхема КР580ИР82 обеспечивает выходной ток до 5 мА, что вполне достаточно для управления транзисторным ключом.

 

Рисунок 3.4 – Ключ для управления свечением сегмента

Ключ для управления свечением индикатора изображен на рисунке 3.5.  Ключ открывается при нулевом уровне сигнала на выходе порта вывода, так как для управления таким ключом требуется гораздо большее значение тока базы транзистора. Это условие выполняется при уровне логического нуля на выходе микросхемы.

Рисунок 3.5 – Ключ для управления свечением индикатора

Все элементы принципиальной схемы модуля индикации соединены в соответствии с функциональной схемой.

Для передачи всех сигналов, внешних по отношению к модулю индикации, используется разъем СНП59-32/94x11В-23-B (X1). Этот разъем представляет собой 32-контактный разъем для печатного монтажа. В модуле  индикации используется вилка этого разъема.

Для предотвращения паразитных высокочастотных колебаний в цепи питания +5 В установлены керамические конденсаторы  К10-17-25 В емкостью 0,068 мкФ (С2 и С3), которые размещаются в непосредственной близости от микросхем. Для подавления низкочастотных помех в цепи питания +5 В используется один электролитический конденсатор К-53-14-6,3В емкостью 100 мкФ  (С1). Этот конденсатор  устанавливается в непосредственной близости от разъема.

 4 Расчет дискретных элементов

4.1. Модуль микроЭВМ

4.1.1 Расчет элементов цепи автоматического сброса

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

Рассчитаем элементы цепи по формулам, приведенным в [1]. Длительность сигнала сброса должна быть не менее tимп = 50 мкс, чтобы обеспечить эту продолжительность надо выбрать постоянную времени τ = R2 · C2. Её значение  определим по формуле:

                             ,       (4.1)

где   tимп – длительность  импульса с уровнем логического нуля;

Uпор – пороговое напряжение разделения логических нуля и единицы;

Е – напряжение питания.

Подставляя в формулу (3.1) значения tимп = 50 · 10-6 с, Uпор = 1,5 В, Е = 5 В, получим:

.

Выберем значение R2 = 100 кОм, тогда С2 = 10 мкФ.

Найдем электрическую  мощность, рассеиваемую на найденном резисторе:

                              ,               (4.2)

где  U – напряжение на резисторе, В;

R –сопротивление резистора, Ом.

Для резистора цепи автоматического сброса получим

После расчета электрической мощности сопротивления R1 из справочника [14] выбираем резистор С2-23-0,125-100 кОм  ± 10 %, а в качестве конденсатора C2 – конденсатор К53-14-6,3 В-10 мкФ  ±10 % с рабочим напряжением   6,3 В [13]. В качестве элемента VD1 выберем импульсный диод КД522А [15] с параметрами максимального обратного напряжения и прямого тока 30 В и 100 мА соответственно.

4.1.2  Расчет резисторов для задания уровня логической единицы

Для задания уровня логической единицы на входах микросхем, необходимо включить в схему резистор, обеспечивающий падение напряжения питания 5 В до уровня 4 В. Расчёт производится по методике, приведенной в  пособии [3].

Применим  второй закон Кирхгофа для расчета резистора R1:

                         ,      (4.3)

где     Е – напряжение питания (Е = 5 В);

n – количество входов микросхем, подключённых к резистору; n = 5;

– входной ток высокого уровня ( = 20 · 10–6 А);

– входное напряжение высокого уровня ( = 4 В).

Решая (3.3) относительно R, получим формулу для минимального значения сопротивления:

                                              .                                      (4.4)

Подставив известные значения, получим:

Выберем резистор R1 = 10 кОм. Рассчитаем рассеиваемую электрическую мощность резистора R2 по формуле (4.2):

С учетом полученного номинала и мощности резистора из справочника [14] в качестве резистора R2 выберем резистор С2-23-0,125-10 кОм ±5 %.

Аналогичным образом рассчитываются резисторы R15R25, обеспечивающие уровень логической «1» на выходах ненажатых кнопок. Для них n = 1,  тогда

Номинал этих резисторов также выберем  равным 10 кОм, тогда уровень логической единицы будет еще выше,  чем 4 В. Рассеиваемая электрическая мощность этих резисторов равна 0,016 мВт (по формуле 4.2). Таким образом, выберем резисторы        С2-23-0,125-10 кОм ±10 %.

4.1.3 Расчет резистора для ограничения тока светодиода

По второму закону Кирхгофа для одноконтурной цепи, в которую входит этот резистор, можно записать

,      (4.5)

где ,  – ток и напряжение свечения светодиода. Отсюда

.      (4.6)

Для выбранного светодиода АЛ307БМ  = 12 мА,  = 2 В [16]. Тогда получим:

Рассчитаем электрическую мощность резистора R10  по формуле (4.2):

.

С учетом полученных номинала и мощности резистора из справочника [14] в качестве резистора R10 выберем резистор С2-23-0,125-250 Ом  ±10 %.

4.1.4 Выбор  кварцевого резонатора и элементов цепи управления         пьезокерамическим излучателем

Излучатель пьезокерамический (ВА1)    служит для формирования высокочастотного звукового сигнала (рисунок 4.1). Схема включения излучателя рекомендована производителем [11].

Рисунок 4.1 – Схема включения пьезокерамического излучателя

Кварцевый резонатор определяет рабочую частоту устройства  fСLK  в соответствии с выражением fСLK = fКВАРЦ/3, где fКВАРЦ – частота возбуждения кварцевого резонатора. Отсюда следует, что частота кварцевого резонатора выбирается из требуемой рабочей частоты устройства fСLK. Эта частота может лежать в пределах от 2 до 5 МГц [1, 2]. Чем выше рабочая частота, тем выше производительность устройства, но тем выше и требования к быстродействию всех его элементов.

Как правило, наиболее критичными по быстродействию являются элементы памяти. Быстродействие элементов памяти характеризуется временем выборки адреса. Для выбранной микросхемы памяти ППЗУ К573РФ5 время выборки адреса  tВЫБОРКИ АДРЕСА составляет не более 450 нс, а для ОЗУ К537РУ10   время выборки адреса  tВЫБОРКИ АДРЕСА составляет не более 220 нс. Очевидно, что ПЗУ имеет худшее быстродействие, и рабочая частота должна выбираться с учетом его времени выборки адреса.

Для нормальной работы должно быть выполнено условие

                 tВЫБОРКИ АДРЕСА < TCLK,                                       (4.7)

где TCLK = = 1/fCLK – период частоты системного генератора.

Отсюда для проектируемого устройства имеем:

                        tВЫБОРКИ АДРЕСА ПЗУ < 1/fCLK,

            fCLK > 1/ tВЫБОРКИ АДРЕСА ПЗУ.                         

Подставим значения и получим, что

fCLK  = 1/450 нс = 1/450 10–9 = 2,2 106 Гц .

Тогда fKВАРЦ = 3∙2 = 6 МГц. Из справочника [18] выбираем кварцевый резонатор РК169МВ-7АП-6 МГц.

4.1.5 Расчет элементов микрофонного усилителя

Схема включения микрофона (элементы BF1, R3, C21, рисунок 4.2) рекомендована производителем [4].

Максимальная мощность на резисторе R3 определяется по формуле (4.2):

.

С учетом рекомендуемого номинала и рассчитанной мощности резистора из справочника [14] в качестве резистора R3 выберем резистор                         С2-23-0,125-2,2 кОм ±10 %.

Рисунок 4.2 – Входная цепь предварительного усилителя

Резисторы R4 и R5 задают смещение по постоянному току, равное нулю. Выбираем прецизионные резисторы  С2-29 сопротивлением 10 кОм.

Максимальная мощность на резисторе R4 и на  резисторе R5 определяется по формуле (4.2):

.

 

Выбираем резисторы С2-29В - 0,125 -10 кОм ±0,05 %.

На вход усилителя переменный сигнал с микрофона BF1 через конденсатор C21 поступает на вход предварительного  усилителя. Предварительный усилитель (рисунок 4.3) представляет собой неинвертирующий усилитель с минимальным коэффициентом усиления, равным 6,1, точное значение которого задается подстроечным резистором R7. Резистор R7 вместе с резистором R9 задают коэффициент передачи неинвертирующего усилителя K по формуле:

                                     .                                      (4.9)

 

Рисунок 4.3 – Предварительный усилитель

В качестве подстроечного резистора R7 выберем резистор типа            СП5-2 -1 Вт–10 кОм. Резистор СП5-2 является многооборотным и позволяет с высокой точностью выполнять требуемую регулировку параметров электрической цепи. В качестве резистора R9 выберем резистор С2-23 сопротивлением     51 кОм, так как большая точность при использовании подстроечного резистора для подстройки коэффициента усиления в данном случае не нужна.

В качестве подстроечного резистора R8 для балансировки нуля  также выберем резистор СП5-2 – 1 Вт– 10 кОм.

Максимальная мощность на резисторе R7  R8 определяется по формуле (4.2):

Максимальная мощность на резисторе R9 определяется по формуле (4.2):

Резистор R6 служит для компенсации токов смещения. Его сопротивление должно быть примерно равно сопротивлению параллельно соединенных резисторов R7 и R9 и быть гораздо меньше сопротивления в цепи обратной связи R9.

Выбираем в качестве R10 резистор С2-23-0,125-5,1 кОм ±10 %.

Максимальная мощность на резисторе R9 определяется по формуле (4.2):

.

Выпрямитель реализован на диоде  VD2 и резисторе R11. Так как выходной ток операционного усилителя не превышает 5 мА, а сопротивление нагрузочного резистора  R11 не должно быть меньше 2 кОм [12], то выбираем сопротивление резистора R11 равным 10 кОм, а в качестве диода VD2 – импульсный диод КД522А.  На выходе будет отрицательная полуволна.

Максимальная мощность на резисторе R11 определяется по формуле (4.2):

.

Мощность, рассеиваемая на диоде, определяется как произведение тока через диод и прямого падения напряжения. Приняв ток равным 5 мА, а прямое падение напряжения равным 1 В, получим, что максимальная рассеиваемая мощность на диоде  VD2 не превысит 5 мВт.

Регулируемый усилитель с ограничителем уровня изображен на рисунке 4.4.

Рисунок 4.4 – Регулируемый усилитель с ограничителем уровня

Резисторы R12  и  R1 определяют коэффициент усиления усилителя:

                                           .                                      (4.10)

Максимальная мощность на резисторе R12 определяется по формуле (4.2):

.

Максимальная мощность на резисторе R1  определяется по формуле (4.2):

.

Максимальное значение коэффициента усиления равняется 100.

Резистор R14  задает рабочий ток стабилитрона VD4.  

Для стабилитрона VD4 типа КС139А номинальный ток стабилитрона Iст равен  10 мА при напряжении стабилизации  Uст  не менее 3,9 В [16]. Сопротивление резистора R14 определим по формуле:

                                                                                  (4.11)

Подставив известные значения, для резистора R14 получим:

.

Выбираем прецизионный резистор С2-29 сопротивлением 1,1 кОм. Максимальная мощность на резисторе R14 определяется по формуле (4.2):

.

 Выбираем прецизионный резистор С2-29В-0,125 -1,1 кОм  ±0,1 %

Максимальная мощность на стабилитроне VD4 определяется по формуле:

.                                        (4.12)

Подставив известные значения,  получим:

.

На выходе регулируемого усилителя будет напряжение положительной полярности, так как усилитель является инвертирующим. Буферный усилитель на микросхеме DA4 служит в качестве преобразователя сопротивления между регулируемым усилителем и входом порта ввода. На выходе он повторяет напряжение на входе.

Источник опорного напряжения (рисунок 4.5) включает в себя стабилизатор и буферный усилитель на микросхеме DA2.

Рисунок 4.5 –  Источник опорного напряжения

Резистор R10 задает рабочий ток стабилитрона VD3.  

Для стабилитрона VD3 типа КС133Г номинальный ток стабилитрона Iст равен  5 мА при напряжении стабилизации  Uст  не менее 3  В [16]. Сопротивление резистора R10 определим по формуле (4.11).

Подставив известные значения, для резистора R10 получим:

.

Выбираем прецизионный резистор С2-29 сопротивлением 2,4 кОм. Максимальная мощность на резисторе R14 определяется по формуле (4.2):

.

 Выбираем прецизионный резистор С2-29В-0,125 -2,4 кОм  ±0,1 %

Максимальная мощность на стабилитроне VD3 определяется по формуле (4.12). Подставив известные значения,  получим:

.

4.2 Модуль индикации

 

В модуле индикации необходимо рассчитать элементы транзисторных ключей. Для расчета используем рисунок 4.6.

Транзисторы VT1  VT8  выступают в качестве ключей для управления сегментами индикатора.  Транзисторы VT9  VT18  выступают в качестве ключей для управления индикатором в целом.  

Ток коллектора транзистора VT1  VT8  определяется по формуле [1, 2]

                                           ,                                         (4.13)

где  Q – скважность импульса включения сегмента, равняется числу сегментов в индикаторе,  т. е. Q  = 8;

IСД – номинальный ток через светодиодный индикатор, равен 20 мА.

Рисунок 4.6. – Транзисторные ключи и сегмент индикатора

Подставив значения в (4.13), получим:

Округлим рассчитанное значение до величины 60 мА.

Транзисторы VT9  VT18, управляющие свечением индикатора, «пропускают» через себя ток всех 8 светодиодов, т. е. его величина будет в 8 раз больше – 480 мА.

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

                                                                                           (4.14)

где Iвых – выходной ток порта вывода, не более 32 мА, т. е. должен быть не меньше 15.

Таким условиям удовлетворяют транзисторы КТ639, КТ684, из которых наилучшие импульсные параметры имеет транзистор КТ639И. Выбираем транзисторы КТ639И [19], минимальный коэффициент передачи которых по току достигает 180.

Рассчитаем резисторы в цепях усилителей VT1  VT8 (см. рисунок 4.1).

Определим напряжение на  коллекторном резисторе нижнего транзистора:

                                                          (4.15)

Считаем, что = 0,5 В,  = 0,4 В,  = 5 B, = 2 В [17, 19, 20], тогда

Определяем номинал сопротивления коллекторного резистора:

                                                                                       (4.16)

Округляем полученное значение до величины 39 Ом.

Определяем мощность, рассеиваемую на резисторе, по формуле (4.2):

           

В качестве резисторов R9  R16 выбираем постоянные резисторы типа С2-23-0,25-39 Ом  0,5 % [14].

Определим падение напряжение на резисторе в цепи базы:

                                                                              (4.17)

Считаем, что = 3,6 В, = 1,1 В  [17], тогда

Определим ток базы IБ2:

                                                                              (4.18)

Выбираем транзистор КТ315Б, минимальный коэффициент передачи которого равен 50 [17].

Подставив значения, получим, что

Определяем номинал сопротивления резистора в цепи базы:

                                                                              (4.19)

Выбираем резистор с сопротивлением 1,1 кОм.

Определяем мощность, рассеиваемую на резисторе, по формуле (4.2):

 

В качестве резисторов R1  R8  выбираем постоянные резисторы типа  С2-23-0,125-1,1 кОм  0,5 %.

Рассчитаем резисторы в цепях баз транзисторов, управляющих свечением индикаторов. Импульсный ток коллектора будет составлять 480 мА.

Определим падение напряжение на резисторе в цепи базы:

                                                        (4.20)

Считаем, что = 1,25 В, = 0,4 В  [19], тогда

Определим ток базы IБ1:

                                                            (4.21)

Подставим полученные значения:

.

Определяем номинал сопротивления резистора в цепи базы:

                                                                  (4.24)

         

Выбираем резистор с сопротивлением 6,2 кОм.

Определяем мощность, рассеиваемую на резисторе,  по формуле (4.2):

В качестве резисторов R17  R26 выбираем постоянные резисторы  типа   С2-23-0,25-6,2 кОм  0,5 %.

На транзисторе типа КТ315Б в импульсном режиме будет рассеиваться мощность, равная произведению напряжения насыщения коллектор-эмиттер, равного 0,4 В, на ток коллектора, равный 56 мА, отсюда получаем мощность рассеивания, равную 22,4 мВт. Такая мощность допустима для данного транзистора [17].

На транзисторе типа КТ639И в импульсном режиме будет рассеиваться мощность, равная произведению напряжения насыщения коллектор-эмиттер, равного 0,5 В, на ток коллектора, равный 480 мА, отсюда получаем мощность рассеивания, равную 240 мВт. Такая мощность допустима для данного транзистора [19].

5 Разработка программной части устройства

5.1 Представление программы устройства в виде «черной сферы»

Так как в проектируемом устройстве практически все функции выполняются программным путем, то представление программы в виде «черной сферы» будет практически полностью совпадать с представлением устройства в виде «черного ящика».

Представление программы проектируемой МПС в виде «черной сферы» приведено на рисунке 5.1.

Рисунок 5.1 – Представление программы «Электронный медрегистратор»

в виде «черной сферы»

Следует отметить, что задание на курсовой проект было частично изменено относительно задания на лабораторную часть. Было принято решение заменить аналоговое АЦП пределов пульса на кнопки с автоповтором «Увеличить» и «Уменьшить». Это связано с тем, что для использования АЦП требуется большее количество регистров, нежели  для использования кнопок. Так же это связано с тем, что использование ползунков АЦП не современно, и не удовлетворяет требованиям времени.

Еще одним изменением стало использование вместо АЦП пульса клавиши «Пульс». Это связано с тем, что такой способ позволяет сымитировать датчик пульса. Кнопка формирует импульсы, так же как и датчик, это позволяет запрограммировать датчик, не имея его физически. Для подсчета пульса важным параметром является интервал замера. После консультации с преподавателем было принято решение сделать интервал равным десяти секундам.  Это связано с тем, что более малый интервал замера будет давать больше погрешности, а более большой не даст необходимого времени срабатывания при ухудшении состояния человека. Так же данный интервал замера дает возможность удобно рассчитывать количество ударов в минуту, поскольку для этого достаточно умножить получившееся значение пульса за десять секунд на шесть. Такой способ замера часто применяется медицинскими работниками.


5.2 Статическая модель программы

Анализируя требования к программе, а также с учетом произведенной декомпозиции получим исходную схему представления поставленной задачи, которая представлена на рисунке 5.2.

Рисунок 5.2 – Исходная схема представления программы

Из этой схемы следует, что программа должна получать данные с кнопок, датчиков, и клавиатуры («Ввод данных»), затем обрабатывать полученные данные («Обработка данных»), и выводить результат на индикаторы и сирену («Вывод данных»). Исходя из этих сведений, произведем декомпозицию исходной схемы представления программы и получим структурную схему после первого этапа декомпозиции, которая представлена на рисунке 5.3.

Рисунок 5.3  – Статическая модель программы (после первого этапа декомпозиции)

На следующем этапе декомпозиции необходимо разбить ранее полученные подзадачи на более конкретные. В процессе очередного этапа декомпозиции получаем, что подзадача «Ввод данных» разбивается на «Ввод с клавиатуры», «Ввод с кнопок «Увеличить», «Уменьшить», «Пульс», «Ввод с кнопок» и «Анализ шагов». Подзадача «Обработка данных» разбивается на «Контроль ввода с клавиатуры», «Преобразование цифры», «Анализ нажатой цифры» и «Управление таймером». Так же получаем что подзадача «Вывод данных» разбивается на «Вывод двоичных сигналов» и «Вывод на семисегментные индикаторы». Исходя из полученных результатов, получим структурную схему программы после второго этапа декомпозиции, которая представлена на рисунке 5.4.

Рисунок 5.4 – Статическая модель программы (после второго этапа декомпозиции)

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

5.3 Структура данных программы

Таблица 5.1 – Структура данных

Наименование данных

Символьное имя

Формат данных

Кодирование данных

Примечание

D7

D6

D5

D4

D3

D2

D1

D0

Образ цифр выводимых на семисегментные  индикаторы

OutImages

Массив байтов

0

0

0

0

0

1

0

1

Индикаторы для вывода цифр таймера

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

0

0

0

0

0

1

0

1

Индикаторы для вывода цифр пределов пульса

0

0

0

0

0

1

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

1

Индикаторы для вывода цифр пульса человека

0

0

0

0

0

1

0

1

0

0

0

0

0

0

1

0

Флаг старта процесса

FlagStart

Флаговый байт

0

0

0

0

0

0

0

0

Процесс не запущен

Процесс запущен

1

1

1

1

1

1

1

1

Флаг ошибки процесса

FlagErr

Флаговый байт

0

0

0

0

0

0

0

0

Нет ошибки

Есть ошибка

1

1

1

1

1

1

1

1

Флаг тревоги

FlAlert

Флаговый байт

0

0

0

0

0

0

0

0

Сирена не активна

Сирена активна

0

0

1

0

0

0

0

0

Счетчик циклов задержки секунды

ZadSek

Слово

0

0

0

0

0

1

0

1

Прошло 5 циклов задержки

0

0

0

0

0

0

0

0

Счетчик циклов задержки шагов

ZadShag

Слово

1

1

1

0

1

0

0

0

Прошло 1000 циклов задержки

0

0

0

0

0

0

1

1

Текущее значение пульса человека (16-ричн.)

adc1

Байт

0

1

1

1

1

1

0

1

Текущее значение 125

Текущее значение пределов пульса (16-ричн.)

adc2

Байт

1

1

1

1

1

1

1

1

Текущее значение 255

Текущее значение пределов пульса (10-ичн.)

curpuls

Массив байтов

0

0

0

0

0

1

0

1

5

5

2

0

0

0

0

0

1

0

1

0

0

0

0

0

0

1

0

Максимальное значение пределов пульса  (10-ичн.)

maxpuls

Массив байтов

0

0

0

0

0

1

0

1

5

5

2

0

0

0

0

0

1

0

1

0

0

0

0

0

0

1

0

Минимальное значение пределов пульса

(10-ичн.)

minpuls

Массив байтов

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Максимальное значение пределов пульса (16-ричн.)

maxadc

Байт

1

1

1

1

1

1

1

1

Максимальное значение 255

Минимальное значение пределов пульса

(16-ричн.)

minadc

Байт

0

0

0

0

0

0

0

0

Минимальное

значение 0

Флаг изменения пульса

adcchg

Флаговый байт

0

0

0

0

0

0

0

0

Пульс не менялся

Пульс менялся

1

1

1

1

1

1

1

1


Продолжение таблицы 5.1

Текущее значение пульса человека (10-ичн.)

curadc

Массив байтов

0

0

0

0

0

1

0

1

5

2

1

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

Состояние пределов когда нажата Min/Max

lastadc

Байт

1

1

1

1

1

1

1

1

Состояние 255

Флаг ввода максимального предела пульса

flcurmax

Флаговый байт

0

0

0

0

0

0

0

0

Вводим минимальное

Вводим максимальное

1

1

1

1

1

1

1

1

Клавиатура:

Образ

клавиатуры

KbdImage

-

-

-

-

1

1

0

1

Строка 0

Строка 1

Строка 2

-

-

-

-

1

1

1

1

-

-

-

-

1

1

1

1

Флаг пустой клавиатуры

EmpKbd  

Флаговыйбайт

0

0

0

0

0

0

0

0

Непустая

Пустая

1

1

1

1

1

1

1

1

Флаг ошибки ввода с клавиатуры

KbdErr

Флаговый байт

0

0

0

0

0

0

0

0

Нет ошибки

Ошибка

1

1

1

1

1

1

1

1

Код очередной клавиши

NextDig

Байт

0

0

0

0

0

1

1

0

Клавиша «6»

Количество введенных цифр на клавиатуре

KolVCifKbd

Байт

0

0

0

0

0

1

0

0

Вводим до «4»

Флаг нажатой клавиатуры

presskey

Флаговый байт

0

0

0

0

0

0

0

0

Не нажата

Нажата

1

1

1

1

1

1

1

1

Цифры введенные с клавиатуры

KbdOut

Массив байтов

0

0

0

0

0

1

0

1

5

9

9

9

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

Сохраненные цифры введенные с клавиатуры

sKbdOut

Массив байтов

0

0

0

0

0

1

0

1

5

9

9

9

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

Перемещение человека:

Текущее состояние шага

step

Байт

1

1

0

0

0

0

0

0

Обе ноги опущены

Предыдущее число шагов за интервал

speed

Слово

1

1

1

0

1

0

0

1

Значение 233

0

0

0

0

0

0

0

0

Текущее число шагов за интервал

stepcol

Слово

1

1

1

0

1

0

1

1

Значение 253

0

0

0

0

0

0

0

0

Флаг роста скорости

flspup

Флаговый байт

0

0

0

0

0

0

0

0

Скорость не выросла

Скорость выросла

1

1

1

1

1

1

1

1

Флаг уменьшения скорости

flspdown

Флаговый байт

0

0

0

0

0

0

0

0

Скорость не упала

Скорость упала

1

1

1

1

1

1

1

1

Предыдущее состояние шага

lastst

Байт

1

0

0

0

0

0

0

0

Правая поднята, левая опущена

Количество циклов задержки пульса

ZadPuls

Слово

0

0

0

0

1

0

1

0

Прошло 10 циклов задержки

0

0

0

0

0

0

0

0


Окончание таблицы 5.1

Количество циклов задержки автоповтора

ZadInc

Слово

0

0

0

0

1

0

1

0

Прошло 10 циклов задержки

0

0

0

0

0

0

0

0

Предыдущее значение накопителя пульса

predpuls

Байт

0

0

1

0

0

0

0

0

Значение 64

Текущее значение накопителя пульса

pulsoper

Байт

0

1

0

0

0

0

0

0

Значение 128


5.4 Алгоритмы

5.4.1 Алгоритмы макроуровня

Алгоритм одноуровневого представления программы изображен на рисунке 5.5. Он отображает распределение исполнителей, выделенных на этапе декомпозиции, по времени. Алгоритм двухуровневого представления изображен на рисунке 5.6. Помимо распределения исполнителей по времени, он отображает уровни вложенности подпрограмм.

Рисунок 5.5 – Алгоритм программы электронный медрегистратор (одноуровневое представление)

Рисунок 5.6 – Алгоритм программы электронный медрегистратор (двухуровневое представление)

5.4.2 Алгоритмы исполнителей первого уровня

В данном разделе представлены алгоритмы исполнителей, которые непосредственно вызываются из макроуровня.

1. Модуль «Ввод с клавиатуры»

Рисунок 5.7– Алгоритм модуля «Ввод с клавиатуры»

2. Модуль «Ввод с кнопки Min/Max»

Рисунок 5.8 – Алгоритм модуля «Ввод с кнопки Min/Max»

3. Модуль «Контроль ввода с клавиатуры»

Рисунок 5.9 – Алгоритм модуля «Контроль ввода с клавиатуры»

4. Модуль «Преобразование цифры»

Рисунок 5.10 – Алгоритм модуля «Преобразование цифры»

5. Модуль «Анализ нажатой цифры»

Рисунок 5.11 – Алгоритм модуля «Анализ нажатой цифры»
6. Модуль «Анализ шагов»

Рисунок 5.12 – Алгоритм модуля «Анализ шагов»


7. Модуль «Управление таймером»

Рисунок 5.13– Алгоритм модуля «Управление таймером»


8. Модуль «Ввод с кнопок Увеличить, Уменьшить, Пульс»

Рисунок 5.14 – Алгоритм модуля

«Ввод с кнопок Увеличить, Уменьшить, Пульс»
9. Модуль «Вывод двоичных сигналов»

Рисунок 5.15 – Алгоритм модуля «Вывод двоичных сигналов»


10. Модуль «Вывод на семисегментные индикаторы»

Рисунок 5.16 – Алгоритм модуля «Вывод на семисегментные индикаторы»

5.4.3 Алгоритмы исполнителей второго уровня

В данном разделе представлены алгоритмы подпрограмм, вызываемые исполнителями.

Модуль «Алгоритм гашения дребезга контактов»

Рисунок 5.17 – Алгоритм модуля «Алгоритм гашения дребезга контактов»


5.5 Исходный текст программы

RomSize EQU   4096  ; объем памяти

KeyPort     EQU   0DFh        ; порт клавиш

IndDatPort  EQU   0FDh         ; данные на индикаторы (вывод на индикаторы)

IndSelPort  EQU   0FBh         ; выбор индикатора

KbdPort     EQU   0FEh        ; порт вывода клавиатуры

InKbdPort   EQU  0EFh         ; порт ввода клавиатуры

NMax        EQU   10        ; количество проверок на дребезг

ZadSekMax   EQU   5            ; задержка секунды

ZadShagMax  EQU   1000          ; задержка шага

ZadIncMax  EQU   100        ; задержка инкремента пределов пульса

ZadPulsMax  EQU   5000         ; интервал счёта пульса

Stk         SEGMENT AT 10h   ; инициализация стека

            DW    10 DUP (?)

StkTop      LABEL WORD

Stk        ENDS

Data        SEGMENT AT 0 ; инициализация данных

KbdImage    DB    3 DUP(?)   ; образ клавиатуры

EmpKbd      DB    ?       ; флаг пустой клавиатуры

KbdErr      DB    ?            ; флаг ошибки клавиатуры

NextDig     DB    ?            ; код очередной клавиши

KbdOut      DB    4 DUP(?)    ; цифры введенные с клавиатуры

sKbdOut     DB    4 DUP(?)    ; сохраненные цифры введенные с клавиатуры

KolVCifKbd  DB    ?            ; количество введенных цифр на клавиатуре

presskey    DB    ?            ; флаг нажатой клавиатуры

OutImages   DB    10 DUP(?)   ; образ цифр на табло

FlagStart   DB    ?       ; флаг старт процесса

FlagErr     DB    ?           ; флаг ошибки

flalert     DB    ?           ; флаг звукового сигнала

ZadSek      DW    ?            ; счетчик циклов задержки секунды

ZadShag     DW    ?            ; счетчик циклов задержки шага

adc1        DB    ?           ; пульс 16-ричн

adc2        DB    ?           ; текущий предел пульса 16-ричн

curpuls     DB    3 DUP(?)    ; текущий пульс 10-ный

maxpuls     DB    3 DUP(?)    ; максимальный пульс 10-ный

minpuls     DB    3 DUP(?)    ; минимальный пульс 10-ный

minadc      DB    ?            ; минимальный предел пульса 16-ричн

maxadc      DB    ?            ; максимальный предел пульса 16-ричн

adcchg      DB    ?            ; флаг изменения пульса

curadc      DB    3 DUP(?)    ; текущий предел пульса 10-ричн, он выводится на

: индикаторы

lastadc     DB    ?            ; состояние  пределов когда нажата кнопка

; Min/Max

flcurmax    DB    ?            ; флаг ввода максимального предела пульса

step        DB    ?            ; текущее состояние шага

speed       DW    ?            ; предыдущее число шагов

stepcol     DW    ?            ; текущее количество шагов

flspup      DB    ?            ; флаг роста скорости

flspdown    DB    ?            ; флаг уменьшения скорости

lastst      DB    ?            ; образ для лампочек ног

ZadInc      DW    ?            ; количество циклов задержки сирены

predpuls    DB    ?           ; предыдущее значение накопителя пульса

pulsoper    DB    ?           ; накопитель пульса

ZadPuls     DW    ?            ; количество циклов задержки секунды

Data        ENDS

Code        SEGMENT

            ASSUME cs:Code,ds:Data,es:Code,ss:Stk

SymImages   DB    03Fh,00Ch,076h,05Eh,04Dh,05Bh,07Bh,00Eh,07Fh,05Fh

VibrDestr   PROC  NEAR    ; гашение дребезга  dx - параметр - адрес порта

VD1:        mov   ah,al  ; сохраняем исходное состояние

            mov   bh,0  ; сброс счетчика повторений

VD2:        in    al,dx                     ; вводим текущее состояние кнопки

          or    al,0f0h      

          cmp   ah,al                  ; текущее = исходному?

          jne   VD1                     ; если нет то в начало, если да то инкремент счетчика

          inc   bh                         ; инкремент счетчика повторений

          cmp   bh,NMax           ; сравниваем с заданным числом повторений

          jne   VD2                   ; конец дребезга?

          ;mov   al,ah              ; записываем состояние

          ret

VibrDestr   ENDP

KbdInput    PROC  NEAR     ; ввод с клавиатуры

          mov presskey,0      ; сбрасываем флаг нажатой клавиатуры

          lea   si,KbdImage        ; подготовка цикла

          mov   cx,LENGTH KbdImage            ; загрузка счётчика циклов 3

          mov   bl,011011b       ; выбор 1 строки

KI4:        mov   al,bl           

          or al,11b

          and al,11111b        ; гасим ненужные линии   

          or   al,lastst       ; зажигаем ноги

          or   al,flalert               ; выводим динамик      

          out   KbdPort,al      ; выбор строки

          in    al,InKbdPort    ; считаем строку клавиатуры

          or    al,0f0h         ; убираем ненужные линии

          cmp   al,[si]       ; если образ не отличается от предыдущего, то

   ; переходим к следующей строке

          je    KI1

          cmp   al,0ffh      ; если образ пустой, то переходим к следующей строке

          je    ki1           ; если нет

          mov dx,InKbdPort    ; если нет гасим дребезг

          mov dh,0

          call  VibrDestr

          or    al,0f0h       ; снова убираем ненужные биты              

          mov presskey,0ffh   ; взводим флаг нажатой клавиатуры

          

KI1:        mov [si],al

          inc   si         

          rol   bl,1       

          loop  KI4            

          in al,InKbdPort            ; START       

          and al,10000000b   ; наложение маски

          cmp al,0             ; кнопка нажата?

          jne zen1

          cmp FlagErr,0ffh         ; если да, то проверка на наличие ошибок

          je zen1

          mov FlagStart,0ffh   ; если нажата - установить флаг

          mov flalert,0      ; сбросить флаг ошибки

          mov ZadSek,0

          mov ax,word ptr sKbdOut            ; сохранение из sKbdOut в KbdOut

          mov word ptr KbdOut,ax      

          mov ax,word ptr sKbdOut+2

          mov word ptr KbdOut+2,ax

          

zen1:           

          in al,InKbdPort          ; STOP

          and al,1000000b   ; наложение маски

          cmp al,0

          jne zend

          mov FlagStart,0   ; если нажата - сбросить флаг

          mov flalert,0    ; сбросить флаг тревоги         

          mov FlagErr,0     ; сбросить флаг ошибки

          mov ZadSek,0       ; обнуление задержки секунды     

zend:                    

            ret

KbdInput    ENDP

Keyinput    PROC  NEAR         ; ввод с кнопки мин/макс

          in al,keyport          ; кнопка мин/макс

          and al,1b    ; наложение маски

          cmp al,0        ; переход если кнопка нажата

          je zen2         

                                  ; переход если кнопка отжата                       

          cmp flcurmax,0        ; если вводим минимальное

          jne zen6              ; переход на конец

                                  ; если отжата кнопка, но вводим максимальное

          mov flcurmax,0ffh      ; установить флаг

          mov al,adc2           ; пульс менялся?

          cmp adcchg,0ffh     

          jne zen4           

                               ; если пульс  менялся

          mov adcchg,0       ; сбрасываем флаг изменения

          mov maxadc,al       ; сохраняем максимальный предел     

          mov ah,0

          mov bl,100

          div bl               ; формируем 10-ный код в maxpuls

          mov maxpuls+2,al

          mov al,ah

          mov ah,0

          mov bl,10

          div bl

          mov maxpuls+1,al

          mov maxpuls,ah     

          mov FlagErr,0       ; если минимальный получился больше максимального

; то установить FlagErr

          mov al,minadc

          cmp maxadc,al

          ja zen4

          mov FlagErr,0ffh                      

          

zen4:       mov al,minpuls    ; выводим минимальное значение пульса

          mov curadc,al

          mov al,minpuls+1

          mov curadc+1,al           

          mov al,minpuls+2

          mov curadc+2,al

zen6:       jmp zen3            ; переход на конец   

zen2:       cmp flcurmax,0ffh      ; отпускаем кнопку (сохранить максимальный предел)

          jne zen3   

                  

          mov flcurmax,0        ; сбрасываем флаг ввода максимального

          mov al,adc2

          cmp adcchg,0ffh       ; если пульс менялся, то не переходим     

          jne zen5

          mov adcchg,0         ; сохраняем минимальный предел пульса

          mov minadc,al           

          mov ah,0

          mov bl,100

          div bl

          mov minpuls+2,al

          mov al,ah          ; формируем минимальный в 10-ной форме

          mov ah,0

          mov bl,10

          div bl

          mov minpuls+1,al

          mov minpuls,ah     

          

          mov FlagErr,0             ; если минимальный получился больше максимального

; то установить FlagErr

          mov al,minadc

          cmp maxadc,al

          ja zen5

          mov FlagErr,0ffh                      

          

zen5:       mov al,maxpuls            ; выводим максимальное значение пульса

          mov curadc,al

          mov al,maxpuls+1

          mov curadc+1,al           

          mov al,maxpuls+2

          mov curadc+2,al      

zen3:                

            ret

Keyinput    ENDP

KbdInContr  PROC  NEAR    ;контроль ввода с клавиатуры

          cmp presskey,0ffh     ; формирование флага пустой клавиатуры и ошибки

; клавиатуры

          jne KIC4

          lea   bx,KbdImage   ; загрузка адреса клавиатуры

          mov   cx,3         ; загрузка счетчика строк

          mov   EmpKbd,0     ; отчистка флагов

          mov   KbdErr,0  

          mov   dl,0          ; отчистка накопителя

KIC2:  mov   al,[bx]     ; чтение строки

            mov   ah,4        ; загрузка счетчиков битов

KIC1:       shr   al,1         ; выделение бита

          cmc                ; подсчет бита

          adc   dl,0  

          dec   ah           ; все биты в строке?

          jnz   KIC1         ; если не все биты в строке, то переход

          inc   bx          ; модификация адреса строки

          loop  KIC2        ; все строки? переход если нет

          cmp   dl,0         ; накопитель пустой?

          jz    KIC3         ; переход если да

          cmp   dl,1          ; накопитель не пустой

          jz    KIC4  ; переход если да

          mov   KbdErr,0FFh  ; установка флага ошибки

          jmp   SHORT KIC4 ; на выход

KIC3:       mov   EmpKbd,0FFh  ; установка флага пустой клавиатуры

KIC4:       ret

KbdInContr  ENDP

NxtDigTrf   PROC  NEAR   ;преобразование образа клавиатуры в унитарный код nxtdig

          cmp presskey,0ffh ; клавиатура была нажата?

          jne    NDT1

          cmp   EmpKbd,0FFh  ; пустая клавиатура?

          jz    NDT1       

          cmp   KbdErr,0FFh  ; ошибка клавиатуры?

          jz    NDT1      

          lea   bx,KbdImage  ; загружаем образ клавиатуры

          mov   dx,0        ; отчистка накопителей кода строки и столбца

NDT3:       mov   al,[bx]      ; читаем строку

          cmp   al,0ffh  ; строка активна?

          jnz   NDT2      

          inc   dh           ; инкремент кода строки

          inc   bx            ; модификация адреса

          jmp   SHORT NDT3

NDT2:       shr   al,1          ; выделение бита строки

          jnc   NDT4        ; бит активен? переход если да

          inc   dl           ; инкремент кода столбца

          jmp   SHORT NDT2

NDT4:      mov   cl,2         ; формирование двоичного кода цифры

          shl   dh,cl

          or    dh,dl

          mov   NextDig,dh  ; запись кода цифры

NDT1:       ret

NxtDigTrf   ENDP

Numvvod     PROC  NEAR    ;в зависимости от кода клавиши(NextDig) на клавиатуре

; выполнять действие

          cmp presskey,0ffh  ; если клавиатура нажата, то далее

          jne no12

          cmp FlagStart,0ffh    ; если процесс запущен, то на конец

          je no12

          cmp   KbdErr,0FFh  ; если ошибка клавиатуры, то на конец

          jz    no12

          cmp   EmpKbd,0FFh   ; если пустая клавиатура, то на конец

          jz    no12

                     

          xor   ah,ah       ; реакция на нажатую клавишу

                  

          mov al,nextdig

m1:         cmp NextDig,9         ; нажата клавиша с цифрой

          ja  m10   

          mov cx,3     ; сдвиг KbdOut на 1 цифру влево

          mov si,2    ; начиная с последнего элемента KbdOut

m1_3:       mov dl,KbdOut[si]  ; перенос байта из KbdOut+si в байт KbdOut+si+1

          mov KbdOut[si+1],dl           

          dec si     ; модификация смещения

          loop m1_3     

          mov [KbdOut],al   ; заносим в начало массива очередную цифру

m1_4:       

no12:       jmp endm_

m10:        cmp al,10     ; нажат ввод

          jne m11           

          

          mov ax,word ptr KbdOut   ; сохранение из KbdOut в sKbdOut

          mov word ptr sKbdOut,ax      

          mov ax,word ptr KbdOut+2

          mov word ptr sKbdOut+2,ax

          

          jmp endm_           

m11:        cmp al,11       ;сброс

            jne endm_

no2:        mov cx,4

            mov si,0

fp1_:       mov KbdOut[si],0

            inc si

            loop fp1_

no1_:       jmp endm_           

endm_:      ret

Numvvod     ENDP

shaggo      PROC  NEAR     ; ввод шага кнопками левая, или правая, формирование

; флагов изменения скорости

            in al,keyport

          

          not al       ; преобразование бит

          shl al,5   ; сдвигаем биты 5*shl al,1                     

          and al,11000000b

                                  ; в al **000000b

          cmp lastst,al          ; предыдущее состояние

          je sg1                  ; если состояние не изменилось, то переходим

    

          mov lastst,al            ; сохраним текущее состояние

          and step,al              ; анализ шага         

          mov al,step      

          cmp step,0              

          jne sg1          

                                  ; если шаг стал =0, то делаем его =11000000...

          mov step,011000000b

          inc stepcol            ; инкремент счётчика шагов           

sg1:       

          inc ZadShag        ; инкремент задержки

          cmp ZadShag,ZadShagMax

          jb sgend

          mov ZadShag,0

                               ; когда задержка закончилась

          mov dx,speed        ; сохраняем предыдущее число шагов

          mov flspup,0        ; сброс флагов

          mov flspdown,0

          cmp stepcol,dx      ; сравниваем предыдущее число шагов с текущим

          ja sg2             

          cmp stepcol,dx      ; если шагов стало больше, то установить флаг роста

; скорости                          

          jb sg3              ; если шагов стало меньше, то установить флаг

; уменьшения скорости   

          jmp sg4          

    

sg2:        mov flspup,0ffh    ; установить флаг роста скорости

            jmp sg4

    

sg3:        mov flspdown,0ffh      

    

sg4:      

sgend:      ret

shaggo      ENDP

timergo     PROC  NEAR       ; процедура управления таймером(обратный счет)

          cmp FlagStart,0ffh    ; когда идёт процеесс

          jne odend       ; если не установлен - на конец      

          

          inc ZadSek        ; инкремент задержки

          cmp ZadSek,ZadSekMax  

          jb odend

          mov ZadSek,0

          cmp KbdOut,0  ; если младшая цифра <>0, то

          je tg1

          dec KbdOut     ;  убавляем на 1 и переходим на конец

          jmp odend

tg1:        cmp KbdOut+1,0

          je tg2

          dec KbdOut+1

          mov KbdOut,9

          jmp odend

tg2:        cmp KbdOut+2,0

          je tg3

          dec KbdOut+2

          mov KbdOut+1,9

          mov KbdOut,9

          jmp odend

tg3:        cmp KbdOut+3,0    ; если 4 цифра =0, то

          je tg4

          dec KbdOut+3

          mov KbdOut+2,9

          mov KbdOut+1,9

          mov KbdOut,9

          jmp odend   

tg4:        mov FlagStart,0      ; сбрасываем FlagStart

          mov flalert,100000b   ; выводим звуковой сигнал

          mov ax,word ptr sKbdOut   ; из sKbdOut в KbdOut

          mov word ptr KbdOut,ax      

          mov ax,word ptr sKbdOut+2

          mov word ptr KbdOut+2,ax

          mov ZadSek,0           

odend:      ret

timergo     ENDP

UvUmPuls    PROC  NEAR    ; ввод с кнопки Пульс и с кнопок

; Увеличить и Уменьшить

          in al,keyport

          not al             ; ввод с кнопки пульс

          and al,10000000b           

          cmp al,0

          je ac14           

          cmp predpuls,0

          jne ac14                      

          inc pulsoper         ; инкрементируется по фронту кнопки пульс

ac14:       in al,keyport

          not al

          and al,10000000b           

          mov predpuls,al    ; сохранение предыдущего состояния

               

          inc zadpuls               ; задержка

          cmp zadpuls,zadpulsmax

          jb ac13

          mov zadpuls,0           ; когда заканчивается - сохраняем накопитель в adc1

          mov al,pulsoper

          mov bl,6

          mul bl

          mov adc1,al

          mov pulsoper,0

ac13:           

            mov al,adc1

          

                                 ; ввод пульса

          cmp FlagStart,0ffh  

                               ; если идёт процесс

          jne ac6  

    

          cmp flspup,0ffh        ; если скорость увеличилась

          jne ac5           

          cmp al,adc1        ; текущее показание пульса меньше предыдущего

          jnb ac6

          mov flalert,0100000b  ; останавливаем процесс, устанавливаем флаг тревоги

          mov FlagStart,0

          jmp ac6

    

ac5:        cmp flspdown,0ffh     ; если скорость уменьшается

          jne ac6               

          cmp al,adc1           ; если пульс увеличился

          jna ac6

          mov flalert,0100000b ; останавливаем процесс, устанавливаем флаг тревоги

          mov FlagStart,0           

          

ac6:        mov adc1,al      ; сохраняем пульс

          

          mov ah,0          ; преобразование в 10-ный формат в переменную curpuls

          mov bl,100

          div bl

          mov curpuls+2,al

          mov al,ah

          mov ah,0

          mov bl,10

          div bl

          mov curpuls+1,al

          mov curpuls,ah

                  

          cmp FlagStart,0ffh     ; ввод пределов пульса 

          je acen               ; не осуществляется когда идёт процесс

          

          

          

          inc zadinc           ; ввод с кнопок +1 -1

          cmp zadinc,zadincmax

          jne ac11

          mov zadinc,0         

          in al,keyport

          not al

          and al,01100000b  ; если нажата +1 и сработала задержка и не достигнут

; максимум значения то инкремент

          cmp al,00100000b

          jne ac12

          cmp adc2,255    ; максимум

          jae ac16

          inc adc2           

          jmp ac11

ac16:       mov adc2,0           

          

ac12:       cmp al,01000000b

          jne ac11

          cmp adc2,0

          je ac17

          dec adc2           

          jmp ac11

ac17:       mov adc2,255           

ac11:                

          mov al,adc2             ; ввод пределов макс/мин

          mov cl,al           ; сохраняем в cl прочитанное значение

          cmp lastadc,al      ; если показание пределов изменилось

          je ac1           

          mov adc2,al     ; сохраняем текущий предел

          mov ah,0

          mov bl,100

          div bl

          mov curadc+2,al

          mov al,ah

          mov ah,0

          mov bl,10

          div bl

          mov curadc+1,al      ; формируем 10-ный текущий предел

          mov curadc,ah

          mov adcchg,0ffh

ac1:        mov lastadc,cl     ; сохраняем показание пределов для следующего

; прохода процедуры

acen:       ret

UvUmPuls    endp           

sgout     PROC  NEAR       ; тревога если человеку плохо или вывод на

; лампочки ног

            cmp FlagStart,0ffh     ; если превышение максимального пульса или ниже

; минимального, то остановить и выдать сигнал тревоги

          jne ac2

          mov al,maxadc

          cmp adc1,al  ; сравниваем текущее состояние с максимальным

          ja ac3

          mov al,minadc

          cmp adc1,al  ; сравниваем текущее состояние с минимальным

          jb ac3

          jmp ac2           

ac3:        mov flalert,0100000b ; тревога если пульс выходит за пределы

            mov FlagStart,0

            mov ZadSek,0

ac2:             

          mov al,lastst      ; вывод на лампочки ног

          or al,flalert  ; сигнал тревоги       

          or al,11111b

sgo1:

            out kbdport,al    ; вывод данных на порт (либо лампочки либо тревога)

            ret

sgout       endp           

ind7out   PROC  NEAR     ; вывод на семисегментные индикаторы в

; динамическом режиме  

     

          mov cx,4      ;гасим нули в старших цифрах на старшую цифру

; указывает KolVCifKbd

          mov si,0

          mov ah,0

i7o1:       mov al,KolVCifKbd  ; запись в AL количества введенных цифр    

          cmp ax,si    ; сравнение - число введенных (KolVCifKbd) цифр

; меньше смещения SI

          ja i7o2                

i7o4:       mov OutImages[si],0 ; если число введенных (KolVCifKbd) цифр меньше

; смещения SI, означающего номер индикатора

            jmp i7o3

i7o2:       mov bh,0               ; обнулить старший байт смещения

            mov bl,KbdOut[si]    ; по цифре из соотв. элемента KbdOut (от 0 до 9)

; вычисляем смещение (от 0 до 9) относительно начала

; массива образов

            mov al,symimages[bx] ; берём элемент из массива образов со смещения

; относительно начала  sysimages

            mov OutImages[si],al ; в соотв. элемент OutImages записываем образ

i7o3:       inc si

            loop i7o1

      

            or outimages+2,010000000b   ; точка

      

          mov bh,0         ; вывод установленного пульса на индикаторы

          mov bl,curpuls

          mov al,symimages[bx]

          mov OutImages+4,al       

          mov bl,curpuls+1

          mov al,symimages[bx]

          mov OutImages+5,al       

          mov bl,curpuls+2

          mov al,symimages[bx]       

          mov OutImages+6,al

      

          mov bh,0          ; вывод пульса человека на индикаторы

          mov bl,curadc

          mov al,symimages[bx]

          mov OutImages+7,al       

          mov bl,curadc+1

          mov al,symimages[bx]

          mov OutImages+8,al       

          mov bl,curadc+2

          mov al,symimages[bx]       

          mov OutImages+9,al                    

      

      

          cmp FlagErr,0ffh ; если установлен флаг ошибки, то вывести Err

; вместо цифр

          jne mf12

          mov OutImages,01100000b

          mov OutImages+1,01100000b

          mov OutImages+2,01110011b

          mov OutImages+3,0b

          inc ZadShag

          cmp ZadShag, ZadShagMax

          jb mf12

          mov ZadShag,0

mf12:       

          mov cx,10      ;вывод на индикаторы в динамическом режиме

          mov bx,0fffeh

          mov si,0

mf11:       mov ax,bx

          and ax,01111111111b

          

          out IndSelPort,al

          mov al,ah

          or   al,lastst       ; зажигаем ноги

          or   al,flalert               ; выводим динамик      

          out kbdport,al

          mov al,OutImages[si]

          out IndDatPort,al

          mov al,0

          out IndDatPort,al

          rol bx,1

          inc si

          loop mf11

          

mi7oend:    ret

ind7out     ENDP

funcprep  proc  near  ; подготовка данных    

          mov cx,4

          mov si,0

fp1:        mov KbdOut[si],0

          inc si

          loop fp1

          mov sKbdOut,0 ; сохраненный образ клавиатуры

          mov sKbdOut+1,0

          mov sKbdOut+2,0

          mov sKbdOut+3,0           

          

          mov step,011000000b

          mov flcurmax,0           

          mov speed,0           

          mov KbdImage,0ffh

          mov KbdImage+1,0ffh

          mov KbdImage+2,0ffh                      

          mov FlagStart,0

          mov FlagErr,0           

          mov KolVCifKbd,4

          mov KbdErr,0

          mov ZadSek,0

          mov ZadPuls,0           

          mov ZadInc,0

          mov ZadShag,0

          mov flspup,0

          mov flspdown,0

          mov stepcol,0

          mov lastst,0           

          mov adcchg,0

          mov presskey,0

          mov curpuls,0

          mov curpuls+1,0

          mov curpuls+2,0                      

          mov maxpuls,5

          mov maxpuls+1,5

          mov maxpuls+2,2

          mov maxadc,255

          mov minpuls,0

          mov minpuls+1,0

          mov minpuls+2,0                     

          mov minadc,0

          mov adc2,0

          mov adc1,0

          

          mov curadc,0

          mov curadc+1,0

          mov curadc+2,0                     

          mov flalert,0

          mov predpuls,0

          mov pulsoper,0

          ret

funcprep      endp

Start:

          mov   ax,Code

          mov   es,ax

          mov   ax,Data

          mov   ds,ax

          mov   ax,Stk

          mov   ss,ax

          lea   sp,StkTop

               

          call  funcprep  ; функциональная подготовка данных

InfLoop:    call  KbdInput  ; ввод с клавиатуры

          call  Keyinput  ; ввод с кнопки мин/макс

          call  KbdInContr ; контроль ввода с клавиатуры

          call  NxtDigTrf ; преобразование цифры (образа клавиатуры в

; унитарный код nxtdig)

          call  Numvvod  ; анализ нажатой цифры (в зависимости от кода

; клавиши(NextDig) на клавиатуре выполнять действие)

          call  shaggo  ; анализ шагов (ввод шага кнопками левая, или правая,     ; формирование флагов изменения скорости)

          call  timergo  ; процедура управления таймером(обратный счет)

          call  UvUmPuls ; ввод с кнопок Увеличить, Уменьшить, Пульс   

          call  sgout  ; вывод двоичных сигналов (тревога если человеку

; плохо или вывод на лампочки ног)

          call  ind7Out  ; вывод на семисегментные индикаторы в

; динамическом режиме              

          jmp   InfLoop

          

          

;В следующей строке необходимо указать смещение стартовой точки

          org   RomSize-16

          assume cs:nothing

          jmp   Far Ptr Start

Code        ENDS

END

Заключение

В процессе выполнения курсового проекта была разработана программа управления электронным медрегистратором, а также была разработана документация на это устройство.

Таким образом, все предписанные этапы разработки программных средств микропроцессорной системы и задание на курсовой проект были выполнены.

Разработанная программа была протестирована в интегрированной среде  Design Microsystems.

В ходе выполнения данного проекта мной были получены практические навыки проектирования аппаратного и программного обеспечения микропроцессорных систем.

Список использованных источников

1  Комаров В. М. Микропроцессорные системы : учебное пособие. – Рыбинск: РГАТА, 2006. – 92 с.

2 Комаров В. М. Микропроцессорные системы. Проектирование аппаратного и программного обеспечения :  учебное пособие. – 2-е изд., перераб. и доп. – Рыбинск : РГАТА, 2004. – 176 с.

3 Комаров В. М. Микропроцессорные системы: Выполнение курсового проекта:  учеб. пособие.  – Рыбинск : РГАТА, 2006. – 93 с.

4 Микрофоны электретные HMO0603A.  Производитель JL World. [Электронный ресурс]. Электрон. текстовые, граф. дан. в формате *.pdfURL : http://lib.chipdip.ru/054/DOC000054701.pdf  (дата обращения 02.12.2011 г.).

5 Блоки питания Александер Электрик. AC/DC преобразователи. Серия KN. [Электронный ресурс]. – Электрон. текстовые, граф. дан.  URL :    http://www.aeip.ru/index.php?option=com_content&task=view&id=115&Itemid=29

(дата обращения 02.12.2011 г.).

6 Кнопочные переключатели. Производитель ООО «НПО НИИРК» [Электронный ресурс]. – Электрон. текстовые, граф. дан.  Режим доступа :  – http://www.niirk.ru/th.htmlнск  (дата обращения 02.12.2011 г.).

7 Лярский  В. Ф., Мурадян О. Б. Электрические соединители :   Справочник – М.: Радио и связь, 1988. – 272 с.

8 Логические ИС КР1533,  КР1554 :  справочник в 2-х частях. Петровский И. И.,  Прибыльский А. В., Троян А. А.,  Чувелев В. С. – М.: Бином, 1993. – Часть 1 с. 1 – 254.

9 Логические ИС КР1533,  КР1554 : справочник в 2-х частях.   Петровский И. И.,  Прибыльский А. В., Троян А. А.,  Чувелев В. С. – М.: Бином, 1993. – Часть 2 с. 254 – 497.

10 Нефедов А. В. Интегральные микросхемы и их зарубежные аналоги : Справочник.  – Т. 10. – М. : ИП РадиоСофт,  2001. – 544 с. : ил.

 11 Пьезоэлектрические излучатели звука серии PKLCS. Производитель Murata.   [Электронный ресурс]. – Электрон. текстовые, граф. дан.   Режим доступа :  – http://www.platan.ru/news/news.shtml?code=939 (дата обращения 02.12.2011 г.).

12 Р. Кофлин, Ф. Дрискол. Операционные усилители и линейные интегральные схемы. Пер. с англ. Б. Н. Бронина. – М. : Мир, 1979. – 307 с.

13 Справочник по электрическим конденсаторам / М. Н. Дьяконов,         В. И. Карабанов,  В. И. Пресняков и др. Под общ. ред. И. И. Четверткова и                 В. Ф. Смирнова. – М. : Радио и связь, 1983. – 576 с., ил.

14 Резисторы : Справочник / В. В. Дубровский, Д. М. Иванов, Н. Я. Пратусевич и др.; Под ред. И. И. Четверткова и В. М. Терехова. – 2-е изд., перераб. и доп. – М. : Радио и связь, 1991. – 528 с. : ил.

 15 Хрулев А. К., Черепанов В. П. Диоды и их зарубежные аналоги. Справочник. В 3-х  т. Т. 1. – М. : ИП РадиоСофт, 1999. – 640 с., ил.

16 Хрулев А. К., Черепанов В. П. Диоды и их зарубежные аналоги. Справочник. В 3-х  т. Т. 3. – М. : ИП РадиоСофт, 2000. – 704 с., ил.

17 Полупроводниковые приборы: транзисторы : Справочник / В. Л. Аронов, А. В. Баюков, А. А. Зайцев и др.; Под ред. Горюнова Н. Н. – М.: Радио и связь, 1982. – 906 с.

18 Справочник радиолюбителя [Электронный ресурс]. – Электронные, текстовые, графические данные и прикладная программа (477 МБ). – 1 электронный компакт-диск: цв. Системные требования: ПК 486 или выше; 32 МБ ОЗУ; Windows 95/98/NT; SVGA 32768 640  480; мышь.

19  Петухов В. М.  Транзисторы и их зарубежные аналоги. Полевые и высокочастотные биполярные транзисторы средней и большой мощности : справочник в 4-х томах. Т. 3. Издание 2-е, исправленное. – М. : ИП  РадиоСофт, 2000 г.,  672 с. : ил.

20  Вуколов В. И.,  Михайлов А. Н. Знакосинтезирующие индикаторы : Справочник / Под. ред. В. П. Балашова. – М. : Радио и связь, 1987. – 576 с. : ил.


 

А также другие работы, которые могут Вас заинтересовать

68768. Материалы ж/б мостов, водоотвод, гидроизоляция 394.5 KB
  Бетон конструкции мостов подбирают в зависимости от требуемых условий прочности морозостойкости и в некоторых случаях водостойкости и водонепроницаемости. В зависимости от вида конструкции их армирования и условий работы класс бетона принимают в соответствии с требованиями приведенными в СНиП.
68769. Наладка. Общие сведения о пусконаладочных работах 505.5 KB
  В практике наладочных работ приходится измерять сопротивления от десятков микроом переходные сопротивления контактов до тысяч мегом – сопротивление изоляции. При этом взаимная индуктивность равна Наладка защитно-коммутационной аппаратуры Измерение сопротивления изоляции ЭО и...
68770. Всемирная история новейшего времени. 1945 – начало XXI века 1.54 MB
  Победа в Великой Отечественной войне вызвала подъем в общественно-политической жизни страны. Воплотившись в массовом энтузиазме, трудовом героизме рабочих, колхозников, интеллигенции, он стал одним из главных факторов, обеспечивших успешное восстановление народного хозяйства.
68772. Статистика туризма: Краткий курс лекций 296.5 KB
  Статистика изучает: массовые общественные явлений при помощи статистических показателей (количество произведенной продукции разнообразных видов за определенный период времени, численность населения и т.д.) количественную сторону общественных явлений в неразрывной связи с их качественным...
68774. Строительные конструкции транспортных сооружений 777.82 KB
  Научиться: производить экономическую оценку и обоснование применяемых строительных конструкций в зданиях и сооружениях; определять нагрузки на несущие конструкции зданий и сооружений и выполнять их расчет; на основе разработанных конструктивных схем зданий или сооружений осуществлять расчеты строительных...
68775. ДОКУМЕНТАЦИОННОЕ ОБЕСПЕЧЕНИЕ УПРАВЛЕНИЯ В СОЦИАЛЬНО-КУЛЬТУРНОМ СЕРВИСЕ И ТУРИЗМЕ 688 KB
  Прием обработка и распределение поступающих документов. Правила обработки исходящих документов. Прохождение внутренних документов. Основные требования к оформлению документов.