Самодельный калькулятор на микроконтроллере PIC16F873 » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

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


MPLab/MPLabX
MicroC
MicroBasic
MicroPascal
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Схемотехника » Устройства для дома » Самодельный калькулятор на микроконтроллере PIC16F873
    Самодельный калькулятор на микроконтроллере PIC16F873
    Автор публикации: alex Просмотров: 10006 Добавлен: 15-08-2012, 23:32 Комментарии: 0

         Калькулятор в повседневной жизни — бесценный помощник в вычислениях. Он ускоряет их и минимизирует вероятность ошибок. Низкая цена современных калькуляторов делает их доступными каждому. Предлагаемый калькулятор обладает хотя и не очень большим, но достаточным для несложных расчетов набором функций. Однако основное достоинство — он самодельный. Изготовив его, можно не только похвастаться перед товарищами, но и сделать первые шаги в освоении микроконтроллерной техники.
         Самодельный калькулятор, внешний вид которого показан на рис. 1, позволяет выполнять четыре арифметических действия — сложение, вычитание, умножение и деление чисел в десятичной (DEC) и шестнадцатеричной (HEX) системах счисления. Предусмотрено также вычисление квадратного корня, обратного значения и процентов. Для запоминания промежуточного результата имеется ячейка памяти.

         Предоставляется возможность удалить с индикатора последнюю цифру, если она введена ошибочно, вызвать на индикатор точное (в пределах разрядности калькулятора) значение числа л, изменить знак выведенного на индикатор числа. В десятичном режиме калькулятор работает с восьмиразрядными числами с плавающей запятой. При переходе в шестнадцатеричный режим дробная часть числа отбрасывается, а разрядность представления целой части задает пользователь. Она может занимать 1—3 байта (соответственно 8, 16 или 24 двоичных разряда). Если по окончании вычислений калькулятор не выключить вручную, это произойдет автоматически спустя некоторое время после последнего нажатия на любую из его кнопок.
         Схема устройства показана на рис. 2. Микроконтроллер DD1 работает от внутреннего тактового RC-генератора (это позволило отказаться от кварцевого резонатора). Резистор R2 — частотозадающий для этого генератора, а резистор R1 предотвращает случайный нежелательный перевод микроконтроллера в исходное состояние электромагнитными наводками. Микроконтроллер работает по программе, которую необходимо занести в его память с помощью программатора. Вводимые числа, результаты вычислений и пояснительные надписи отображаются на табло буквенно-цифрового ЖКИ HG1 со встроенным контроллером HD44780. Резистор R4 ограничивает ток подсветки индикатора.

         Клавиатура представляет собой прямоугольную матрицу из сорока кнопок SB1— SB40. Диоды VD1—VD8 предотвращают замыкание линий порта В микроконтроллера при одновременном нажатии на несколько кнопок. Для линий порта А, соединенных с клавиатурой, подобная защита не требуется.
         Кнопка "ON/С" (SB1) совмещает функции включения калькулятора и приведения его при необходимости в исходное (такое же, как после включения) состояние. Резистор R5 предотвращает включение калькулятора не в результате нажатия на кнопку SB1, а под действием помех.
         При нажатии на кнопку "М+" (SB34) число, выведенное на индикатор, складывается с хранящимся в памяти калькулятора, результат сохраняется там же. подменяя прежнее значение. Кнопка "М-" (SB33) действует аналогично, но вместо сложения выполняется вычитание числа на индикаторе из числа в памяти. Число из памяти вызывают на индикатор нажатием на кнопку "MR" (SB32). Его можно использовать в вычислениях точно так же, как введенное с клавиатуры обычным образом.
         Нажатие на кнопку ”МС" (SB31) очищает память, записывая в нее нулевое значение. После автоматического или ручного (кнопкой SB2 "OFF") выключения калькулятора число, записанное в его памяти, сохраняется, однако оно будет потеряно, если отключить от прибора батарею GB1.

         Нажатие на кнопку(SB3) удаляет с индикатора младший разряд введенного числа, а на кнопку "СЕ" (SB4) — все число. С помощью кнопки (SB14) изменяют на противоположный знак отображаемого на индикаторе числа. В шестнадцатеричном режиме это приводит к замене прямого кода числа дополнительным.
         По истечении 7 мин после последнего нажатия на любую кнопку микроконтроллер калькулятора переходит в "спящий" режим. Исключение — кнопка "OFF” (SB2), после нажатия на которую "спящий" режим включается немедленно. Ток потребления в этом режиме настолько мал, что специальный выключатель батареи питания не предусмотрев.
         Для работы в темноте предусмотрена возможность включения и выключения подсветки индикатора кнопкой "L" (SB40). Для экономии энергии батареи включенная подсветка автоматически гаснет через полторы минуты после последнего нажатия на любую кнопку и немедленно зажигается, как только какая-либо кнопка будет нажата.
         За 20 с до автоматического выключения калькулятора подсветка индикатора начинает мигать. Для отмены выключения достаточно во время мигания нажать на любую кнопку. Ее функция не исполнится, а время до автоматического выключения будет продлено на 7 мин.
         Устройство питается напряжением 4,5 В от батареи GB1, составленной из трех соединенных последовательно гальванических элементов типоразмера АА. В рабочем режиме с выключенной подсветкой калькулятор потребляет 7 мА, с подсветкой ток возрастает до 15 мА.
         Сразу после подключения батареи GB1 калькулятор начинает работать в десятичном режиме. Размещение числа и пояснительных надписей на табло ЖКИ в этом режиме показано на рис. 3.
         Буква М в левой части верхней строки выводится, если число в памяти калькулятора отлично от нуля, а буква Е ниже ее, когда разрядность результата превышает возможности калькулятора. В последнем случае отображаются восемь старших разрядов, а положение запятой указывает число потерянных младших разрядов.
         В шестнадцатеричном режиме надпись Dec сменяется на Hex, а в скобках после нее выводится сообщение о выбранной разрядности чисел. Изменяют разрядность нажатиями на кнопки "В+" (SB39) и "В-" (SB38). Первая увеличивает ее, вторая уменьшает.

         Обмен информацией с ЖКИ ведется по восьмиразрядной двунаправленной шине данных с задействованным флагом занятости BF. Шина использует порт В микроконтроллера совместно с клавиатурой. Для предотвращения конфликтов, возникающих при нажатиях на кнопки во время обращения микроконтроллера к ЖКИ, программа конфигурирует на время таких обращений линии порта А как входные. Это исключает возможность замыкания линий порта В на общий провод через диоды VD1—VD8 и выходные буферы порта А.
         Для достижения низкого электропотребления питание на ЖКИ поступает с линий RC3 и RC4 микроконтроллера. Перед переходом в "спящий" режим программа конфигурирует эти линии как входные, что эквивалентно выключению питания ЖКИ.
         Детали калькулятора (кроме батареи GB1) смонтированы на односторонней печатной плате из фольгированного стеклотекстолита, изображенной на рис. 4. ЖКИ расположен над платой и соединен с соответствующими контактными площадками отрезками луженого провода длиной 10 и диаметром 0,8 мм. Его следует монтировать в последнюю очередь. Для микросхемы микроконтроллера необходима 28-контактная панель. Она позволит при необходимости извлекать микроконтроллер для перепрограммирования.
         Плата рассчитана на установку кнопок, контакты которых имеют по два вывода, расположенных по разные стороны корпуса, например, TS-A3PS-130. Внутренние соединения между выводами кнопок используются как перемычки между некоторыми контактными площадками. Постоянные резисторы — МЛТ, С2-23, подстроечный — СП3-38б, диоды 1N4148 можно заменить на КД522Б.
         ЖКИ HY-1602B3 — русифицированный со встроенной подсветкой. Его можно заменить ЖКИ другого типа, имеющим две строки по 16 символов, с встроенным контроллером, совместимым с HD44780, в том числе не русифицированным. Но следует иметь в виду, что расположение и нумерация выводов ЖКИ разных типов может не совпадать.
         Правильно собранное из исправных деталей устройство с надлежащим образом запрограммированным микроконтроллером начинает работать сразу после включения. Единственное, что нужно сделать, — установить подстроечным резистором R6 наилучшую контрастность изображения на индикаторе. Если генератор микроконтроллера не возбуждается или работает неустойчиво, подключите между выводом 9 микросхемы и общим проводом конденсатор емкостью 30 пФ. Правда, скорость вычислений в результате этого немного уменьшится.
    Материал взят из: Журнала Радио 2009 №7

    В архиве исходный код программы на ассемблере и прошивка

    calculator.rar [41,08 Kb] (cкачиваний: 539)

    Комментарии