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

Система централизованного контроля температуры (СКТ), в состав которой входит микроконтроллер 51-го семейства. Особенности синтеза принципиальной схемы СКТ, программное обеспечение управления микроконтроллером. Выбор основных элементов устройства.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 19.11.2013
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

НИУ МЭИ

Курсовая работа

на тему

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

Студент: Козюков С.В.

Факультет: АВТИ

Группа: А-4-08

Преподаватель: Евланов Ю.Н.

Москва 2013г.

Содержание

  • Введение
  • Техническое задание на курсовую работу
  • 1. Анализ технического задания
  • 1.1 Выбор первичного преобразователя температуры
  • 2. Структурная схема разрабатываемого устройства
  • 3. Принципиальная схема устройства
  • 3.1 Выбор основных элементов устройства и их характеристики
  • 3.1.1 МК
  • 3.1.2 Кварцевый резонатор
  • 3.1.3 Дитчик температуры
  • 3.1.4 Клавиатура
  • 3.1.5 Дисплей
  • 3.1.6. Резисторы
  • 4. Метрологический анализ устройства
  • 5. Анализ проводного подсоединения последовательной цепочки датчиков к МК
  • 6. Разработка ПО
  • 6.1 Схема алгоритма работы МК
  • 6.2 Листинг ПО
  • Заключение
  • Литература
  • Приложения

Аннотация

В курсовом проекте изложен результат разработки системы централизованного контроля температуры (СКТ), в состав которой входит микроконтроллер 51-го семейства. В работе синтезирована принципиальная схема СКТ, разработано программное обеспечение (ПО) управления микроконтроллером.

Введение

Система централизованного контроля температуры (СЦКТ) предназначена для измерения температуры объекта и получении информации о выходе температуры разных точек объекта за границы уставок.

Система централизованного контроля (СЦК) позволяет собирать и обрабатывать большое количество информации, а оператору предоставить в удобной форме необходимую её часть. В работе реализована СЦК для измерения температуры.

СЦК осуществляет измерение температуры при помощи нескольких датчиков. Вывод информации осуществляется при помощи жидкокристаллического индикатора (ЖКИ). Одной из задач СЦКТ, помимо вывода информации о температуре, является контроль заданного значения температуры. Выход температуры за границы заранее заданных уставок отображается на дисплее автоматически с указанием канала.

СЦКТ применяются для контроля температуры объектов разного рода. Это может быть объект для лабораторных измерений, промышленный объект (сельскохозяйственный инкубатор), дата-центр и т.д.

В основе СЦК лежит микроконтроллер (МК) 51-го семейства [1]. МК предназначен для управления различными электронными устройствами и осуществления взаимодействия между ними в соответствии с заложенной в него программой. На сегодняшний день микроконтроллеры часто используются при проектировании различных электронных устройств, в частности, микроконтроллеры очень часто встречаются в составе измерительных вычислительных систем.

В СЦКТ присутствует жидкокристаллический индикаторный модуль (ЖКИМ) для вывода различной буквенно-цифровой информации. Большинство ЖКИМ объединяет наличие контроллера HD44780 [2] фирмы Hitachi, ставшего практически промышленным стандартом.

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

1. Полное наименование темы: Система централизованного контроля температуры.

2. Назначение и область применения.

2.1 Система предназначена для измерения температуры объекта и получения информации о выходе температуры различных точек объекта за границы уставок.

2.2 Область применения системы - практика лабораторных и промышленных измерений.

3. Технические требования к системе.

3.1 Условия эксплуатации.

3.1.1 Нормальные условия применения по ГОСТ 22261-94. Допуск на отклонение от нормального значения температуры ±1оС.

3.1.2 Рабочие условия применения в соответствии с требованиями ГОСТ 22261-94 к СИ 2 группы.

3.2 Основные технические требования.

3.2.1 Первичный преобразователь фирмы ANALOG DEVICES

3.2.2 Диапазон измеряемых температур: 0 - 100 оС с разрешением в 0.1 оС

3.2.3 Количество каналов измерения - 5.

3.2.4 Время опроса канала не более 0.5 с.

3.2.5 Количество уставок для регулирования температуры не менее 50 через 2% от диапазона измерений.

3.2.6 Зона предельных уставок для каждого канала не менее 2% от диапазона измерений.

3.2.7 Допускаемая приведенная погрешность измерений температуры по каждому каналу в рабочих условиях не более 1%. Возможности уменьшения погрешности исследуются в работе.

3.2.8 Сопротивление линии связи не более 10 Ом.

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

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

4. Специальные требования

4.1 В системе применить ОМК семейства 51.

4.2 В качестве цифрового индикатора использовать жидкокристаллический индикаторный модуль со встроенным контроллером HD44780.

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

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

Согласно техническому заданию (ТЗ) необходимо спроектировать систему централизованного контроля температуры. ТЗ накладывает некоторые условия на проектируемое устройство:

1. Диапазон измеряемых температур: 0 - 100 оС с разрешением в 0.1 оС

2. Количество каналов измерения - 5

3. Время опроса канала не более 0.5 с.

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

Данные параметры оказывают влияние на ход проектирования - выбор первичных преобразователей, выбор МК, разработка ПО.

1.1 Выбор первичного преобразователя температуры

Согласное ТЗ необходимо выбрать датчик температуры фирмы Analog Devices. Датчик должен удовлетворять следующим требованиям:

1) Наименьшая максимальная погрешность в диапазоне измерений,

2) Разрешающая способность ?0.1 оС,

3) Время измерения <0.5c,

3) Минимальная стоимость.

Был проанализирован ряд датчиков данной фирмы, удовлетворяющих требованиям ТЗ (таблица 1).

Табл. 1. Датчики температуры фирмы Analog Devices.

Moдель

Максимальная погрешность в диапазоне 0.100?С

Разрешающая способность

Напряжение питания

Tизм,

мс

Стоимость, $

Прочее

Min, B

Max, B

ADT7320

±0.25°C

0.0078?С

2.7

5.5

240

3.1

Индикатор превышения критической температуры;

Прерывание выхода температуры за нижнее/верхнее пороговое значение

ADT7310

0.5°C

0.0078?С

2.7

3.6

240

1.32

Индикатор превышения критической температуры;

Прерывание выхода температуры за нижнее/верхнее пороговое значение

ADT7301

1°C

0.03125°C

2.7

5.25

1.5

1.21

-

TMP06

0.25°C

0.025°C/5мкс

3

5.5

100

0.66

Работает на основе ШИМ

Все датчики, представленные в таблице 1 удовлетворяют требованиям ТЗ. Был выбран датчик типа TMP06 [П3], т.к. он имеет наименьшую максимальную погрешность измерения 0.25°C как и датчик типа ADT7320, но имеет более низкую стоимость. Отличительной особенностью датчика TMP06 является то, что его принцип работы основан на широко-импульсной модуляции (ШИМ).

Данный датчик преобразует температуру в сигнал прямоугольной формы, при этом длительность периода высокого уровняTh - практически не меняется, а длительность периода низкого Tl меняется в соответствии с изменением температуры. Согласно техническому описанию (ТО) данного датчика [5], значение температуры вычисляется по следующей формуле:

Tx=421- (751* (Th/Tl)). (1)

В соответствии с ТЗ, разрабатываемая СЦКТ должна иметь 5 первичных преобразователя температуры. Согласно ТО TMP06, использование нескольких датчиков производится путем их последовательного соединения (рисунок 1.1.1).

Рис. 1.1.1 Структурная схема последовательного соединения датчиков ADT06

В результате на выходе группы датчиков образуется последовательность прямоугольных импульсов. Очередность прямоугольных сигналов соответствует очередности датчиков в последовательной группе (рис. 1.1.2).

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

На рисунке 1.1.2 "START PULSE" - это прямоугольный импульс, который необходимо подать на вход первого датчика, чтобы начать процесс измерения, а на выходе этот импульс следует после последовательности импульсов измерения температуры.

2. Структурная схема разрабатываемого устройства

На рисунке 2.1 представлена структурная схема СЦКТ, работающего на основе МК семейства 51.

Рис. 2.1 Схема электрическая структурная СЦКТ

Пояснение к рисунку 2.1:

Х1 - разъем,

MCS-51 - микроконтроллер 51-го семейства,

АD1. АD5 - датчики температуры,

Q - кварцевый резонатор (генератор опорной частоты),

D - жидкокристаллический индикаторный модуль (ЖКИМ),

F - клавиатура 4х4.

Рассмотрим принцип работы устройства. Начало измерения определяется генерацией старт-импульса на выводе Р0.2 МК. Спустя некоторый промежуток времени на вход Р0.1 МК от группы датчиков поступает последовательность импульсов, которая содержит информацию о температуре на каждом из датчиков. Очередность импульсов, которые поступают на вход Р0.1 МК, согласно ТО датчика TMP06, соответствует последовательности подключения самих датчиков (см. рис. 1.1.1 и 1.1.2). Далее вся полученная информация обрабатывается микроконтроллером: вычисляется температура (Тх) на каждом из датчиков, значения температуры сверяются с заранее введенными оператором уставками (если значение температуры на любом из датчиков выходит за границы уставок, то генерируется сигнал оповещения, на дисплей выводится сообщение об ошибке и номер датчика на котором обнаружена аномалия).

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

Рис. 2.2 Схема размещения кнопок на клавиатуре

Как показано на рисунке 2.2, в работе СЦКИ используется клавиатура размером 4х4 кнопок. Для вывода на дисплей температуры Tx N-го датчика необходимо нажать кнопку "TEMP", ввести номер датчика N (от 1 до 5) и нажать кнопку ENT. В результате на дисплее появится значение температуры на датчике под номером N.

Для ввода уставок (верхней и нижней) необходимо нажать кнопку "UST", ввести значение первой (нижней) уставки, нажать кнопку "ENT". Затем повторно нажать кнопку "UST", ввести значение певторой (верхней) уставки, нажать кнопку "ENT". Данное действие необходимо производить последовательно для каждого из 5 датчиков. Если вследствие ошибки оператора последовательность выполнения команд была нарушена, то необходимо перезапустить устройство дважды нажав на кнопку "on/off".

Кнопка "CLR" очищает введенное значение уставки. После нажатия на эту кнопку необходимо ввести новое значение уставки и далее следовать прежней последовательности выполнения операций.

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

Нажатие кнопки RST осуществляется перезагрузка микроконтроллера. Использовать перезагрузку МК целесообразно при непредвиденном сбое системы или если СЦКТ работает не верно по не понятным причинам.

Вывод данных осуществляется при помощи ЖКИ модуля. ЖКИ индицирует значение вводимых уставок в реальном времени, отображает значение температуры по запросу оператора, выводит сообщение об ошибке на любом из датчиков, если она обнаружена в процессе измерения.

Рассмотрим подробнее процесс вычисления значения температуры Tx на примере одного из датчиков. Согласно формуле 1 из раздела 1.1, значение температуры Tx вычисляется по формуле:

Tx=421- (751* (Th/Tl))

где Th - длительность информационного сигнала высокого уровня,

Tl - длительность сигнала низкого уровня.

Вычисление значение Th и Tl производится при помощи таймеров/счетчиков (Т/С) микроконтроллера. Пусть Т/С1 работает в режиме таймер и считает длительность Th c частотой Fo, а Т/С0 работает в режиме таймера и считает длительность Tl. Тогда в результате обработки одного прямоугольного сигнала будут определены значения Nh и Nl - это число отсчетов, которое сосчитали Т/С0 и Т/С1 в результате своей работы. Тогда формула вычисления Tx выглядит так:

Tx=421- (751* ( (Nh*To) / (Nl*To))), (2)

где To = период опорного импульса с частотой Fo. Все вычисления производятся на программном уровне. Более подробно процесс вычисления Tx описан в следующих разделах.

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

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

Рис. 3.1 Схема электрическая принципиальная СЦКТ

Пояснения к принципиальной схеме:

DD1 - микроконтроллер 51-го семейства,

DD2 - ЖКИ-модуль

AD1. AD5 - первичные преобразователи,

F - клавиатура,

Х1 - разъем,

Q1 - кварцевый резонатор,

С1, С2, С3, С4 - конденсаторы,

R1 - подстроечный резистор,

R2,R3,R4 - резисторы.

Разъем Х1 имеет вывод питания +5В для МК, ЖКИ модуля и для датчиков.

В схеме СЦКТ используется микроконтроллер 51-го семейства типа AT89C51RB2, ЖКИ модуль типа PC-2001L [3], матричная клавиатуры размером 4х4 фирмы PARALLAX [6], датчики температуры типа TMP06. Подробнее выбор всей элементной базы представлен в разделе 3.1.

Как показано на рисунке 3.1, с вывода Р0.2 МК подается "старт импульс", который поступает на вход последовательно соединенную группу датчиков температуры AD1-AD5. На вход Р0.1 МК поступает последовательность прямоугольных импульсов, которая содержит информацию о температуры на каждом из датчиков. Клавиатура F марки Parallax позволяет вводить верхние и нижние уставки, послать запрос для вывода информации на дисплей.

Для формирования опорной частоты МК в схеме используется внешний кварцевый резонатор. Частота кварца составляет 6 МГц. Согласно ТО МК, кварцевый резонатор подключается к выводам XTAL1 и XTAL2 МК.

Питание организовано при помощи разъема. Напряжение питания составляет 5В. Тракт питания обеспечивает напряжением все активные узлы схемы: МК, датчики, дисплей. Питание МК осуществляется при помощи вывода Vcc. Питание каждого из датчиков производится при помощи вывода Vdd датчиков.

Подключение дисплея:

К выводу Vo дисплея подключен подстроечный резистор R1 для организации контрастности символов модуля. К выводу А через резистор R3 подведено напряжение питания +5В для организации подсветки ЖКИ. К выводу Vdd ЖКИ подведено напряжение питания +5В для питания модуля.

Из рисунка 3.1 видно, что конденсаторы С1 и С2 шунтируют цепь питания. Данные конденсаторы позволяют исключить всплески напряжения тракте питания между разъемом и МК. Было решено использовать конденсаторы ёмкостями 4.7мкФ и 0.1мкФ.

Было решено использовать следующие модели конденсаторов:

С1: танталовый конденсатор К53-18, ёмкостью 4.7мкФ,

С2: керамический конденсатор К10-17Б, ёмкостью 0.1мкФ.

Конденсаторы С3 и С4 применяются ТО МК при подключении кварцевого резонатора к МК в качестве внешнего генератора системной частоты.

Разработчики рекомендуют использовать конденсаторы С3 и С4 с емкостью 22пФ.

Было решено использовать следующие модели конденсаторов:

С3,4: танталовый конденсатор КM5Б-M47, ёмкостью 22пФ

3.1 Выбор основных элементов устройства и их характеристики

В данном разделе представлен выбор элементной базы проектируемого устройства (рис. 3.1).

3.1.1 МК

Был выбран МК 51-го семейства типа C8051F410 [П1]. Причиной этому послужило следующее:

1) Требует питания +5В (как дисплей и датчики).

2) Имеет систему прерываний от клавиатуры (облегчает процесс проектирования с точки зрения создания ПО)

3) Имеет 2 таймера/счетчика

4) Имеет диапазон рабочих температур (-40 ч +85) ОС. Эти данные приемлемы согласно ГОСТ 22261-92, который оговаривается в ТЗ.

5) Имеет необходимое количество портов для работы с периферией.

Выше описанными свойствами обладает и ряд других микроконтроллеров серии 51. Тем не менее нет никаких противоречий в работе данного МК для его использования в рамках ТЗ.

3.1.2 Кварцевый резонатор

Кварцевый резонатор применяется в качестве периферийного узла для генерации тактовой частоты МК. Был выбран резонатор типа HC-49SM. Частота работы данного резонатора 6 МГц. В сочетании с делителем МК значение которого равно 12, частота тактовых импульсов составляет 500 кГц. Данное значение частоты Fo приемлемо с точки зрения проектирования СЦКТ. Более подробные технические характеристики данного резонатора представлены в приложении [П5].

3.1.3 Дитчик температуры

Для работы устройства в рамках ТЗ был выбран датчик типа TMP06 (см. раздел 1.1). Его подробные характеристики представлены в приложении 3. Существует два варианта реализации данного датчика: TMP06A и TMP06B. В работе используется датчик TMP06B для всей группы датчиков. Их ТО TMP06 видно, что TMP06B обладает более высокими метрологическими характеристиками (Nominal convertion Rate= (0.4±1.5) ОС для датчика А и max = 5 ОС для датчика B).

3.1.4 Клавиатура

В работе используется клавиатура размером 4х4 кнопок фирмы Parallax. На рынке матричных клавиатур данная модель позиционируется как Matrix Membrane KeyPad (#27899). Принцип работы с точки зрения обработки вводимых данных описан в следующих разделах. Отличительная особенность данного компонента заключается в том, что для оперирования матрицей из 16 кнопок необходим один 8-разрядный порт, а не 16 линий связи для каждой кнопки в отдельности. Работа клавиатуры организуется посредством задания "бегущего нуля" на одних выводах и опроса состояния других выводов [6].

3.1.5 Дисплей

Согласно ТЗ необходимо выбрать ЖКИМ, который должен иметь встроенный контроллер HD44780.

В работе используется ЖКИ-модуль типа PC-2001L фирмы POWERTIP [П2].

Данный ЖКИМ имеет 1 строку. Этого достаточно для ввода уставок, вывода информации о температуре и отображения сообщений об ошибке. Данный ЖКИМ полностью удовлетворяет требования ТЗ.

3.1.6. Резисторы

Выбор R1:

В ходе проектирования в качестве подстроечного резистора R1 был выбран элемент типа СП3-19а [П4].

Выбор R2:

В качестве резистора R2 разработчики МК советуют использовать резистор с сопротивлением 50кОм. Был выбран резистор типа CF-25 с номинальным значением сопротивления 47кОм.

Выбор R3:

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

R3= (Vdd-Va) / I,

где Vdd - напряжение питания схемы, составляет +5В,

Va - максимально допустимое напряжение подводимое к А, составляет 4.2В [П2]

I - максимально допустимый ток, составляет 360мА [П2].

Допустимое значение мощности для резистора R3 определяется следующей формулой:

P=I* (Vdd-Va) =0.36* (5-4.2) =0.144Вт.

Тогда R3=2,2Ом. Был выбран резистор марки KNP-100. Его номинальное значение сопротивления составляет 5.1Ом, номинальная мощность составляет 1Вт

Выбор R4:

Согласно ТО клавиатуры, разработчики советуют использовать резистор с сопротивление 1кОм. Был выбран резистор типа СF-25.

Выбор R5:

Разработчики МК советуют использовать в качестве резистора R5, резистор с сопротивлением 10МОм для подключения кварцевого резонатора. Был выбран резистор типа P1-38.

4. Метрологический анализ устройства

В данном разделе представлен анализ проектируемого устройства с точки зрения метрологии. Согласно ТЗ допускаемая приведенная погрешность измерения температуры по каждому каналу в рабочих условиях не должна превышать 1%.

Составляющие общей погрешности измерения:

1) Погрешность датчика (гs),

2) Погрешность дискретизации (расчета) (гд),

3) Погрешность, возникающая в следствие отклонения частоты Fo опорного генератора от номинального значения (гq).

Тогда общая формула расчета приведенной погрешности проектируемого устройства имеет следующий вид:

г= гs+ гд+ гq. (3)

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

1. Погрешность датчика:

На рисунке 4.1 представлен график зависимости погрешности (error) датчика от температуры.

Рис. 4.1 График зависимости погрешности датчика от температуры

Для работы СЦКТ напряжение питания составляет 5В. Из рисунка 4.1 видно, что максимальное значение отклонения температуры график принимает на границах диапазона измерения - 0 ОС и 100 ОС, по этому в дальнейшем анализ составляющих погрешности будет проводиться по граничным значения диапазона измерения.

Тогда:

Д 100= - 0.25 ОС при Tx=100 ОС,

Д 0= 0.15 ОС при Tx=0 ОС.

Формула вычисления приведенной погрешности выглядит так:

г= (|Д|/Xш) *100%, (4)

где Xш - диапазон шкалы измерения (0-100 ОС).

Из формулы 4 видно, что приведенная погрешность измерения вносимая датчиком составляет: г s_100 = 0.25%, г s_0 = 0.15%.

2. Погрешность дискретизации:

Под погрешностью дискретизации следует понимать погрешность счета. Она возникает из-за расчета значения температуры Tx для каждого из датчиков по формуле:

Tx=421- (751* (Th/Tl)), (5)

где Th - длительность информационного сигнала высокого уровня,

Tl - длительность сигнала низкого уровня.

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

Тогда:

|Дд|= 751 (Дт/Tl + (Th/Tl2) * Дт), (6)

где

Дт - аддитивная составляющая погрешности счета, которая возникает из-за ошибки счета Т/С0 и T/C1. Т.е. момент начала счет T/C может не совпадать с моментом изменения логического уровня на вывозе Р0.1. Максимально значение данной составляющей равно периоду опорного импульса частота Fo которого равна 6МГц. Значение Дт рассчитывается так:

Дт = To = 1/ (Fo/12) =1/ (6*106) = 2 (мкс).

Делитель 12 в уравнении выше присутствует из-за того, что в МК присутствует делитель тактовой частоты от внешнего генератора. Значение этого делителя равно 12.

Упрощая выражение 6, получим:

|Дд|= (751* Дт) /Tl * (1+Th/Tl). (7)

Определим предельные значения для Tl и Th из ТО TMP06:

Для Tx=100 ОС: Tl = 84.1мс, Th = 36мс;

для Tx=0 ОС: Tl = 61.4 мс, Th = 33.6мс.

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

Для Tx=100 ОС: ДД_100 = 0.026 ОС;

Для Tx=0 ОС: ДД_0 = 0.039 ОС;

Значения приведенной погрешности дискретизации вычисляются по формуле 4:

Для Tx=100 ОС: г Д_100 = 0.026 %;

Для Tx=0 ОС: г Д_0 = 0.039 %;

3. Погрешность, возникающая в следствие отклонения частоты Fo опорного генератора от номинального значения.

Согласно ТО кварцевого резонатора HC49-SM, отклонение частоты от его номинального значения составляет 10-6 % от номинального значения. Данное значение отклонения не существенно влияет на общее значение погрешность. Данной составляющей погрешности в дальнейших расчетах можно пренебречь.

Общее значение погрешности для проектируемой СЦКТ вычисляется по формуле 3. Значения приведенной погрешности устройства принимают следующие значения:

Для Tx=100 ОС: г = гs+ гд = 0.25%+0.026%=0.276%;

Для Tx=0 ОС: г = гs+ гд = 0.15%+0.039%=0.189%;

Вывод: Значения г проектируемой СЦКТ удовлетворяют требованию ТЗ и не превышают 1% на всем диапазоне измерения температуры.

Уменьшение приведенной погрешности рассматривается в разделе 6.

5. Анализ проводного подсоединения последовательной цепочки датчиков к МК

С точки зрения применения проектируемой СЦКТ одним из важных аспектов является максимальная длина соединительных проводов (СП), при которой система измерения температуры сохраняет метрологические характеристики (МХ) в рамках ТЗ. По соединительным проводам передается измерительный ШИМ сигнал (рис. 5.1).

Рис. 5.3 Схема последовательного включения датчиков температуры и МК в СЦКТ.

На рисунке 5.3:

СП - соединительный провод,

УУ - устройство управления, которое состоит из МК, дисплея, клавиатуры,

AD1. AD5 - группа последовательно включенных датчиков TMP06B.

Известно, что с увеличением длины провода его емкость увеличивается.

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

Рис.5.2 ШИМ сигнал датчика TMP06B.

На рисунке 5.2 представлен измерительный ШИМ сигнал, который поступает по СП от датчика к датчику и от датчиков в МК. Очевидно, что при увеличении длинны проводов, МХ системы будут зависеть от искажения фронта и среза сигнала. Из технического описания (ТО) датчика TMP06B известно, что при емкостной нагрузке 100 пФ, резистивной нагрузке 10кОм и напряжении 5.5 В, типовое значение величины среза и фронта соответственно равно 30 нс и 50 нс [7].

На рисунке 5.2 представлен, взятый из ТО датчика TMP06B, график зависимости длительности времени фронта/среза от емкостной нагрузки линии передачи сигнала.

Рис. 5.3 График зависимости времени фронта/среза от емкостной нагрузки линии передачи.

Согласно международному стандарту коммуникационных кабельных сетей ISO/IEEC11801, нормируемая длинна линии составляет 100м между сегментами сети, при максимальной емкостной нагрузке 5.6 нФ [8].

Из рисунка 5.3 видно, что при емкостной нагрузке С равной 5.6 нФ, длительность фронта Tф = 920 нс, а длительность среза Tc = 520 нс. Тогда, используя линию длиной 100м, можно оценить увеличение длительности ШИМ сигнала приблизительно на 1.5мкс.

Используя формулу (7) из раздела 4, получим:

|Дд|= (751* Дт) /TL * (1+TH/TL), (5.1)

где

Дд - погрешность дискретизации,

TL - длительность сигнала низкого уровня (рис. 5.2),

TH - длительность сигнала высокого вровня (рис. 5.2),

Дт - аддитивная составляющая погрешности счета.

Ниже представлен расчет Дт.

Формула расчеты аддитивной составляющей выглядит так:

Дт =Tи+To, (5.2)

где

To - период опорного импульса (2 мкс, см. раздел 4),

Ти - суммарное время "завала" фронтов/срезов сигнала от группы датчиков.

Расчет оценочного предельного значения Ти (из формулы 5.2) выглядит следующим образом:

Пороги срабатывания каждого датчика в цепи, при поступлении импульсного сигнала в ТО датчика TMP06B не описаны. Следовательно не известно на сколько меняется длительность информационного интервала ШИМ сигнала (Ти) при прохождении через датчик (при использовании группы датчиков).

Тогда:

Ти = ТИ1+ ТИ2+ ТИ3+ ТИ4+ ТИ5, (5.3)

где ТИ1 - длительность сигнала от датчика AD1 при поступлении в МК,

ТИ1 - длительность сигнала от датчика AD2 при поступлении в МК,

ТИ1 - длительность сигнала от датчика AD3 при поступлении в МК,

ТИ1 - длительность сигнала от датчика AD4 при поступлении в МК,

ТИ1 - длительность сигнала от датчика AD5 при поступлении в МК,

Тогда, при прохождении сигнала от одного датчика к другому, длительность информационного интервала от каждого датчика увеличивается на 1.5мкс (см. выше). Следовательно:

ТИ1 = = (1.5*5) мкс = 7.5мкс,

ТИ2 = = (1.5*4) мкс = 6мкс,

ТИ3 = = (1.5*3) мкс = 4.5мкс,

ТИ4 = = (1.5*2) мкс = 3мкс,

ТИ5 = = (1.5*1) мкс = 1.5мкс.

В результате, используя формулу 5.3, получим:

Ти = ТИ1+ ТИ2+ ТИ3+ ТИ4+ ТИ5= (7.5+6+4.5+3+1.5) мкс = 22.5мкс.

Тогда, согласно формуле 5.2:

Дт =Tи+To= (22.5+2) мкс=24.5мск.

Возвращаясь к формуле 5.1, получим:

1) При температуре Т=100 ОС, TL = 84мс, TH = 36мс.

Тогда, |Дд100|=0.464 %.

2) 1) При температуре Т=0 ОС, TL = 60мс, TH = 33.6мс.

Тогда, |Дд0|=0.319 %.

Применим формулу 3 из раздела 4 для оценки общего значения приведенной погрешности СЦКТ:

г = гs+ гд, (5.4)

где гs - приведенная погрешность датчика (см. раздел 4),

гд - приведенная погрешность дискретизации (расчета, см. раздел 4).

Из раздела 4 известно, что для температуры Т=100 ОС и 0 ОС, значение погрешности датчика равно гs100=0,25% и гs100=0.15% соответственно.

Тогда, используя формулу 5.4, получим:

Для T=100 ОС: г = гs100+ гд100 = 0.25%+0.464%=0.714%;

Для T=0 ОС: г = гs0+ гд0 = 0.15%+0.319%=0.469%;

Данные значения приведенной погрешности удовлетворяют условиям ТЗ.

Представленный выше расчет позволяет использовать провода длинной не более 100м между датчиками и МК при емкостной нагрузке 5.6нФ/100м, при погрешности измерения температуры Т не более 1% (см. ТЗ).

На рисунке 5.1 представлен "радиальный" метод соединения датчиков и МК СЦКТ. который позволяет использовать провода одинаковой длины. Так как расчет позволяет использовать провода длинной не более 100м, то "радиальный" метод соединения датчиков и МК приемлем для проектируемой СЦКТ.

Анализируя различные виды проводов (витая пара, оптоволоконный кабель, коаксиальный кабель) можно сказать, что для работы СЦКЗ подходит множество различных типов кабелей (с точки зрения электрических характеристик). На пример в пределах помещения чаще всего используют витую пару для соединения сегментов системы на расстоянии не больше ~100 метров. Оптоволоконный кабель применяется для соединения сегментов системы на расстоянии больше 100 метров, так как сигнал в оптоволоконном кабеле затухает (искажается) меньше, в отличие от витой пары, но и цена таких кабелей много больше.

Витая пара типа ТПП ЭП [9] - экранированная витая пара категории 2. Согласно электрическим характеристикам данного провода, емкостная нагрузка составляет 4.5нФ/100м. Данное значение емкостной нагрузки соответствует расчетам проведенным в данном разделе. Так как значение емкостной нагрузки ТПП ЭП меньше нормируемого в стандарте ISO/IEC11801 (5.6нФ/100м), то можно использовать провода длинной ~120 метров. Использование такого кабеля длинной 120 метров между датчиками и МК СЦКТ приемлемо с метрологической точки зрения. Но диапазон рабочих температуры ТПП ЭП составляет от - 15 ОС до 60 ОС, тогда как согласно ТЗ диапазон измеряемой температуры составляет от 0 ОС до 100 ОС. Для решения этой проблемы в схеме подключения датчиков и МК используется провод для работы с термопарами. То есть вблизи датчиков, где температура может превышать 60 ОС используется термостойкий длиной от 1 до 10 метров (в зависимости от области и специфики применения СЦКТ), а в остальной части соединения используется термопара (рис. 5.4).

Рис. 5.4 Схема соединения датчиков, термостойкого провода и витой пары в СЦКТ.

На рисунке 5.4 представлен пояснительный рисунок подключения датчиков и МК, где:

СП1 - термостойкий провод длинной 10 метров,

СП2 - кабель типа ТППЭП длинной 100-110 метров.

В качестве термостойкого провода можно использовать провод типа ПВКВ [10]. Это провод с медной многопроволочной жилой. Диапазон рабочих температур данного провода составляет от - 15 ОС до 180 ОС.

Использование витой пары в сочетании с термостойким проводом общей длиной не более 120м для соединения датчиков и МК в СЦКТ приемлемо с точки зрения всех аспектов ТЗ.

6. Разработка ПО

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

6.1 Схема алгоритма работы МК

На рисунке 6.1 представлена схема алгоритма работы основного модуля ПО. Программа производит настройку МК, дисплея; инициализирует процесс измерения; вызывает подпрограммы (П/П) вычисляет значение температуры Tx для каждого датчика, вывода данных на дисплей.

Рис. 6.1 Схема алгоритма основного программного модуля ПО

Из рисунка 6.1 видно, что в самом начале производится вызов П/П "начальные установки". Данная подпрограмма осуществляет настройку МК: настройка источника системного тактового сигнала; проводит настройку дисплея. Далее загружается счетчик импульсов - регистр R07. Значение данного регистра изначально равно 5, т.к. процесс измерения состоит из 5 циклов. За каждый цикл производится измерение температуры на 1 из 5 датчиков.

В предыдущих разделах было сказано, что для организации процесса измерения на основе 5 датчиков достаточно 2 линии связи. Первая линия связи вывод P0.2 - > CONV/IN, которая служит для передачи старт-импульса (старт-импульс инициализирует процесс измерения). Вторая линия связи - OUT->P0.1, которая предназначена для приема измерительных импульсов от группы датчиков микроконтроллером. Тогда, за один переданный старт импульс на вход Р0.1 МК "приходит" 5 прямоугольных информационных сигнала от датчиков и в конце следует старт-импульс, завершающий единичный процесс измерения.

Измерение значения Tx на каждом из датчиков организовано на основе таймеров-счетчиков микроконтроллера (см. раздел 2). Т/С0 и Т/С1 работают в 16-ти разрядном режиме и считают длительность высокого и низкого уровня каждого из прямоугольных сигналов.

Процесс измерения длительностей Th и Tl реализован так, что за время пока, T/C1 считает длительность Th текущего сигнала, производится сохранения в память данных информации о длительности Tl, который был отсчитан перед началом работы Т/С1. И наоборот, пока работает Т/С0 - сохраняются данные о Th.

После измерения Th и Tl одного из 5-ти импульсов происходит вызов П/П вычисления значения температуры Тх. Результат выполнения данной П/П - число, которые храниться в памяти данных по адресу 0х40 и 0x41 (0x40-адрес ячейки где храниться информация о целом значении Tx, 0x41 - адрес ячейки где храниться десятичный остаток значения Tx). В итоге форма представления значения температуры на N-нном датчике такова:

XXX. Y,

где XXX - трехзначное цело числа Tx, а Y - десятичный остаток числа Tx.

После выполнения П/П вычисления Tx, производится вызов П/П сравнения числа Tx с верхней и нижней уставками. Согласно ТЗ для каждого из каналов измерения должна быть верхняя и нижняя уставка измеряемой величины (Тх). Тогда, согласно работе основного модуля ПО, происходит выpов П/П сравнения Tx c уставками на каждом из измерительных каналов. Это организовано в подцикле, где осуществляется измерение текущего сигнала.

После вычисления и сравнения 5-ти значений Тх для каждого из датчиков, происходит проверка флага нажатия кнопки запроса для вывода Tx N-го датчика на дисплей. Согласно алгоритму работы П/П обработки прерывания, если нажимается кнопка "ТЕМР", а затем нажимается одно из кнопок 1,2,3,4 или 5, то определенной переменной F присваивается значение 1.5 нажатой кнопки. Тогда при проверке флага F, значение F будет от 1 до 5 если кнопка была нажата. Значение F будет нуль если кнопка для запроса вывода температуры не нажималась. В результате будет произведен вызов П/П вывода значения температуры Tx для N-го датчика на дисплей, если значение F не будет равно нулю. Так реализована работа СЦКТ на программном уровне.

На программном уровне проектирования присутствует возможность уменьшения погрешности измерения. Для этого необходимо лругим способом использовать систему прерываний МК от внешних источников иным. Необходимо реализовать процесс измерения так, чтобы запуск и остановка Т/С0 и Т/С1 управлялись состоянием на выводе /INT0 и /INT1 соответственно. Тогда запуск процесса измерения осуществляется программно, а работа Т/С0 и Т/С1 происходит на аппаратном уровне. В таком варианте работы устройства отсутствует Дт - аддитивная составляющая погрешности счета (см. раздел 4).

6.2 Листинг ПО

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

Листинг ПО:

NAMETEMP

$NOLIST

$NOMOD51

$LIST

$include (fp51s. lib)

; ===========================================================

CSEG AT 0

LJMP START

ORG 0x0B

LJMP PORT_PRER

; ===========================================================

PR_main segment CODE

RSEG PR_main

DSEG AT 0x15

FLAG1: ds 1; флаг (0=номер датчика для вывода на дисплей не введен,; 1=запрос на вывод Тх 1-го датчика, 2=запрос Tx; второго.5=запрос Tx 5-го датчика)

FLAG2: ds 1; флаг В и Н уставок (0=Н уставка, 1=В уставка)

FLFORERR: ds 1; флаг-номер датчика (для передачи номера датчика на; котором обнаружена ошибка в П/П вывода сообщения об; ошибке)

; ===========================================================

; Начальные установки

; Fsys=500 Khz

; ===========================================================

INIT: MOV CKCON,#00000111b; T/C TAKT F/12

MOV SCON,#000000000b; Fxtal/12

MOV IEN1,#00000001b; use interrapt from keyboard

MOV KBE,#00001111b; ENABLE INTERRUPR REQUEST FOR P0.4-P0.7

MOV TCON,#01010000b; T/C1 - ON, T/C2 - ON

MOV TMOD,#00010001b; оба таймеры в 16разр режиме

CLR TH0

CLR TL0

CLR TH1

CLR TL1

RET

MAIN:

; ===========================================================

; MAIN

; программа измерения температуры

; P0.2-START PIN

; P0.1-END PIN

; R6-DATA ADRESS

; R7-IMPULSE COUNTER

; R4 - BUF FOR SAVE TX

; ===========================================================

START:

LCALL INIT

USING 0

MOV R7,#5; загрузка счетчика импульсов

MOV R5,#20; начальный адрес хранения Тх

NEW: SETB P0.2; START-IMPULSE

NOP

NOP

CLR P0.2

CJNE P0.1,#1,$; ожидание 1-го уровня на Р0.1

SETB TR1

CICLE: MOV R6,#0X47h; начальный адрес хранения Nl и Nh

CJNE P0.1,#0,$; ожидание 0-го уровня на Р0.1

CLR TR1

SETB TR0

MOV @R6,TH1; запись в память Nh для периода высокого уровня

MOV R0,R6; запись в R0 адреса ячейки (для П/П MAKE_TEMP)

INC R6

MOV @R6,TL1; запись в память Nl для периода высокого уровня

MOV R1,R6; запись в R1 адреса ячейки (для П/П MAKE_TEMP)

INC R6

CLR TH1

CLR TL1

CJNE P0.1,#1,$; ожидание 1-го уровня на Р0.1

CLR TR0

SETB TR1

MOV @R6,TH0; запись в память Nh для периода низкого уровня

MOV R2,R6; запись в R3 адреса ячейки (для П/П MAKE_TEMP)

INC R6

MOV @R6,TL0; запись в память Nl для периода низкого уровня

MOV R3,R6; запись в R3 адреса ячейки (для П/П MAKE_TEMP)

LCALL MAKE_TEMP; вызов П/П вычисления Tx для измеренного импульса

; на вых - 0х40h адрес ячейки с целым Tx

; 0x41h адрес ячейки с дес. остатком Tx

MOV R4,@40

MOV @R5,R4

INC R5

MOV R4,@41

MOV @R5,R4

INCR5

LCALL CHECH_Tx; вызов П/П сравнения Tx с уставками

INC R6

CLR TH0

CLR TL0

DJNZ R7,CICLE

OUT: MOV A,FLAG1

JNB NODISPOUT; проверка флага запроса вызова, если flag=0 то не; надо выводить

LCALL DISP_TEMP; вызов П/П вывода Tx N-го датчика на дисплей

NODISPOUT: JMP START

RET

; ===========================================================

; П/П вывода Тх на дисплей

; входные переменные:

; flag1 - значение флага определяет для какого датчика выводить tx

; результат выполнения П/П - вывод Тх N-го датчика на дисплей

; ===========================================================

DISP_TEMP: USING 3

; проверка какая кнопка нажата

MOV A,FLAG1

CJNE A,#1,NED1

MOV R0,@0X20h

MOV R1,@0X21h

NED1: CJNE A,#2,NED2

MOV R0,@0X22h

MOV R1,@0X23h

NED2: CJNE A,#2,NED3

MOV R0,@0X24h

MOV R1,@0X25h

NED3: CJNE A,#2,NED4

MOV R0,@0X26h

MOV R1,@0X27h

NED4: CJNE A,#2,NED5

MOV R0,@0X28h

MOV R1,@0X29h

NED5: MOV R0,@0X30h

MOV R1,@0X31h

; преобразование Tx (разбиение числа на цифры)

MOV A,R0

MOV B,#00001010b

DIV AB

MOV R6,B

MOV A,B

MOV B,#00001010b

MOV AB

MOV R5,B

MOV R4,A

MOV R7,R1

; В РЕЗУЛЬТАТЕ R4 R5 R6 - ЦИФРЫ ЦЕЛОГО

; R7 - ЦИФРА ДЕСЯТИЧНОГО ОСТАТКА Тх

; преобразование r4-r7 в когды для пересылки (ДОПИСЫВАЕМ 3 В СТАРШУЮ ТЕТРАДУ)

ORL R4,#00110000b

ORL R5,#00110000b

ORL R6,#00110000b

ORL R7,#00110000b

; ПЕРЕСЫЛКА КОДОВ

1SIMV: MOV P2,R4

SETB P0.7

CLR P0.7

MOV P2,#11111111b

P2,#1d

2SIMV: MOV P2,R5

SETB P0.7

CLR P0.7

MOV P2,#11111111b

P2,#1d

3SIMV: MOV P2,R6

SETB P0.7

CLR P0.7

MOV P2,#11111111b

P2,#1d

4SIMV: MOV P2,#00101110b; POINT

SETB P0.7

CLR P0.7

MOV P2,#11111111b

P2,#1d

5SIMV: MOV P2,R7

SETB P0.7

CLR P0.7

MOV P2,#11111111b

P2,#1d

RETI

; ===========================================================

; П/П сравнений Tx с уставками

; входные параметры:

; 0x50 - адрес байта, где хранится число - сколько раз вызывалась П/П

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

; что храниться в адресах:

; 0x67h-0x70h - уставки для 1-го датчика

; 0x71h-0x74h - уставки для 2-го датчика

; 0x75h-0x78h - уставки для 3-го датчика

; 0x79h-0x82h - уставки для 4-го датчика

; 0x83h-0x86h - уставки для 5-го датчика

; выходные переменные:

; переменная FLFORERR - значение переменной опеределяет номер датчика на; котором выявлена ошибка

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

; сначала определяется для какого датчика надо производить сравнение,; присваивается значение переменной FRFORERR,

; А ЗАТЕМ уже происходит сравнение

; ===========================================================

CHECK_Tx: USING3

MOV R0,@0X50h

INC R0

MOV @0x50h,R0

CJNE R0,#1d,TO2

MOV R0,@67h

MOV R1,@68h

MOV R2,@69h

MOV R3,@70h

MOV FLFORERR,#1

JMP CHECK

TO2: CJNE R0,#1d,TO3

MOV R0,@71h

MOV R1,@72h

MOV R2,@73h

MOV R3,@74h

MOV FLFORERR,#2

JMP CHECK

TO3: CJNE R0,#1d,TO4

MOV R0,@75h

MOV R1,@76h

MOV R2,@77h

MOV R3,@78h

MOV FLFORERR,#3

JMP CHECK

TO4: CJNE R0,#1d,TO5

MOV R0,@79h

MOV R1,@80h

MOV R2,@81h

MOV R3,@82h

MOV FLFORERR,#4

JMP CHECK

TO5: MOV R0,@83h

MOV R1,@84h

MOV R2,@85h

MOV R3,@86h

CLR R0

MOV @0x50h,R0; ОЧИСТКА СЧЕТЧИКА ВЫЗОВОВ п/п ТК ЦИКЛ ИЗМЕРЕНИЯ - ; 5 ИМПУЛЬСОВ

MOV FLFORERR,#5

JMP CHECK

; R0. R1 - HIGH UST, R2. R3 - LOW UST FOR N D

CHECK: MOV R4,@0X40h

MOV R5,@0X41h; R4.45 - TX

; сравнение с нижней уставкой

MOV A,R2

SUBB A,R4

JC ERR_L

JNZ CHECK_H

MOV A,R3

SUBB A,R5

JC ERR_L

JMP CHECK_H

; сравнение с верхней уставкой

CHECK_H: MOV A,R2

SUBB A,R0

JNC NOTERR

JMP ERR_H

NOTERR: MOV A,R5

SUBB A,R1

JNC ENDCHECK

JMP ERR_H

ENDCHECK: USING0

RETI

; ===========================================================

; подпрограмма вычисления значения температуры Т

; входные параметры:

; R0,R1,R2,R3-адреса ячеек памяти данных, где храняться значения периодов Th; и Tl датчика

; выходные параметры:

; 0X40 - адрес ячейки, где храниться целое значение температуры (1 байт)

; 0X41 - адрес ячейки, где храниться десятичный остаток значения; температуры (1 байт)

; форма представления T: Х. У

; ===========================================================

MAKE_TEMP:

; перезапись адресов из банка 0 в банк 1

MOV A,R0

MOV B,R1

USING 1

MOV R3,@A

MOV R4,@B

USION 0

MOV A,R2

MOV B,R3

USING 1

; - ---------------------------------------------

MOV R5,@A

MOV R6,@B

; перевод Th из W в FP

MOV R3,@R0

MOV R4,@R1

LCALL W_TO_FP

MOV @0x45h,R2

MOV @0x46h,R3

MOV @0x47h,R4

; перевод Tl из W в FP

MOV R3,R5

MOV R4,R6

LCALL W_TO_FP

; - ---------------------------------------------

; деление Th на Tl

; загрузка делителя (Tl)

MOV R6,R3

MOV R7,R4

; загрузка делимого (Th)

MOV R2,@0x45h

MOV R3,@0x46h

MOV R4,@0x47h

LCALL DIV_FP; OUT - R2 R3 R4

; - ---------------------------------------------

; умножение Th/Tl на 751

; загрузка множителя Th/Tl

MOV R5,R2

MOV R6,R3

MOV R7,R4

; загрузка множителя 751

MOV R3,#00000010b

MOV R4,#11101111b

LCALL W_TO_FP; перевод в 754 из W в FP

LCALL MUL_FP; OUT - R2 R3 R4

; запись результата как вычитатель

MOV R5,R2

MOV R6,R3

MOV R7,R4

; вычитание

; загрузка вычитаемого 421

MOV R3,#00000001b

MOV R4,#10100101b

LCALL W_TO_FP; перевод 421 из W в FP

LCALL SUB_FP; OUT - R2 R3 R4 в формате FP

LCALL CREAT_MAIN_OST; вызов подпрограммы вычисления целой части; значения Тх и дес. остатка в формате W

RETI

; - ----------------------------------------------

; - ----------------------------------------------

; подпрограмма вычисления целой части и десятичного остатка Tx из FP в W

; входные параметры:

; R2,R3,R4 - ЧИСЛО Tx В ФОРМАТЕ FP

; выходные параметры:

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

; 0x41 - адрес ячейки где хранится десятичный остаток

; выходные параметры передаются в формате W

; - ---------------------------------------------

; создание делителя

CREAT_MAINOST:

MOV R0,R2

MOV B,#10; ПРОМЕЖУТОЧНЫЙ ДЕЛИТЕЛЬ

MOV A,#1; ОСНОВНОЙ ДЕЛИТЕЛЬ

LOOP1: MUL AB

DJNZ R0,LOOP1

MOV R6,#0

MOV R7,A

MOV R5,#1

LCALL DIV8; OUT - R5, R3 R4

MOV @0x40,R5

MOV R0,#5; СЧЕТЧИК

LOOP2: MOV R1,R5

MOV R6,#0

MOV R7,#10

MOV A,R3

MOV R5,R4

LOOP3: MOV R3,A

MOV R4,R5

MOV R5,#1

LCALL DIV8

CJNE R5,#0,LOOP2

DJNZ R0,LOOP3

MOV @0x41,R1

RETI

; =====================================================

; подпрограмма обработки прерывания порта Р1

; определяет какая кнопка нажата и в зависимости от этого, согласно алгоритму,

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

; если дважды нажата запятая

; =====================================================

PORT_PRER:

USING 2

MOV FLAG1,#0d

MOV FLAG2,#0,d

; начало сканирования клавиатуры через порт Р1

MOV P1,#01110000b

MOV R2,P1

; проверка нажата ли кнопка TEMP

CJNE R2,#01110001b,NOTEMP

; кнопка TEMP нажата, проверка какая кнопка (номер датчика) нажата

; в соответствии с этим запись в регистры r0-r3 данных об Nh и Nl чтобы

; потом вызвать П/П вычисления Tx

D1: MOV R2,P1

CJNE R2,#01111000,NO1

MOV R0,@0X47h; adress high TH byte D1

MOV R1,@0X48h; adress high TL byte D1

MOV R2,@0X49h; adress low TH byte D1

MOV R3,@0X50h; adress low TL byte D1

MOV FLAG1,#1d

JMP WENT1

NO1: CJNE R2,#01110100,NO2

MOV R0,@0X51h; adress high TH byte D2

MOV R1,@0X52h; adress high TL byte D2

MOV R2,@0X53h; adress low TH byte D2

MOV R3,@0X54h; adress low TL byte D2

MOV FLAG1,#2d

JMP WENT1

NO2: CJNE R2,#01110010,NO3

MOV R0,@0X55h; adress high TH byte D3

MOV R1,@0X56h; adress high TL byte D3

MOV R2,@0X57h; adress low TH byte D3

MOV R3,@0X58h; adress low TL byte D3

MOV FLAG1,#3d

JMP WENT1

NO3CJNE R2,#10111000,NO4

MOV R0,@0X59h; adress high TH byte D4

MOV R1,@0X60h; adress high TL byte D4

MOV R2,@0X61h; adress low TH byte D4

MOV R3,@0X62h; adress low TL byte D4

MOV FLAG1,#4d

NO4: CJNE R2,#10110100,NO5

MOV R0,@0X63h; adress high TH byte D5

MOV R1,@0X64h; adress high TL byte D5

MOV R2,@0X65h; adress low TH byte D5

MOV R3,@0X66h; adress low TL byte D5

MOV FLAG1,#5d

JMP WENT1

NO5: JMP D1

; ожидание пока будет нажата кнопка ENTER

WENT1: MOV P1,#00010000b

MOV R2,P1

CJNE R2,#00010001b,WENT1

MOV FLAG1,#0d

CLR KBF

JMP ENDSKAN

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

NOTEMP: CLR R0

MOV R3,#3d

FROMR3: CLR KBF

MOV P1,#10110000b

MOV R2,P1

CJNE R2,@10110001b,NOUST

; кнопка UST нажата, скан клавиатуры на прием первой цифры уставки

; уставка в формате ABC. D (3 цифры целого и 1 цифра остаток)

P1: MOV P1,#01110000b

CJNE P1,#01111000b,NE1

MOV R7,#1d

MOV P2,#00110001b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE1: CJNE P1,#01110100b,NE2

MOV R7,#2d

MOV P2,#00110010b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE2: CJNE P1,#01110010b,NE3

MOV R7,#3d

MOV P2,#00110011b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE3: MOV P1,#10110000b

CJNE P1,#10111000b,NE4

MOV R7,#4d

MOV P2,#00110100b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE4: CJNE P1,#10110100b,NE5

MOV R7,#5d

MOV P2,#00110101b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE5: CJNE P1,#10110010b,NE6

MOV R7,6d

MOV P2,#00110110b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE6: MOV P1,#11010000b

CJNE P1,#11011000b,NE7

MOV R7,#7d

MOV P2,#00110111b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE7: CJNE P1,#11010100b,NE8

MOV R7,#8d

MOV P2,#00111000b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE8: CJNE P1,#11010010,NE9

MOV R7,#9d

MOV P2,#00111001b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE9: MOV P1,#11100000b

CJNE P1,#11101000b,NE0

MOV R7,#0d

MOV P2,#00110000b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NE0: CJNE P1,#11100100b,NEP

MOV R4,#FFh; ФЛАГ ЗАПЯТОЙ

MOV P2,#00101110b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL

NEP: JMP P1

POPAL: DEC R3

; первая цифра уставки введена, ожидание ввода 2-й цифры целого уставки

; или нажатия кнопки ENT.

; если еще одна цифра уставки введена то ожидание ввода 3-й цифры целого

; или кнопки ENT.

; нажатие запятой фиксируется флагом-регистром R4, если запятая нажата то

; ввод цифры определяется как десятичный остаток уставки и далее окончание; приема значения уставки.

WAIT: MOV P1,#11100000b

MOV R2,P1

CJNE R2,#11100001b, WENT2

MOV A,FLAG2

JB F2E1

MOV FLAG2,#1b

F2E1: MOV FLAG2,#0b

JMP ENDUST

WENT2: MOV P1,#01110000b

CJNE P1,#01111000b,NEE1

MOV R5,#1d

MOV P2,#00110001b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE1: CJNE P1,#01110100b,NEE2

MOV R5,#2d

MOV P2,#00110010b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE2: CJNE P1,#01110010b,NEE3

MOV R5,#3d

MOV P2,#00110011b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE3: MOV P1,#10110000b

CJNE P1,#10111000b,NEE4

MOV R5,#4d

MOV P2,#00110100b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE4: CJNE P1,#10110100b,NEE5

MOV R5,#5d

MOV P2,#00110101b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE5: CJNE P1,#10110010b,NEE6

MOV R5,6d

MOV P2,#00110110b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE6: MOV P1,#11010000b

CJNE P1,#11011000b,NEE7

MOV R5,#7d

MOV P2,#00110111b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE7: CJNE P1,#11010100b,NEE8

MOV R5,#8d

MOV P2,#00111000b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE8: CJNE P1,#11010010,NEE9

MOV R5,#9d

MOV P2,#00111001b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE9: MOV P1,#11100000b

CJNE P1,#11101000b,NEE0

MOV R5,#0d

MOV P2,#00110000b

SETB P0.7

CLR P0.7

MOV P2,#11111111b

JMP POPAL2

NEE0: CJNE P1,#11100100b,NEEP

LCALL ERROR_DPOINR; вызов П/П вывода ошибки на; дисплей (дважды нажата кнопка запятой)

JMP ENDSKAN

NNEP: CLR KBF

JMP WAIT

POPAL2: CJNE R4,#FFh,NOTP

MOV R6,R5

WAIT2: MOV P1,#00010000b

MOV R2,P1

CJNE R2,#00010001b,WAIT2

MOV A,FLAG2

JB F2E1_2

MOV FLAG2,#1b

F2E1_2: MOV FLAG2,#0,b

JMP ENDUST

; переход по метке означает что введена вторая/третья цифра целого числа

; уставки и надо сформировать новое число, т.е. было A, СТАЛО AB (или было AB; СТАЛО ABC)

NOTP: MOV A,R7

MOV B,#00001010b

MUL AB

MOV B,R6

ADD AB

MOV R7,A

DEC R0

DJNZ R0,FROMR3


Подобные документы

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

    курсовая работа [1,9 M], добавлен 21.11.2013

  • Разработка устройства, подключаемого к стандартному ISA интерфейсу системной магистрали IBM-совместимого компьютера: адаптера одноканального устройства контроля температуры, который является устройством сопряжения между датчиком температуры и компьютером.

    курсовая работа [1,1 M], добавлен 05.12.2009

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

    курсовая работа [2,5 M], добавлен 30.05.2012

  • Назначение и область применения устройства - выявление отклонений от нужной температуры и предотвращение ее критического изменения. Структурная схема регулятора температуры. Расчет узлов и блоков. Выбор элементной базы. Разработка принципиальной схемы.

    курсовая работа [1,3 M], добавлен 31.03.2013

  • Проектирование устройства, измеряющего температуру в помещении. Выбор датчика температуры, микроконтроллера и отладочной платы. Изучение работы встроенного датчика температуры. Разработка программного обеспечения. Функциональная организация программы.

    курсовая работа [2,0 M], добавлен 26.12.2013

  • Установка автоматически работающего блокиратора на двери автомобиля с помощью микроконтроллера. Выбор микропроцессорного элемента. Составление электрической схемы и спецификации элементов. Алгоритмическая схема управления и программное обеспечение.

    курсовая работа [955,5 K], добавлен 06.10.2014

  • Назначение и принципы построения диспетчерского контроля. Построение и расчёт принципиальной схемы устройства. Патентный поиск и анализ существующих систем. Расчёт частот для использования микроконтроллера. Описание альтернативной модели устройства.

    дипломная работа [4,8 M], добавлен 15.03.2013

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

    курсовая работа [436,2 K], добавлен 14.07.2009

  • Особенности устройства измерения температуры, выполненного на микроконтроллере ATmega8515L и датчике температуры DS18S20. Определение требований к печатной плате. Требования к формовке выводов, лужению и пайке. Расчет конструктивных параметров.

    курсовая работа [433,2 K], добавлен 25.04.2015

  • Разработка схемы стабилизации температурных режимов при производстве фторидных оптических волокон, схемы системы управления координатным столом. Принцип работы схемы системы управления стабилизации температуры. Выбор элементов схемы и технических средств.

    контрольная работа [2,4 M], добавлен 08.06.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.