Например, при сравнении на максимальное значение, если знаки сохраненного и измеренного значения — положительны, а измеренное значение больше сохраненного, то оно переписывается в регистр максимального значения. При сравнении на минимальное значение и аналогичной разности измеренного и сохраненного значений запись в регистры минимума выполняется, если оба знака — отрицательные. Если при сравнении на максимум сохраненный знак — положительный, а измеренный — отрицательный, то явно измеренное значение температуры будет меньше сохраненного значения, поэтому нет смысла его сохранять. Ситуация с частой сменой знаков измеренной и сохраненной температурами возможна при измерении температуры вблизи нуля.
Таблица 1. Сопоставление результатов сравнения и действий
Сохр. Мах | + | + | - | - |
Измеренное | + | - | + | - |
Действие | И>С =3 | нет записи | запись | и<с = з |
Сохр. Min | + | + | - | - |
Измеренное | + | - | + | - |
Действие | и <с = з | запись | нет записи | И>С =3 |
Знаки сохраненных экстремальных температур сохраняются с помощью флагов регистра, но использовать их для сравнения неудобно. По этой причине для сравнения используются значения знаков для вывода на индикацию (в кодировке ASCII минус 0x30). Так, например, знак "-" обозначен числом 253, а "+" — 251. При таком обозначении легко определить равенство или неравенство знаков и, воспользовавшись табл. 1, выполнить соответствующие действия.
Если термодатчик отключен от микроконтроллера, то на индикаторе высветится температура -00,0, а поскольку такой температуры не существует, то легко определить неисправность термодатчика.
Если при проверке кнопок окажется, что установлен режим просмотра, то вначале анализируется установленная дата. Если установлена текущая (сегодняшняя) дата, то в регистры индикации считываются текущие экстремальные значения, а если установлено прошедшее число, то данные считываются из памяти EEPROM.
При выборке из памяти значения всех 16 регистров считываются в регистры записи/считывания, а выделенный знак записывается в регистры индикации. Регистры записи/считывания являются промежуточными между регистрами текущих и экстремальных значений при записи в регистры индикации.
Для записи и считывания в энергонезависимую память экстремальных значений одного дня требуется 16 регистров. При объеме памяти 128x8 можно сохранить данные за 8 дней (128/16 = 8). Запись для одного термодатчика выполняется в следующей последовательности.
1. Часы максимума.
2. Минуты максимума.
3. Градусы максимума.
4. Десятые доли градусов максимума.
5. Часы минимума.
6. Минуты минимума.
7. Градусы минимума.
8. Десятые доли градусов минимума.
Следующие восемь регистров аналогично заполняются данными для второго термодатчика. Знаки температур дописываются в седьмой разряд регистров градусов. При этом единица соответствует знаку.
Как видно из формата записи, для уменьшения числа регистров записи число и месяц в память не записываются. При нажатии кнопки "Просмотр" на единицу уменьшается число в регистре индикации (а при необходимости — и месяц), и на 16 уменьшается адрес считывания из памяти. Если весь объем памяти просмотрен, то просмотр начинается с адреса вчерашнего дня. Если устройство не выключается, то значения дат просмотра отсчитываются от текущей даты.
При выключении устройства энергонезависимая память сохранит записанные значения без привязки к дате. При отключении питания счетчики записи/считывания обнуляются, и считывание начнется с предыдущего адреса, т. е. 112 (128 -16=112), а дата не будет соответствовать дате записи. Например, если записаны данные одного вчерашнего числа, и выключалось напряжение питания, то эти данные будут считаны как данные недельной давности. Если память еще не заполнена, то на индикатор выводятся все нули (кроме даты, конечно).
В режиме установки считывание из памяти не выполняется. В режимах установки и просмотра на индикатор выводится мигающий курсор. Для того чтобы мигание курсора было хорошо различимо, оно происходит с периодом в две секунды. В первую секунду на индикатор выводятся значения регистров, а во вторую — курсор в выбранном разряде. Если при инициализации ЖКИ разрешить мигание курсора, то вместе с курсором включатся все сегменты выбранного разряда, что не очень удобно при установке.
Как и в текущем режиме, в режимах просмотра и установки перед выводом на индикацию необходимые значения построчно перекодируются в двоично-десятичный код и переписываются в регистры индикации. Запись в регистры экстремальных значений происходит, когда измеренное значение превосходит сохраненное или когда они равны, поэтому, анализируя записанные в память значения, необходимо помнить, что в память записано время последней зафиксированной температуры.
5. Ассемблирование
Для ассемблирования спользуется макpоассемблеp MPASM, он содеpжит все необходимые нам возможности. MPASM входит в пакет программ Microchip MPLAB фирмы Microchip Technology.
В pезультате pаботы ассемблеpа создаются файлы со следующими pасшиpениями:
* HEX - объектный файл
* LST - файл листинга
* ERR - файл ошибок и пpедупpеждений
* COD
Объектный файл создается в 16-pичном фоpмате и содеpжит код, котоpый должен быть записан в микpосхему. Файл листинга содеpжит полный листинг пpогpаммы вместе с загpузочным кодом. В файл ошибок и пpедупpеждений записываются все ошибки и пpедупpеждения, возникающие в пpоцессе ассемблиpования. Они также пpисутствуют и в файле листинга. После обpаботки нашей пpогpаммы ассемблеp должен был выдать сообщение "Assembly Successful", означающее, что ошибок обнаpужено не было. Файл ошибок не должен был создаться.
Листинг программы и объектный файл приведены в Приложении А.
6. Описание функциональных узлов МПС и алгоритма их
взаимодействия
В проектируемом устройстве можно выделить следующие функциональные блоки: панель управления, содержащая пять кнопок; жидкокристаллический индикатор, на котором воспроизводится информация (дата, время, температура); термодатчики, благолдаря которым производится измерение температуры; стабилизатор напряжения, служит для подачи стабильного напряжения на МК; источник питания, состоящий из внутреннего источника и внешнего. Функциональная схема электронного термометра приведена на рис. 4.
Рис. 4. Функциональная схема электронного термометра
7. Описание выбора элементной базы и работы принципиальной
схемы
Принципиальная схема устройства показана на рис. 5. Резистором R5 регулируют контрастность изображения на индикаторе. Элементы резервного питания можно составить из трех элементов типа AAA. Средний потребляемый ток от элементов питания в текущем режиме не превышает 3 мА.
Принципиальная схема электронного термометра выполнена в САПР AccelEda (Рис. 5).
Рис.5. Принципиальная схема электронного термометра в AccelEDA.
Принципиальная схема электронного термометра приведена в Приложении Б.
Выбор элементной базы основан на выборе элементов согласующихся с микроконтроллером. Основными элементами схемы являются термодатчики, которые хорошо согласуются с микроконтроллером. Термодатчики DS1820 имеют следующие технические характеристики:
• индивидуальный 64-битный идентификационный номер;
• напряжение питания от +3 до +5,5 В;
• измеряемая температура от -55 до +125°С;
• погрешность измерения температуры в диапазоне -Ю...+85°С не более 0,5°С;
• в остальном диапазоне температур погрешность измерения не превышает 2°С;
• информация о температуре выдается 9-битным кодом;