Схема калькулятора – Как устроен и работает калькулятор: engineering_ru — LiveJournal

Как устроен и работает калькулятор: engineering_ru — LiveJournal

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

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

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

Это калькулятор 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/

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

engineering-ru.livejournal.com

Калькулятор — Википедия

Материал из Википедии — свободной энциклопедии

Современный инженерный калькулятор

Калькуля́тор (лат. calculātor «счётчик») — электронное вычислительное устройство для выполнения операций над числами или алгебраическими формулами.

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

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

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

Термином «калькулятор» также называются специализированные программы, встраиваемые в вебсайты (например, «калькулятор калорий», «калькулятор размеров одежды» и пр.) или в бытовую технику (например, простой медицинский калькулятор может встраиваться в спортивный тренажёр).

ru.wikipedia.org

Четырёхбитный калькулятор из картона и шариков / Habr

Внешний вид картонного четырёхбитного калькулятора из картона. Хорошо видны полусумматор вверху и три сумматора в средней и нижней части калькулятора

Давным-давно, до изобретения электроники, люди изготавливали механические компьютеры из подручных материалов. Самым известным и сложным примером такой машины является антикитерский механизм — сложнейшее устройство из не менее чем 30 шестерёнок использовалось для расчёта движения небесных тел и позволяло узнать дату 42 астрономических событий.

В наше время механические компьютеры (калькуляторы) — скорее предмет развлечения гиков и повод устроить забавное шоу. Например, как компьютер из 10 000 костяшек домино, который складывает произвольные четырёхзначные бинарные числа и выдаёт пятизначную двухбитную сумму (математическая теория этого калькулятора и архитектура). Такие перфомансы позволяют детям лучше понять, как работают битовые логические операции в программировании, как устроены логические вентили. Да и вообще сделать маленький компьютер своими руками из подручных материалов очень интересно, тем более если вы делаете это вместе с ребёнком.

Логическая операция AND в компьютере из 10 000 костяшек домино

Для изготовления механического калькулятора отлично подходит конструктор Lego. На YouTube можно найти немало примеров таких калькуляторов.

Калькулятор из компьютера Lego

Вдохновлённый примером компьютера из домино и механических калькуляторов из конструктора Lego, программист C++ под ником lapinozz вместе со своими младшими сестричками решил соорудить в домашних условиях нечто подобное для школьного научного проекта одной из сестёр. Он задумал и реализовал полностью функциональный четырёхбитный калькулятор LOGIC (Logic cardbOard Gates Inpredictable Calculator). Для изготовления этой вычислительной машины не требуется ничего кроме картона и клея, а работает она не на электричестве, а на шариках и земной гравитации. Калькулятор умеет складывать числа от 0 до 15 с максимальной суммой 30.

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

Наглядное представление, как складывать бинарные числа. Обучение школьника навыкам перевода из десятичной в двоичную систему счисления и обратно. Изучение битовых логических операций и основных логических схем.
Как можно рассмотреть на фотографии калькулятора, в верхней части располагается зона для ввода данных. После прохождения всех логических операций шарики показывают результат операции внизу.

Ввод данных осуществляется шариками. Шарик есть — 1, шарика нет — 0. Бит справа — это наименьший бит числа. Перед началом работы некоторые части калькулятора следует привести в исходное положение. После указания исходных значений отодвигается полоска картона, которая удерживает шарики в исходном положении — и начинается процесс сложения.

Например, так выглядит исходное положение шариков для операции 7+5 (0111 + 0101).

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

Схематически логические вентили для всех логических операций показаны на схеме.

То есть логический вентиль «И» (AND) означает, что при поступлении 0 шариков на входе получается 0 на выходе. При поступлении 1 шарика на входе получается 0 на выходе. При поступлении 2 шариков на входе получается 1 на выходе.

1 на входе, 0 на выходе

2 на входе, 1 на выходе

Логический вентиль XOR сделать немного сложнее. В этом случае если поступает один шарик, он должен пройти. А если поступает два шарика, то они должны аннулировать друг друга, то есть на выходе будет 0. Автор показывает, как это делать, через вертикально висящий кусочек картона с узким горлышком. Если два шарика приходят одновременно, то они блокируют друг друга — и таким образом эффективно реализуют логическую операцию XOR.

Логический вентиль XOR

Чтобы оптимизировать систему и не городить массу логических вентилей AND и XOR, автор реализовал полусумматор — комбинационную логическую схему, имеющую два входа и два выхода. Полусумматор позволяет вычислять сумму A + B, при этом результатом будут два бита S и C, где S — это бит суммы по модулю 2, а C — бит переноса. В нашей картонной конструкции это означает, что если на входе у нас 1 шарик, то он попадает на выход C, а если на входе 2 шарика, то 1 шарик попадает на выход S, а второй никуда не попадает.

Программист придумал довольно простую и эффективную схему для полусумматора. В ней 1 шарик на входе спокойно продолжает свой путь, переворачивая барьер, и проходя в отверстие C. Но если поступают два шарика, то второй шарик уже не может пройти через барьер, перевёрнутый первым шариком — и проваливается в отверстие, прибивая новый путь S. Это и есть полусумматор.

Один шарик на входе полусумматора

Два шарика на входе полусумматора

Наконец, настоящим шедевром является сумматор. Обычно его делают из двух полусумматоров и логического вентиля «ИЛИ», но автор реализовал другую конструкцию, которая фактически является небольшой модификацией полусумматора.

Один шарик на входе — один шарик по пути 1

Два шарика на входе — один шарик по пути 2

Три шарика на входе — один шарик по пути 1, а другой по пути 2

Весь калькулятор целиком состоит из одного полусумматора и трёх сумматоров.

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

habr.com

Самодельный калькулятор. / Блог им. citizen / Сообщество EasyElectronics.ru

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

Сначала я описал конструкцию здесь www.leningrad.su/calc/cforum.php?topicid=981, но, думаю, здесь она тоже будет интересна.

Исходники — prj_1.zip

we.easyelectronics.ru

Калькулятор — Устройства на микроконтроллерах — Схемы устройств на микроконтроллерах

Калькулятор может выполнять следующие математические операции: знаковое сложение и вычитание с плавающей запятой; знаковое умножение и деление с плавающей запятой; знаковое возведение в степень и нахождение обратного числа (1/Х) с плавающей запятой. Вводимые числа могут содержать не более четырех цифр, т.е. максимальное вводимое число по модулю равно |9999|, а минимальное по модулю равно |0,999|. Максимальный результат по модулю равен |99999999|.
Вводимые числа и результат представлены в следующем формате: REG*10EXP. В регистре REG находится непосредственно шестнадцатеричный код числа с учетом знака. В регистре EXP – показатель степени с учетом знака (-127 Приципиальная электрическая схема

Для индикации используется 10-разрядный жк-индикатор с контроллером HT1611. Питание данного индикатора подается на вторую слева (GND) и на крайнюю правую клеммы (+1,5В). Вывод HK (пятая клемма) следует соединить с общим проводом. Для управления индикатором используется интерфейс SPI, поэтому вход данных индикатора DI (4 клемма) соединен через резистор R6 с выходом данных SPI, а тактовый вход CLK (3 клемма) через резистор R5, с тактовым выходом SPI. Также следует соединить общие провода индикатора и микроконтроллера. Более подробную информацию о данном индикаторе, а также и заказать его, вы можете на сайте фирмы «Телесистемы» — www.telesys.ru.
Клавиатура реализована следующим образом: выводы RB4-RB7 подтянуты к Vdd, т.е. при чтении порта возвращают логическую единицу. Четыре вывода из RA0-RA5 также находятся в высоком состоянии, а один – в низком, причем этот вывод периодически меняется. Если какая-либо из кнопок нажата, то при логическом нуле на соответствующем выводе порта А, ноль будет и на одном из выводов порта В. Таким образом, зная какие из выводов портов А и В в данный момент находятся в низком состоянии, можно определить, какая кнопка нажата.
Блок-схема программы

Рассмотрим алгоритм работы данного устройства. В начале программы подготавливаются все используемые регистры, и выводится ноль на индикацию. Затем, начинается описанное выше, сканирование клавиатуры. После нажатия кнопки, определяется, что было нажато – цифра или команда. При нажатии цифры, следует проверка на переполнение водимого числа (не больше 4-х цифр) и уменьшение его порядка, если до этого была нажата точка. Затем формируются двоично-десятичные коды для преобразования числа в двоичный код, и отдельно – для индикации. После этого вводимое число появляется на индикаторе. Если была нажата математическая команда, то ее код сохраняется в специальном регистре, и формируется двоичный код первого числа, который заносится в регистр первого числа. Затем подготавливаются регистры для ввода второго числа, и микроконтроллер снова переходит к сканированию клавиатуры. При нажатии точки, устанавливается флаг «точка», при наличии которого, происходит декрементирование порядка вводимого числа с каждой новой нажатой цифрой. Если же была нажата команда +/-, то происходит инвертирование знака вводимого числа. При нажатии кнопки «равно», формируется двоичный код второго числа, который заносится в регистр второго числа. Затем считывается код нажатой математической операции, и происходит ее выполнение. После этого результат оптимизируется и выводится на индикатор.

В данном архиве (calc.rar) находятся: calc.hex — файл-прошивка для микроконтроллера; calc.asm — файл программы MpLab с подробнейшими комментариями; bc_bcd.inc, bcd_bc.inc, degree.inc, divf.inc, minf.inc, multf.inc, sumf.inc — файлы с математическими подпрограммами; calc.sch и calc.pcb — соответственно принципиальная схема и печатная плата в формате ACCEL EDA.Источник: picro.narod.ru

cxema.my1.ru

Как устроен и работает калькулятор: sfrolov — LiveJournal

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

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

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

Это калькулятор 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/

sfrolov.livejournal.com

Как устроен и работает калькулятор — ZAVODFOTO.RU

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

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

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

Это калькулятор 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.

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

zavodfoto.livejournal.com