Автор работы: Пользователь скрыл имя, 08 Апреля 2014 в 12:27, курсовая работа
Различные выполняемые функции и сферы применения обусловили специализацию СБИС. По данному признаку достаточно условно их можно разделить на следующие классы:
СБИС с аппаратной реализацией алгоритмов обработки данных;
микропроцессоры универсальные;
микропроцессоры сигнальные;
микроконтроллеры, включая интерфейсные схемы для образования мультипроцессорных систем;
микросхемы памяти: статические и динамические;
программируемые логические интегральные схемы (ПЛИС).
ВВЕДЕНИЕ 2
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 5
1.1.Архитектура МК attiny13 6
1.2.Процессорное ядро МК attiny13 11
1.3.Способы адресации 15
1.4.Энергонезависимая память данных 15
1.5.Порты ввода/вывода 20
2.РАЗРАБОТКА МК УСТРОЙСТВА 22
2.1.Индикатор температуры тела 32
2.2. Принципиальная схема 33
3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МКУ 36
3.1.Интегрированная среда программирования 38
3.2.Программа на языке Ассемблера 42
Список используемой литературы 45
ЗАКЛЮЧЕНИЕ 50
В цифровой порт вывода можно записать два значения: логический "0" (низкий уровень) и логическую "1" (высокий уровень).
Но для начала надо сконфигурировать ножку микроконтроллера как порт вывода командой:
Config Port(Порт) = Output
Где "порт" необходимо указать имя
порта, например:
Config PORTB.2 = Output
Так мы сконфигурируем 7 ножку (PB2) микроконтроллера
Attiny13 как порт вывода.
Также мы можем, сконфигурировать целую группу портов A, B или C (и.д.). Обычно в одной группе портов, несколько портов ввода-вывода. Пример конфигурирования группы портов как порты вывода:
Config Port(Группа портов) = Output
Где "группа портов" необходимо указать
букву группы, например:
Config PORTB = Output
Так мы сконфигурируем группу портов B
как порты вывода.
Теперь, когда порт сконфигурирован как порт вывода, можно записать в него два значения (логический "0" и логическую "1"), например:
Port(Имя порта) = (Значение)
Где "Имя порта" необходимо указать
имя порта, а где "значение" 1 или 0,
например:
PortB.2 = 1
В группу портов можно записать значение
1 или 255, например:
PortB = 255
Устройство предназначено для оперативного контроля температуры тела человека, которое может быть полезно в случаях, когда быстрая оценка температуры важнее знания ее точного значения (ведь не секрет, что в большинстве случаев мы удовлетворяемся значениями «нормальная» или «повышенная», не уточняя конкретные цифры). Изюминкой устройства является то, что оно собрано на крохотном микроконтроллере attiny13 и обладает следующими параметрами:
2.2.Принципиальная схема.
Принципиальная схема индикатора:
Основа конструкции - микроконтроллер attiny13. Он должен быть настроен на работу от встроенного RC-генератора 9,6 МГц с включенным делителем на 8 (именно с такими настройками эти контроллеры выпускаются производителем). Если контроллер уже побывал в работе, необходимо запрограммировать в нем следующие fuse-биты: DWEN=1, CKDIV8=0 и CKSEL=10. Для повышенной экономичности (все-таки, батарейная конструкция) желательно заблокировать встроенную систему контроля напряжения питания, т.е. установить fuse-биты BODLEVEL=11. Бит RSTDSBL обязательно должен быть равен 1 (это на случай, если у вас фирменный программатор)! Все прочие fuse-биты принципиальной роли не играют.
В качестве датчика
Кнопка SB1 - тактовая, любого типа,
служит для управления работой
индикатора при калибровке и
для включения режима
Питание устройства
RGB-светодиод HL1 типа KAA-3528EMBSGC. Этот SMD-вариант может быть заменен на любой другой. В крайнем случае можно использовать 3 отдельных разноцветных светодиода.
Резистор R1 используется для контроля напряжения батарей питания - он входит в состав делителя напряжения вместе со встроенным в микроконтроллер pull-up резистором, сопротивление которого лежит в пределах 20...50К. На резисторе R1 должно быть примерно от 1/3 до 1/6 напряжения питания, т.е. при
свежих батарейках GB1 и GB2 от 0,5 до 1В.
Резисторы R2...R4 ограничивают ток кристаллов светодиода. На схеме указаны ориентировочные значения сопротивлений этих резисторов, конкретные
их значения следует рассчитать, ориентируясь на параметры конкретно примененного светодиода. Для увеличения срока службы элементов питания желательно выбирать ток через любой кристалл светодиода HL1 не более 5 мА.
Так как суммарное напряжение GB1 и GB2 получается не более 3В, а прямое падение напряжения на синем кристалле HL1 вряд ли будет менее 3,6В (для примененного светодиода KAA-3528EMBSGC оно составляет минимум 4В), напрямую от порта микроконтроллера засветить его не получится - не хватит напряжения. Чтобы обойти эту проблему, использована схема удвоения напряжения на элементах R4C2VD2. Работает эта схема так: когда необходимо зажечь синий кристалл светодиода, микроконтроллер формирует меандр с частотой около 35 кГц на выводе 5. Когда на выводе 5 присутствует высокий уровень (3В), конденсатор С2 заряжается через резистор R4 и последовательно включенный диод VD2, причем правая по схеме обкладка С2 имеет минусовый потенциал. Когда уровень на выводе 5 сменяется на низкий, т.е. соединяется с минусом батареи питания, конденсатор С2 оказывается включенным последовательно с батарейками, диод DV2 запирается обратным напряжением на обкладках С2. Так как С2 был заряжен примерно до 3В, то к синему кристаллу светодиода будет приложено практически 6В - он обязательно засветится.
В данной схеме параметры элементов C2, R4 и VD2 играют важную роль. Чем больше емкость С2, тем больший ток сможет обеспечить схема удвоения, однако, тем больший средний ток перезаряда C2 будет протекать по выводу контроллера. Чтобы ограничить его на допустимом уровне, используется R4, одновременно ограничивающий и ток через синий кристалл светодиода. Его сопротивление так же следует рассчитать исходя из требований ограничения тока через порт микроконтроллера на уровне не более 10 мА (максимум - 40 мА), при этом ток через кристалл светодиода так же не должен превышать допустимый, причем при расчете тока через кристалл следует помнить, что среднее напряжение питания его около 6В. При указанном на схеме сопротивлении R4 в
100 Ом обеспечивается приемлемая
яркость синего кристалла
Печатная плата устройства
не разрабатывалась, т.к. схема настолько
проста, что самостоятельно ее
разработать должен суметь
Измерение температуры основан
Первоначально собранное
Калибровка начинается с фиксации 0°С. Следует поместить VD1 в тающий лед (конечно, предварительно обернув его полиэтиленом или изолировав от воды как-то иначе), подождать некоторое время, пока VD1 охладится до нулевой температуры (этот процесс желательно контролировать образцовым термометром) и нажать кнопку SB1. HL1 начнет мигать синим: вам отводится 20
секунд, чтобы повторным нажатием SB1 зафиксировать нулевую температуру. Если этого не сделать за 20 секунд - устройство выключится автоматичеки, а при повторном включении снова даст вам 20 секунд для фиксации точки и т.д.
После фиксации нулевой
Предусмотрена возможность
повторной калибровки
При замкнутом R1 невозможно провести калибровку, поэтому не следует замыкать его на длительное время, достаточно перемкнуть его, непосредственно перед нажатием SB1, а как только HL1 засветится – убрать перемычку и нажать кнопку.
После успешной калибровки
индикатор готов к
СИНИЙ - температура низкая, менее 35,5°С.
ЗЕЛЕНЫЙ - нормальная температура, от 35,6 до 36,9°С.
ЖЕЛТЫЙ - слегка повышенная температура, от 37,0 до 37,4°С
МАЛИНОВЫЙ - высокая температура, от 37,5 до 38,2°С
КРАСНЫЙ - очень высокая температура - выше 38,2°С
Спустя 20 секунд после измерения
устройство автоматически выклю
Так как синий кристалл HL1 даже с учетом предпринятых мер уже не может гарантированно светиться при напряжении питания менее 2,3В, устройство контролирует состояние батарей питания и, при снижении его ниже 2,3В, вместо попытки измерить температуру сразу начинает мерцать поочередно красным и зеленым цветом - это означает, что батарейки следует заменить.
Замечание о точности измерений. В программе реализовано измерение напряжения на VD1 с точностью лучше 0,1 мВ, поэтому погрешностью АЦП и т.п. можно пренебречь, а основная погрешность устройства определяется лишь качеством калибровки. В домашних условиях не всегда есть возможность измерять температуру в широком диапазоне с точностью выше 0,5°С: далеко не у всех имеется спиртовой лабораторный термометр (тем более прошедший поверку). Поэтому точность калибровки устройства целиком основана на «доверии» к двум физическим константам - температурам кристаллизации и кипения воды. Однако известно, что обе эти температуры зависят от количества примесей в воде, а температура кипения дополнительно зависит от высоты местности над уровнем моря. Для средней полосы России этими нюансами можно пренебречь, т.к. отклонение на 2-3 градуса каждой из этих температур даст в
сумме погрешность измерения не более 0,06°, что вполне достаточно для медицинских целей. Но если вы проживаете значительно выше уровня моря - лучше найти способ проконтролировать температуру кипения воды, и если требуется, увеличить ее добавкой поваренной соли.
Макет собранного устройства:
Устройство начинает