Bagaimana cara membangun kalkulator?

15

Saya seorang pemula di bidang elektronik. Saya mencoba membangun kalkulator dari awal sebagai proyek sederhana dan hobi sampingan untuk membuat saya sibuk.

Tujuan saya adalah membuat kalkulator sederhana, bukan kalkulator ilmiah atau grafik, walaupun saya juga tidak keberatan menerima informasi tentang cara melakukannya, hanya untuk iseng.

Apakah ada tutorial yang bagus untuk ini? Bagaimana saya memulai?

Filsuf
sumber
2
Ada kit untuk membangun kalkulator 4-fungsi dasar di sini: spikenzielabs.com/Catalog/…
jwygralak67

Jawaban:

26

Berikut adalah contoh kalkulator yang dapat Anda buat tanpa terlalu banyak pengetahuan elektronik. Ini fitur lengkap, meskipun tambahan tidak termasuk.

Ya saya bercanda, jangan menganggap ini terlalu serius

W5VO
sumber
lol. Apa itu? Saya pikir saya pernah melihatnya sebelumnya, meskipun saya tidak yakin. Sangat ingin tahu apakah saya bisa mendapatkan salah satu dari itu. Apakah Anda memiliki nama atau tautan ke salah satunya?
Philoxopher
ini mengilhami pertanyaan saya: electronics.stackexchange.com/questions/11263
markrages
@KerxPhilo - Hahahahahahahahahahahah ...... oh bagaimana kali berubah.
Connor Wolf
@markrages, pujian untuk pertanyaan Anda, sangat menarik :)
Philoxopher
18

Itu bukan proyek sepele. Ada banyak sub proyek pendidikan yang perlu dikhawatirkan. Salah satunya adalah tombol dan debouncing. Lain adalah menulis karakter ke layar. Ada keputusan bagaimana Anda ingin mengimplementasikan ini, apakah Anda tertarik membuatnya dari kotak besar gerbang nand atau ingin mengambil mikrokontroler atau prosesor lain dan menulis perangkat lunak? Apakah Anda tertarik menggunakan FPGA dan melakukan semua matematika di RTL? Anda perlu memecah masalah menjadi komponen-komponen itu dan mengerjakan / mempelajari satu komponen pada satu waktu dan kemudian bergabung bersama-sama. Sebagai contoh jika mesin inti matematika sebenarnya perangkat lunak pada mikrokontroler, satu tugas akan mencakup menulis beberapa fungsi C pada komputer desktop Anda yang dapat Anda beri makan penekanan tombol dan karakter output yang pada akhirnya akan pergi ke layar. Tugas non-sepele jika Anda belum pernah diprogram sebelumnya.

Sebagai proyek pendidikan yang akan saya lakukan adalah mendapatkan beberapa launchapads msp430, masing-masing di bawah 5 dolar atau Penemuan garis nilai STM32 (yang berbasis stm32 / lengan bukan yang lain) masing-masing sekitar 12 dolar. Sejumlah orang akan mengarahkan Anda ke Arduino, dan itu adalah platform yang baik juga, ia memiliki pro dan kontra, saya tidak akan pergi dengan itu sebagai mikrokontroler pertama saya. Beli panel dua baris lcd sederhana, lcd bumi dulu tempat yang baik, mungkin hanya pergi ke sparkfun. Ambil satu papan mikrokontroler yang dihubungkan ke panel lcd dan pelajari cara meletakkan karakter di layar. Saya kemudian akan belajar bagaimana menggunakan uart pada mikrokontroler yang sering dimulai dengan blasting byte, kemudian menerima dan menggemakan. Gunakan penerima uart untuk menerima barang-barang untuk dipajang di layar kemudian menggunakan terminal bisu (dempul, hyperterm, minicom) dari feed komputer dan pastikan itu berfungsi. Selanjutnya, ambil mikrokontroler lain, gunakan pengalaman masuk dan keluar uart Anda dan kerjakan mesin core matematika, dari komputer Anda masukkan 0 - 9, +, -, = pada awalnya lalu tambahkan multiply dan bagi dan kemudian floating point jika Anda cukup berani untuk itu (atau punya perpustakaan yang cocok). Output dari modul matematika akan menggemakan angka input dan mencetak hasil ketika = dikirim, dll. Kemudian mencari tahu apa yang harus dilakukan dengan tombol, menemukan array tombol, memberi makan mereka ke dalam mikrokontroler ketiga entah bagaimana, melonggarkan, dan mengubahnya menjadi mulai dari 0 - 9, +, -, = ke mikrokontroler matematika. MAKA, kurangi semua ini menjadi satu mikrokontroler tanpa benda-benda uart di tengah. gunakan pengalaman masuk dan keluar uart Anda dan bekerja pada mesin matematika inti, dari komputer Anda berikan 0 - 9, +, -, = pada awalnya kemudian tambahkan multiply dan bagi dan kemudian floating point jika Anda cukup berani untuk itu (atau memiliki perpustakaan yang cocok). Output dari modul matematika akan menggemakan angka input dan mencetak hasil ketika = dikirim, dll. Kemudian mencari tahu apa yang harus dilakukan dengan tombol, menemukan array tombol, memberi makan mereka ke dalam mikrokontroler ketiga entah bagaimana, melonggarkan, dan mengubahnya menjadi mulai dari 0 - 9, +, -, = ke mikrokontroler matematika. MAKA, kurangi semua ini menjadi satu mikrokontroler tanpa benda-benda uart di tengah. gunakan pengalaman masuk dan keluar uart Anda dan bekerja pada mesin matematika inti, dari komputer Anda berikan 0 - 9, +, -, = pada awalnya kemudian tambahkan multiply dan bagi dan kemudian floating point jika Anda cukup berani untuk itu (atau memiliki perpustakaan yang cocok). Output dari modul matematika akan menggemakan angka input dan mencetak hasil ketika = dikirim, dll. Kemudian mencari tahu apa yang harus dilakukan dengan tombol, menemukan array tombol, memberi makan mereka ke dalam mikrokontroler ketiga entah bagaimana, melonggarkan, dan mengubahnya menjadi mulai dari 0 - 9, +, -, = ke mikrokontroler matematika. MAKA, kurangi semua ini menjadi satu mikrokontroler tanpa benda-benda uart di tengah. Output dari modul matematika akan menggemakan angka input dan mencetak hasil ketika = dikirim, dll. Kemudian mencari tahu apa yang harus dilakukan dengan tombol, menemukan array tombol, memberi makan mereka ke dalam mikrokontroler ketiga entah bagaimana, melonggarkan, dan mengubahnya menjadi mulai dari 0 - 9, +, -, = ke mikrokontroler matematika. MAKA, kurangi semua ini menjadi satu mikrokontroler tanpa benda-benda uart di tengah. Keluaran dari modul matematika akan menggemakan nomor input dan mencetak hasil ketika = dikirim, dll. Kemudian mencari tahu apa yang harus dilakukan dengan tombol, menemukan array tombol, memberi makan mereka ke dalam mikrokontroler ketiga entah bagaimana, melonggarkan, dan mengubahnya menjadi mulai dari 0 - 9, +, -, = ke mikrokontroler matematika. LALU, kurangi semua ini menjadi satu mikrokontroler tanpa benda-benda uart di tengah.

Alternatif lain adalah untuk mendapatkan salah satu papan fpga rs-232 dari knjn.com atau lattice brevia (apakah itu cukup besar?) Atau sejumlah lainnya, kemudian bekerja pada masing-masing blok fungsional menggunakan bahasa RTL. bagian dari itu akan jauh lebih mudah daripada solusi perangkat lunak yang setara, beberapa bagian akan sedikit lebih sulit daripada solusi perangkat lunak.

Jika Anda dapat memberikan informasi lebih lanjut tentang apa yang Anda pikirkan, sekotak gerbang nand atau solusi berbasis mikrokontroler atau apakah Anda memikirkan sesuatu yang lain?

old_timer
sumber
7

Kalkulator elektronik paling sederhana yang bisa Anda buat adalah kalkulator biner empat fungsi. Anda bisa membangunnya menggunakan switch untuk memasukkan angka biner, dan 7400 elemen logika dasar keluarga dapat menangani adders yang akan menangani penambahan. Anda dapat menggunakan masing-masing LED untuk mewakili setiap nomor biner dalam output, atau Anda dapat menggunakan beberapa tampilan tujuh-segmen untuk menampilkan nomor dalam heksadesimal. Membangun kalkulator biner akan memungkinkan Anda menghindari membangun konverter desimal ke biner, dan akan membantu Anda membiasakan diri dengan cara kerja elektronik digital. Jika Anda berencana untuk masuk ke elektronik digital sebagai hobi, Anda mungkin ingin mempertimbangkan untuk mendapatkan Logisim , sebuah program gratis yang memungkinkan Anda untuk mensimulasikan sirkuit Anda sebelum membangunnya.

penemuM
sumber
2
Wow. Di zaman System-on-Chip, Anda ingin dia memasang dua puluh gerbang per digit hanya untuk menambah ? Bahkan kalkulator genggam pertama tidak melakukan itu. Kalkulator chip tunggal telah ada selama tiga puluh tahun.
Ron
Nah, Anda bisa menggunakan 74181 untuk irisan 4-bit. Itu akan lebih mudah, jika tidak ada yang lain.
W5VO
1
Ya, ini bisa dilakukan dengan satu atau dua chip (menggunakan mikroprosesor seperti contoh ini ), jika dia ingin membuat kalkulator dalam perangkat lunak. Mungkin membangun seluruh kalkulator menggunakan komponen diskrit akan memakan waktu terlalu banyak, tetapi jika dia ingin masuk ke perangkat keras, kalkulator biner mungkin merupakan titik awal yang baik.
inventorM
Ini sebenarnya ide yang bagus, untuk mendapatkan pemahaman yang tepat tentang matematika bit biner. Saya melakukan proyek setengah-penambah dengan putri saya yang berusia 12 tahun, sementara kami kehabisan kamar di atas papan tempat memotong roti - dia melanjutkan untuk "membangunnya" di Minecraft. Dia "mendapat" konsep gerbang dan menambahkan bit, yang merupakan intinya.
Ron J.
Untuk apa nilainya, kalkulator (biasanya) tidak bekerja secara internal dalam biner dan mengkonversi, mereka bekerja secara langsung dalam BCD. Sepotong empat bit sudah cukup untuk ALU (sebenarnya itu adalah pekerjaan asli Intel 4004).
Spehro Pefhany
6

Inilah cara saya melakukannya.

Pilih komponen:

Input Device(Keypad 4x4 dalam kasus saya. 10 tombol untuk angka, 4 untuk operator, satu untuk '=', dan satu untuk 'reset / refresh')

Processor(AVR 8-bit)

Output device(LCD 16x2)

Power supply(LM7805 regulator dengan baterai 9volt)

BreadBoard(buat PCB setelah mulai bekerja)

Saya memilih untuk program dalam pertemuan (untuk belajar), masalah pilihan pribadi. Saya menggunakan AVR Studio 4 sebagai IDE dan programmer 'ISP' berbasis home-baked untuk mem-flash hex ke AVR.

kemudian saya menulis driver untuk LCD dan keypad. Ketika dapat mengambil input dan menghasilkan output, mulai parsing dalam angka dan operator desimal, kemudian saya mem-parsing ekspresi dan membaca tentang metode Infix, Postfix, dan Prefix . Saya melakukan pekerjaan saya dalam perakitan sehingga tidak ada 'dukungan datatype FLOAT' dan saya akhirnya menerapkan tipe data kustom saya (tipe data BCD untuk mempertahankan presisi desimal 15 digit itu adalah pemborosan besar pada RAM!).

Semua ini dilakukan dan Voila .. kalkulator saya sudah siap (saya beri nama BUB!).

Milik saya berlari @ 1MHz dan mampu mengalahkan casio_991MS (dalam hal presisi desimal dan perkalian dan pembagian).

Saya harap ini membantu orang lain.

iri
sumber
5

Anda dapat menggunakan kit pengembangan dengan semua yang sudah ada di papan untuk memungkinkan Anda untuk fokus pada perangkat lunak. Misalnya http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001 kit ini memiliki PIC, LCD, dan beberapa tombol. Ada banyak tajuk untuk menambahkan tombol tambahan. Satu kekurangannya adalah LCD lebih besar dari yang Anda mungkin ingin gunakan pada awalnya tetapi pasti akan membantu Anda memulai.

Jika Anda mencari di sekitar Anda mungkin dapat menemukan yang lebih kecil (dan lebih murah) yang dapat Anda mulai.

Menggunakan kit seperti ini akan membuatnya lebih mudah untuk mulai menulis kode Anda karena mereka akan menjadi beberapa contoh, dan menghilangkan masalah masalah perangkat keras karena semuanya diatur dengan benar. Kelemahan lain adalah kit ini menggunakan gambar high-end yang berlebihan untuk proyek kalkulator, tapi itu memberi Anda ruang untuk tumbuh dan memodifikasi di masa depan untuk melakukan tugas-tugas lain. Ini juga akan memberi Anda skema untuk digunakan sebagai titik awal untuk membuat papan Anda sendiri di masa depan.

smashtastic
sumber
5

Di rak saya, saya memiliki "Kalkulator Elektronik" oleh H. Edward Roberts, diedit oleh Forrest M. Mims III. 1974.

Ini cukup mendidik tentang bagaimana orang-orang menggunakannya untuk membangun kalkulator pada tahun 1974. Banyak foto dari siklus hidup lengkap kalkulator MITS yang diproduksi secara massal - foto-foto prototyping (kekacauan kabel spaghetti besar), desain PCB (meletakkan Rubylith di atas tabel penyusunan), bagian individual, jalur perakitan, mesin gelombang solder, dan pemecahan masalah.

Ah, banyak hal telah berubah sejak saat itu. Buku-buku hari ini biasanya menghindari menunjukkan kekacauan besar kabel spaghetti. Kalkulator hari ini menghindari menerapkan tegangan listrik langsung ke PCB kalkulator.

Banyak hal yang masih sama. Orang-orang biasanya masih membuat kabel spaghetti besar berantakan saat melakukan prototipe.

davidcary
sumber
3

Sebagai permulaan, Anda harus memikirkan komponen utama yang akan Anda butuhkan. Anda mungkin perlu mikrokontroler, keypad, dan layar LCD. Setelah Anda memilih komponen-komponen itu, seharusnya semudah mengembangkan firmware.

Ryan
sumber
Ada lebih banyak detail yang bisa Anda berikan, ingat saya benar-benar pemula dalam hal membangun elektronik, dan saya ingin mengambil tantangan ini sebagai yang pertama. Dengan informasi yang Anda berikan di atas, ini adalah awal yang baik, tetapi saya tidak tahu apa yang akan saya butuhkan mikrokontroler. Juga, bagaimana cara mengembangkan firmware? Apakah Anda menulis firmware dalam C dan mengunggahnya ke firmware, atau Anda harus menulisnya dalam ASM?
Philoxopher
juga bisakah Anda memberikan situs web yang bagus yang menjual peralatan elektronik dengan harga yang sangat murah untuk para penggemar? Menghargai dukungan Anda!
Philoxopher
Dua mikrokontroler penghobi utama adalah PIC, dan AVR. Ada kompiler C untuk kedua perangkat ini. Mikrokontroler sederhana akan berfungsi untuk proyek Anda, asalkan memiliki cukup pin Input / Output untuk berinteraksi dengan keypad dan LCD Anda. Situs web yang bagus untuk elektronik penggemar adalah SparkFun
Ryan
2
@ KerxPhilo: Ya, sebagian besar orang yang menggunakan sistem embedded menulis firmware dalam C. Ladyada memiliki tutorial yang baik tentang cara menulis firmware dalam C dan mengunggahnya ke mikrokontroler serta tutorial tentang menghubungkan LCD dan menampilkan barang-barang di dalamnya .
davidcary
3

Saya percaya ini bisa menjadi proyek pembelajaran pertama yang baik, tetapi ini tidak sepele, dan Anda harus belajar cukup banyak di sepanjang jalan, juga bersabar karena proyek ini mencakup sejumlah sub-proyek untuk menangani sepanjang cara.

Rintangan desain pertama yang perlu Anda putuskan adalah pada level teknologi apa Anda ingin melakukan ini? Dengan atau tanpa mikrokontroler (mikroprosesor yang sebagian besar swasembada), logika diskrit (mis. AND, ATAU, gerbang NOR dan sandal jepit) dengan / tanpa unit aritmatika (ALU), logika yang dapat diprogram (CPLD, FPGA), sesuatu yang lain yang saya singgahi tidak disebutkan atau dipertimbangkan. Ini harus menjadi yang pertama tentang teknologi yang digunakan untuk melakukan perhitungan, kontrol input / output adalah keputusan sekunder (tampilan tujuh segmen LED, panel LCD) yang sebagian besar dipengaruhi oleh estetika atau biaya.

Salah satu tempat awal yang berpotensi bermanfaat untuk belajar tentang komputasi digital adalah buku yang sangat mudah diakses, How Computers Do Math (ISBN: 0471732788) oleh Clive Maxfield yang unik. Ini ditulis di "lunak" - pemrograman atau tingkat logis, yang perlu Anda pahami untuk benar-benar melakukan perhitungan.

Orang lain menyebut proyek uWatch (- micro-Watch ) sebagai contoh, dan ada referensi di internet untuk insinyur listrik (atau siswa EE) yang membuat kalkulator sendiri di tahun 1970-an. Ada juga beberapa detail tentang cara membangun kalkulator berbasis FPGA (programmable logic) .

Untuk pemula total elektronik (atau elektronik digital) saya sarankan menggunakan mikrokontroler sebagai titik awal dalam desain Anda, lihat situs web buku yang disebutkan untuk merasakan kompleksitas dalam pemrograman (tidak banyak jika Anda memiliki pengalaman pemrograman) untuk mikrokontroler dan pergi dari sana.

mctylr
sumber
0

Persyaratan Perangkat Keras

  • Papan tombol untuk input pengguna
  • LCD untuk menampilkan input dan hasilnya
    Dalam produk kalkulator nyata, Anda memerlukan LCD khusus untuk menampilkan karakter khusus seperti =, -dan M(untuk operasi MC , MR dan MS ) tanda-tanda. Desain LCD khusus berharga hingga $ 3000, tetapi kemudian LCD yang dirancang khusus menjadi lebih ekonomis daripada yang untuk keperluan umum lainnya. Karena proyek Anda hanya untuk hobi, saya sarankan Anda menggunakan LCD tujuan umum, dengan pengontrol KS0108.
  • Mikrokontroler yang sangat murah dan tidak berfitur
    Anda memerlukan pengontrol yang sangat mendasar karena Anda akan melakukan tugas yang sangat sederhana. Anda dapat menggunakan mikrokontroler PIC murah.

Langkah-langkah desain

  • Drive LCD Anda
    Kelola mengemudi LCD Anda. Tuliskan beberapa digit di atasnya. Tulis antarmuka perangkat lunak untuknya.
  • Tes keypad Anda
    Lakukan langkah yang sama dengan yang Anda lakukan dengan LCD. Pastikan Anda memiliki kontrol perangkat lunak pada bantalan tombol Anda.
  • Menulis algoritma yang melakukan operasi aritmatika.
    Jika Anda menggunakan mikrokontroler yang dapat berkembang biak dan membelah, Anda tidak perlu melakukan operasi itu sendiri; tetapi Anda harus membayar lebih untuk mikrokontroler, di sisi lain, Anda belajar lebih sedikit dan mendapatkan lebih sedikit pengalaman selama proyek Anda.

Jika Anda ingin menambahkan fitur aritmatika yang lebih canggih, (seperti rooting kuadrat, penghitungan sinus / kosinus, dll.) Anda perlu mengimplementasikan algoritma penghitungan yang relevan menggunakan Metode Newton atau Taylor Series Expansion .

Kalau tidak, itu akan menjadi proyek sederhana. Tantangan utama Anda adalah dengan mengemudikan LCD dan keypad Anda, jika Anda tidak memiliki banyak pengalaman sebelumnya.

hkBattousai
sumber
Bergantung pada tingkat ambisi seseorang, seseorang dapat menggunakan beberapa register geser dan sedikit logika diskrit, bersama dengan "ROM" (mungkin EPROM atau flash paralel), untuk membangun mikrokontroler yang sangat kasar. Kalkulator sederhana dimungkinkan menggunakan 20 chip atau kurang, khususnya. jika seseorang menggunakan ROM yang cukup besar. Instruksi tipikal adalah "output X pada register geser 1, Y pada register geser 2, atur output strobo ke Z, dan kemudian ambil instruksi berikutnya dari alamat yang dibentuk dengan menggabungkan nilai beberapa register ke konstanta A".
supercat
Seseorang tidak perlu memiliki sirkuit untuk melakukan penambahan BCD - yang semuanya bisa ditangani dalam kode. Jika seseorang memiliki dua register geser yang dapat dikontrol secara terpisah, tingkatkan mereka sesuai kebutuhan sehingga operan sumber dan tujuan berbaris, dan kemudian gunakan empat instruksi untuk menempatkan CPU ke dalam salah satu dari 20 status berdasarkan pada nilai empat bit yang diambil dari setiap nilai; empat instruksi selanjutnya dapat mengambil empat bit berikutnya dari setiap register shift sambil menimpa salah satu dari mereka dengan empat bit pertama dari hasil yang dihitung.
supercat
Saya akan membantah persyaratan "LCD kustom". LCD Kalkulator memberikan setiap penampilan sebagai barang komoditas dengan hanya beberapa variasi - pad pitch, sederhana vs ilmiah (yang biasanya menyiratkan 8 vs 10 digit). Dalam pilihan yang diberikan di atas, akan ada puluhan jika tidak ratusan item yang secara fungsional setara, bahkan jika mereka sedikit berbeda dalam dimensi atau gaya font.
Chris Stratton
@ ChrisStratton: Jika seseorang menginginkan tampilan 8-digit tanpa pemberi sinyal, tersedia bagian yang tidak tersedia yang akan memenuhi deskripsi itu. Saya tidak berpikir saya telah melihat display di luar rak yang secara fungsional setara dengan yang ada di kalkulator biasa. Perhatikan bahwa kalkulator cenderung menggunakan koneksi zebra-strip, yang lebih murah daripada pin untuk diproduksi, tetapi lebih sulit untuk dikerjakan dalam proyek DIY.
supercat
@supercat - LCD yang digunakan dalam kalkulator murah cenderung menggunakan pita dengan perekat yang diaktifkan panas, bukan strip zebra. Dan mereka adalah sebagian besar standar item off-the-rak yang dapat dipertukarkan antara manufaktur berjalan.
Chris Stratton
0

Cara termudah untuk mengimplementasikan kalkulator mungkin dengan menggunakan mikrokontroler. Jika Anda memutuskan untuk pergi rute itu, langkah pertama adalah menemukan beberapa kode untuk benar-benar melakukan perhitungan. Anda memerlukan program yang menerima operan dan operator dan mengeluarkan hasilnya. Ini modul kalkulator relatif sederhana ditulis dalam charus memberi Anda gambaran tentang apa yang perlu. Itu dapat menambah, mengurangi, mengalikan dan membagi serta beberapa operasi bitwise dan, jika Anda menggunakan Reverse Polish Notation seperti dalam kalkulator ilmiah, itu dapat menyelesaikan sub-ekspresi dalam tanda kurung. Jadi, Anda akan membaca tombol apa yang ditekan, kumpulkan setiap "token" dalam buffer yang mengkonversi angka apa pun menjadi nilai numerik aktual dan kemudian ketika Anda mendapatkan tombol "=", Anda memasukkan daftar token ke kode eval ini yang mengurangi dan memecahkan ekspresi menghasilkan nilai tunggal.

squarewav
sumber
0

Untuk pemula, berikut ini saran BOM saya untuk proyek Anda:

  • 1x papan Arduino Uno atau Leonardo, yang memiliki mikrokontroler yang diperlukan
  • 1x HD44780LCD berbasis , seperti LCD 16x2 yang ada di mana-mana
  • Papan tombol matriks 1x 4x4

Ini akan memungkinkan kalkulator dasar dibangun.

Untuk tujuan lebih lanjut, berikut ini saran saya tentang BOM:

  • 1x Arduino Mega 2560 atau Arduino Due (program ini akan menjadi besar dalam hal ini)
  • 1x ST7920LCD matriks berbasis , yang mendukung karakter dan grafik
  • 1x Arduino pelindung Host USB (Mega 2560 saja, Karena memiliki fitur host USB asli) untuk keyboard

Ini memungkinkan Anda membuat kalkulator grafik yang rumit seperti seri TI-83 Plus atau TI-nSpire.

Maxthon Chan
sumber