Come costruire una calcolatrice?


15

Sono un principiante in elettronica. Sto cercando di costruire una calcolatrice da zero come un semplice progetto e un hobby laterale per tenermi occupato.

Il mio obiettivo è quello di costruire una semplice calcolatrice, non una calcolatrice scientifica o grafica, anche se non mi dispiace ricevere informazioni su come farlo, solo per i calci.

C'è un buon tutorial per questo? Come dovrei iniziare?


2
C'è un kit per costruire una calcolatrice di base a 4 funzioni qui: spikenzielabs.com/Catalog/…
jwygralak67

Risposte:


26

Ecco un esempio di calcolatrice che puoi costruire senza troppe conoscenze elettroniche. È completo, sebbene l'aggiunta non sia inclusa.

Yes I'm joking, don't take this too seriously


lol. Cos'è quello? Penso di averlo visto prima, anche se non ne sono sicuro. Molto curioso di vedere se riesco a mettere una mano su una di quelle. Hai un nome o un link a uno di quelli?
Philoxopher


questo ha ispirato la mia domanda: electronics.stackexchange.com/questions/11263
markrages il

@KerxPhilo - Hahahahahahahahahahah ...... oh come cambiano i tempi.
Connor Wolf

@markrages, complimenti per la tua domanda, molto interessante :)
Philoxopher

18

Questo non è un progetto banale. Ci sono molti sotto-progetti educativi di cui preoccuparsi. Uno è pulsanti e debouncing. Un altro è scrivere caratteri su un display. C'è la decisione di come si desidera implementare questo ti interessa farlo da una grande scatola di nand gate o vuoi prendere un microcontrollore o un altro processore e scrivere software? Sei interessato a utilizzare un FPGA e fare tutti i calcoli in RTL? È necessario suddividere il problema in tali componenti e lavorare / apprendere un componente alla volta, quindi unirli insieme. Ad esempio, se il motore matematico principale è in realtà un software su un microcontrollore, un'attività includerebbe la scrittura di alcune funzioni C sul computer desktop che è possibile alimentare sequenze di tasti e caratteri di output che alla fine verranno visualizzati sul display. Un compito non banale se non l'hai mai programmato prima.

Come progetto educativo quello che farei è ottenere alcuni launchapads msp430, con meno di 5 dollari ciascuno o la scoperta della linea di valore STM32 (stm32 / arm basata non uno sull'altro) per circa 12 dollari ciascuno. Un certo numero di persone ti guiderà verso l'arduino, e questa è anche una piattaforma eccellente, ha i suoi pro e contro, non vorrei andare con esso come il mio primo microcontrollore. Acquista un semplice pannello lcd a due linee, l'LCD terrestre era un buon posto, forse vai a Sparkfun. Prendi una scheda microcontrollore agganciala al pannello LCD e impara come mettere i caratteri sul display. Vorrei quindi imparare come usare l'UART sul microcontrollore che spesso inizia con i byte di brillamento, poi riceve e riecheggia. Usa il ricevitore uart per ricevere cose da mettere sul display, quindi usa un terminale stupido (mastice, hyperterm, minicom) da un computer alimenta roba e assicurati che funzioni. Quindi prendi un altro microcontrollore, usa la tua esperienza dentro e fuori e lavora sul motore matematico di base, dal tuo computer alimentalo 0 - 9, +, -, = inizialmente aggiungi quindi moltiplica e dividi e poi virgola mobile se sei abbastanza coraggioso per quello (o avere una libreria adatta). L'output dal modulo matematico fa eco ai numeri di input e stampa i risultati quando = viene inviato, ecc. Quindi cerca di capire cosa fare con i pulsanti, trova una serie di pulsanti, li inserisce in qualche modo nel terzo microcontrollore, rimbalza e li trasforma in uart su 0 - 9, +, -, = al microcontrollore matematico. ALLORA, riduci tutto questo in un singolo microcontrollore senza le cose uart nel mezzo. usa la tua esperienza dentro e fuori e lavora sul motore matematico di base, dal tuo computer alimentalo 0 - 9, +, -, = inizialmente aggiungi quindi moltiplica e dividi e poi virgola mobile se sei abbastanza coraggioso (o hai una libreria che si adatta). L'output dal modulo matematico fa eco ai numeri di input e stampa i risultati quando = viene inviato, ecc. Quindi cerca di capire cosa fare con i pulsanti, trova una serie di pulsanti, li inserisce in qualche modo nel terzo microcontrollore, rimbalza e li trasforma in uart su 0 - 9, +, -, = al microcontrollore matematico. ALLORA, riduci tutto questo in un singolo microcontrollore senza la roba centrale nel mezzo. usa la tua esperienza dentro e fuori e lavora sul motore matematico di base, dal tuo computer alimentalo 0 - 9, +, -, = inizialmente aggiungi quindi moltiplica e dividi e poi virgola mobile se sei abbastanza coraggioso (o hai una libreria che si adatta). L'output dal modulo matematico fa eco ai numeri di input e stampa i risultati quando = viene inviato, ecc. Quindi cerca di capire cosa fare con i pulsanti, trova una serie di pulsanti, li inserisce in qualche modo nel terzo microcontrollore, rimbalza e li trasforma in uart su 0 - 9, +, -, = al microcontrollore matematico. ALLORA, riduci tutto questo in un singolo microcontrollore senza la roba centrale nel mezzo. L'output dal modulo matematico fa eco ai numeri di input e stampa i risultati quando = viene inviato, ecc. Quindi cerca di capire cosa fare con i pulsanti, trova una serie di pulsanti, li inserisce in qualche modo nel terzo microcontrollore, rimbalza e li trasforma in uart su 0 - 9, +, -, = al microcontrollore matematico. ALLORA, riduci tutto questo in un singolo microcontrollore senza le cose uart nel mezzo. L'output dal modulo matematico fa eco ai numeri di input e stampa i risultati quando = viene inviato, ecc. Quindi cerca di capire cosa fare con i pulsanti, trova una serie di pulsanti, li inserisce in qualche modo nel terzo microcontrollore, rimbalza e li trasforma in uart su 0 - 9, +, -, = al microcontrollore matematico. ALLORA, riduci tutto questo in un singolo microcontrollore senza le cose uart nel mezzo.

Un'altra alternativa è quella di ottenere una delle schede rs-232 fpga da knjn.com o dal reticolo brevia (è abbastanza grande?) O un numero di altre, quindi lavorare su ciascuno dei blocchi funzionali usando un linguaggio RTL. parti di esso saranno molto più facili rispetto alla soluzione software equivalente, alcune parti saranno un po 'più difficili di una soluzione software.

Se riesci a fornire ulteriori informazioni su ciò che stai pensando, una scatola di nand gate o una soluzione basata su microcontrollore o stavi pensando a qualcos'altro?


7

Il calcolatore elettronico più semplice che potresti costruire sarebbe un calcolatore binario a quattro funzioni. È possibile crearlo utilizzando gli switch per immettere numeri binari e gli elementi logici di base della famiglia 7400 potrebbero gestire gli additivi che gestiranno l'aggiunta. È possibile utilizzare i singoli LED per rappresentare ciascun numero binario nell'output oppure utilizzare diversi display a sette segmenti per visualizzare il numero in esadecimali. Costruire un calcolatore binario ti permetterebbe di evitare di costruire un convertitore da decimale a binario e ti aiuterebbe a familiarizzare con il funzionamento dell'elettronica digitale. Se hai intenzione di entrare nell'elettronica digitale come hobby, potresti prendere in considerazione l' idea di acquistare Logisim , un programma gratuito che ti consente di simulare i tuoi circuiti prima di costruirli.


2
Wow. Nell'era di System-on-Chip, vuoi che colleghi venti porte per cifra solo per aggiungere ? Anche il primo calcolatore portatile non lo ha fatto. I calcolatori a chip singolo esistono da trent'anni.
Ron,

Bene, potresti usare un 74181 per una porzione a 4 bit. Sarebbe più facile, se non altro.
W5VO,

1
Sì, questo potrebbe essere fatto con uno o due chip (usando un microprocessore come questo esempio ), se vuole creare la calcolatrice nel software. Forse costruire l'intero calcolatore usando componenti discreti richiederebbe troppo tempo, ma se vuole entrare nell'hardware, un calcolatore binario potrebbe essere un buon punto di partenza.
inventoreM

Questa è in realtà una buona idea, per ottenere una corretta comprensione della matematica dei bit binari. Ho fatto un progetto per mezzo addizionatore con mia figlia di 12 anni, mentre eravamo a corto di spazio su una breadboard - ha continuato a "costruirlo" praticamente in Minecraft. Ha "capito" il concetto di cancelli e aggiunta di pezzi, che era il punto.
Ron J.

Per quello che vale, i calcolatori (di solito) non funzionano internamente in binario e convertono, funzionano direttamente in BCD. Una slice a quattro bit è abbastanza di una ALU (in effetti era il lavoro originale di Intel 4004).
Spehro Pefhany,

6

Ecco come l'ho fatto.

Scegli i componenti:

Input Device(Tastiera 4x4 nel mio caso. 10 tasti per i numeri, 4 per gli operatori, uno per '=' e uno per 'reset / aggiorna')

Processor(AVR a 8 bit)

Output device(LCD 16x2)

Power supply(Regolatore LM7805 con batteria da 9 volt)

BreadBoard(crea PCB dopo che inizia a funzionare)

Ho scelto di programmare in assemblea (per imparare), questione di scelta personale. Ho usato AVR Studio 4 come IDE e un programmatore "ISP" basato su lpt fatto in casa per il flashing di hex in AVR.

poi ho scritto i driver per LCD e tastiera. Quando sono stato in grado di accettare input e produrre output, ho iniziato ad analizzare numeri decimali e operatori, quindi ho analizzato le espressioni e letto i metodi Infix, Postfix e Prefix . Ho svolto il mio lavoro nell'assemblaggio, quindi non c'era "supporto del tipo di dati FLOAT" e ho finito per implementare il mio tipo di dati personalizzato (tipo di dati basato su BCD per mantenere la precisione decimale a 15 cifre, tuttavia è stato un enorme spreco di RAM!).

Tutto fatto e Voila .. la mia calcolatrice era pronta (l'ho chiamata BUB!).

Il mio funzionava a 1MHz ed era in grado di battere casio_991MS (in termini di precisione decimale, moltiplicazione e divisione).

Spero che questo aiuti gli altri.


5

È possibile utilizzare un kit di sviluppo con tutto ciò che è già sulla scheda per consentire all'utente di concentrarsi sul software. Ad esempio http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001 questo kit ha PIC, LCD e alcuni pulsanti. Ci sono molte intestazioni per aggiungere pulsanti aggiuntivi. L'unico inconveniente è che il display LCD è più grande di quanto potresti voler utilizzare inizialmente ma sicuramente ti farà iniziare.

Se cerchi in giro potresti essere in grado di trovare quelli più piccoli (e più economici) su cui puoi iniziare.

L'uso di un kit come questo renderà più facile iniziare a scrivere il codice in quanto saranno alcuni esempi e rimuoverà il problema dei problemi hardware poiché è impostato correttamente. Un altro svantaggio è che questo kit utilizza le immagini di fascia alta che sono eccessive per un progetto di calcolatrice, ma ti dà spazio per crescere e modificarlo in futuro per fare altre attività. Ti darà anche schemi da utilizzare come punto di partenza per creare le tue schede in futuro.


5

Sul mio scaffale ho "Calcolatrici elettroniche" di H. Edward Roberts, a cura di Forrest M. Mims III. 1974.

E 'piuttosto educativo su come le persone utilizzate per calcolatrici costruire nel 1974. Molte foto sono del ciclo di vita di un MITS calcolatrice prodotto in serie - foto della prototipazione (un gran casino di spaghetti di cavi), la progettazione di PCB (posa Rubylith su un tavolo da disegno), singole parti, catena di montaggio, saldatrice ad onda e risoluzione dei problemi.

Ah, molte cose sono cambiate da allora. I libri di oggi di solito evitano di mostrare grandi pasticcio di fili di spaghetti. I calcolatori odierni evitano di applicare la tensione di rete direttamente sulla scheda del calcolatore.

Molte cose sono sempre le stesse. Di solito, durante la prototipazione, le persone continuano a creare un grosso pasticcio di spaghetti.


3

Bene, per cominciare, dovresti pensare ai componenti principali di cui avrai bisogno. Probabilmente avrai bisogno di un microcontrollore, una tastiera e uno schermo LCD. Una volta scelti quei componenti, dovrebbe essere semplice come sviluppare il firmware.


Ulteriori dettagli che potresti fornire, ricorda che sono un principiante assoluto quando si tratta di costruire elettronica e voglio prendere questa sfida come la mia prima. Con le informazioni che hai fornito sopra, è un ottimo inizio, tuttavia non so di quale microcontrollore avrei bisogno. Inoltre, come sviluppare un firmware? Scrivi il firmware in C e lo carica sul firmware o devi scriverlo in ASM?
Philoxopher

potresti anche fornire un buon sito Web che vende apparecchiature elettroniche a un prezzo molto conveniente per gli appassionati? Apprezzo il tuo supporto!
Philoxopher

I due principali microcontrollori hobbisti sono il PIC e l'AVR. Esistono compilatori C per entrambi questi dispositivi. Un semplice microcontrollore funzionerà per il tuo progetto, purché abbia abbastanza pin di Input / Output per interfacciarsi con la tastiera e il display LCD. Un buon sito web per elettronica hobbistica sarebbe SparkFun
Ryan

2
@KerxPhilo: Sì, la maggior parte delle persone del sistema embedded scrive il firmware in C. Ladyada ha buoni tutorial su come scrivere il firmware in C e caricarlo su un microcontrollore , nonché tutorial su come collegare un LCD e visualizzare cose su di esso .
David

3

Credo che questo possa essere un buon primo progetto di apprendimento, ma non è banale e dovrai imparare un po 'lungo la strada, oltre ad essere paziente in quanto il progetto include un certo numero di sottoprogetti da affrontare lungo il modo.

Il primo ostacolo progettuale che devi decidere è a quale livello di tecnologia desideri farlo? Con o senza un microcontrollore (un microprocessore ampiamente autosufficiente), logica discreta (ad esempio porte AND, OR, NOR e infradito) con / senza unità aritmetiche (ALU), logica programmabile (CPLD, FPGA), qualcos'altro non è menzionato o considerato. Questo dovrebbe essere innanzitutto sulla tecnologia utilizzata per eseguire i calcoli, i controlli di input / output sono decisioni secondarie (display a sette segmenti a LED, pannello LCD) per lo più influenzati dall'estetica o dai costi.

Un punto di partenza potenzialmente utile per conoscere il calcolo digitale è il libro molto accessibile, How Computers Do Math (ISBN: 0471732788) del bizzarro Clive Maxfield. Questo è scritto a livello "soft" - di programmazione o logico, che dovrai comprendere per poter effettivamente eseguire i calcoli.

Qualcun altro ha citato il progetto uWatch (- micro-Watch ) come esempio, e ci sono riferimenti su Internet a ingegneri elettrici (o studenti EE) che hanno costruito la propria calcolatrice negli anni '70. Ci sono anche alcuni dettagli sulla costruzione di una calcolatrice basata su FPGA (programmable logic device) .

Per un principiante totale nell'elettronica (o nell'elettronica digitale) suggerirei di utilizzare un micrcontrollore come punto di partenza nella progettazione, consultare il sito Web del libro citato per avere un'idea della complessità della programmazione (non molto se si ha esperienza di programmazione) per il microcontrollore e vai da lì.



0

Requisiti hardware

  • Una tastiera per l'input dell'utente
  • Un display LCD per la visualizzazione di ingresso ed il suo risultato
    in un prodotto vero e calcolatrice, è necessario un LCD personalizzato per la visualizzazione dei caratteri speciali come il =, -e M(per MC , MR e MS segni operazioni). Un design LCD personalizzato costa fino a 3000 $, ma poi gli LCD progettati su misura diventano più economici rispetto agli altri scopi generici. Poiché il tuo progetto è solo per hobby, ti suggerisco di utilizzare un LCD per uso generico, con un controller KS0108.
  • Un microcontrollore molto economico e privo di funzionalità
    Hai bisogno di un controller di base poiché eseguirai compiti molto semplici. È possibile utilizzare un microcontrollore PIC economico.

Passaggi di progettazione

  • Guida il tuo LCD
    Gestisci la guida del tuo LCD. Scrivi alcune cifre su di esso. Scrivi un'interfaccia software per questo.
  • Prova la tua tastiera
    Fai gli stessi passi che hai fatto con il display LCD. Assicurati di avere il controllo del software sulla tastiera.
  • Scrivi gli algoritmi che eseguono le operazioni aritmetiche
    Se usi un microcontrollore che può moltiplicarsi e dividere, non è necessario eseguire tali operazioni da solo; ma devi pagare di più per il microcontrollore, d'altra parte, impari di meno e acquisisci meno esperienza durante il tuo progetto.

Se si desidera aggiungere funzionalità aritmetiche più avanzate (come il rooting quadrato, il calcolo seno / coseno, ecc.) È necessario implementare algoritmi di calcolo pertinenti utilizzando il metodo di Newton o l' espansione in serie di Taylor .

Altrimenti, deve essere un progetto semplice. La tua sfida principale sarà guidare il tuo LCD e la tastiera, se non hai molta esperienza con prima.


A seconda del proprio livello di ambizione, si potrebbero usare alcuni registri a scorrimento e una logica un po 'discreta, insieme a una "ROM" (probabilmente EPROM o flash parallelo), per costruire un microcontrollore molto grezzo. Un semplice calcolatore potrebbe essere possibile utilizzando 20 chip o meno, esp. se si usa una ROM abbastanza grande. Un'istruzione tipica sarebbe "uscita X sul registro a scorrimento 1, Y sul registro a scorrimento 2, impostare lo strobo di uscita su Z, quindi recuperare l'istruzione successiva dall'indirizzo formato concatenando i valori di alcuni registri sulla costante A".
supercat

Uno non avrebbe bisogno di alcun circuito per eseguire l'aggiunta di BCD - tutto ciò potrebbe essere gestito all'interno del codice. Se uno ha due registri a scorrimento controllabili separatamente, farli avanzare secondo necessità in modo che gli operandi di origine e di destinazione siano allineati, quindi utilizzare quattro istruzioni per mettere la CPU in uno dei 20 stati in base ai valori di quattro bit presi da ciascun valore; le successive quattro istruzioni possono prendere i successivi quattro bit da ciascun registro a scorrimento mentre ne sovrascrivono uno con i primi quattro bit del risultato calcolato.
supercat

Discuterei il requisito "LCD personalizzato". I display LCD della calcolatrice danno l'impressione di essere prodotti di base con solo poche variazioni: tonalità del pad, semplice o scientifica (che di solito implica 8 vs 10 cifre). All'interno di una determinata selezione di quanto sopra, ci saranno dozzine se non centinaia di elementi funzionalmente equivalenti, anche se differiscono leggermente per dimensioni o stile del carattere.
Chris Stratton,

@ChrisStratton: se si desidera un display a 8 cifre senza segnalatori, sono disponibili parti standard che soddisfano tale descrizione. Non credo di aver visto display pronti all'uso che sarebbero funzionalmente equivalenti a quelli di un normale calcolatore. Si noti che i calcolatori possono utilizzare connessioni zebra-strip, che sono più economiche dei pin da produrre, ma più difficili da lavorare in un progetto fai-da-te.
supercat

@supercat - gli LCD usati nei calcolatori economici tendono ad usare un nastro con adesivo attivato dal calore, non una striscia zebrata. E sono in gran parte articoli standard che possono essere scambiati tra le serie di produzione.
Chris Stratton,

0

Il modo più semplice per implementare una calcolatrice sarebbe probabilmente quello di utilizzare un microcontrollore. Se decidi di percorrere quella strada, il primo passo sarebbe trovare del codice per eseguire effettivamente il calcolo. È necessario un programma che accetta gli operandi e gli operatori e sputa il risultato. Questo modulo calcolatrice relativamente semplice scritto in cdovrebbe darti un'idea di ciò che è necessario. Può aggiungere, sottrarre, moltiplicare e dividere nonché alcune operazioni bit per bit e, se si utilizza la notazione polacca inversa come nei calcolatori scientifici, può risolvere le sottoespressioni tra parentesi. Quindi leggi quali pulsanti sono stati premuti, raccogli ogni "token" in un buffer convertendo le cifre in valori numerici effettivi e quindi quando ottieni il pulsante "=", dai un elenco di token a questo codice di valutazione che riduce e risolve il espressione risultante in un singolo valore.


0

Per i principianti, ecco la mia distinta base suggerita per il tuo progetto:

  • 1x scheda Arduino Uno o Leonardo, che contiene il microcontrollore richiesto
  • HD44780LCD a base 1x , come quelli onnipresenti 16x2
  • 1x tastiera a matrice 4x4

Ciò consentirà di costruire un calcolatore di base.

Per scopi più avanzati, ecco la mia distinta base suggerita:

  • 1x Arduino Mega 2560 o Arduino Due (il programma sarà grande in questo caso)
  • ST7920Display LCD a matrice 1x , che supporta sia caratteri che grafica
  • 1x Arduino USB Host shield (solo Mega 2560, Due ha la funzione host USB nativo) per tastiera

Ciò ti consentirà di costruire un elaborato calcolatore grafico come quelli della serie TI-83 Plus o TI-nSpire.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.