Модель калькулятора своими руками

Модель калькулятора своими руками

Самодельный калькулятор на ОМЭВМ К1816ВЕ39

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

Однажды на сайте ZX-PK.RU открылся тред про сборку ЭКВМ на базе микроконтроллера К1816ВЕ39. И Сергей Фролов, владелец сайта-музея Советской цифровой электроники, сообщил, что ранее уже выпускался такой калькулятор, «Элекон МК», как на фото:

Сергей любезно отсканировал руководство по эксплуатации и схему калькулятора, а также считал оригинальные ПЗУ, за что выражаю ему сердечную благодарность. Копия архива размещена тут. Было решено собрать клон Элекона (точнее — инженерный макет), но на более привычной элементной базе, которая просто валялась под руками.

Итак, оригинальная конструкция была собрана на базе КМОП-микросхем серии 561, 571 и 1109, а также на тёплом ламповом индикаторе. У нас же под руками была ТТЛ-логика и светодиодные матрицы с общим «минусом». Проанализировав оригинальную схему и выкинув из неё ненужное (а именно всё, что было связано с выводом на печать, а также многое другое , что было сделано разработчиками «про запас»), получили достаточно простой проект, состоящий всего из восьми микросхем (в оригинале в два раза больше):

Как сказано выше, сокращение функций сократило количество комплектующих. При этом первоначально планировалось использовать родную прошивку, которая должна была разместиться в одной флеш-ПЗУ объёмом 128К (просто их много оставалось со старых материнок), что давало возможность в последующем править прошивку под свои нужды с особой лёгкостью. Количество клавиш также уменьшилось, был удалён и переключатель рода работ. Дешифратор знакоместа занимает один корпус вместо трёх, регистр индикации — один корпус вместо двух, дешифратор устройств ввода/вывода — один корпус с транзисторным инвертором, имеющий нужную логику работы , но иную схемотехнику . Единственно е , что пришлось установить кучку транзисторных ключей, но это дало нам возможность применить различные виды индикаторов, как с общим «минусом» (собранный реал), так и с общим плюсом (достаточно немного перекоммутировать питание транзисторов). Так что всё вроде в железной области оказалось просто.

При сборке было решено разделить конструкцию на две части — индикаторную и вычислитель с клавиатурой, хотя сначала примерялся сделать всё на одной плате:

Не понравились получающиеся размеры и был создан индикаторный блок, содержащий в себе дешифратор знакомест 155ИД3, регистр индикации 1533ИР27 (можно заменить на ИР23) и второй регистр индикации памяти 155ТМ8, а также свора транзисторов . С левой стороны 13-разрядного сборного индикатора расположены четыре светодиода, подключённые к ТМ8, индицирующие использование специальных регистров памяти — первый сверху, четвёртый снизу.

Всё это было в последующем собрано вместе в единую конструкцию:

Основные чипы располагаются с обратной стороны индикатора:

Как плата индикатора, так и плата вычислителя вязал и сь МГТФ, который после первого включения и проверки был пропитан до поверхности платы термопластиком («китайскими соплями»). Это позволяет при необходимости, сняв кусочек пластика, подкорректировать распайку, но в целом конструкция получается достаточно прочная, не позволяющая проводу оторваться от места пайки. Вот тут ещё немного общего вида:

Конструкция заработала сразу же (утрирую конечно, кое-что я укосячил ;), но в целом это правда), потребляемый ток — 200 мА, что суммарно лучше, чем у оригинала (самые тёплые микросхемы — ИД3 и АП6).

Читайте также:  Как хранить детские игрушки своими руками

Следующей задачей стала адаптация имеющегося софта под используемый индикатор. Дело в том, что в оригинальном ламповом индикаторе сегмент знака числа в крайнем левом разряде не подключен к аналогичным сегментам в остальной части индикатора, а соединён с децимальной точкой. Знак переполнения «Е» также единичен и подключен к сегменту «G» (нижнее подчёркивание). Вот мы и получили при отрицательном 12-разрядном числе в левом разряде «точку» и «подчёркивание» при ошибке вычисления. Нехорошо.

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

Исправленный код интересующиеся могут скачать тут. Разумеется, весь код не правился и в нём остались рудименты от вывода на печать.

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

В закладные вворачиваем/вбиваем небольшие шурупы/гвоздики так, чтобы их шляпки торчали миллиметра на полтора-два. Вставляем их в болван.

Оклеиваем болван тонкой бумагой — газетами, бумажными полотенцами, остатками писчей бумаги, используя клей ПВА. Предварительно можно нарезанную бумагу слегка размочить водой, чтобы удобнее было её выглаживать, убирая воздушные пузыри. Через три слоя бумаги оклеиваем слой бинтом или старой марлей и сутки просушиваем. Далее ещё три слоя и снова сушим. Достаточно наклеить 10-12 слоёв, что даст нам толщину корпуса около 3 мм. По центру, где будет клавиатура, можно особо не клеить.

После просушки всей конструкции, желательно в тёплом месте, вынимаем болван. Кое-где он может приклеиться к бумаге, но это не важно.

Закладные держатся крепко, поскольку при обмазке клеем и бумагой шляпки шурупов и гвоздей хорошо укрепились в «мясе» «композитного» по своей сути материала.

Прорезаем отверстия для клавиатуры и индикатора и примеряем.

Не забываем про пузичко, делаем его из 10-мм фанеры, используя в качестве ножек резиновые крышечки от медицинских пузырьков:

Накладываем первый слой шпатлёвки и ждём высыхания.

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

Блок питания размещён внутри корпуса потому что так удобнее, не нужно постоянно держать БП в розетке. Вот теперь сборка полностью закончена.

Немного поговорим о замене элементов. Разумеется, что многие из них возможно применить только как функциональный аналог, с коррекцией схемы.

КР1816ВЕ39 — КР1816ВЕ49, КА/КР1835ВЕ39/49, КМ/КР1850ВЕ39/40/49/50, либо зарубежные аналоги 80 39/ 49 , 80С39/49 , 8749 или 8050.

ПЗУ — в конструкции применено флеш-ПЗУ ёмкостью 128К, что было снято с устаревших материнских плат. Возможна установка любых ПЗУ ёмкостью от 4К, но предпочтительнее флеш-типа в связи с простотой процедуры прошивки и очистки. ПЗУ типа РФ2/РФ5 тоже возможно использовать, но файл прошивки бить пополам, да и схему подключения придётся изменять.

Читайте также:  Кормушка для индюшки своими руками

555ИР22 — 589ИР12, четыре 155ТМ2 или 555ИР23 / ИР27 (три последние с инвертором в цепи / ALE ).

555ИР27 — 555ИР23 (большее потребление по питанию), четыре 155ТМ2, две 155ТМ8 / ТМ9, 589ИР12 с инвертором в цепи записи (11-я ножка).

155ТМ8 — 155ТМ9, две 155ТМ2.

555АП6 — 555АП4, две 155ЛП8.

155ИД3 — 1533ИД3, две 155ИД4 / ИД7 плюс инвертор.

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

Если у нас индикатор с общим «плюсом», то транзисторы 8550 (КТ814) эммитером подключаем к «плюсу» питания, коллекторы — на знакоместа. Транзисторы 945 (КТ315) эммитерами на «массу», коллекторы, через токоограничивающие резисторы, к сегментам.

Именно из-за широких вариаций замены деталей автор не видит смысла проектировать печатную плату.

Обсудить конструкцию можно в следующих форумах:

Источник

Простой (?) калькулятор своими руками

Итак, пробую объяснить.

Есть необходимость сделать «калькулятор». Объясняю схему, как он должен работать. Есть поля выбора значения (1,2,3,4,5. n), есть поля, заполняемые пользователем. Есть поля, которые должны игнорироваться или работать как 0. Между полями установлены постоянные арифметические действия: умножить, сложить (кстати, тут не работает тема, насчет поле = 0, так что, лучше пусть будет неактивным, при необходимости).

Насколько сложна задача для полного новичка в программировании? Можно ли осуществить в Lazarus?

просто, можно, пробуйте

Насколько сложна задача для полного новичка в программировании?

Если знаешь ООП хотя бы на примитиве, то не сложно.

Одного ООП тут будет мало. Желательно еще бы подтянуть лямбды. Ну и конечно придется несколько вставок на асм сделать.

Желательно еще бы подтянуть лямбды.

тут я задумался

Ну и конечно придется несколько вставок на асм сделать.

А тут я понял что ты меня троллишь. А ведь почти получилось.

Ты первый начал:

ну ты понял, да?
UPD0: хотя да, согласен, «хотя бы» в моем утверждении лишнее.

Странная постановка задачи. GUI обязателен? Начни с Lex & Yacc Tutorial.

имхо, там «ООП» лишнее 🙂

1. Берем «К & R»
2. Копипастим код из конца книги
3. Прикручиваем к нему гуй
.
ПРОФИТ!

1. Берем эксель Берем supercalc
2. Правим его в хексредакторе до нескучного состояния со своими копирайтами
.
Ну ты понел

1. Берем эксель
2. Берем редактор ресурсов
3. Смотри п.2 плана Б.
.
На винфак!

в Джобса!jobs!

Зря ты анонимусов пост удалил, по делу же сказал.

ТС, что такое «установлены постоянные действия?»

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

Хоть и по делу, но опонентов всё таки уважать надо.

Я бы ресурс ставил на первое место, а не «оппонентов». Ты бы на хабр зашел да огляделся. Оппоненты нашлись понимаешь, один базворд вкинул, другой огородами отправил. Стыдно за девелопмент, товарищи.

Вот и выросло поколение?

Берём какой-нибудь реалтайм онлайн калькулятор на яваскрипте и меняем отношения межу полями.

Ну и как КНР связан с постановкой вопроса? Я бы на месте опа подумал, что звездатый дядька знает что говорит и начал бы читать. Какой будет профит по сабжу, может кто подскажет, пока он не начал?

Читайте также:  Модели кормушек для птиц своими руками

ОП, просто сегодня не твой день (ночь).

О, то, что нужно. Спасибо.

Анон, не переживай. Сам в своё время был «звезданутым», да ушёл на покой.

Если бы без красного словца — никто бы твой пост не трогал. Если же не можешь свою мысль без унижений выразить — лучше пожалуста ничего не говори. Хабры и подобное мне не пример.

Выше я уже замечал, что вопрос поставлен не ясно. ТС спросил — я ответил.

Распараллелить на працессорные ядра нужно будет.

Хабр был антипримером для лора. Посыл усвоил, приношу свои извинения за словцо. Но откровенный флуд и набор скора для токсов в девелопменте, это. Ну надеюсь ты понел, а то мне теперь нельзя.

Подвижники-сизифы, к сож., не могут без самоунижений 🙂 Отметиться в составе самолично обозначенной категории лиц — это надо уметь. «Какой профит от КНР»казалось бы, причем тут корейцы. Но профит от «K & R» — для, цитирую, «полного новичка в программировании» — он же, вроде, очевиден.

А вот и гении логики подтянулись, попетросянить и немножечко по теме, ну чисто чтоб скору добавить. Смысловой нагрузки все еще ноль. Ни наводящих вопросов, ни вводных мыслей. Читай K&R, там калькулятор, только гуй лазарувский прикрутить и всего делов. Сломали анонимуса полностью :/

А вот и гении логики подтянулись

Да куда ж вы c ЛОРа уходили-то. Впрочем ладно, что конкретно по теме предлагаете? Дать прямую ссылку на кусок какого-нибудь кода, хотя бы и на Object Pascal с лазарусом, в котором «абс. новичок в программировании» все равно поймет мало без помощи винта «A + С = П». или хотя бы РабиновичаФаронова? Это отсюда традиционно переносят в jobs (и результат без гарантий — случалось, добрые и честные люди готовые программы не могли выдать за свои — потому что не знали основ). Потому что «своими руками» без минимальных навыков может быть мучительно. Негуманно аж до бесчеловечности. Как говорил один тренер по плаванию, «не осилишь ты Азов без каких-нибудь азов». И сталкивал всех с обрыва. Sad but true.

Я все больше убеждаюсь, что пора самозабаниться.

А как мы это узнаем?

Какой такой K&R копипастим? Он на паскале кодит.

anonymous так?

ты хоть раз видел как выглядит программа с гуем без ООП? Советую посмотреть.

кстати, тут не работает тема, насчет поле = 0, так что, лучше пусть будет неактивным, при необходимости

Для умножения такое поле = 1?

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

Делается на любом ЯП любым человеком умеющим писать гуйню.

ты хоть раз видел как выглядит программа с гуем без ООП? Советую посмотреть.

Источник

Оцените статью
Своими руками