首页 理论教育 硬件遭遇软件

硬件遭遇软件

时间:2022-02-09 理论教育 版权反馈
【摘要】:我们就将进入控制器芯片的世界。MCU 中含有闪存,其中存储着你自己编写的程序。对MCU进行编程,让其来承担以上这项任务是极其简单的一件事。MCU的另一个应用场合是要求特别严密的安保系统。MCU芯片可以监视各个侵入传感器的状态,并可以根据传感器的状态,执行各种预先编写在程序中的对策。许多MCU还内置有附加的有用功能,例如能够控制伺服电机,让其在一个脉冲流的作用下,转到特定的角度。

到目前为止,我一直都遵循着“在实验中发现学问”的宗旨,要求你先做一个实验,然后再提出一些我们可以从中学到的基本原理和思想。但现在我不得不改变这个政策,因为接下来的这个实验牵涉到很多的准备工作,在你开始实验之前,我必须先告诉你预期的结果。

我们就将进入控制器芯片的世界。控制器芯片也常称作MCU,是Micro Controller Unit(微控制器单元)的缩写。MCU 中含有闪存,其中存储着你自己编写的程序。闪存类似于便携式媒体播放器中的存储体或者数码相机中的存储卡,它不需要专门供电。此外,这种芯片内有一个处理器,可以执行程序中的指令。它有RAM来临时储存变量的值,也有ROM来告诉它该如何去完成诸如感测变化的输入电压并将其转换成内部使用的数字形式一类的任务。它还包含一个精确的振荡器,以使其能够跟踪时间。将所有这些东西放在一起,就是一个微小的计算机,你只需不到5美元就可以买到。

让我们假定你有一个温室,需要将其温度保持在冰点以上。你安装了一个温度传感器,并有两个不同的加热器。当温度低于华氏38°时,你需要启动第一个加热器。但是当这个加热器由于某种原因损坏了的时候,那么当温度低于华氏36°时,你就要启动第二个加热器,即备用加热器。

对MCU进行编程,让其来承担以上这项任务是极其简单的一件事。你甚至还可以加入其他的特征,例如加入第二个温度传感器,以防备第一个传感器发生故障,并且你也可以告诉芯片采用给出较低读数的那个传感器的读数。

MCU的另一个应用场合是要求特别严密的安保系统。MCU芯片可以监视各个侵入传感器的状态,并可以根据传感器的状态,执行各种预先编写在程序中的对策。你当然也可以在其中设置延迟时间。

许多MCU还内置有附加的有用功能,例如能够控制伺服电机,让其在一个脉冲流的作用下,转到特定的角度。伺服电机广泛地应用在无线电控制的船模、航模以及业余爱好者的机器人中。

也许你现在有一些疑问,既然MCU能够完成所有这些任务,为什么我们不从一开始就使用它们呢?如果一个芯片能够完成所有事情,我为什么还要花那么多时间,去描述用分离元件来开发报警器系统呢?

其答案在于以下3点。

(1)MCU 不是所有事情都能做。它们需要其他元件,例如晶体管、继电器、传感器、放大器等,来帮助其与外部世界交互。你需要知道这些东西的工作原理,以便能够灵活地使用它们。

(2)MCU 会带来一些跟软件和硬件相关的特有的问题与错误。关于这一点我在后面还会进一步讲解。

(3)MCU 也有局限和限制,最明显的是它们要求5 V 的调压电源,并且它们的引脚都没有太大的吸收或供给电流的能力。它们还要求你学习一门编程语言(这种语言往往因MCU的品牌不同而不同)。为了把程序放入到芯片里面,你必须能够将MCU插在计算机上并进行下载,这并不是很方便的事情。

在这个实验中,你将学习如何给一个小而简单的MCU编写程序,并且你还需要将程序传输到MCU的里面并观看其工作的效果。

背景知识

可编程芯片的起源

在工厂和实验室中,许多过程是重复性的。例如,利用一个流量传感器的检测结果来控制一个加热元件;利用一个运动传感器的检测结果来调节电机的速度等。微控制器对于完成这种例行的任务是再合适不过的了。

通用仪器(General Instrument)公司在1967年引入了早期的MCU系列,称之为PIC,意思是可编程智能计算机(Programmable Intelligent Computer),或者可编程接口控制器(Programmable Interface Controller),到底该用哪一个取决于你到底相信哪一个信息来源。通用仪器公司将这个商标卖给了另一个名叫微芯片技术(Microchip Technology)的公司,该公司至今仍拥有这个商标。

PIC是一个商标,但有时却被当作一个基本术语来使用,就像Scotch tape 意指透明胶带一样。在本书中,我选择了基于PIC构架的一个家族的控制器来进行介绍。该家族的控制器的名称是PICAXE,是由名叫Revolution Education Ltd.的英国公司注册的。这样命名除了听起来很酷之外,并没有明显的逻辑上的原因。

我之所以喜欢这个家族的微控制器,一方面是因为它们开发的初衷在于用作教育工具,另一方面在于它们很容易使用。它们很便宜,并且其中有些型号的功能还十分强大。尽管它们的名字很老,但我认为它们是熟悉MCU核心概念的最好方法。

在玩过PICAXE之后,如果你想要进一步学习MCU的话,我建议你学习BASIC Stamp(它使用的语言跟PICAXE十分类似,只是增添了一些更强大的命令)以及十分普及的Arduino(这是出现时间更晚的一种设计,封装了一些强大的功能,但是为了对它进行编程,你需要学习一种C语言的变种)这两种MCU。我在稍后将对这些芯片做更多的介绍。

如果在维基百科上搜索“picaxe”,你将找到关于其各种特征的十分精彩的介绍。实际上,我认为它所做的介绍要比PICAXE网站的介绍还要清楚。

备用品

图5-122所示为PICAXE家族的一些芯片。我将教你如何使用其中最小的芯片——08M,它的价格低于5美元,要比我发现的任何其他MCU都便宜。它仅有256字节的存储体来存储程序(不是G字节、M字节或K字节,而仅仅只有256字节),不过你会发现这一数量的存储体却可以实现多得惊人的可能性。图5-123所示为引脚安全地嵌在一片导电泡沫中的08M芯片的特写镜头。

在美国,这种芯片有3个分销商。

□ http://www.advancedmicrocircuits.com

□ http://www.phanderson.com/picaxe

□ http://www.sparkfun.com

我喜欢P.H.Anderson 公司,是因为其服务于草根电子爱好者的取向,而且当你想要购买多个芯片时,还可以享受到优惠的价格。不过SparkFun Elctronics 公司除了提供这种芯片之外,还提供其他你也许会感兴趣的相关产品。

图5-122 PICAXE 产品目录上的一页,上面列出了部分尚在出售的芯片。PICAXE 芯片定位于教育目的,但是却已经变成了一个十分有用的制作样机的工具

图5-123 从一个美国分销商处购得的一片PICAXE 08M,收到的芯片是嵌在一小块导电泡沫中的。这个芯片的面积跟555定时器相同,但是却有微型计算机的能力

所有这些分销商都想卖“入门套件”给你(譬如图5-124所示的那种),这也许是因为PICAXE本身太便宜了,它提供不了多少利润空间。不过就我们的目的来讲,你还是应该单独购买芯片,并且要购买两个(仅仅为了防备损坏,譬如接错电压引起损坏)。

图5-124 典型的PICAXE套件包括一片印制电路板(这个你未必真的需要)以及其他一些不是完全必要的东西。但是(顶部中间的)3.5 mm的立体声插孔却是绝对必要的

为了将你编写的指令下载到芯片中,首先必须在一台计算机上输入指令,然后再通过一条电缆将指令送入PICAXE的存储器中。因此需要购买一条电缆,并且还需要软件来帮助你编写程序。

PICAXE芯片可以与串行电缆配合使用,但是我不推荐这样做。PC中老的RS232串行通信标准几乎已经被淘汰了,PICAXE芯片是通过提供的一条USB电缆(它的插头里面包含了一个串口转换器)来识别这个标准的。这种USB电缆要昂贵一点,但是更为简单,而且与苹果计算机兼容。可以从PICAXE芯片的任何美国经销商处买到USB电缆,其型号是AXE027,在http://www.sparkfun.com上,还可以凭产品编号PGM-08312购买(数量:1根)。图5-125所示为该电缆的照片。

图5-125 这根USB 电缆是专门用来与位于3.5 mm 的音频插孔中的PICAXE 端子配合使用的。不要误将其插在任何的音频设备上。它是用来与计算机建立串行连接的,以便将程序代码下载到芯片中

为了编写自己的程序,并通过电缆将其下载到芯片上,所选用的工具是PICAXE程序编辑器。它只有Windows下的版本。对于那些喜欢Max OS 或Linux 系统的用户,可以免费下载另一个软件,名叫AXEpad,它的功能较少,但也能完成这个工作。所有这些可下载的软件都可以从http://www.rev-ed.co.uk/picaxe/software.htm上免费下载。

最后,你需要一个焊有接头的 3.5 mm 的立体声插孔。其原因在于,PICAXE芯片的制造厂家在USB电缆的自由端使用了一个立体声插头,因此你必须将其插入某样东西里面来把信号引出。PICAXE面包板转接器(SparkFun的库存编号是DEV-08331)包含有所需的立体声插孔以及另外几样东西,数量:1个。见图5-126。

图5-126 与USB 电缆配合使用的3.5 mm立体声插孔的特写镜头

够奇怪的了吧,USB电缆是这些东西中最贵的一个(因为其内部隐藏着电子电路)!

软件安装与设置

现在你必须进行一系列的设置。没有办法绕过这个设置过程。你需要做的事情有以下几件。

(1)安装驱动程序,以便你的计算机能够识别这个特殊的USB电缆。

(2)安装PICAXE 程序编辑器(或者Mac/Linux 系统下的AXEpad)软件,以便可以在计算机上编写程序并可以下载到芯片。

(3)将PICAXE 芯片安装在面包板上,并加上插座来接收下载的程序代码。

在下面的几个小节里,将对这些步骤作解释。

USB驱动

合理的警告:如果你试图使用PICAXE网站上的搜索功能,也许找不到你想要的东西。例如,你想找“USB Driver”,但它就好像从来没有听说这个东西似的。

PICAXE主页上的下拉菜单也有点恼人,当你想要点击它的时候,它却不见了,不过在你写的时候,可以跳过这些东西直接去软件下载的页面(http://www.rev-ed.co.uk/picaxe/ software.htm)。

小心,不要错误地下载USB010USB-Serial adapter(USB —串口转换器)的驱动程序。USB —串口转换器是完全不同的东西。

往下滚过所有的软件,直到附加资源的位置。找到AXE027 PICAXE USB 下载电缆。初看起来,以为它们想卖电缆给你,但实际上这是驱动的列表。双击一个适合你的计算机的选项,并在计算机上选择一个下载的存放位置——一个容易找到的地方,譬如桌面。

下载下来的是一个压缩文档。你需要将其解压。在Windos XP 系统中,按鼠标右键点击该压缩文档,并选择“全部释放”。查看释放的文件,可以看到一个PDF格式的安装向导文件。Linux系统和Mac系统的用户目前则可以在http://www.rev-ed.co.uk/docs/AXE027.pdf处找到安装指南。

当在Windows平台下安装驱动程序时,有几条贴士可以将你的恼怒减小到最低程度。

(1)请记住,那条特殊的USB 电缆中包含有电子电路。它不仅仅是一条电缆,而且是一个专门设计用来与PICAXE通信的设备。不要试图用它来干任何其他的事情!

(2)在安装驱动程序之前,你必须先将该USB 电缆插入USB 口,因为计算机需要核实驱动和电缆是否一致。

(3)在驱动安装完成之前,你不能将PICAXE接在该电缆的另外一端。

(4)计算机上的每一个USB 口都有一个独立的标识。你第一次选用哪个USB口来插入电缆,以后每次都必须使用该口。否则的话,你就必须重新告诉计算机该电缆是什么电缆。

(5)将以上的第(4)点记在心上,并且要避免在一个单独的USB 扩展口上使用该电缆。

(6)该电缆采用欺骗方式,让PICAXE 以为自己在同你计算机上的一个串口通信。这种“通信”串口被称作COM1、COM2、COM3或者COM4。当安装驱动程序时,安装程序将为你选择其中的一个COM口,以后你必须知道它到底是哪一个口。PDF指南应该可以帮助你完成这个安装过程。但是很遗憾的是,你无法跳过这个过程。

程序编辑软件

如果能够顺利地学到这里,那你就可以开始下一个大步的工作了,它相对容易些。你需要使用PICAXE程序编辑器,它可以从你找到USB驱动程序的软件下载网页上免费下载(如果使用的是Mac或Linux操作系统,那么你需要AXEpad,这也可以在同一个网页上下载)。

下载和安装PICAXE程序编辑器是一件简单、容易的事情。一旦完成安装,你就会发现它在桌面上建立了一个快捷方式。双击运行它,打开其View→Options菜单,在打开的窗口(如图5-127所示)中,点击“Serial Port(串口)”标签,你将看到一个类似图5-128 那样的对话框。现在需要确保程序编辑器和USB驱动程序选定的是同一个COM口。否则,程序编辑器将不知道去哪里找PICAXE芯片。

图5-127 这个屏幕快照显示的是PICAXE 程序编辑器的“options”窗口,你需要在其中选择自己想要编程的芯片型号(在案例中是08M)

图5-128 “options”窗口的另外一个屏幕快照,所显示的是你必须进行的第二个基本的选择:选出驱动程序在你的计算机选用的COM口

在程序编辑器中,选择View→Options菜单,点击“Mode”标签,然后点击单选按钮选择“08M”芯片。

你还觉得好玩吗?显然,除了一直在与软件问题鏖战之外,已经感觉不到什么好玩的了。在使用PICAXE之前,还有最后一个步骤,就是要将PICAXE芯片以及它的插座安装在面包板上。

安装硬件

PICAXE 08M 看起来就像一个555 定时器芯片(PICAXE 家族的其他芯片都有更多的引脚和更多的功能)。它要求一个经过适当调整的5 V电源,就像我们以前用过的逻辑芯片一样。实际上,设计PICAXE芯片的人特别害怕电压尖峰对该种芯片产生伤害。他们要求你在LM7805调压器的每一侧都使用两个电容器(一个 100 µF,一个 0.1 µF)。这看起来有点防护过度,不过要是PICAXE坏了的话,替换起来可要比替换555定时器困难多了。你肯定无法跑到RadioShack店里买到一枚PICAXE芯片。以防万一,就让我们按照制造商的说法去做,像图5-129和图5-130所示的那样搭建面包板电路。

图5-129 在PICAXE 的文档中,指定在5 V 调压器的输入侧使用一个100 µF 和一个0.1 µF 的电容器,在输出侧也要求同样的一对电容器。在面包板上,可以如图排列来满足以上要求

图5-130 调压器在面包板上安装好之后,看到的实际元件。它将5 V 电压(的正、负端)同时输送到面包板的两侧

现在来看芯片本身。请注意其正、负电源引脚正好跟555定时器的相反,因此要特别小心!

请根据图5-131的电路原理图来搭建面包板电路。请注意该图中绘出的立体声插座是下侧朝上的,这是因为在面包板上你必须这样来使用立体声插座。如果你试着将立体声插座的引脚插入面包板的孔里,虽然这会配合得很好,但是当你将插头插入插槽中时,由于插头很粗大,会导致插座往外升起而导致其引脚失去连接。我想到的解决办法是在插座的引脚上焊接导线,然后再将导线插到面包板上,如图5-133所示。

请注意PICAXE手册上显示元件的方式跟本书有所不同(尽管我保留了它的插座和插头部件的标记惯例,即用a、b和c来标记)。

和PICAXE芯片配合使用的插座的一个小细节:它通常有两对用于连接的触点,在手册中以及在我绘制的原理图中,它们分别被标记为b和c。当你焊接一个连接时,你的焊点应该包括每对触点中的两个触点,如图5-132所示。

图5-131 PICAXE 08M 芯片的测试电路原理图。图中的立体声插座是底面朝上的,输入侧的两个必需的电阻器分别为10 kΩ和22 kΩ,一个LED 用于对芯片的输出进行显示

图5-132 插座的正确连线是极其重要的。在你把导线焊接到下方端子的时候,请确保将导线连接到每对端子的两个端子上

请记住PICAXE必须使用5 V的直流电源,并且要记住,只有当你在输入侧加上一个更高的电压时,调压器才能可靠地输出5 V的直流电压。如果你给调压器提供9V的输入电压,这将为其提供一个相当数量的裕度。

在使用这个芯片时,22 kΩ 和10 kΩ 的电阻器是必须的,具体请见下面警告文字的解释。在我的电路原理图中还有一个330 Ω 的电阻器和一个LED,不过它们仅仅在我即刻要做的测试中用到。

引脚2下拉

在图5-131所示的配置中,22 kΩ和10 kΩ的电阻器是必需的。这些电阻器将给串口连接提供正确的电压,而在单独使用PICAXE时,它们则可以将引脚2上的电压下拉到电源的负端。

如果引脚2不连接(浮位),它可能会拾取到随机的电压,这可能会被芯片误解为一个新的程序或指令,从而产生不可预测和不希望的结果。

不论你是否将PICAXE芯片连接到计算机,22 kΩ和10 kΩ的电阻器都应该被看成是伴随PICAXE芯片的永久性元件。

核实连接

在每次你要对PICAXE进行编程或重新编程时,请小心地遵循以下的步骤。

(1)将你的 PICAXE电缆的USB插头插入你以前使用的同一个USB口中。

(2)启动 PICAXE 程序编辑器(如果你使用的是Max OS 或者Linux操作系统的话,请使用AXEpad)。

(3)在程序编辑器中,选择View →Options 菜单以验证程序编辑器使用的是正确的COM口,并且选中的是08M PICAXE 芯片。

(4)将USB 电缆自由端的立体声插头插入已经连接在面包板上的立体声插座里。见图5-133和图5-134。

图5-133 测试电路原理图的面包板版本,USB下载电路的插头已经插在面包板上的插座里。现在PICAXE芯片已经可以接收下载的程序并可以立即执行之

图5-134 在程序下载以后,就可以将插头拔掉,程序将连续运行,导致LED不停地闪光

(5)检查你的连线,然后给面包板加上电源。

(6)点击程序编辑器窗口上的Program按钮,告诉软件去寻找PICAXE芯片。

故障排除

第一件要做的事情是从PICAXE芯片所在的面包板上拔下USB电缆的插头,让电缆的另一端继续接在计算机上。将万用表设置到直流电压档,将其探针接到插头的b和c部分(见图5-135)。然后再次点击Program按钮,你的万用表应该显示出有一个5 V 的电压短暂地从计算机上输出到电缆自由端的插头上。

图5-135 USB下载电缆端部的立体声插头可以用做故障跟踪。将万用表设置在直流电压档,并将其接在插头的b和c部分,可以判断程序编辑器是否往串口连接上发送数据

如果你检测到了这个电压,那么软件就已安装并运行正常。这样的话,问题就出在面包板上,要么是芯片的问题,要么是其周围连线的问题。

如果你检测不到任何电压,那么也许是软件安装不正确,或者是它寻找的串口号不对。请试着卸载程序并重新安装。

你的第一个程序

最后你终于可以建立自己的第一个程序了。在程序编辑器窗口中,输入以下的代码。

main:

high 1

pause 1000

low 1

pause 1000

goto main

请确保在第一行的main后面有一个冒号,见图5-136的屏幕截图。程序中的缩进是用Tab键来产生的,其唯一的用途就是为了使程序更易读,软件会忽略它们。

图5-136 这个屏幕截图显示了我们的第一个测试程序在程序编辑器(Windows 系统的计算机)中显示的样子

点击程序编辑器上的Program按钮来将这个程序下载到芯片里。一旦下载完成,芯片就将开始让LED 闪烁,点亮1 s 然后再熄灭1 s。图5-137显示了给芯片编程时需要遵循的步骤。

图5-137 在 PICA-XE控制器芯片上创建并运行程序的步骤

现在是有趣的部分,断开USB电缆和面包板的连接。该芯片应该继续使LED闪烁。

断开面包板的电源,并等待一到两分钟以便电容器失去其电荷。重新加电,芯片将再次开始让LED闪烁。

你下载到芯片的程序将保持在芯片内部的存储器中,每次给芯片加电时,它就将开始运行。

代码解析

让我们来看看你输入的小程序。程序的第一行用来标识程序的一个段。这个程序只有一个段,我们称之为main段。在任何单词的后面跟一个冒号就命名程序的一个段,例如:

main:

第二行告诉芯片从逻辑引脚1发出一个高电平:

high 1

程序的第三行告诉芯片等待1 000 ms(即1 s):

pause 1000

第四行告诉芯片将逻辑引脚1拉回到低电平:

low 1

第五行告诉芯片等待另一个1 000 ms:

pause 1000

最后一行告诉芯片返回到main段的开头:

goto main

程序不使用芯片上通常的引脚编号,而使用我所谓的“逻辑引脚编号”。图5-138显示了逻辑引脚的编号方法。图5-139显示了逻辑引脚的多重功能。我将逻辑引脚0用括号括起来,这是因为其主要功能是通过USB电缆往计算机发送数据。它可以起另一个作用,即用作数据输出,但是你必须先将其与USB电缆断开。由于这一点很容易忘记,从而带来麻烦,因此我宁肯避免这种用法。

图5-138 PICAXE芯片的传统引脚号与PICAXE编程语言中使用的引脚编号系统不兼容。为了减小混淆,在给芯片编程时,将编程所用的引脚编号系统称作“逻辑引脚”

图5-139 PICAXE 08M 芯片上的许多引脚都有多重功能,可以使用适当的程序指令来进行选择

编辑代码

如果想修改程序,能行吗?没问题!让我们用程序编辑器来修改程序中的一行看看。例如用100 ms 代替1 000 ms(pause 命令后面可以跟最大为65535的任何数)。在你的程序中,在任何你自己确定的数字里面请不要使用表示千分位的逗号。

再次将USB电缆插入面包板上,点击屏幕上的Program按钮,新版的程序将自动下载到芯片中,覆盖老的版本。

如果你想要保存程序将来使用,该怎么办呢?只需到程序编辑器的File菜单,将程序保存在计算机的硬盘中就可以了。由于PICAXE使用的是BASIC计算机语言的一个变种,它会给你保存的程序添加.bas扩展名。

仿真

如果你犯了一个简单的录入错误,程序编辑器将发现它,并阻止你下载程序。如何修改好包含有错误的那一行则是你的任务。

即使你的程序中的所有语句都输入正确,也最好在下载程序之前,先做一下仿真,看看程序到底能做出什么来。这一点很容易做到,点击程序编辑器的菜单条中的Simulate(仿真)按钮就可以了。然后会打开一个新的窗口,显示出PICAXE芯片的轮廓图,并将各个引脚的状态展示在你面前(请注意,如果你使用了十分短暂的pause命令,那么仿真器将没法运行得足够快,因此难以精确显示时间)。图5-140所示为仿真时的一个屏幕截屏。

你需要查看PICAXE文档的第二部分,其中包含了所有的编程语句及其正确语法。在写作本书的时候,该文档的存储地址为http://www.rev-ed.co.uk/docs/picaxe_manual2.pdf。

图5-140 这个屏幕截图显示的是仿真窗口。在下载程序到芯片中之前,可以打开这个窗口来测试程序代码。变量的值显示在右边。引脚的状态显示在左边

点击仿真窗口右下角的“>>”按钮将打开一个列表,列出你的程序中的所有变量。到目前为止,其中还没有任何变量,不过很快就会有的。右侧的所有0都是二进制数字,你目前可以忽略它们。

循环

这里有另一个东西我希望你去试试。将你的程序重写成以下的样子,并下载到PICAXE芯片上。

main:

for b0=1 to 5

high 1

pause 200

low 1

pause 200

next

wait 2

goto main

请注意其中的b0是字母b后面跟数字零,而不是字目b后面跟字母O。程序中再次加入了另外的缩进,目的是为了让程序更容易理解。从high 1 开始到pause 200 结束的这4 行语句将被重复执行。把它们看成一个语句块将有助于理解。

观察LED灯,看看有什么事情发生。它应该快速地闪烁5次,然后等待2 s,然后再重复。你刚刚已经在程序中加入了一个循环。如果你希望某样事情发生不止一次,那么就可以使用循环。

b0被称作变量。可以将其想象成一个小小的“记忆盒子”,其名字b0写在外部的一个标签上。图5-141表示了这个概念。这个特别的记忆盒子中可以包含从0到255的所有数字。循环开始时,会告诉处理器将数字1放入盒子中,然后处理其余的语句,直到next将处理器送回到第二行,在此点处理器会给b0里面的东西增加1。如果b0的值为5或者比5小,循环就会继续。如果其值为6,那么循环已经运行5次,就应该结束,因此PICAXE 会跳到 next 语句之后的 wait 2 语句。请看图5-142 所示程序清单的注释版本。

图5-141 为了理解一个程序是如何运行的,可以将变量想象成一个“记忆盒子”,它的名字写在外侧,数字装在里面

wait 这个PICAXE 命令是以整秒为单位计算时间的,因此 wait 2就是等待2 s。然后goto main 语句又重新开始整个程序。

图5-142 图中蓝色的标注文字解释了右侧的程序在告诉PICAXE 该去做什么

如果你的闪光演示程序能够按计划工作,那么就可以进入下一个步骤,让这个芯片做一些更有用的事情。

基础知识

PICAXE的基本参数

以下是PICAXE芯片的一些最有用的参数。

□ PICAXE芯片要求5 V的直流调整电压。

□ PICAXE芯片的输入、输出和5 V的逻辑芯片是兼容的。你可以直接将其与其他逻辑芯片相连。

□ 每个PICAXE 引脚可以吸收或者供给最多20 mA 的电流。整个芯片最多可以供给90 mA 的电流。这意味着你可以直接利用其引脚来驱动LED或压电噪声产生器(它吸收的电流很小),或者晶体管。

□ 你可以使用(在前一个实验中提到过的)ULN2001A达林顿阵列之类的芯片,来放大PICAXE的输出,以驱动继电器或者电机之类的东西。

□ 芯片执行程序中每条指令的时间大约为0.1 ms。

□ 08M芯片的闪存可以保存大约80行的程序代码。其他PICAXE芯片具有更多的存储体。

□ PICAXE提供从b0到b13的14个变量。其中“b”代表“byte(字节)”,因为每个变量占用单个字节。每个变量可以保存从0到255的数值。

□ 变量中不允许负数和小数。

□ 另外还有7个双字节的变量,名称为从w0到w6。其中“w”代表“word(字)”。每个可以保存的数值范围为0到65535。

□ “b”变量同“w”变量共享相同的存储空间。因此:

- b0和b1跟w0使用相同的字节;

- b2和b3跟w1使用相同的字节;

- b4和b5跟w2使用相同的字节;

- b6和b7跟w3使用相同的字节;

- b8和b9跟w4使用相同的字节;

- b10和b11跟w5使用相同的字节;

- b12和b13跟w6使用相同的字节。

所以,如果你使用了变量w0,就不要再使用b0和b1。如果你使用了变量b6,就不要使用w3,如此等等。

□ 变量值保存在RAM中,断开电源后就会消失。

□ 程序保存在非易失的存储体中,断开电源后,不会受到影响。

□ 制造商给出的参数声称其非易失的存储体可以重写大约100 000次。

□ 如果你想要在其一个引脚上接一个开关或按钮来作为输入,那么你应该在该引脚与电源的负端之间添加10 kΩ 的下拉电阻器,以便当开关断开时能够将引脚保持在低电平。图5-143显示了下拉电阻器与单刀单掷开关或按钮连接的方法。

□ 在08M芯片中,如果你在逻辑引脚1、2或4与电源负端之间施加一个变化的电压,芯片就会测量这个电压,并“决定”去干什么。这就是“模数转换”功能——这将把我们带往下一个实验。

图5-143 PICAXE 芯片能够对接在其具有输入能力的引脚上的开关或按钮的状态做出响应。当开关或按钮的触点断开时,必须使用一个10 kΩ 的电阻器来下拉引脚的状态。否则的话,你可能会得到不可预料的结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈