Привет, мои дорогие подписчики и читатели! Задним числом поздравляю всех с Новым 2025 годом и старым Новым Годом :)
Вот и прошли новогодние праздники, отшумели салюты, отзвенели бокалы. Ёлки разобраны, салаты съедены, выходные окончены. Наконец подошло время заканчивать калькулятор и показать идею воплощённую в результат.
Основная схема собрана, осталось к ней прикрутить ввод данных ,переключение режимов сложение-вычитание, склеить, нанести рисунок пользовательского интерфейса, отшлифовать и готово. Итак приступим!
Дополнительные схемы.
Начну пожалуй с переключения режимов. Переключение можно реализовать на одном переключателе и сопротивлении, но так-как у меня в проекте кнопки без фиксации, необходимо собрать триггер, который бы заменял этот переключатель. В сети электронных переключалок пруд-пруди, но всё что мне попадалось на глаза либо 3-х - 4-х транзисторах, либо вообще на микросхемах. Как пример самой простой, по уверению её автора, схемы, которую с добавлением ещё одного инвертора можно было бы приспособить в мой калькулятор:
Но мне всё такое не понравилось. Я решил этот вопрос вот как:
Посадил на термоклей две кнопки, на их метса, распаял схему на досочке, проверил:
По умолчанию всегда включен режим сложения, о чём сообщает светодиод-индикатор режимов. Но стоит нажать на кнопку, как режим переключается на вычитание;
Ещё раз нажал на кнопку и режим переключился вновь на сложение и так далее.
Теперь можно приступать к системе ввода. Нарисовал для удобства распайки схему на которой микросхема сдвигового регистра перевёрнута:
Прикрутил это дело к сумматору на доске:
Начал проверять и меня ждал сюрприз:
Вместо последовательного ввода значений, при нажатии на кнопку "ввод" значения прописываются в регистр группами, а не по одиночке. Всему виной дребезг контактов. Устранить эту проблему шунтирующим конденсатором на кнопке или даже RC фильтрами не удалось. И, как говорят интернеты, не удастся никому. Надо собирать схему антидребезга. Неприятно, но что делать!
Схема нужна всего для одной кнопки "ввод". Надо переделать её с предыдущей схемы на эту. Слегка переделываю схему переключалки, получаю вот такое:
По началу я хотел поставить триггер Шмитта, но никак не смог заставить его стабильно работать. Схема выше надёжнее, но для ввода значения на кнопку приходится жать два раза. В данном варианте это не принципиально, главное что ввод корректный и стабильный!
Собираю, проверяю - работает. Вот и всё с электронной частью - всё распаяно:
Калькулятор готов к финишной сборке. Паяльник , припой, канифоль и схемы больше не нужны. :)
Финишная прямая.
Зачищаю шкуркой потёртые края моей коробочки, наношу клей, стыкую две крышки в один корпус, зажимаю струбцинами и ставлю сохнуть:
Прошло 12 часов и клей надёжно схватился. Иду в сарай снимаю со станка ЧПУ фрезу, ставлю лазерную головку, переношу всё в свою мастерскую-каморку. Опилок уже нет, а в каморке теплее :) Начинаю тестировать режимы прожига на кленовых досочках:
Наконец получаю приемлемый результат, лучшего добиться не удалось:
Для самоделки годится. Закрепляю корпус калькулятора на столик станка с лазером, рисую в ArtCAM'е векторный рисунок интерфейса и начинаю прожиг:
Увы, опыта с лазером у меня не много, что-то пошло не так и рисунок местами не прожигался. Сделал четыре прохода , но некоторые места остались едва тронутыми. Я выключил станок , решил протереть досочку спиртом. Затем ещё сделал пару проходов , но появилось смещение по оси игрек и рисунок немного стал непрезентабельным. Вышло не так, как хотелось бы, но зато калькулятор собран, работает - считает!
Как всё работает.
Вначале хотелось бы описать чуть-чуть интерфейс, что бы на фото было понятно что к чему. Итак, в верхнем ряду расположена индикация результата из 4 светодиодов(4 бит) и ещё один пятый светодиод - бит переноса:
Внизу индикация чисел А и Б. Между ними индикация режима сумматора - сложение или вычитание. Ниже расположены 4 кнопки: кнопка значений 0 или 1, кнопка сброса значений, кнопка переключения режимов и кнопка ввода.
Последовательный ввод записывает 8 бит выбранных значений в ряд , справа налево. От младшего бита к старшему. Что бы ввести значения двух чисел, надо вводить значения начиная со старшего бита числа А последовательно, до младшего бита числа Б.
Важно понимать, что для 4-х бит максимальное количество значений всего 16. Для чисел со знаком значения в десятичной системе варьируются от 0 до 7 и от -1 до -8. Для чисел без знака от 0 до 15.
В связи с тем , что в верхнем ряду присутствует 5-й бит переноса, сумма для чисел без знака может доходить до 30. Если считать числа со знаком, то бит переноса просто игнорируется. Старший бит результата определяет знак числа.
Подробнее о представлении чисел я писал в первой части, если кому не очень понятно, можно поискать дополнительную информацию в интернете.
Некоторые фото с примерами:
Сложение: 4+3=7 В двоичной системе: 0100+0011=0111
Действие вычитания: 4-3=1 В двоичной системе: 0100-0011=0001
Опять сложение: 2+5=7 В двоичной сами уже надеюсь понимаете по фото.
Догадайтесь сами какой результат :) Только не забывайте про старший бит, о котором я писал выше.
Ну и примеры с числами без знака, если мы их начнём считать таковыми:
5+9=14
5-9= -4
9+14=23
9-14= -5
На этом всё! Идея реализована в жизнь. Может быть не так красиво, как могло бы быть, но важен принцип и работоспособность:) Всем всех благ, хорошего настроения, творческого вдохновения и удачных реализаций!