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

АННОТАЦИЯ

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

СОДЕРЖАНИЕ

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

Обзор существующих решений …………………………………………… 6

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

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

      Разработка функциональной схемы …………………………………9

      Разработка принципиальной схемы…………………………………11

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

2.1 Разработка структуры программного обеспечения изделия ………..12

2.2 Разработка алгоритма

одной из составных частей программного обеспечения …………….14.

2.3 Программа ……………………………………………………………....16

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

Список использованной литературы ………………………………………..20

Приложение 1 …………………………………………………………………21

Приложение 2 (перечень элементов)……………………………………..…23

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Разработка медицинского цифрового термометра на базе контроллера AVR AТmega103

    Тип датчика температуры (термометр сопротивления 100П)

- диапазон +35 С° до +50 С°.

- точность ±0,1

    Связь с ПК через RS485

    Дисплей ЖКИ

    Память на 5 измерений

    Преобразователь напряжения питания 10-30 В.

ВВЕДЕНИЕ

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

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

Однокристальная микро-ЭВМ (микроконтроллер) представляет собой, построенную вокруг микропроцессора вычислительную систему, которая выполнена на одном кристалле вместе с микропроцессором.

В данной работе используется микроконтроллер AТmega103 фирмы Atmel. Микросхема выполнена в 40-выводном корпусе, что дает безусловный выигрыш. Таким образом, микроконтроллер имеет (4 внешних порта РА ,РВ,РС и РD). Прибор обеспечивает производительность, приближающуюся к 1 МГц. Архитектура эффективно поддерживает как языки высокого уровня, так и программы на языке ассемблер. Микроконтроллер AТmega103 содержит: 4Кбайта загружаемого ПЗУ, 256 байтов СОЗУ дает возможность наращивать память данных, программируемый последовательный UART, программируемый сторожевой таймер и многое другое.

ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ

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

Стандартное решение такой конструкторской задачи - построение схемы, выполняющей следующую последовательность действий:

    преобразование сопротивления в напряжение при помощи источника тока;

    преобразование напряжения в код при помощи встроенного в контроллер аналогово-цифрового преобразователя (АЦП);

    подача полученного кода в микроконтроллер (МК), где полученная информация обрабатывается и передается дальше.

Сегодня некоторые зарубежные фирмы выпускают АЦП, выполняющие описанную выше цепочку преобразований. Например, фирма Analog Devices производит аналого-цифровые преобразователи AD7710, AD7711 и AD7713 со встроенными операционным усилителем (с программируемым коэффициентом усиления), источниками тока и последовательным интерфейсом. Эти микросхемы адаптированы для применения в измерительных системах (где датчиками могут служить термометр сопротивления, термопара или тензорезистивный мост), и датчики подключаются непосредственно к АЦП при минимуме дополнительных компонентов. Применять такие АЦП в небольших приборах дорого (цена специализированных АЦП превышает стоимость всех остальных компонентов, вместе взятых), а использование обычных АЦП значительно увеличивает число компонентов в схеме (и отрицательно сказывается на стоимости, габаритах и надежности прибора).

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

Рассмотрим одну из схем со средними характеристиками точности измерения. Упрощенная структурная схема такого измерителя сопротивления представлена на рис. 1, а временные диаграммы его работы на рис. 2.



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


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

Перед началом измерения сопротивления RX образцовый конденсатор C контактами реле К>1> подключается к источнику U>0> и полностью заряжается до этого напряжения. Затем управляющее устройство переключает контакты реле К>1>, и конденсатор С начинает разряжаться через резистор RX. Одновременно с началом разряда (момент t>0>) управляющее устройство выдает импульс, которым триггер переводится в состояние 1.

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

В момент t>1> напряжение U>1> на конденсаторе станет равным напряжению U2, сравнивающее устройство выдаст импульс, который вернет триггер в состояние 0, и счет импульсов прекратится. За время δt = t>1> - t>0> счетчик подсчитывает m импульсов, следовавших с периодом TK. Так как δt = R>X> x C = m x T>K> (при U>1> = U>2>), то измеряемое сопротивление будет вычисляться по формуле:

R>X> = m x T>K>/C = k>R> x m.

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

Появление на рынке электронных компонентов недорогих микроконтроллеров (МК) со встроенным аналоговым компаратором позволило решить поставленную задачу, минимизировав описанную схему измерения.

После анализа существующих микроконтроллеров (имеющих аналоговый компаратор) была выбрана серия AVR, к которой относятся AT89C2313 и AT89C8515. Микросхемы данной серии имеют следующие особенности:

    достаточно высокую производительность (как показали расчеты, МК типа AT89C1051, AT89C2051 и PIC16CE625 для предложенной схемы измерения не подходят из-за низкой производительности, а высокая частота МК типа SX18AC не позволяет увеличить разрядность схемы измерения, т.к. на высокой частоте проявляется влияние аналоговых параметров схемы);

    асинхронный последовательный порт UART (в SX18AC и PIC16CE625 его нет);

    сторожевой таймер, что особенно важно для автономных приборов;

    электрически стираемая перезаписываемая память данных EEPROM для хранения калибровочной характеристики и различных коэффициентов (отсутствует в SX18AC);

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

Схема цифрового измерителя температуры (рис. 3) разработана на основе описанной выше схемы измерения (рис. 1) с применением МК серии AVR. Отличие от оригинала в том, что параллельно цепи разряда конденсатора через измеряемое сопротивление RX добавлена цепь разряда на образцовое сопротивление RО. Сравнение происходит в каждом такте измерения. Это позволяет исключить влияние других параметров схемы (например, стабильности характеристик конденсатора) на точность измерения. Применение в схеме электронных ключей с низким сопротивлением в открытом состоянии (например, полевых транзисторов) позволило уменьшить нижний порог измерения сопротивления почти до нуля.




Рис. 3. Структурная схема измерителя температуры на МК типа AT90SXXXX

Для сравнения со схемой измерения на рис. 1 рассмотрим принцип работы полученной схемы цифрового измерителя температуры (рис. 3), временная диаграмма для которого совпадает с диаграммой, приведенной на рис. 2. Перед началом измерения ключевые элементы К1 и К2 находятся в разомкнутом состоянии. Под управлением программы МК (в дальнейшем МК) происходит заряд конденсатора C через резистор R1. Когда напряжение достигает уровня UО, МК включает К2, и начинается разряд конденсатора C через образцовый резистор RО.

Одновременно с началом разряда МК начинает отсчет интервала времени δt = t1 - t0 (рис. 2). В момент времени t2 напряжение U1 на конденсаторе C сравнивается с напряжением U2, и МК заканчивает отсчет времени. Этот процесс повторяется с измеряемым резистором RX. После того, как получены два значения интервалов времени (DtO для образцового резистора RO и DtX для измеряемого резистора RX), величина измеряемого резистора RX МК вычисляется по следующей формуле:

R>X> = R>0> x δt>X>/ δt>O>

где R>X> - измеряемое сопротивление;
R>O> - образцовое сопротивление;
δt>X> - интервал времени для измеряемого резистора R>X>;
δt>O> - интервал времени для образцового резистора R>O>.

РАЗРАБОТКА СХЕМЫ

1.1 РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ

Согласно заданию схема должна содержать следующие блоки:

    Стабилизатор напряжения (необходим для преобразования напряжения 10-30В, в 5В )

    Микроконтроллер (служит для управления всеми блоками данной схемы)

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

    Источник тока (необходим для измерения температуры, так как на термометр сопротивления необходимо подавать постоянный ток)

    Источник опорного напряжения (для создания опорного напряжения в АЦП)

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

    Дисплей (предназначен для отображения измеряемых данных)

    Клавиатуру ( по нажатию какой либо кнопки мы можем измерять температуру или просмотреть уже измеренную)

    Супервизор напряжения (вырабатывает общий сигнал сброса)

На рис.4. представлена структурная схема данного устройства.

Рис. 4.

1.2 РАЗРАБОТКА ФУНКЦИАНАЛЬНОЙ СХЕМЫ

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

1) Стабилизатор напряжения. На вход данной микросхемы подается напряжение 10-30В с выхода получаем постоянное напряжение 5В. Напряжение 5в необходимо для питания микросхем.

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

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

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

    Источник опорного напряжения. На вход земля и питание, с выхода получаем постоянное напряжение 2,5В. Опорное напряжение для встроенного АЦП.

    Последовательный интерфейс. Он управляется от микроконтроллера, т.е. на его входы кроме питания и земли, подаются сигналы (RE,R0,DE,DO) по которым происходит считывание или запись данных в компьютер по последовательному порту.

    Клавиатура. С выхода идет код в микроконтроллер, который там обрабатывается и по нему выполняется какая либо операция, на вход подается земля.

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

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

Разрисовка структурной схемы представлена на рис.5.

10–30В


Блок

питания

Супервизор

напряжения

Дисплей

RESET

Vcc

D0-D7


GND

GND

E

R/W

8


RS


GND


МК

Датчик

температуры

AIN1

AIN1

Vcc



Последовательный интерфейс для связи с ПК

R2

A

AVCC

Vcc

R0


Источник

тока

B

RS

RE

DE


GND

GND

C2

AGND


АREF

7


GND


Клавиатура

GND


Ист. опор. напряжения

Vcc


GND


Рис.5.

1.3 РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ

Согласно заданию требуется разработать цифровой медицинский термометр на базе контролера AVR. Я взял микроконтроллер, потому что он имеет достаточное число выводов, напряжение питания от 2,7 до 6 В, есть программируемый полный дуплексный UART (так как мне необходимо организовать последовательную связь с компьютером). Еще в нем имеется сторожевой таймер, внутренняя память и в данном микроконтроллере имеется возможность применить языки высокого уровня для его программирования. Все остальные характеристики приведены в приложении 1.

Супервизор напряжения: я выбрал микросхему mcp100 так как она обладает следующими характеристиками:

    напряжение питания до 5В,

    высокий и низкий уровень сигнала Reset,

    время сигнала Reset 350 мС, потребляемый ток 45мкА,

    температурный диапазон от –40до +85 гр.С

По характеристикам эта схема подходит для моего устройства.

В задании оговорено, что нужно для связи с компьютером использовать интерфейс RS485. Мною была выбрана микросхема МАХ481, у нее напряжение питания тоже 5 В.

Я использовал датчик температуры 100П

Мне необходим жидко кристаллический индикатор со следующими характеристиками

    напряжение питания 5В

    двух строчечный

    со встроенным контроллером, русским алфавитом и наиболее дешевый

Данными свойствами обладает модуль PG1602.

В задании сказано, что диапазон измеряемой температуры от 25 С0 до + 50 С0

и учитывая точность измерения 0,1, действие различных шумов получаем 500 отчетов. Таким образом встроенное 10 разрядное АЦП микроконтроллера AТmega103. В качестве источника опорного напряжения для встроенного АЦП была взята микросхема AD680.

Так как нам необходимо обеспечить 500 отчетов, то через термометр сопротивления должен протекать постоянный ток 20 мА. Следовательно, нам нужен источник постоянного тока. В данной работе источник постоянного тока выполнен по стандартной схеме с использование микросхемы AD680 и постоянного резистора R1= 70 Ом. Расчет резистора был произведен по закону Ома.

Для обеспечения питания микросхем используем стабилизатор напряжения DA37805. На данную микросхему подаем напряжение в диапазоне 10-30В, а с выхода получаем 5В. Здесь диод VD1(КЦ105) используется для того, чтобы не перепутать + и -. Электролитические конденсаторы C2,C4 (К56-100 мкФ) используется для отсечения низкочастотной помехи, а для отсечения высокочастотной помехи параллельно ставим конденсаторы С1,С3 (КМ4-0,1 мкФ). Для питания встроенного АЦП воспользуемся стандартной схемой подключения выводов где R2=100ОМ и С7=10нФ.

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

2.1 РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

На рис.6 представлена структура программного обеспечения

Инициализация

(Контроллера, АЦП, ЖКИ)


Flagvyvod=1


Сброс флага


Выдача на дисплей начального приглашения


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



Просмотр флагов


USR,RxC=1

Возврат и сброс флага

Flagdan=1 и flagpr=1

Flagsbr=1

Сброс флагов, если пустой буфер


Сброс флага

Сброс флага


Подпрограмма

обработки сканкода

Flagklav=1


Подпрограмма стирания данных

Подпрограмма приема данных с комп.

Подпрограмма

выдачи данных на комп.


Программа

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

Устанавливаем

Flagklav=1

Сброс флага

Flagszap=1


Подпрограмма

записи данных


Рис.6.

В блоке инициализация делаем следующие действия. Для контроллера настройка портов, программирование таймеров, настройка UART, устанавливаем стек и т. д. Для АЦП устанавливаем частоту опроса, режим 16 бит, для ЖКИ устанавливаем разрядность шины данных=8,количество строк =2, шрифт 5х7 точек, направление сдвига курсор в право, запрещаем сдвиг дисплея вместе со сдвигом курсора и т.д.

В блоке “Выдача на дисплей начального приглашения” выдаем на дисплей следующее сообщение «Кнопка1-режим ввода, кнопка2 – режим вывода, кнопки 3 - 7 – номера ячеек памяти, кнопка 8 - очистка памяти».

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

Программа опроса клавиатуры: постоянно опрашивает клавиатуру, и записывает ее состояние в заданный регистр1, как только в этом регистре1 появляется указанное число, она устанавливает Flagklav=1.

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

Подпрограмма выдачи на дисплей результата измерения активизируется когда установлен флаг Flagvyvod=1. В зависимости от содержания регистра1, выводим данные из той или иной ячейки памяти.

Подпрограмма записи данных активизируется когда установлен флаг Flagszap=1, и в зависимости от содержания регистра1, записываем данные в ту или иную ячейку памяти.

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

Подпрограмма выдачи данных на компьютер начинает выполнятся когда Flagdan=1 и flagpr=1, далее выполняется выдача данных на компьютер и сброс флагов происходит в том случае, если буфер с данными пуст.

2.2 РАЗРАБОТКА АЛГОРИТМА ОДНОГО ИЗ СОСТАВНЫХ ЧАСТЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Алгоритм инициализации ЖКИ представлен на рис.7.

Сделать задержку 15 мСек


Записать в регистр ЖКИ команду 0000110000


Сделать задержку 4мСек и более


Записать в регистр ЖКИ команду 0000110000


Сделать задержку 100 мкСек


Записать в регистр ЖКИ команду 0000110000


Записать в регистр ЖКИ последовательно следующие команды

0000111000 ;устанавливаем разрядность шины данных=8,

количество строк =2, шрифт 5х7 точек

0000001000 ; включить дисплей, зажечь курсор

0000000001 ; очистить дисплей и установить курсор в

нулевую позицию

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

в право, запретить сдвиг дисплея вместе со

сдвигом курсора


Рис.7.

Программа инициализации ЖКИ составленная по данному алгоритму и написанная на языке Ассемблер будет выглядеть так:

initlcd:

rcall del

ldi r25,30h

rcall icom

rcall del

ldi r25,30h

rcall icom

rcall del

ldi r25,30h

rcall icom

ldi r25,38h ; устанавливаем разрядность шины данных=8,

количество строк =2, шрифт 5х7 точек

rcall icom

ldi r25,08h ; включить дисплей, зажечь курсор

rcall icom

ldi r25,01h ; очистить дисплей и установить курсор в нулевую позицию

rcall icom

ldi r25,06h; устанавливаем направление сдвига курсор в право, запретить

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

rcall icom

ret

del:

ldi r17,150 ;задержка ~15 ms при кварце 4 МГц

l: ldi r18,200 ;

l1: dec r18 ;

brne l1 ;

dec r17 ;

brne l ;

ret

icom:

in r0,portA

sbi r0,2 ; установит RS в 1

out portA,r0

in r0,portA

сbi r0,1 ; установит W/R в 0

out portA,r0

in r0,portA

sbi r0,0 ; установит Е в 1

out portC,r0

out portB,r25 ;записать в ЖКИ команду из регистра r25

in r0,portA

cbi r0,0 ;сбросить Е в 0

out portA,r0

in r0,portA

sbi r0,1 ; установит W/R в 1

out portA,r0

ret

2.3 НАПИСАНИЕ ПРОГРАММЫ

Текст программы составленный по структурной схеме на рис.6 приведен ниже

.include "Atmega103.inc"

.def flag=r1

.def flagszap =0

.def flagklav =1

.def flagsbr =2

.def flagvyvod =3

.def flagdan =4

.def flagpr =5

.def tmp=r20

.cseg

.org 0H

rjmp main

main:

rcall init ; инициализация контроллера

rcall initlcd ; инициализация ЖКИ

rcall priglashenie ;программа выдачи начального приглашения

m1:

in r30,PinC ; программа опроса клавиатуры и флагов

ldi r31,FEh

cp r30,r31 ;если равно, то переходим на подпрограмму ввода

rcall vvod

ldi r31,FDh

cp r30,r31 ;если равно, то переходим на подпрограмму вывода

rcall vyvod

ldi r31,7Fh

cp r30,r31 ;если равно, то переходим на подпрограмму сброса

rcall sbros

sbrc USR,RxC ; проверяем если бит USR,RxC=1, то переходим на

подпрограмму приема данных от компьютера, если не

равен то пропускаем следующую команду

rcall priem ; подпрограмма приема данных, после своего окончания

работы она скидывает флаг USR,RxC

sbrs flagdan ; проверяем если 0, то переход на m2, если нет, то

пропускаем следующую команду

rjmp m2

sbrs flagpr

rjmp m2

rcall outdan ; подпрограмма выдачи данных на компьютер, после

выполнения выдачи данных сбрасывает флаг данных и

приемника

m2:

rjmp m1

init:

ldi r31,ramend ; указываем стек

out SPL,r31

ldi r31,ffh ; порт B настроить на вывод

out ddrb,r31

ldi r31, 00h ; Port С to ввод

out DDRС, r31

ldi r31,FFh ; подключаем резисторы

out PortС, r31

ldi tmp,00011101 ; инициализация UART

out UCR,tmp ;
ldi tmp,25 ;9600 бит/сек при fclk=4МГц

out UBBR,tmp ;

;инициализация встроенного АЦП

set ADCSR.ADEN ;разрешаем работу АЦП

set ADCSR.ADFR ;устанавливаем режим циклического преобразования

ldi ADPS,05H ;устанавливаем тактовую частоту 125 KHz при

;внешнем кварце 4MHz

ret

icom:

in r0,portA

sbi r0,2 ; установит RS в 1

out portA,r0

in r0,portA

сbi r0,1 ; установит W/R в 0

out portA,r0

in r0,portA

sbi r0,0 ; установит Е в 1

out portC,r0

out portB,r25 ;записать в ЖКИ команду из регистра r25

in r0,portA

cbi r0,0 ;сбросить Е в 0

out portA,r0

in r0,portA

sbi r0,1 ; установит W/R в 1

out portA,r0

ret

initlcd:

rcall del

ldi r25,30h

rcall icom ; осуществляем запись команды в регистр ЖКИ

rcall del

ldi r25,30h

rcall icom ; осуществляем запись команды в регистр ЖКИ

rcall del

ldi r25,30h

rcall icom

ldi r25,38h ; устанавливаем разрядность шины данных=8,

количество строк =2, шрифт 5х7 точек

rcall icom ; осуществляем запись команды в регистр ЖКИ

ldi r25,08h ; включить дисплей, зажечь курсор

rcall icom

ldi r25,01h ; очистить дисплей и установить курсор в нулевую позицию

rcall icom

ldi r25,06h ;устанавливаем направление сдвига курсор в право,

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

rcall icom

ret

del:

ldi r17,150 ;задержка ~15 ms при кварце 4 МГц

l: ldi r18,200 ;

l1: dec r18 ;

brne l1 ;

dec r17 ;

brne l ;

ret

vvod:

rcall del ;делаем задержку

ldi r31,FEh ;проверяем есть ли действительно в регистре r30

указанные числа(таким образом устраняем дребезг

контактов)

cp r30,r31 ;если равно, то выполняем следующую программу

in r29,PinC ; программа опроса клавиатуры и флагов

ldi r31,FBh

cp r29,r31 ;если равно, то в r28 записываем адрес ячейки памяти

ldi r28,0060h

ldi r31,F7h

cp r29,r31

ldi r28,0070h

ldi r31,EFh

cp r29,r31

ldi r28,0080h

ldi r31,DFh

cp r29,r31

ldi r28,0090h

ldi r31,BFh

cp r29,r31

ldi r28,00A0h

rcall zapis

ret

vyvod:

rcall del ;делаем задержку

ldi r31,FDh ;проверяем есть ли действительно в регистре r30

указанные числа(таким образом устраняем дребезг

контактов)

cp r30,r31 ;если равно, то выполняем следующую программу

in r29,PinC ;программа опроса клавиатуры и флагов

ldi r31,FBh

cp r29,r31 ; если равно, то в r28 записываем адрес ячейки

ldi r28,0060h

ldi r31,F7h

cp r29,r31

ldi r28,0060h

ldi r31,ЕFh

cp r29,r31

ldi r28,0060h

ldi r31,DFh

cp r29,r31

ldi r28,0060h

ldi r31,BFh

cp r29,r31

ldi r28,0060h

RCALL VYVOD1

ret

zapis:

nop ;задержка

nop

nop

nop

MOV EEARH,00H ;старший байт адреса ячейки

MOV EEARL,R28 ;младший байт адреса ячейки

nop ;задержка

nop

nop

nop

MOV EEDR, ADCL ;ввод данных с регистра данных АЦП

SET EERC,2 ;разрешение записи

SET EERC,1 ;запись

RET

VYVOD1:

MOV R27,#00H

MOV EEARH,00H

MOV EEARL,R28

SET EERC,0 ;разрешение чтения

MOV R27,EEDR

Rcall VYVODZKI ;переход к процедуре вывода данных на ЖКИ

RET

ЗАКЛЮЧЕНИЕ

В данной курсовой работе был разработан цифровой медицинский термометр с памятью на 5 измерений. Здесь использовался датчик температуры 10П. Данная схема имеет возможность подключения и других датчиков температуры. Устройство построено на контроллере AVR (Atmega103).

В работе были учтены все требования. В частности нам нужно было измерять температуру с точностью 0,1, в связи с этим использовался внутренний аналого-цифровой преобразователь (10-ти разрядный).

СПИСОК ЛИТЕРАТУРЫ

    Геращенко О.А., Гордов А.Н., Лах В.И. и др. Температурные измерения: Справочник. Киев: Изд. "Наукова думка", 1984. 496 С.

    Бокуняев А.А., Борисов Н.М., Варламов Р.Г. и др. Справочная книга радиолюбителя-конструктора. Под ред. Чистякова Н.И. М.: Радио и связь, 1990. 624 С: ил.

    Современные микроконтроллеры: Архитектура, средства проектирования, примеры применения, ресурсы сети Интернет. "Телесистемы". Под. ред. Коршуна И.В.; Составление пер. с англ. и литературная обработка Горбунова Б.Б. М: Изд. "Аким", 1998. 272 С: ил.

    Лаптев В.В. Цифровой измеритель. Свидетельство на полезную модель №13698 от 09.11.1999 г.

    I-7013, I-7033. User manual. Copyright 1999. ICP DAS.

    ADAM-4013. User manual. Copyright 1994. Advantech.

    Все необходимое для автоматизации на базе PC: Каталог. Прософт. 1998 г.

ПРИЛОЖЕНИЕ 1

В данном приложении приведено описание микроконтроллера ATmega103

8-ми разрядный КМОП микроконтроллер с загружаемой Flash ПЗУ

    AVR RISC архитектура – архитектура высокой производительности и малого потребления

    120 команд, большинство которых выполняются за один машинный цикл

    4 Кбайта Flash ПЗУ программ, с возможностью внутрисистемного программирования и загрузки через SPI последовательный канал, 1000 циклов стирания/запись

    256 байт ЭСППЗУ данных, с возможностью внутри системной загрузки через SPI последовательный канал, 100000 циклов стирания/запись

    4 Кбайта встроенного RAM

    32*8 регистра общего назначения

    32 программируемых линий ввода/вывода

    16 – разрядный и 32 – разрядный формат команд

    Диапазон напряжений питания от 4 до 6 В

    Полностью статический прибор работает при тактовой частоте от 0 до 6 МГц

    Производительность до 6 MIPS при частоте 8МГц

    8 – разрядный и 16 – разрядный таймеры/счетчики с общим прескалером

    Сдвоенный ШИМ с 8,9 или 10 разрядным разрешением

    Программируцемые последовательные UART и SPI интерфейсы

    Два внешних и десять внутренних источников сигнала прерывания

    Программируемый сторожевой таймер с собственным встроенным генератором

    Встроенный аналоговый компаратор

    Режимы энергоснабжения: Idle, Power Save и Power Down

    Блокировка режима программирования

    Программная установка тактовой частоты

    Встроенная система реального времени с отдельным генератором

КМОП микроконтроллер ATmega103 реализован по AVR RISC архитектуре (Гарвардская архитектура с разделенной памятью и разделенными шинами для памяти программ и данных) и совместим по исходным кодам и тактированию с 8-разрядными микроконтроллерами семейства AVR (AT90SXXX). Выполняя команды за один тактовый цикл, прибор обеспечивает производительность, приближающуюся к 1 МГц. AVR ядро объединяет мощную систему команд с 32 8 разрядными регистрами общего назначения и конвейерного обращения к памяти программ. Шесть из 32 регистров могут использоваться как три 16 – разрядных регистра указателя при косвенной адресации пространства памяти. Выполнение относительных переходов и команд вызова реализуются с прямой адресацией всех 2К адресного пространства. Адреса периферийных функций содержатся в пространстве памяти ввода/вывода. Архитектура эффективно поддерживает как языки высокого уровня, так и программы на языках ассемблера.

Микроконтроллер ATmega103 содержит: 4Кбайта загружаемого ПЗУ(2К*16), 256 байтов СОЗУ и 256 байтов ЭСППЗУ, с возможностью наращивания памяти данных до 64К за счет внешних ИС СОЗУ, 32 линии ввода/вывода общего назначения, 8-ми разрядный таймер/счетчик и 16 разрядный таймер/счетчик с режимом захвата и сравнения, систему внутренних и внешних прерываний, программируемый последовательный UART, программируемый сторожевой таймер с внутренним генератором, последовательный порт с интерфейсом SPI для внутри системной загрузки и для связи с внешними устройствами. Программно управляются два режима энергоснабжения. В пассивном режиме ЦПУ останавливается, но СОЗУ, таймеры/счетчики, порт SPI, сторожевой таймер и система прерываний остаются активными. В стоповом режиме останавливается тактовый генератор и, следовательно останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса, но сохраняется содержимое регистров.

Встроенная загружаемая Flash память обеспечивает внутрисистемное программирование с использование интерфейса SPI или с использование стандартных программаторов энергонезависимой памяти.

Потребление прибора в активном режиме составляет 3,5 мА и в пассивном режиме 1мА. В стоповом режиме, при работающем сторожевом таймере, микроконтроллер потребляет 50 мкА.

Объединение на одном кристалле усовершенствованного 8-ми разрядного RISC ЦПУ с загружаемой Flash ПЗУ позволило фирме создать мощный микроконтроллер, обеспечивающий высокую гибкость и экономичность в использовании прибора в качестве встраиваемого контроллера.

Министерство образования Российской Федерации

Марийский государственный технический университет

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

Кафедра ИВС

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

термометра

Пояснительная записка к курсовой

работе по дисциплине

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

Разработал:

студент группы ВМ-42 Трохимец Г.М.

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

Консультировала: Мясников В.И.

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

Оценка:

Йошкар-Ола 2001г.

Поз.

обозначение

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

Примечание

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

С1,С3

Конденсатор КМ4 –0,1 мкФ ± 10% ОЖО.506.089 ТУ

2

С2,С4

Конденсатор КМ56 -100 мкФ ± 10% ОЖО.563.087 ТУ

2

С5,С6

Конденсатор КМ4-9пФ ± 10% ОЖО.506.089 ТУ

2

С7

Конденсатор КМ56 -100 нФ ± 10% ОЖО.563.082 ТУ

1

Микросхемы

DD1

Микросхема DA37805

1

DD2

Микросхема MCP100

1

DD3,DD4

Микросхема AD680

2

DD5

Микросхема ATmega 103

1

DD6

Микросхема МАХ481

1

Модули

DD7

Модуль PG1602

1

Кварцевый генератор

G1

Резонатор кварцевый РК 4МГц

1

Резисторы

R1

Резистор МЛТ-0,125 70Ом ± 5 % ОЖО.467.091 ТУ

1

R2

Резистор МЛТ-0,125 100Ом ± 5 % ОЖО.467.096 ТУ

1

R3

Резистор 100П ОЖО.490.093 ТУ

1

Ключи

SW1-SW8

П2К ОЖО.498.091 ТУ

8

Диоды полупроводниковые

VD1

КЦ 105 ГОСТ 14789 -89

1

КНФУ.ХХХХХХ.001 ПЭЗ

Изм.

Лист

докум.

Подпись

Дата

Разраб.

Трохимец

Медицинский цифровой измеритель температуры

Перечень элементов

Лит.

Лист

Листов

Провер.

Мясников

1

1

ВМ-42 МарГТУ

Н. Конт.

Утв.