Как сделать калькулятор с нуля?

Как сделать калькулятор

тэги:

калькулятор

категория:

наука и техника

ответить

комментировать

2 ответа:

старые выше
новые выше
по рейтингу

3

extat­ic
[37.6K]

3 месяца назад 

Это насколько с нуля? Вообще с нуля? Ну, можно создать механический калькулятор. Например, баловым элементом в таком калькуляторе можно использовать гидравлическое устройство, аналогичное сливному бачку в унитазе. У него есть вход, через который наливается вода, ручка, которая выпускает воду и, собственно, выходная труда. Данный гидравлический элемент эквивалентен транзистору. Далее можно сдеалть стандарьные блоки для калькулятора. Первый — это перевод числа в двоичную форму. Это стандартная схема, ее можно найти в интернете для транзисторов. Только вместо транзисторов используем базовые наши базовые элементы. Для каждой арифметической операции тоже существуют схемы. Все операции осуществляются в двоичном коде через простые действия, такие, как сдвиг, инверсия, прибавление единицы и т.д. Гидравлический калькулятор выйдет достаточно большой. Стоит сказать, первый компьютер был механический, его создали в 1893 году, он работал немного иначе, но тоже кое-чего мог, без электроники совсем.

система выбрала этот ответ лучшим

1

jar-ohty
[152K]

3 месяца назад 

Вряд ли начинающему любителю электроники по силам спроектировать, собрать и наладить калькулятор на логических элементах малой и средней интеграции, а собрать калькулятор на основе самодостаточной однокристальной БИС — неинтересно. Поэтому наш путь — микроконтроллер. Практически любого современного микроконтроллера достаточно.

Наша задача по разработке электроники состоит в том, чтобы подключить к микроконтроллеру индикатор и клавиатуру. Проще всего в подключении — светодиодные семисегментные индикаторы. Так как для индикации числа нужно не меньше 8, а лучше 12 и более разрядов, о подключении всех сегментов к индивидуальным линиям портов можно даже не думать: понадобится 64-96 портов и придется использовать дорогостоящую многоногую версию контроллера и еще мучиться с разводкой этих многочисленных линий в двух слоях платы, плюс еще паять 64-96 токоограничительных резисторов. Это не наш путь, поэтому используем динамическую индикацию. Одноименные сегменты всех индикаторов соединяем параллельно и подключаем через токоограничивающие резисторы к 8 линиям GPIO, настроенным на вывод, а общие катоды каждого индикатора — к другим 8 линиям GPIO. В результате, установив линию нужного катода в лог. ноль, а остальные в единицы, мы можем зажигать нужные сегменты этого разряда, подавая на них лог.1. При этом на светодиодах других разрядов будет либо ноль, либо обратное напряжение и они не будут гореть. Быстро перебирая разряды один за другим и синхронно с этим меняя выводимую цифру или символ (буквы A, b, C, d, E, F, L, Г, — и пробел — достаточно, чтобы выводить 16-ричные цифры или слово ЕГГОГ), мы можем выводить нужные цифры и символы одновременно во все разряды за счет инерции зрения — это так называемая динамическая индикация. При этом для 8 цифр нужно не 64, а всего 16 линий порта, и всего 8 резисторов.

Теперь клавиатура. Она представляет собой матрицу из строк и столбцов, на пересечении которых — кнопки, нажатие которых замыкает один из столбцов на одну из строк. Подтянем линии строк к питанию через резисторы. Теперь на них логическая единица. Подавая последовательно на каждый из столбцов лог.0 (тогда как другие — в состоянии лог.1), и наблюдая состояние строк, можно определить, какие кнопки в матрице сейчас нажаты. Заметьте: для перебора столбцов у нас сигналы уже есть: они используются для перебора катодов индикатора. То есть для клавиатуры в 64 кнопки нам понадобится всего 8 линий. Еще нам понадобятся 8 диодов: они нужны, чтобы предотвратить короткое замыкание между портами с разными уровнями, если нажать сразу две кнопки. Диоды включаются катодом к порту, анодом к столбцу и при нажатии двух кнопок ток от порта с лог.1 к порту с лог.0 встретит два встречных диода и не пойдет.

Далее нужно уже в коде реализовать опрос клавиатуры и динамическую индикацию, ввод чисел и операций с клавиатуры, вычисление введенного выражения и вывод результата. Для калькулятора с четырьмя действиями это не должно составить какой-либо проблемы, для более сложного инженерного — придется разобраться, как вычислять различные функции. При этом следует обратить пристальное внимание на точность вычислений, особенно если калькулятор 12-разрядный.

Источник: bolshoyvopros.ru