Como construir uma calculadora?

15

Eu sou um novato em eletrônica. Estou tentando construir uma calculadora do zero como um projeto simples e um passatempo paralelo para me manter ocupado.

Meu objetivo é construir uma calculadora simples, não científica ou gráfica, embora eu também não me importe em receber informações sobre como fazer isso, apenas para brincadeiras.

Existe um bom tutorial para isso? Como devo começar?

Philoxopher
fonte
2
Há um kit para construir uma calculadora básica de 4 funções aqui: spikenzielabs.com/Catalog/...
jwygralak67

Respostas:

26

Aqui está um exemplo de calculadora que você pode construir sem muito conhecimento em eletrônica. É cheio de recursos, embora a adição não esteja incluída.

Sim, estou brincando, não leve isso muito a sério

W5VO
fonte
ri muito. O que é isso? Acho que já vi isso antes, embora não tenha certeza. Muito curioso para ver se consigo colocar uma mão em uma delas. Você tem um nome ou um link para um desses?
Philoxopher
isso inspirou a minha pergunta: electronics.stackexchange.com/questions/11263
markrages
@KerxPhilo - Hahahahahahahahahahah ...... oh como os tempos mudam.
Connor Wolf
@markrages, parabéns para a sua pergunta, muito interessante :)
Philoxopher
18

Esse não é um projeto trivial. Existem muitos subprojetos educacionais com os quais se preocupar. Um deles é botões e rebotes. Outro é escrever caracteres em um display. Existe a decisão de como você deseja implementar isso. Você está interessado em fazê-lo a partir de uma grande caixa de portas nand ou deseja pegar um microcontrolador ou outro processador e escrever software? Você está interessado em usar um FPGA e fazer toda a matemática em RTL? Você precisa dividir o problema nesses componentes e trabalhar / aprender um componente de cada vez e depois juntá-los. Por exemplo, se o mecanismo matemático principal é realmente um software em um microcontrolador, uma tarefa incluiria escrever algumas funções C no seu computador desktop, para que você possa pressionar as teclas e caracteres de saída que serão exibidos no monitor. Uma tarefa não trivial, se você nunca programou antes.

Como um projeto educacional, o que eu faria é obter alguns blocos de ativação do msp430, menos de 5 dólares cada ou a descoberta da linha de valor STM32 (o stm32 / arm baseado um não o outro) por cerca de 12 dólares cada. Várias pessoas o guiarão em direção ao arduino, e essa é uma boa plataforma também, tem seus prós e contras, eu não o acompanharia como meu primeiro microcontrolador. Compre um painel LCD simples de duas linhas, o terra lcd costumava ser um bom lugar, talvez apenas vá ao sparkfun. Pegue uma placa de microcontrolador e conecte-a ao painel lcd e aprenda a colocar caracteres no visor. Eu aprenderia como usar o uart no microcontrolador, que geralmente começa com a saída de bytes e, posteriormente, recebendo e ecoando. Use o receptor uart para receber itens para colocar no visor e, em seguida, use um terminal estúpido (massa, hipertermia, minicom) de um material de alimentação do computador e verifique se ele funciona. Em seguida, pegue outro microcontrolador, use sua experiência de entrada e saída de uart e trabalhe no mecanismo matemático básico. No computador, alimente-o 0 - 9, +, -, = primeiro e depois adicione multiplicar e dividir e, em seguida, ponto flutuante, se você for corajoso o suficiente para isso (ou tenha uma biblioteca adequada). A saída do módulo matemático ecoaria os números de entrada e imprimiria os resultados quando = for enviado, etc. Em seguida, descubra o que fazer com os botões, encontre uma matriz de botões, alimente-os de alguma forma no terceiro microcontrolador, renuncie e faça com que se transformem em uart de 0 - 9, +, -, = para o microcontrolador matemático. ENTÃO, reduza tudo isso em um único microcontrolador sem o material de uart no meio. use sua experiência de uart in e out e trabalhe no mecanismo matemático básico; no computador, alimente-o 0 - 9, +, -, = primeiro e depois adicione multiplicar e dividir e, em seguida, ponto flutuante, se você for corajoso o suficiente para isso (ou tiver uma biblioteca que se encaixa). A saída do módulo matemático ecoaria os números de entrada e imprimiria os resultados quando = for enviado, etc. Em seguida, descubra o que fazer com os botões, encontre uma matriz de botões, alimente-os de alguma forma no terceiro microcontrolador, renuncie e faça com que se transformem em uart de 0 - 9, +, -, = para o microcontrolador matemático. ENTÃO, reduza tudo isso em um único microcontrolador sem o material de uart no meio. use sua experiência de uart in e out e trabalhe no mecanismo matemático básico; no computador, alimente-o 0 - 9, +, -, = primeiro e depois adicione multiplicar e dividir e, em seguida, ponto flutuante, se você for corajoso o suficiente para isso (ou tiver uma biblioteca que se encaixa). A saída do módulo matemático ecoaria os números de entrada e imprimiria os resultados quando = for enviado, etc. Em seguida, descubra o que fazer com os botões, encontre uma matriz de botões, alimente-os de alguma forma no terceiro microcontrolador, renuncie e faça com que se transformem em uart de 0 - 9, +, -, = para o microcontrolador matemático. ENTÃO, reduza tudo isso em um único microcontrolador sem o material de uart no meio. A saída do módulo matemático ecoaria os números de entrada e imprimiria os resultados quando = for enviado, etc. Em seguida, descubra o que fazer com os botões, encontre uma matriz de botões, alimente-os de alguma forma no terceiro microcontrolador, renuncie e faça com que se transformem em uart de 0 - 9, +, -, = para o microcontrolador matemático. ENTÃO, reduza tudo isso em um único microcontrolador sem o material de uart no meio. A saída do módulo matemático ecoaria os números de entrada e imprimiria os resultados quando = for enviado, etc. Em seguida, descubra o que fazer com os botões, encontre uma matriz de botões, alimente-os de alguma forma no terceiro microcontrolador, renuncie e faça com que se transformem em uart de 0 - 9, +, -, = para o microcontrolador matemático. ENTÃO, reduza tudo isso em um único microcontrolador sem o material de uart no meio.

Outra alternativa é obter uma das placas rs-232 fpga do knjn.com ou a malha brevia (isso é grande o suficiente?) Ou várias outras e trabalhar em cada um dos blocos funcionais usando uma linguagem RTL. partes serão muito mais fáceis do que a solução de software equivalente; algumas partes serão um pouco mais difíceis do que uma solução de software.

Se você pode fornecer mais informações sobre o que está pensando, uma caixa de soluções baseadas em nand gates ou microcontroladores ou estava pensando em outra coisa?

old_timer
fonte
7

A calculadora eletrônica mais simples que você poderia construir seria uma calculadora binária de quatro funções. Você pode construí-lo usando switches para inserir números binários, e os elementos lógicos básicos da família 7400 podem lidar com os somadores que lidam com a adição. Você pode usar LEDs individuais para representar cada número binário na saída ou usar vários displays de sete segmentos para exibir o número em hexadecimal. Construir uma calculadora binária permitiria evitar a construção de um conversor de decimal para binário e ajudaria você a se familiarizar com o funcionamento da eletrônica digital. Se você planeja entrar na eletrônica digital como hobby, considere adquirir o Logisim , um programa gratuito que permite simular seus circuitos antes de construí-los.

inventorM
fonte
2
Uau. Na era do System-on-Chip, você quer que ele ligue vinte portas por dígito apenas para adicionar ? Até a primeira calculadora portátil não fez isso. As calculadoras de chip único existem há trinta anos.
Rony
Bem, você pode usar um 74181 para uma fatia de 4 bits. Isso seria mais fácil, se nada mais.
W5VO 10/03/11
1
Sim, isso pode ser feito com um ou dois chips (usando um microprocessador como este exemplo ), se ele quiser criar a calculadora em software. Talvez construir a calculadora inteira usando componentes discretos levaria muito tempo, mas se ele quiser entrar no hardware, uma calculadora binária pode ser um bom ponto de partida.
InventorM
Essa é realmente uma boa idéia, para obter um entendimento adequado da matemática de bits binários. Eu fiz um projeto de meio-adicionador com minha filha de 12 anos, enquanto ficávamos sem espaço em uma tábua de pão - ela passou a "construí-lo" virtualmente no Minecraft. Ela "entendeu" o conceito de portões e a adição de bits, que era o ponto principal.
Ron J.
Pelo que vale a pena, calculadoras (geralmente) não funcionam internamente em binário e convertido, elas trabalham diretamente em BCD. Uma fatia de quatro bits é suficiente para uma ALU (de fato, esse era o trabalho original do Intel 4004).
Spehro Pefhany
6

Aqui está como eu fiz isso.

Escolha componentes:

Input Device(Teclado 4x4 no meu caso. 10 teclas para números, 4 para operadores, uma para '=' e uma para 'redefinir / atualizar')

Processor(AVR de 8 bits)

Output device(LCD 16x2)

Power supply(Regulador LM7805 com bateria de 9 volts)

BreadBoard(faça o PCB depois que ele começar a funcionar)

Eu escolhi programar em assembléia (para aprender), questão de escolha pessoal. Usei o AVR Studio 4 como IDE e um programador 'ISP' baseado em lpt caseiro para exibir hexadecimal no AVR.

então eu escrevi drivers para LCD e teclado. Quando consegui captar e produzir resultados, comecei a analisar números e operadores decimais, depois analisei expressões e li sobre os métodos Infix, Postfix e Prefix . Fiz meu trabalho em montagem para que não houvesse 'suporte de tipo de dados FLOAT' e acabei implementando meu tipo de dados personalizado (tipo de dados baseado em BCD para manter a precisão decimal de 15 dígitos; era um grande desperdício de RAM!).

Tudo isso feito e Voila ... minha calculadora estava pronta (eu chamei de BUB!).

A mina rodava a 1MHz e era capaz de superar o casio_991MS (em termos de precisão decimal, multiplicação e divisão).

Espero que isso ajude outros.

vvy
fonte
5

Você pode usar um kit de desenvolvimento com tudo o que já está no quadro para permitir que você se concentre no software. Por exemplo http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001 este kit possui PIC, LCD e poucos botões. Existem muitos cabeçalhos para adicionar botões adicionais. A única desvantagem é que o LCD é maior do que você pode querer usar inicialmente, mas certamente o ajudará a começar.

Se você pesquisar, poderá encontrar outros menores (e mais baratos) nos quais poderá começar.

O uso de um kit como esse facilitará o início da gravação do seu código, pois serão alguns exemplos e remove o problema de problemas de hardware, pois tudo está configurado corretamente. Outra desvantagem é que este kit usa as fotos de ponta que são um exagero para um projeto de calculadora, mas fornece espaço para você crescer e modificá-lo no futuro para realizar outras tarefas. Também fornecerá esquemas para usar como ponto de partida para criar suas próprias placas no futuro.

smashtastic
fonte
5

Na minha estante, tenho "Calculadoras Eletrônicas", de H. Edward Roberts, editado por Forrest M. Mims III. 1974.

É bastante educativo sobre como as pessoas costumavam construir calculadoras em 1974. Muitas fotos são do ciclo de vida completo de uma calculadora MITS produzida em massa - fotos da prototipagem (uma grande confusão de fios de espaguete), o design da PCB (colocando Rubylith no uma tabela de desenho), peças individuais, linha de montagem, máquina de solda por onda e solução de problemas.

Ah, muitas coisas mudaram desde então. Os livros de hoje geralmente evitam mostrar grandes bagunças de espaguete. As calculadoras de hoje evitam aplicar tensão de rede diretamente ao PCB da calculadora.

Muitas coisas ainda são as mesmas. As pessoas ainda costumam fazer uma grande bagunça de espaguete enquanto prototipam.

davidcary
fonte
3

Bem, para iniciantes, você deve pensar nos principais componentes que você precisará. Você provavelmente precisará de um microcontrolador, um teclado e uma tela LCD. Depois de escolher esses componentes, deve ser tão simples quanto desenvolver o firmware.

Ryan
fonte
Mais detalhes que você possa fornecer, lembre-se de que eu sou um novato total em construção de produtos eletrônicos, e quero aceitar esse desafio como meu primeiro. Com as informações fornecidas acima, é um ótimo começo, porém não sei de que microcontrolador eu precisaria. Além disso, como desenvolver um firmware? Você escreve o firmware em C e faz o upload para o firmware ou precisa escrevê-lo no ASM?
Philoxopher
você também poderia fornecer um bom site que venda equipamentos eletrônicos a um preço muito baixo para os entusiastas? Agradecemos seu apoio!
Filoxopher 9/03/11
Os dois principais microcontroladores amadores são o PIC e o AVR. Existem compiladores C para esses dois dispositivos. Um microcontrolador simples funcionará para o seu projeto, desde que possua pinos de entrada / saída suficientes para interagir com o teclado e o LCD. Um bom site para a eletrônica amadores seria SparkFun
Ryan
2
@KerxPhilo: Sim, a maioria das pessoas do sistema embarcado escreve o firmware em C. Ladyada tem bons tutoriais sobre como escrever firmware em C e carregá-lo em um microcontrolador , além de tutoriais sobre como conectar um LCD e exibir itens nele .
davidcary
3

Acredito que esse pode ser um bom primeiro projeto de aprendizado, mas não é trivial e você terá que aprender um pouco ao longo do caminho, além de ser paciente, pois o projeto inclui vários subprojetos para enfrentar ao longo do processo. caminho.

O primeiro obstáculo de design que você precisa decidir é em que nível de tecnologia você deseja fazer isso? Com ou sem um microcontrolador (um microprocessador amplamente auto-suficiente), lógica discreta (por exemplo, AND, OR, portas NOR e flip-flops) com / sem unidades aritméticas (ALU), lógica programável (CPLD, FPGA), outra coisa que eu não tenho não foi mencionado ou considerado. Isso deve ser o primeiro sobre a tecnologia usada para fazer os cálculos; os controles de entrada / saída são decisões secundárias (displays de sete segmentos de LED, painel LCD), principalmente influenciados pela estética ou pelo custo.

Um ponto de partida potencialmente útil para aprender sobre computação digital é o livro muito acessível, How Computers Do Math (ISBN: 0471732788), do peculiar Clive Maxfield. Isso está escrito no nível lógico ou de programação "soft", que você precisará entender para realmente fazer os cálculos.

Outra pessoa mencionou o projeto uWatch (- micro-Watch ) como exemplo, e há referências na Internet a engenheiros elétricos (ou estudantes de EE) que construíram sua própria calculadora na década de 1970. Existem também alguns detalhes sobre a construção de uma calculadora baseada em FPGA (dispositivo lógico programável) .

Para um iniciante em eletrônica (ou eletrônica digital), sugiro o uso de um microcontrolador como ponto de partida em seu design, consulte o site do livro mencionado para conhecer a complexidade da programação (não muito, se você tiver alguma experiência em programação) para o microcontrolador e vá de lá.

mctylr
fonte
0

Requisitos de hardware

  • Um teclado para entrada do usuário
  • Um LCD para exibição de entrada e seu resultado
    em um produto calculadora real, você precisa de um LCD personalizado para exibir caracteres especiais como o =, -e M(para MC , MR e MS sinais operações). Um design de LCD personalizado custa até US $ 3.000, mas os LCDs personalizados tornam-se mais econômicos que os outros de uso geral. Como seu projeto é apenas um hobby, sugiro que você use um LCD de uso geral, com um controlador KS0108.
  • Um microcontrolador muito barato e sem recursos
    Você precisa de um controlador muito básico, pois estará executando tarefas muito simples. Você pode usar um microcontrolador PIC barato.

Etapas do projeto

  • Dirija seu LCD
    Gerencie a condução do seu LCD. Escreva alguns dígitos nele. Escreva uma interface de software para ele.
  • Teste seu teclado
    Execute as mesmas etapas que você fez com o LCD. Verifique se você tem controle de software no teclado.
  • Escreva os algoritmos que executam as operações aritméticas
    Se você usa um microcontrolador que pode se multiplicar e dividir, não precisa fazer isso sozinho; mas você precisa pagar mais pelo microcontrolador, por outro lado, aprende menos e ganha menos experiência durante o seu projeto.

Se você deseja adicionar recursos aritméticos mais avançados (como enraizamento quadrado, cálculo seno / cosseno, etc.), é necessário implementar algoritmos de cálculo relevantes usando o Método de Newton ou a Expansão da Série Taylor .

Caso contrário, será um projeto simples. Seu principal desafio será dirigir o LCD e o teclado, se você não tiver muita experiência antes.

hkBattousai
fonte
Dependendo do nível de ambição de alguém, pode-se usar alguns registros de turnos e um pouco de lógica discreta, junto com uma "ROM" (provavelmente EPROM ou flash paralelo), para construir um microcontrolador muito bruto. Uma calculadora simples pode ser possível usando 20 chips ou menos, esp. se alguém usa uma ROM bastante grande. Uma instrução típica seria "saída X no registro de turno 1, Y no registro de turno 2, defina o strobe de saída como Z e, em seguida, busque a próxima instrução no endereço formado concatenando os valores de alguns registros na constante A".
Supercat 07/02
Não é necessário ter nenhum circuito para executar a adição do BCD - tudo isso pode ser tratado dentro do código. Se houver dois registradores de deslocamento controláveis ​​separadamente, avance-os conforme necessário para alinhar os operandos de origem e destino e use quatro instruções para colocar a CPU em um dos 20 estados com base nos valores de quatro bits obtidos em cada valor; as próximas quatro instruções podem receber os próximos quatro bits de cada registro de turno, substituindo um deles pelos quatro primeiros bits do resultado calculado.
30813 supercat
Eu contestaria o requisito "LCD personalizado". Os LCDs da calculadora dão a aparência de itens de commodity com apenas algumas variações - pitch pad, simples vs. científico (que geralmente implica 8 x 10 dígitos). Dentro de uma determinada seleção dos itens acima, haverá dezenas, senão centenas, de itens que são funcionalmente equivalentes, mesmo que sejam ligeiramente diferentes em dimensões ou estilo de fonte.
Chris Stratton
@ ChrisStratton: Se alguém quiser um display de 8 dígitos sem anunciadores, estão disponíveis peças prontas para uso que atendam a essa descrição. Não acho que tenha visto telas prontas para uso que seriam funcionalmente equivalentes às de uma calculadora típica. Observe que as calculadoras estão aptas a usar conexões com tira de zebra, que são mais baratas que os pinos de fabricação, mas mais difíceis de trabalhar em um projeto de bricolage.
11123 supercat
@supercat - os LCDs usados ​​em calculadoras baratas tendem a usar uma fita com adesivo ativado pelo calor, não uma tira de zebra. E são em grande parte itens padrão de prateleira que podem ser trocados entre as manufaturas.
22813 Chris Stratton
0

A maneira mais fácil de implementar uma calculadora provavelmente seria usar um microcontrolador. Se você decidir seguir esse caminho, o primeiro passo seria encontrar algum código para realmente fazer o cálculo. Você precisa de um programa que aceite operandos e operadores e divulgue o resultado. Este módulo de calculadora relativamente simples, escrito em cdeve dar uma idéia do que é necessário. Ele pode adicionar, subtrair, multiplicar e dividir, além de algumas operações bit a bit e, se você usar a notação polonesa reversa como nas calculadoras científicas, poderá resolver subexpressões entre parênteses. Para ler os botões pressionados, coletar cada "token" em um buffer, convertendo qualquer dígito em valores numéricos reais e, quando você obtiver o botão "=", alimentará a lista de tokens para esse código de avaliação que reduz e resolve o problema. expressão resultando em um único valor.

squarewav
fonte
0

Para iniciantes, aqui está minha lista técnica sugerida para o seu projeto:

  • 1x placa Arduino Uno ou Leonardo, que possui o microcontrolador necessário
  • HD44780LCD baseado em 1x , como os onipresentes 16x2
  • 1x teclado matricial 4x4

Isso permitirá que uma calculadora básica seja construída.

Para propósitos mais avançados, aqui está minha lista técnica sugerida:

  • 1x Arduino Mega 2560 ou Arduino Due (o programa será grande neste caso)
  • ST7920LCD de matriz baseado em 1x , que suporta caracteres e gráficos
  • 1x blindagem de host USB do Arduino (apenas Mega 2560, devido ao recurso de host USB nativo) para teclado

Isso permitirá que você crie uma calculadora gráfica elaborada, como as séries TI-83 Plus ou TI-nSpire.

Maxthon Chan
fonte