_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Курсовые > Разработка медицинского цифрового термометра

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

Страница: 2/5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.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 представлена структура программного обеспечения

Рис.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.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.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