Sergei Frolov (sfrolov) wrote in engineering_ru,
Sergei Frolov
sfrolov
engineering_ru

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

Оригинал взят у sfrolov в Как устроен и работает калькулятор


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

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

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




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

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

Tags: электроника
Subscribe
promo engineering_ru march 2, 2015 08:17 174
Buy for 200 tokens
Помните байку о разработке космической ручки? Да, она не основана на реальных событиях, но очень наглядно иллюстрирует идею, что простое решение может оказаться лучше сложного. Ракета, построенная по принципу "большого глупого носителя" ("Big Dumb Booster") находится не в диапазоне…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 15 comments