我是電子領域的新手。我正試圖從頭開始構建一個計算器,作為一個簡單的項目和一種業餘愛好,以使我忙碌。
我的目標是構建一個簡單的計算器,而不是科學或圖形計算器,儘管我沒有介意只是為了踢腿而收到有關如何執行此操作的信息。
是否為此提供了一個很好的教程?我應該如何開始?
我是電子領域的新手。我正試圖從頭開始構建一個計算器,作為一個簡單的項目和一種業餘愛好,以使我忙碌。
我的目標是構建一個簡單的計算器,而不是科學或圖形計算器,儘管我沒有介意只是為了踢腿而收到有關如何執行此操作的信息。
是否為此提供了一個很好的教程?我應該如何開始?
那不是小事。有許多教育子項目值得擔心。一種是按鈕和反跳。另一種是將字符寫入顯示器。是否要實現此目標的決定是您是否有興趣從一大堆的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門或基於微控制器的解決方案,或者您是否在考慮其他事情?
您可以構建的最簡單的電子計算器將是四功能二進制計算器。您可以使用輸入二進制數的開關來構建它,並且7400系列基本邏輯元素可以處理用於處理加法的加法器。您可以使用單獨的LED來表示輸出中的每個二進制數字,也可以使用幾個七段顯示器以十六進制顯示數字。建立一個二進制計算器將使您避免建立十進製到二進制的轉換器,並幫助您熟悉數字電子的工作原理。如果您打算以數字電子技術為愛好,則可以考慮使用 Logisim,這是一個免費程序,可讓您在構建電路之前對其進行仿真。
這是我的操作方式。
選擇組件:
輸入設備
(在我的情況下為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(就小數精度,乘法和除法而言)。
我希望這會有所幫助其他人。
您可以將開發套件與板上所有組件一起使用,以使您可以專注於軟件。例如, http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001此套件具有PIC,LCD和少量按鈕。有很多標題可以添加其他按鈕。一個缺點是LCD更大,那麼您可能最初想使用它,但是它一定會讓您入門。
如果您四處搜索,則可能會找到可以啟動的較小(且價格便宜)的顯示器
使用這樣的工具包將使開始編寫代碼的過程變得更加容易,因為它們將是一些示例,並且消除了硬件問題,因為它們均已正確設置。另一個缺點是該工具包使用高端圖片,這對於計算器項目來說是過分的,但它確實為您提供了成長和修改它的空間,以便將來執行其他任務。它還將為您提供原理圖,以用作將來製作自己的電路板的起點。
在我的書架上,有H. Edward Roberts撰寫的“電子計算器”,由Forrest M. Mims III編輯。 1974年。
關於人們如何在1974年使用來構建計算器,這頗具教育意義。許多照片是批量生產的MITS計算器整個生命週期的照片-原型照片(一大堆意大利麵條),PCB設計(將Rubylith放在繪圖台上),單個零件,裝配線,波峰焊機和故障排除。
從那時起,很多事情都發生了變化。如今的書通常避免顯示出很大的意大利麵條,而今天的計算器則避免將電源電壓直接施加到計算器PCB上。
許多情況仍然相同。
對於初學者來說,您應該考慮所需的主要組件。您可能需要一個微控制器,一個鍵盤和一個LCD屏幕。一旦選擇了這些組件,就應該像開發固件一樣簡單。
我相信這可以是一個很好的初學者學習項目,但它並非易事,而且您將在此過程中需要學習很多,並且要耐心,因為該項目包括許多子項目,沿途解決。
您需要決定的第一個設計障礙是您希望在什麼技術水平上進行?帶有或不帶有微控制器(基本上是自給自足的微處理器),帶有/不帶有算術單元(ALU)的離散邏輯(例如AND,OR,或非門和触發器),可編程邏輯(CPLD,FPGA),我還沒有其他沒有提及或考慮過。首先應該考慮用於計算的技術,輸入/輸出控制是次要決定(LED七段顯示器,LCD面板),主要受美學或成本影響。
一個奇妙的Clive Maxfield所著的一本容易讀懂的書計算機如何做數學(ISBN:0471732788)是學習數字計算的一個可能有用的起點。這是在“軟”編程或邏輯級別上編寫的,您需要了解這些才能真正進行計算。
其他人以 uWatch(- micro-Watch)項目為例,並且互聯網上有電氣工程師(或EE學生)在1970年代構建了自己的計算器。在構建基於計算器的FPGA(可編程邏輯器件)時,還有一些細節。
對於電子產品(或數字電子產品)的新手來說,我建議使用micrcontroller作為設計的起點,請查看上述書的網站,以了解編程的複雜性(不多)如果您有任何編程經驗),請從那裡開始。
=
,-
和 M
(對於 MC , MR 和 MS 操作)標誌。定制LCD設計的成本高達3000美元,但是定制設計的LCD比其他通用的LCD更經濟。由於您的項目只是出於愛好,所以我建議您使用帶有KS0108控制器的通用LCD。如果您想添加更高級的算術功能,例如生根,正弦/餘弦計算等),則需要使用牛頓法或泰勒級數展開來實現相關的計算算法。
否則,是一個簡單的項目。如果您以前沒有太多經驗,那麼您的主要挑戰將是驅動LCD和鍵盤。
實現計算器的最簡單方法可能是使用微控制器。如果您決定走這條路線,第一步將是找到一些代碼來實際進行計算。您需要一個接受操作數和運算符並吐出結果的程序。這個用c編寫的相對簡單的計算器模塊應該使您了解什麼是必需的。它可以加,減,乘,除以及一些按位運算,並且,如果您像科學計算器一樣使用反向波蘭表示法,則可以解決括號中的子表達式。因此,您將讀取按下的按鈕,將每個“令牌”收集到緩衝區中,將任何數字轉換為實際數字值,然後在獲得“ =”按鈕時,將令牌列表輸入此評估代碼,從而減少並解決了表達式產生單個值。
對於初學者來說,這是我為您的項目建議的BOM表:
基於HD44780
的LCD,就像無處不在的16x2液晶屏,這將允許構建基本的計算器。
出於更高級的目的,這是我建議的BOM表:
這將使您能夠構建精緻的圖形計算器,例如那些TI-83 Plus或TI-nSpire系列。