Answers:
这是一个无需太多电子知识即可构建的计算器示例。它具有全功能,但不包括附加功能。
那不是一个微不足道的项目。有许多教育子项目值得担心。一种是按钮和反跳。另一种是将字符写入显示器。是否要实现此功能的决定是您是否有兴趣从一大堆的nand门中制作出来,还是想采用微控制器或其他处理器并编写软件?您是否有兴趣使用fpga并在RTL中进行所有数学运算?您需要将问题分解为这些组件,并一次工作/学习一个组件,然后将它们组合在一起。例如,如果核心数学引擎实际上是微控制器上的软件,则一项任务将包括在台式计算机上编写一些C函数,您可以将这些C函数输入击键并输出字符,这些字符最终将显示在显示器上。如果您以前从未编程过,那么这是一项艰巨的任务。
作为一个教育项目,我要做的是得到一些msp430 launchapads,每个价格低于5美元,或者STM32价值线发现(基于stm32 / arm的一个而不是另一个),每个价格约12美元。许多人会引导您转向arduino,这也是一个很好的平台,它有其优点和缺点,我不会将其作为我的第一个微控制器。买一个简单的两行液晶面板,以前的大地液晶是一个好地方,也许只是去星火。拿一个微控制器板将其连接到LCD面板,并学习如何在显示屏上放置字符。然后,我将学习如何在微控制器上使用uart,它通常是先发送字节,然后再接收和回显。使用uart接收器接收要放在显示器上的东西,然后使用哑终端(putty,hyperterm,minicom)从计算机中输入内容并确保其正常工作。接下来使用另一个微控制器,使用您的uart进出经验,并在核心数学引擎上工作,首先从计算机中将其输入0-9,+,-,=,然后再乘以除法,然后再浮点(如果您足够勇敢)为此(或拥有适合的库)。数学模块的输出将在输入=时回显输入数字并打印结果,等等。然后找出如何处理按钮,找到按钮数组,以某种方式将其馈入第三个微控制器,进行反跳,然后将其变成从0-9,u,+,-,=中的uart发送到数学微控制器。然后,将所有这些简化为一个微控制器,而无需在中间添加uart的东西。利用您的uart进出经验,并在核心数学引擎上工作,首先从计算机中输入0-9,+,-,=,然后加乘除运算,然后加上浮点运算(如果您对此有足够的勇气)(或合适的库)。数学模块的输出将在输入=时回显输入数字并打印结果,等等。然后找出如何处理按钮,找到按钮数组,以某种方式将其馈入第三个微控制器,进行反跳,然后将其变成将uart从0-9,+,-,=转换为数学微控制器。然后,将所有这些简化为一个微控制器,而无需在中间添加uart的东西。利用您的uart进出经验,并在核心数学引擎上工作,首先从计算机中输入0-9,+,-,=,然后加乘除运算,然后加上浮点运算(如果您对此有足够的勇气)(或合适的库)。数学模块的输出将在输入=时回显输入数字并打印结果,等等。然后找出如何处理按钮,找到按钮数组,以某种方式将其馈入第三个微控制器,进行反跳,然后将其变成将uart从0-9,+,-,=转换为数学微控制器。然后,将所有这些简化为一个微控制器,而无需在中间添加uart的东西。数学模块的输出将在输入=时回显输入数字并打印结果,等等。然后找出如何处理按钮,找到按钮数组,以某种方式将其馈入第三个微控制器,进行反跳,然后将其变成将uart从0-9,+,-,=转换为数学微控制器。然后,将所有这些简化为一个微控制器,而无需在中间添加uart的东西。数学模块的输出将在输入=时回显输入数字并打印结果,等等。然后找出如何处理按钮,找到按钮数组,以某种方式将其馈入第三个微控制器,进行反跳,然后将其变成将uart从0-9,+,-,=转换为数学微控制器。然后,将所有这些简化为一个微控制器,而无需在中间添加uart的东西。
另一种选择是从knjn.com或brevia brevia(够大吗?)或许多其他产品中获得一块rs-232 fpga板,然后使用RTL语言处理每个功能块。它的某些部分将比等效的软件解决方案容易得多,某些部分将比软件解决方案难一些。
如果您可以提供有关您在想什么的更多信息,请使用一盒基于nand门或基于微控制器的解决方案,或者您是否在考虑其他问题?
您可以构建的最简单的电子计算器将是四功能二进制计算器。您可以使用输入二进制数的开关来构建它,并且7400系列基本逻辑元素可以处理将要执行加法运算的加法器。您可以使用单个LED来表示输出中的每个二进制数字,也可以使用几个七段显示器以十六进制显示数字。构建一个二进制计算器将使您避免构建十进制到二进制的转换器,并帮助您熟悉数字电子的工作原理。如果您打算以数字电子技术为爱好,则可能需要考虑获得Logisim,这是一个免费程序,可让您在构建电路之前模拟电路。
这是我的方法。
选择组件:
Input Device
(在我的情况下是4x4键盘。10个数字键,4个用于运算符,一个用于'=',一个用于'reset / refresh')
Processor
(8位AVR)
Output device
(16x2 LCD)
Power supply
(带有9伏电池的LM7805稳压器)
BreadBoard
(开始工作后制作PCB)
我选择在汇编中编程(学习),这是个人选择的问题。我将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更大,那么您可能最初想使用它,但它一定会让您入门。
如果您四处搜寻,也许可以找到较小的(和更便宜的)开始。
使用这样的工具包将使它们的编写变得更加容易,因为它们将是一些示例,并且由于它们都已正确设置,因此消除了硬件问题。另一个缺点是该工具包使用高端图片,这对于计算器项目来说是过分的,但是它确实为您提供了成长和修改它的空间,以便将来执行其他任务。它还将为您提供原理图,以用作将来制作自己的电路板的起点。
首先,您应该考虑需要的主要组件。您可能需要一个微控制器,一个键盘和一个LCD屏幕。一旦选择了这些组件,它应该与开发固件一样简单。
我相信这可以是一个很好的初学者学习项目,但它并非易事,而且您将在此过程中需要学习很多,并且要耐心,因为该项目包括许多子项目,需要在学习过程中解决。办法。
您需要决定的第一个设计障碍是您希望在什么技术水平上进行?带有或不带有微控制器(基本上是自给自足的微处理器),带/不带算术单元(ALU)的离散逻辑(例如AND,OR,NOR门和触发器),可编程逻辑(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
基于1x 的LCD,就像无所不在的16x2的LCD这将允许构建一个基本的计算器。
为了更高级的目的,这是我建议的BOM:
ST7920
基于1x 的矩阵LCD,同时支持字符和图形这将使您能够构建精美的图形计算器,例如那些TI-83 Plus或TI-nSpire系列。