0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Калькулятор своими руками

Самодельный калькулятор.

Был у меня калькулятор МК51. Вот такой вот: ru.wikipedia.org/wiki/Электроника_МК-51
Калькулятор активно использовался некоторое время, а потом начались проблемы с индикацией — начала отходить токопроводящая резинка индикатора. Калькулятор был убран подальше, а на замену ему был куплен citizen spr-350. Он уже на форуме промелькнул: forum.easyelectronics.ru/viewtopic.php?p=83778#p83778 (что-то ссылка не вставляется).

Однажды разобрал я старый МФУ, и обнаружил там очень тонкий LCD индикатор (COG) с 6 выводами на шлейфе, который сразу захотелось куда-то применить. Подписей на индикаторе не было, так что пришлось заняться реверс-инжинирингом, благо что МФУ продолжал выдавать сообщение об ошибке на LCD, даже если от него отключить всю периферию. (Вообще хорошо программа в МФУ работала — отключаешь печатающую часть, продолжает сканировать, отключаешь всю периферию — продолжает флешки читать, картридером, установленным на основной плате. Обычно похожие устройства, обнаружив первую же ошибку, намертво блокируются). Реверс-инжиниринг проводился с помощью осциллографа DISCO, с помощью встроенного логического анализатора. Выяснилось, что индикатор работает на протоколе, похожем на SPI — имеются 3 сигнальных линии — данных, тактовая, RS. Поскольку объем данных был достаточно большим, то я просто записал данные за несколько секунд анализатором, а потом написал программу, которая расшифровывала их (просто определялись байты, передаваемые на LCD). Результат выводился в текстовый файл, заодно выводились символы ASCII, соответствующие каждому принятому байту. Несколько пробных запусков программы давали на выходе хаотический набор символов, после чего я решил, что передача может идти начиная с младшего бита. (В spi первым обычно идет старший). Переписываю программу — заработало, в файле результата читается сообщение МФУ об ошибке. Позже я определил, как производится инициализация индикатора. После проведенного анализа индикатор был отложен, за неимением устройства, в которое его было бы можно поставить.

Как-то раз, разгребая всякие железки в шкафу, я переложил старый калькулятор в коробку с индикатором и остатками МФУ. Тут-то я и решил, что используя этот индикатор, можно дать сломанному калькулятору новую жизнь. (Места в калькуляторе хватало для индикатора и контроллера). Для проверки возможности использовать индикатор подключил его отладочной плате на at90usb162:

Суровый переключатель переключает индикатор от мфу к моей плате. Это позволяет инициализировать индикатор при помощи мфу, а потом управлять им с контроллера.
Программа была написана, индикатор заработал. Мне, правда, до сих пор не удалось понять, что за контроллер LCD там используется. Алгоритм работы похож на алгоритм st7036, часть команд совпадает, но как я уже сказал, данные передаются начиная с LSB, линия RS инвертирована. Если кто знает, что это за контроллер такой может быть, то напишите, пожалуйста.

Индикатор заработал, так что можно было начинать делать калькулятор. Делать решено было на STM8, поскольку хотелось использовать контроллер с 64 кб памяти (я не знал, сколько займут вычисления с плавающей запятой и вычисление выражений), а atmega644 достать проблематично, и стоит она в разы дороже. При этом, отладку и программирование можно вести всего по 3 проводам. Купил отладочную плату STM8L-discovery, поэкспериментировать с STM8, и для использования ее в качестве отладчика. В качестве управляющего контроллера взял STM8S207S8. Изготовил печатную плату. Получилось не очень хорошо, дорожки 0.4 мм для резиновой клавиатуры при переносе тонера кое-где отошли, пришлось маркером рисовать, много работать иголкой. Кроме того, это моя первая двухслойная плата.
Получилась такая плата.

После изготовления платы, и установки на нее контроллера и разъема индикатора опять обнаружились проблемы. Я ухитрился подключить индикатор к выводам контроллера с открытым стоком и при этом еще и неправильно развел разъем. Именно по этому сверху платы такая куча проводов. В этот раз контроллер еще как-то особенно плохо припаялся, постоянно возникали проблемы с контактом. В общем, сплошные грабли. Под конец все заработало как нужно, была написана программа(как ни странно, не такая уж она и сложная получилась, правда, часть алгоритмов по вычислению выражения я до этого продумал).
Результатом стала такая конструкция:

Читать еще:  Табурет-пуф из дсп своими руками

Назвать я решил калькулятор — МК200.
Работает калькулятор на частоте 125Кгц, но во время вычисления частота увеличивается до 16Мгц. В калькуляторе реализован ввод полного выражения, которое вычисляется при нажатии кнопки ‘=’. Калькулятор способен выполнять основные арифметические действия, тригонометрические действия, возведение чисел в степень, в квадрат, извлечение квадратного корня, вычислять натуральный логарифм и экспоненту.
Есть 4 регистра памяти, в которых можно хранить различные константы, и затем использовать их при вводе выражения.
Числа в калькуляторе хранятся в 32-битном виде, так что операции возможны с числами не более, чем 1*10^38.(интересно, собираются ли в IAR делать поддержку 64-разрядных чисел для stm8?)
Так как индикатор питается от 5 вольт, то в схему входит простейший конденсаторный умножитель напряжения.
Поскольку схема потребляет ток 2мА, то через 3 мин после последнего нажатия кнопки калькулятор выключается.
Для тех кто не знает — у всех батареек есть определенный номинальный ток разряда. Для мелких батареек он не превышает 1ма. Если потребление тока будет выше, то батарейка разрядится намного быстрее, чем это вышло бы по расчетам.

Как работает калькулятор? Создаём свою вычислительную машину! #1

В данной статье я расскажу об основах цифровой схемотехники. Мы рассмотрим базовые логические элементы, работающие на основе транзисторов и соберём свой собственный калькулятор!

Вторая часть статьи.

Важно понимать, что любое электронное устройство, типа калькулятора, компьютера или телефона, выполняет одни и те же функции (математические вычисления и работа с памятью). Получается, что и устройство всех электронных приборов очень похожее.

Мы рассмотрим один из самых простых примеров такого вычислительного устройства — калькулятор. Нашей задачей будет создать машину, которая сможет складывать два положительных числа.

А начнем мы с самого важного.

Булева логика

Булева логика — это очень простая штука, знакомая практически всем. Её хорошее понимание нужно для того, чтобы однозначно и ясно понимать алгоритм построения компьютера.
Начнём с главного определения:
Высказыванием называется любое утверждение, для которого можно сказать истинно оно или ложно.
Примеры:
Высказывание (A) гласит, что (3 — 2 = 1). Очевидно, что (A) верно.
Высказывание (B) гласит, что (3 — 2 = 2). Понятно, что (B) не верно.

Высказывания можно комбинировать.
Самые важные и часто используемые комбинации — это операция «ИЛИ», операция «И» и операция «НЕ».
Для них я приведу так называемые таблицы истинности.

Таблица истинности нужна для того, чтобы определить истинность операции при разных значениях параметров:

Булева логика очень удобна в схемотехнике: истина — напряжение высокое, ложь — низкое.
Высокому напряжению сопоставляют (1), низкому — (0).
Помимо высказываний, мы можем работать с двоичными числами, ведь последовательности из ноликов и единичек можно сопоставить последовательность высоких и низких напряжений:

Двоичный сумматор через логические операции

Почему для того, чтобы суммировать нужны логические операции (вентили)? Всё дело в том, что логические операции — это очень просто и удобно, ведь они позволяют делать проверки и в зависимости от результата выполнять разные действия. Это очень похоже на условные операторы в программировании.

Читать еще:  Часы с датчиком положения и температуры своими руками

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

Для сложения двух двоичных чисел нужно несколько раз сложить цифры из одинаковых разрядов. Разберёмся с тем, как это сделать с помощью логических элементов.
Сумма двух цифр равна единице, если одна из них равна единице. В случае, когда обе цифры равны нулю или единице сумма будет нулевая:

Легко проверить, что следующая схема из логических элементов как раз соответствует этой таблице истинности:

Действительно, сумма двух цифр равна единице, если одна из них равна единице, а другая нулю. В случае, когда обе цифры равны нулю или единице сумма будет нулевая (возможно 4 варианта):

Но это не полный сумматор, ведь в нашей схеме нужно учесть то, что если две цифры равны единице, то выполняется перенос единицы в следующий разряд:

Сейчас лучше, но в завершение нужно учесть перенос единицы из предыдущего разряда.

Схема получилась достаточно громоздкая, но пугаться её не стоит, ведь происходит следующее: мы результат сложения (A) и (B) складываем с тем, что было перенесено из предыдущего разряда. То есть мы просто дублируем схему сложения:

Единица для переноса в следующий разряд получается либо если (A) и (B) равны единице, либо если сумма (A+B) с единицей из предыдущего разряда равна единице.
Все возможные комбинации:

Теперь мы умеем складывать цифры поразрядно, учитывая переносы в следующий разряд:

Комбинируя несколько таких сумматоров мы получим калькулятор. Сумматоры нужно подключить так, чтобы перенос в следующий разряд предыдущего был соединён с переносом из предыдущего разряда следующего:

На рисунке показан 4-x битный сумматор, но наращивая схему можно легко увеличить количество бит.
Осталось решить последнюю проблему — собрать логические элементы.

Транзистор

Мы будем конструировать логические операции с помощью транзистора — радиоэлектронного компонента из полупроводникового материала, обычно с тремя выводами, способного от входного сигнала управлять током в выходной цепи.
В настоящее время транзистор является основой схемотехники подавляющего большинства электронных устройств и интегральных микросхем:

Почему для построения операций удобно использовать транзистор? Дело в том, что транзистор — единственный простой способ собрать логический элемент (А значит и любое вычислительное устройство).

Логические операции с помощью транзисторов

Начнём с операции отрицания (НЕ).

Если на входе единица, то транзистор открыт и ток идет от питания к земле по пути наименьшего сопротивления. Чтобы на выходе было большое сопротивление нужен резистор на входе следующего элемента. У нас они будут на (10 kOm). Резистор на (1 kOm) нужен для того, чтобы не происходило короткого замыкания. На выходе получаем ноль.
Если на входе ноль, но транзистор заперт и ток от питания идёт на выход. То есть на выходе единица.
Получилось как раз то, что нужно.

Для построения операции «И» нужно поставить два транзистора последовательно. Таким образом элемент сможет пропускать ток только при условии, что оба транзистора открыты:

Для построения операции «ИЛИ» нужно поставить два транзистора параллельно. Таким образом элемент сможет пропускать ток, если один из транзисторов (или оба) открыт:

Сейчас мы научились собирать все нужные для калькулятора логические элементы с помощью транзистора. В следующей части я использую всю теорию, данную здесь, и соберу полноценный калькулятор!

На эту тему на моём YouTube канале есть видеоролик, посвященный этой теме, советую подписаться и узнавать о таких масштабных проектах первым 🙂

Читать еще:  Кровать из дерева своими руками

Вторая часть статьи.

Друзья! Я очень благодарен вам за то, что вы интересуетесь моими работами, ведь каждый пост на сайте даётся очень непросто. Я буду рад любому отклику и поддержке с вашей стороны.

Если у вас остались вопросы или пожелания, то вы можете оставить комментарий (регистрироваться не нужно)

Крутяк, продолжай в том же духе!

Дата: 22-07-2019 в 00:58

Дата: 01-08-2019 в 16:38

Дата: 14-08-2019 в 00:20

А как соеденять суматоры я не понял
———————————-
Нужно подключить их так, чтобы перенос в следующий разряд предыдущего сумматора был соединён с переносом из предыдущего разряда следующего сумматора 🙂

Дата: 14-08-2019 в 00:48

Полезная вещь для молодых ребят.

Дата: 22-08-2019 в 19:48

Подписался на канал только от этого видеоролика, не смотря другие понял, что канал надо поддержать.
А ещё хотелось бы получить возможность посмотреть на схему из этого видео. К примеру я не знаю, как сделать исключающее или. А по схеме я тоже самого собрать сумматор.
——————————————————
Спасибо за поддержку

Мои курсовые | 30.11.2019: Выложил мои курсовые в открытый доступ. Теперь они отображаются в колонке слева под новостями.

Для будущих авторов | 12.10.18: Если вы хотите стать автором статей на сайте и получить подтвержденный аккаунт, то обращайтесь на почту! support@ilinblog.ru

Обновления | 21.08.18: Добавлена возможность комментировать статьи. Сайт адаптирован под мобильные устройства.

Обновления | 19.01.18: Добавлена возможность добавления математических формул в статьи посредством языка latex. Пример использования тут. Также добавлена возможность редактирования статей.

Информация о пользователях | 28.10.17: Расширена функциональность страницы пользователей, теперь можно добавить статус и личную информацию.

Калькулятор своими руками

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

Перед тем, как прочитать статью, предлагаю посмотреть видеоролик, где подобно показан процесс сборки кит-набора и его проверка на работоспособность.

Для того, чтобы сделать калькулятор своими руками, понадобится:
* Кит-набор
* Паяльник, флюс, припой
* Бокорезы
* Крестовая отвертка

Шаг первый.
В комплекте кит-набора присутствует печатная плата с металлизированными отверстиями, ее качество изготовления на высоком уровне.

Разобравшись с комплектом, переходим к самой сборке.

Шаг второй.
На плату устанавливаем радиодетали. Сначала вставляем резисторы, их в комплекте шесть штук одинакового номинала, так что определять сопротивление каждого не нужно. С обратной стороны платы загинаем выводы, для того, чтобы они не выпали при пайке. После резисторов на плату устанавливаем неполярные керамические конденсаторы, их выводы также загинаем. Далее на плату ставим все 17 кнопок, а затем и семисегментные индикаторы, на них есть специальная метка в виде точке, также как и на плате, далее загибаем их ножки.






На семисегментном индикаторе должны отображать цифры при нажатии на все кнопки. После проверки платы калькулятора можно переходить к сборке его в корпус.

Шаг четвертый.
Для того, чтобы защитить плату и придать калькулятору нужный вид в комплекте имеется несколько частей корпуса из оргстекла. С оргстекянных пластин удаляем защитную пленку и собираем корпусе из них, друг друга скрепляя при помощи винтов и крестовой отвертки.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector