Вольтметр позволяет измерять постоянное напряжение от 0 до 25 вольт.
В качестве контроллера используется ATMEGA8 в QFP (планарном) корпусе, которая тактуется внутренним генератором 8мГц. Измерения производятся при помощи встроенного в контроллер АЦП. Измеряемое напряжение, через делитель R9, R10 поступает на вход ADC0 (PortC.0 выв.23). После соответствующих преобразований, результат измерения отображается через порт D на 4-х разрядном индикаторе с общим анодом
Термометр позволяет измерять температуру от -50 до +85 градусов. Хочу заметить что на индикацию температуры отведено 3 разряда, то десятые доли индицируются только в диапазоне ?9.9…+85°С, а другие температуры отображаются уже без десятых долей. При температуре от -10 и ниже, десятая доля больше 0,5 градусов отображается включением точки (изображено на четвертой картинке).
Комнатная температура
"плюсовая" температура, погашен незначащий ноль
температура ниже нуля
Температура -12,5 градусов
Максимально низкая температура которую удалось замерять (в морозилке холодильника)
Датчиком термометра служит микросхемка DS18B20, считав из нее данные о текущей температуре и сделав необходимые преобразования выводим результат измерения на индикатор.
Переключение между режимами вольтметра и термометра производится кнопкой SW1: один раз нажали - термометр, ещё раз - вольтметр, вот так всё просто.
Описание принципиальной схемы:
Кнопка переключения режимов подключена к казалось бы у же занятому индикатором порту, но так и есть, ошибки нет. Поясню: после того как произойдет последовательный выход информации на всех разрядах, порт переключает направление, т.е. становится входом и сканирует наличие нажатой кнопки, а потом опять меняет направление порта и становится выходом.
Прошивка в архиве ниже. Отдельно внимание следует уделить FuseBits. Для CodeVision AVR они выставляются так:
Схема, печатка, прошивка
Автор: Виталий Малеванный
Источник:
www.avrlife.pp.ua