題:
如何建立一個計算器?
Philoxopher
2011-03-10 04:16:50 UTC
view on stackexchange narkive permalink

我是電子領域的新手。我正試圖從頭開始構建一個計算器,作為一個簡單的項目和一種業餘愛好,以使我忙碌。

我的目標是構建一個簡單的計算器,而不是科學或圖形計算器,儘管我沒有介意只是為了踢腿而收到有關如何執行此操作的信息。

是否為此提供了一個很好的教程?我應該如何開始?

這裡有一個用於構建基本4功能計算器的工具包:http://www.spikenzielabs.com/Catalog/index.php?main_page=product_info&products_id=762
十二 答案:
W5VO
2011-03-10 11:36:50 UTC
view on stackexchange narkive permalink

這裡是一個計算器示例,您無需過多的電子知識即可構建它。它具有全功能,但不包括附加功能。

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

大聲笑。那是什麼?我不確定我是否曾經看過電影。很想知道我是否能幫助其中之一。您是否有名稱或指向其中之一的鏈接?
HTTP://恩.Wikipedia.org/wiki/slide_入了
這激發了我的問題:http://electronics.stackexchange.com/questions/11263
@KerxPhilo-哈哈哈哈哈哈哈哈哈哈哈哈...
@markrages,恭敬您的問題,非常有趣:)
有一個很好的iPhone應用程序之一,也很好用...
old_timer
2011-03-25 19:20:19 UTC
view on stackexchange narkive permalink

那不是小事。有許多教育子項目值得擔心。一種是按鈕和反跳。另一種是將字符寫入顯示器。是否要實現此目標的決定是您是否有興趣從一大堆的nand門中製作出來,還是想採用微控制器或其他處理器並編寫軟件?您是否有興趣使用fpga並在RTL中進行所有數學運算?您需要將問題分解為這些組件,並一次工作/學習一個組件,然後將它們組合在一起。例如,如果核心數學引擎實際上是微控制器上的軟件,則一項任務將包括在台式計算機上編寫一些C函數,您可以將這些C函數輸入擊鍵並輸出最終將顯示到顯示器上的字符。如果您以前從未編程過,那麼這是一項艱鉅的任務。如果您選擇使用fpga甚至可能是離散邏輯,則可能要使用verilator或icarus verilog或ghdl來處理核心數學和接口模塊。

作為一個教育項目,我要做的是得到一些msp430 launchapads,每個價格低於5美元,或者STM32價值線發現(基於stm32 / arm的一個而不是另一個),每個價格約12美元。許多人會引導您轉向arduino,這也是一個很好的平台,它有其優點和缺點,我不會將其作為我的第一個微控制器。買一個簡單的兩行液晶面板,以前的大地液晶是一個好地方,也許只是去sparkfun。拿一個微控制器板將其連接到LCD面板,並學習如何在顯示屏上放置字符。然後,我將學習如何在微控制器上使用uart,該微控制器通常以爆破字節開始,然後再接收和回顯。使用uart接收器接收要放在顯示器上的東西,然後使用計算機輸入的啞終端(putty,hyperterm,minicom)確保其正常工作。接下來使用另一個微控制器,利用您的uart進出經驗,並在核心數學引擎上工作,首先從計算機中將其輸入0-9,+,-,=,然後再乘以除法,然後再浮點(如果您足夠勇敢)為此(或擁有適合的庫)。數學模塊的輸出將在輸入=時回顯輸入數字並打印結果,等等。然後找出如何處理按鈕,找到按鈕數組,以某種方式將其饋入第三個微控制器,進行反跳,然後將其變成將uart從0-9,+,-,=中移出至數學微控制器。然後,將所有這些減少到一個微控制器中,而無需在中間放入uart的東西。

另一種選擇是從knjn.com或格子brevia獲得rs-232 fpga板之一(那麼大)足夠?)或其他數量,然後使用RTL語言處理每個功能塊。它的某些部分將比等效的軟件解決方案容易得多,某些部分將比軟件解決方案難一些。

如果您可以提供有關自己所想的更多信息,請使用一盒基於nand門或基於微控制器的解決方案,或者您是否在考慮其他事情?

inventorM
2011-03-10 18:55:37 UTC
view on stackexchange narkive permalink

您可以構建的最簡單的電子計算器將是四功能二進制計算器。您可以使用輸入二進制數的開關來構建它,並且7400系列基本邏輯元素可以處理用於處理加法的加法器。您可以使用單獨的LED來表示輸出中的每個二進制數字,也可以使用幾個七段顯示器以十六進制顯示數字。建立一個二進制計算器將使您避免建立十進製到二進制的轉換器,並幫助您熟悉數字電子的工作原理。如果您打算以數字電子技術為愛好,則可以考慮使用 Logisim,這是一個免費程序,可讓您在構建電路之前對其進行仿真。

哇。在片上系統時代,您想讓他為每位數字連接二十個門嗎?甚至[第一個手持式計算器](http://www.vintagecalculators.com/html/ti_cal-tech.html)都沒有做到這一點。單芯片計算器已經存在了三十年。
好吧,您可以將74181用於4位切片。如果沒有別的,那會更容易。
是的,如果他想在其中創建計算器,則可以用一個或兩個芯片來完成(使用微處理器,例如[此示例](http://www.instructables.com/id/LED-Binary-Calculator/))。軟件。也許使用分立組件構建整個計算器會花費太多時間,但是如果他想進入硬件領域,二進制計算器可能是一個不錯的起點。
正確理解二進制位數學,這實際上是一個好主意。我和我12歲的女兒做了一個半加法項目,而我們在麵包板上沒有空間時,她繼續在Minecraft中“構建”該項目。她“了解”了門和添加位的概念,這才是重點。
出於其價值,計算器(通常)在內部不能以二進制形式進行轉換,而是直接在BCD中起作用。一個四位片就足夠了一個ALU(實際上這是Intel 4004的原始工作)。
vvy
2013-05-22 12:31:37 UTC
view on stackexchange narkive permalink

這是我的操作方式。

選擇組件:

輸入設備(在我的情況下為4x4鍵盤。數字10個鍵,數字4個鍵運算符,一個用於“ =”,一個用於“重置/刷新”)

處理器(8位AVR)

輸出設備(16x2 LCD)

電源(帶有9伏電池的LM7805穩壓器)

BreadBoard (它開始起作用)

我選擇以彙編的方式進行編程(學習),這是個人選擇的問題。我將AVR Studio 4用作IDE,並使用了一個基於lpt的家庭烘焙的ISP編程器將十六進制數閃入AVR。

然後,我編寫了用於LCD和鍵盤的驅動程序。當能夠接受輸入並產生輸出時,開始使用十進制數字和運算符進行解析,然後解析表達式並閱讀有關 Infix,Postfix和Prefix方法的信息。我在組裝時做了工作,所以沒有'FLOAT數據類型支持”,我最終實現了我的自定義數據類型(基於BCD的數據類型用於保持15位十進制精度,但這在RAM上是巨大的浪費!)。

所有這些都完成了,瞧!準備好了(我叫BUB!)。

我的頻率為1MHz,能夠擊敗casio_991MS(就小數精度,乘法和除法而言)。

我希望這會有所幫助其他人。

smashtastic
2011-03-10 20:33:18 UTC
view on stackexchange narkive permalink

您可以將開發套件與板上所有組件一起使用,以使您可以專注於軟件。例如, http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001此套件具有PIC,LCD和少量按鈕。有很多標題可以添加其他按鈕。一個缺點是LCD更大,那麼您可能最初想使用它,但是它一定會讓您入門。

如果您四處搜索,則可能會找到可以啟動的較小(且價格便宜)的顯示器

使用這樣的工具包將使開始編寫代碼的過程變得更加容易,因為它們將是一些示例,並且消除了硬件問題,因為它們均已正確設置。另一個缺點是該工具包使用高端圖片,這對於計算器項目來說是過分的,但它確實為您提供了成長和修改它的空間,以便將來執行其他任務。它還將為您提供原理圖,以用作將來製作自己的電路板的起點。

davidcary
2011-03-28 22:30:18 UTC
view on stackexchange narkive permalink

在我的書架上,有H. Edward Roberts撰寫的“電子計算器”,由Forrest M. Mims III編輯。 1974年。

關於人們如何在1974年使用來構建計算器,這頗具教育意義。許多照片是批量生產的MITS計算器整個生命週期的照片-原型照片(一大堆意大利麵條),PCB設計(將Rubylith放在繪圖台上),單個零件,裝配線,波峰焊機和故障排除。

從那時起,很多事情都發生了變化。如今的書通常避免顯示出很大的意大利麵條,而今天的計算器則避免將電源電壓直接施加到計算器PCB上。

許多情況仍然相同。

Ryan
2011-03-10 04:27:41 UTC
view on stackexchange narkive permalink

對於初學者來說,您應該考慮所需的主要組件。您可能需要一個微控制器,一個鍵盤和一個LCD屏幕。一旦選擇了這些組件,就應該像開發固件一樣簡單。

您可以提供的更多詳細信息,請記住,我在建築電子方面是個新手,我想把這個挑戰作為我的第一個挑戰。有了上面提供的信息,這是一個很好的開始,但是我不知道我需要什麼微控制器。另外,如何開發固件?您是用C編寫固件並將其上傳到固件,還是必須用ASM編寫?
您還能提供一個很好的網站,以低廉的價格向業餘愛好者出售電子設備嗎?感謝您的支持!
愛好者的兩個主要微控制器是PIC和AVR。這兩種設備都有C編譯器。只要具有足夠的輸入/輸出引腳與鍵盤和LCD接口的接口,一個簡單的微控制器就能為您的項目工作。愛好電子產品的好網站應該是[SparkFun](http://www.sparkfun.com)
@KerxPhilo:是的,大多數嵌入式系統人員都使用C語言編寫固件。Ladyada有很好的[如何使用C語言編寫固件並將其上傳到微控制器的教程](http://www.ladyada.net/learn/arduino/lesson3 .html),以及[有關連接LCD和在LCD上顯示內容的教程](http://www.ladyada.net/learn/lcd/index.html)。
mctylr
2011-03-26 01:31:29 UTC
view on stackexchange narkive permalink

我相信這可以是一個很好的初學者學習項目,但它並非易事,而且您將在此過程中需要學習很多,並且要耐心,因為該項目包括許多子項目,沿途解決。

您需要決定的第一個設計障礙是您希望在什麼技術水平上進行?帶有或不帶有微控制器(基本上是自給自足的微處理器),帶有/不帶有算術單元(ALU)的離散邏輯(例如AND,OR,或非門和触發器),可編程邏輯(CPLD,FPGA),我還沒有其他沒有提及或考慮過。首先應該考慮用於計算的技術,輸入/輸出控制是次要決定(LED七段顯示器,LCD面板),主要受美學或成本影響。

一個奇妙的Clive Maxfield所著的一本容易讀懂的書計算機如何做數學(ISBN:0471732788)是學習數字計算的一個可能有用的起點。這是在“軟”編程或邏輯級別上編寫的,您需要了解這些才能真正進行計算。

其他人以 uWatch(- micro-Watch)項目為例,並且互聯網上有電氣工程師(或EE學生)在1970年代構建了自己的計算器。在構建基於計算器的FPGA(可編程邏輯器件)時,還有一些細節

對於電子產品(或數字電子產品)的新手來說,我建議使用micrcontroller作為設計的起點,請查看上述書的網站,以了解編程的複雜性(不多)如果您有任何編程經驗),請從那裡開始。

avra
2012-11-29 15:09:57 UTC
view on stackexchange narkive permalink

VisualTFT 設計師將 簡單的觸摸屏計算器 作為示例之一。該軟件為Mikroelektronika Pascal,用於AVR,PIC,ARM和8051微控制器的Basic和C編譯器生成代碼。

hkBattousai
2013-02-08 02:13:06 UTC
view on stackexchange narkive permalink

硬件要求

  • 用於用戶輸入的鍵盤
  • 用於顯示輸入及其結果的LCD 在真正的計算器產品中,您需要一個自定義LCD來顯示特殊字符,例如 = - M (對於 MC MR MS 操作)標誌。定制LCD設計的成本高達3000美元,但是定制設計的LCD比其他通用的LCD更經濟。由於您的項目只是出於愛好,所以我建議您使用帶有KS0108控制器的通用LCD。
  • 一個非常便宜且沒有功能的微控制器
    您需要一個非常基本的控制器,因為您將執行非常簡單的任務。您可以使用便宜的PIC微控制器。

設計步驟

  • 驅動LCD
    管理驅動LCD。在上面寫一些數字。為此編寫一個軟件界面。
  • 測試您的鍵盤
    執行與LCD相同的步驟。確保鍵盤上有軟件控制。
  • 編寫執行算術運算的算法
    如果您使用的是可乘除法的微控制器,則不要無需自己進行操作;但是您必須為微控制器支付更多的費用,另一方面,您在項目過程中所學的知識卻更少,獲得的經驗也更少。

如果您想添加更高級的算術功能,例如生根,正弦/餘弦計算等),則需要使用牛頓法泰勒級數展開來實現相關的計算算法。

否則,是一個簡單的項目。如果您以前沒有太多經驗,那麼您的主要挑戰將是驅動LCD和鍵盤。

根據一個人的野心水平,可以使用一些移位寄存器和一些離散邏輯,以及一個“ ROM”(可能是EPROM或併行閃存)來構建一個非常粗糙的微控制器。使用20芯片或更少的芯片,可能是一個簡單的計算器,尤其是。如果使用相當大的ROM。典型的指令是“在移位寄存器1上輸出X,在移位寄存器2上Y,將輸出選通脈衝設置為Z,然後從通過將某些寄存器的值連接到常數A所形成的地址中獲取下一條指令”。
不需要任何電路來執行BCD加法-可以在代碼中全部處理。如果一個人有兩個可單獨控制的移位寄存器,則按需要對其進行遞進處理,以使源和目標操作數對齊,然後根據從每個值中獲取的四個位的值,使用四條指令將CPU置於20種狀態之一。接下來的四條指令可以從每個移位寄存器中獲取下四位,同時用計算結果的前四位覆蓋其中之一。
我對“自定義LCD”要求有異議。計算器液晶顯示器的外觀幾乎是商品,只有幾處變化-打擊墊間距,簡單與科學(通常意味著8位數與10位數)。在上述給定的選擇範圍內,即使尺寸或字體略有不同,也會有數十個(即使不是數百個)功能上等效的項目。
@ChrisStratton:如果想要一個沒有信號器的8位顯示,可以使用滿足該描述的現成零件。我認為我沒有見過任何在功能上等同於典型計算器的現成顯示器。請注意,計算器易於使用斑馬線連接,該斑馬線連接比引腳製造便宜,但在DIY項目中更難使用。
@supercat-廉價計算器中使用的LCD傾向於使用帶有熱激活膠的色帶,而不是斑馬線。它們*是*基本上是標準的現成產品,可以在製造運行之間互換。
@ChrisStratton:我想我最近沒有拆過計算器,也沒有看過待售的顯示器。帶狀電纜是否具有可波焊的裸露引線(通孔)?
它們沒有焊接,而是以低得多的熱量與PCB結合,從而在此過程中實現了電氣連接。通常在色帶和板的另一面之間有一些規則的(非熱)塑料膠帶用於加固。
squarewav
2013-07-11 18:36:29 UTC
view on stackexchange narkive permalink

實現計算器的最簡單方法可能是使用微控制器。如果您決定走這條路線,第一步將是找到一些代碼來實際進行計算。您需要一個接受操作數和運算符並吐出結果的程序。這個用c編寫的相對簡單的計算器模塊應該使您了解什麼是必需的。它可以加,減,乘,除以及一些按位運算,並且,如果您像科學計算器一樣使用反向波蘭表示法,則可以解決括號中的子表達式。因此,您將讀取按下的按鈕,將每個“令牌”收集到緩衝區中,將任何數字轉換為實際數字值,然後在獲得“ =”按鈕時,將令牌列表輸入此評估代碼,從而減少並解決了表達式產生單個值。

Maxthon Chan
2014-09-22 16:32:37 UTC
view on stackexchange narkive permalink

對於初學者來說,這是我為您的項目建議的BOM表:

  • 1x Arduino Uno或Leonardo開發板,上面裝有所需的微控制器
  • 1x 基於HD44780 的LCD,就像無處不在的16x2液晶屏
  • 1x 4x4矩陣鍵盤

,這將允許構建基本的計算器。

出於更高級的目的,這是我建議的BOM表:

  • 1x Arduino Mega 2560或Arduino Due(在這種情況下,程序會很大)
  • 1x ST7920 的矩陣LCD,同時支持字符和圖形
  • 1個用於鍵盤的Arduino USB主機護罩(僅限Mega 2560,由於具有本機USB主機功能)

這將使您能夠構建精緻的圖形計算器,例如那些TI-83 Plus或TI-nSpire系列。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...