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

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

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

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

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

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

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

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

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






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

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

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

Был у меня калькулятор МК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 мм для резиновой клавиатуры при переносе тонера кое-где отошли, пришлось маркером рисовать, много работать иголкой. Кроме того, это моя первая двухслойная плата.
Получилась такая плата.

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

Читать еще:  3D очки своими руками

Назвать я решил калькулятор — МК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: Расширена функциональность страницы пользователей, теперь можно добавить статус и личную информацию.

Как устроен и работает калькулятор

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

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

Я буду описывать работу самой простой модели калькулятора.

Это калькулятор CASIO HS-8LU. Они примерно все работают одинаково. По большому счету, в простых моделях ничего не меняется уже лет тридцать.

Калькулятор состоит из корпуса, клавиатуры с резиновыми кнопками и платы.

В данной модели плата сделана в виде пленки с нанесенными на нее проводниками. Питание — от солнечной батареи. Над солнечной батареей расположен жидкокристаллический индикатор.
На задней крышке корпуса расположены токопроводящие контакты. При нажатии на кнопку она прижимает пленку к задней крышке и происходит электрический контакт. Часто токопроводящий контакт наносят на обратную сторону кнопки. В том случае сама кнопка прижимается к плате для создания контакта.

С обратной стороны под солнечной батареей расположен чип микропроцессора. Он управляет работой калькулятора.

Как работает индикатор на жидких кристаллах.

Жидкие кристаллы — это специальные молекулы, которые при приложении между ними напряжения поворачиваются и меняют поляризацию света.

Это картиночка для одного пиксела цветного ЖКИ, но в монохромных там то же самое, только нет светофильтра.

Спереди и сзади жидких кристаллов ставят так называемый поляризационный фильтр. Он обычный свет преобразует в поляризованный (например, образно говоря, в «вертикальный»). Если напряжение не приложено, то «вертикально» поляризованный свет проходит через жидкие кристаллы, поворачивает плоскость поляризации, отражается от задней поверхности и идет обратно. Мы видим прозрачный экран. На стекле индикатора спереди нарисованы прозрачные токопроводящие линии в форме сегментов цифр, точек или других символов. Сзади также есть токопроводящая область. Когда возникает напряжение между токопроводящими проводниками (спереди и сзади), то между ними жидкие кристаллы поворачиваются и меняют свою плоскость поляризации так, что через задний поляризационный фильтр уже не проходят. Оттого на том сегменте, где есть напряжение между передней и задней поверхностью стекла, возникает невидимая область — сегмент «светится».

Читать еще:  Пюпитр из фанеры своими руками

Если приглядеться под определенным углом, то в отраженном свете будут видны эти прозрачные проводники.

На самом деле ориентация поляризации не «вертикальная» и «горизонтальная», а «наклоненная» под углом в 45 градусов «вправо» или «влево». Если взять светофильтр и перевернуть вверх ногами, то поляризация будет не «вправо», а «влево». И изначально он будет не пропускать свет, а задерживать.

Для экономии количества один проводник отображает и подведен не к одному сегменту, а к нескольким сразу. Чтобы они не зажигались сразу все, с задней стороны стекла рисуют не один общий проводник, а тоже несколько. Получается, что спереди контакты подведены к нескольким сегментами по вертикали, а с задней стороны по горизонтали. На схеме ниже показана схема индикатора.
Там есть еще такая хитрость, что напряжение нужно прикладывать не постоянное, а переменное (прямоугольные импульсы частотой 20-40 Гц). Иначе деградирует индикатор.

Для простых индикаторов с одним общим проводником импульсы совпадают по фазе, когда не надо отображать сегмент (спереди и сзади разность потенциалов будет одинаковой) и не совпадают по фазе, когда надо отобразить (тогда спереди будет «0», и сзади «1», а через некоторое время полярность поменяется, и будет спереди «1», а сзади — «0», и так далее). В тех индикаторах на общий проводник подается меандр (просто частота), а на отображаемые сегменты — совпадение логического уровня с общим (не горит) и не совпадение (горит).

В индикаторе нашего калькулятора используется три общих проводника. Там все сложнее. Простыми логическими уровнями не обойдешься. Чтобы обеспечить переменное напряжение и отсутствие постоянной составляющей используются уровни напряжений в 1/3 и 2/3 от максимума. В итоге форма импульсов будет ступенчатой. На схеме ниже показаны эпюры таких импульсов.

А теперь самое главное и самое интересное — микросхема процессора.

Это фотографии кристаллов отечественных калькуляторов, сделанных на микросхемах К145ИП7 (слева) и К145ИП11 (справа). Фотографии взяты с интересного сайта «Радиокартинки».

Микропроцессор калькулятора принципом работы очень мало отличается от обычного персонального компьютера с процессором, памятью, клавиатурой и видеокартой.
Если быстро посмотреть на фото кристаллов, то можно примерно поделить на три области: область постоянного запоминающего устройства (ПЗУ) с программной («прошивкой»), область оперативного запоминающего устройства (ОЗУ), где хранятся регистры памяти калькулятора, и остальные цепи процессора, которые включают арифметическо-логическое устройство (АЛУ), драйвер индикатора, драйвер клавиатуры, преобразователи напряжения и другие вспомогательные цепи.

Это структурная схема процессора калькулятора МК-62.
В верхней части мы видим, что есть блоки:
— генератор опорной частоты (ГОЧ), который задает частоту, с которой регенерируется изображение на индикаторе;
— схема удвоения напряжения, умножающая напряжение солнечное батареи на два, чтобы хватило для индикатора;
— генератор, формирователь импульсов общих электродов и регистр-формирователь сегментного кода постоянно выводят заданные для вывода сегменты на индикатор. Там есть специальный регистр памяти, куда микропроцессор записывает информацию, какие надо отображать сегменты, а какие не надо. После этого процессор не отвлекается на отображение, и эти блоки выводят все сами;
— ОЗУ с регистрами данных и ПЗУ с прошивкой;
— и узел с процессором, состоящим из АЛУ с обвязкой. Счетчик адреса АЛУ выбирает очередное слово программы из ПЗУ. Разрядность этого слова может быть разной в разных калькуляторах. Отдельные биты в слове определяют работу АЛУ: например, сложить два 4-х битных числа из регистров, или считать из ОЗУ цифру, или сравнить два числа, или сдвинуть на один разряд и т. д.

Как работает микропроцессор.

Сначала срабатывает сброс по питанию. При подаче электричества специальный узел заставляет программу работать с начального адреса. Команда за командой извлекается из ПЗУ и исполняется. Вначале происходит обнуление регистров, формирование числа «0.», сброс всяких признаков переполнения, операций и прочее. После сброса программа ожидает события от клавиатуры (нажатие кнопки).
Когда нажата кнопка, то процессор через некоторое время еще раз опрашивает клавиатуру, чтобы подавить дребезг кнопок (когда из-за плохого контакта может произойти одновременно несколько нажатий).
А дальше, в зависимости от предыдущих состояний, он по программе определяет, что с этим нажатием делать. Например, если идет ввод числа и введена цифра, то продолжить ввод. Если нажата кнопка операции, то выполнить операцию.
Сам алгоритм и логика выполнения операций целиком лежит на ПЗУ и программистах, которые писали прошивки.
Что интересно, все простые операции выполняются так, как их учат в школе.
— сложение и вычитание. В столбик. Выравниваются порядки двух введенных чисел и происходит сложение или вычитание.
— умножение и деление. Так же в столбик. Разряд за разрядом. Сначала последовательным сложением умножают на младшую цифру множителя, затем вторую и так далее до старшей. Деление — последовательным вычитанием.
После выполнения операции отдельная подпрограмма нормализует результат: отбрасывает незначащие нули и сдвигает его вправо.
Если в калькуляторе есть тригонометрические функции, то они также выполняются, как их запрограммировал программист. Есть разные способы вычисления элементарных функций: разложение в ряд Тейлора или по методу «Cordic».

Вот примерно так работает калькулятор.

Я вам дам ссылку на несколько сайтов. В одном вы можете еще прочитать про то, как они работают: http://datamath.org/Story/Intel.htm#The.

А еще две ссылки — очень познавательный интерактивный сайт, где обратным реверсом считали прошивку и сделали симулятор. Там можно «прогнать» работу процессора реального калькулятора.
http://files.righto.com/calculator/TI_calculator_simulator.html и
http://files.righto.com/calculator/sinclair_scientific_simulator.html.

А также заходите в мой музей, где я собираю советскую цифровую электронику: http://www.leningrad.su/museum/

Вот, наверно, и все. Надеюсь, я вас не сильно утомил. 🙂

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