|

楼主 |
发表于 2018-9-14 15:31:17
|
显示全部楼层
UBW教程#1:简单的数字输入和输出
简介:
使用终端仿真器和简单的BASIC应用程序的简单介绍,使某些数字输出根据数字输入的状态改变状态。
使用的理论和命令:
在本教程中,我们将使用两个按钮用于输入,两个LED用于输出。我们将根据输入信息观察LED上的输入和显示输出模式。这可能看起来非常非常基本,但您在本教程中学到的概念将成为所有其他UBW工作的基础,因此简单地开始是有意义的。
请参阅UBW上的固件文档。当前版本(截至10-16-07)适用于
我们将使用“V”命令来查看我们的UBW是否正常运行并找出它的版本。
我们将使用“C”命令配置数字输入和输出。
我们将使用“I”命令来读取数字输入。
我们将使用“O”命令输出数字输出。
电路设置:
我们将两个开关连接到端口A位0和1,输出LED将连接到端口B位7和8.这些位完全是任意的,您当然可以使用UBW上的任何其他I / O引脚,因为它们很多。我拿了一个UBW套件,引发了有趣的销售,将男性标题放入指向下方的孔中,并将其插入本教程的面包板中。你可以随心所欲地做到这一点 - 我的方式绝对不是让它发挥作用的唯一方法。请注意,我们使用470欧姆限流电阻和LED(因此它们不会烧坏)和开关上的4.7K欧姆上拉电阻,这样端口A输入引脚要么+ 5V(通过上拉电阻),要么通过开关短接到地。
使用终端仿真器:
您可以使用Windows附带的Hyperterminal终端仿真器,或者使用不同的终端仿真器)。无论您使用哪一个,请确保在打开端口时关闭任何硬件握手。
连接UBW并连接上面显示的电路后,您需要找出UBW连接的COM端口。进入Windows设备管理器,查看端口(COM和LPT)下的内容,找出UBW所在的COM端口。如果您的所有端口都显示“通信端口(COMx)”并且您不知道哪个是UBW,则双击每个端口并查找显示“制造商:Microchip Technologies Inc.”的端口。让我们说它是在COM4上。我们将在本教程中使用它,
使用终端仿真器打开与COM4的连接,无需硬件握手。波特率和奇偶校验和启动/停止位没有区别(UBW软件完全忽略这些参数 - 有关更多信息,请参阅。键入国会大厦V并按Enter键测试您的UBW连接。你应该得到一个看起来像这样的回复:
UBW FW D版本1.4.2
“V”命令代表“版本”,它只是要求UBW发回一些标准信息。它告诉您它是什么固件版本,并让您知道它可以接收您的命令,并且您可以收到它的回复。
(请注意,您键入的内容不会显示,并且退格无法纠正键入错误。)
现在您知道您与UBW的有效连接。接下来我们需要告诉UBW我们的输入和输出是什么。我们使用“C”命令。在中输入以下内容,然后按行末尾的Enter键将其发送到UBW。
C,3,0,0,0
UBW应该寄回
好
“C”命令代表“配置”,它有四个参数(对于28引脚UBW)。每个参数用逗号分隔。前三个参数是十进制值,表示要输入的每个端口的哪些位以及要输出的端口。第一个参数用于PortA,第二个用于PortB,第三个用于PortC。如果您为这些参数中的任何一个发送零,那么您告诉UBW您希望该端口是所有输出。如果发送255,则表示您希望该端口的所有位都是输入。数字的每一位代表端口中的一个引脚。因此,例如,如果要将PortB的Pin0设为输出,将Pin1设为输入,将Pins3设为7输出,则可以使用(二进制)0b00000010(十进制为2)。您可以将每个端口中的每个引脚设置为输入或输出。我们想要建立PortA Pin0和Pin1输入,因此我们将为PortA参数发送3(十进制),然后为所有其他引脚输出,因此它们都会得到零。
对于我们这里的例子,C,3,0,0,0告诉UBW我们希望PortA的第0位和第1位是输入,其他一切都是输出。最后一个参数是要打开的模拟输入的数量。我们不想要任何东西,所以我们将其保留为零。
现在我们需要阅读输入。我们使用“I”命令。输入
一世
然后按Enter键。它会发回一个看起来像这样的响应:
我,003000001
“I”命令代表“输入”,它有三个参数(对于28引脚UBW),每个参数用逗号分隔。参数是十进制值,表示每个输入端口的哪些位为高电平,或+ 5V。第一个参数用于PortA,第二个用于PortB,第三个用于PortC。同样,每个数字的每个位代表该端口上一个引脚的状态。所以在上面的响应中,我们可以看到我的PortA Pin0上有+ 5V,这意味着开关未关闭。PortA Pin1开关也是+ 5V,意味着没有关闭。如果您一遍又一遍地键入“I”,当您按下并释放每个开关时,您可以看到代表其状态的位发生变化。您将获得000,001,002或003作为UBW的I响应的第一个参数,
请注意,UBW在PC上发回给您的参数始终用零填充。这是为了使这些消息的处理非常容易。您知道,对于“I”命令响应,来自字符串前面的第5个字符将_always_是PortA数字输入参数的个位数。如果数字不是零填充,那么它们在字符串中的位置会随着它们的值的改变而改变。
所以,您可能想知道为什么上面的PortC数字输入参数中有001。原因是因为UBW在发送“I”命令时在PortC Pin0上输出HIGH(1)。你能弄清楚(从UBW原理图)为什么会这样?我会给你一个提示:它会'闪烁'开关。
现在点亮那些LED。假设您等待两个开关输入为高电平(即+ 5V),然后您想要点亮两个LED,但其余时间您希望两个LED都变暗。使用“O”命令,该命令再次获取3个参数,每个端口一个。
O,0,0,0
该命令将所有PortB(所有引脚)设置为低电平或接地。这会关闭LED。现在,如果我们发送此命令:
O,0,192,0
它将打开PortB的bit7和bit6,它将在PortB Pin7和Pin6输出+ 5V,这将打开我们的两个LED。
通过使用I和O命令,您可以读取任何输入并将任何输出设置为高或低状态。
简单Liberty基本示例:
所有这一切的真正威力不在于使用终端仿真器。两个傻LED的打字真是太多了!但我们需要学习做什么。现在,我们可以有一些真正的乐趣。UBW的强大之处在于PC可以读取输入值并写入输出,所有这些都在程序的控制之下。什么?你没有程序?凉。我们会在这里做一个。
下载并安装Liberty Basic。键入以下程序(或复制/粘贴),但要小心将“COM4”部分更改为UBW所在的任何COM端口。该程序将配置UBW,然后根据其看到的输入自动连续读取输入并设置LED输出。它将循环100次然后停止。
'UBW Tutorial#1 Liberty Basic应用程序代码“由Brian Schmalz撰写,2007年10月16日,UBW FW D 1.4.2
'首先打开UBW的COM端口打开“COM4:9600,N,8,1”随机为#UBW
'然后发送带有适当参数的C命令打印#UBW,“C,3,0,0,0”
'然后进入循环,发送I命令,等待响应,然后决定'根据这种反应做什么。FOR x = 1到100 '等一下UBW回应 FOR T = 1到10000 下一个T
'然后阅读UBW的任何回复并丢弃 没有$ = INPUT $(#UBW,LOF(#UBW))
'发送“我”命令 打印#UBW,“我”
'并等待14个字符回来 尽管LOF(#UBW)<14 WEND
'读入数据 InData $ = INPUT $(#UBW,LOF(#UBW))
'现在做出决定 如果MID $(InData $,5,1)=“0”那么 '如果两个开关均已按下,则打开LED指示灯 打印“打开LED” 打印#UBW,“O,0,192,0” 其他 '如果两个开关都没有按下,则关闭LED 打印“关闭LED” 打印#UBW,“O,0,0,0” 万一下一个x
关闭#UBW
打印“全部完成。”
结束你有。您现在拥有一个非常可配置的AND门。只有按下两个开关,LED才会打开。这是一个AND门!
进一步发展:
现在你了解基础知识。还有许多有趣的命令需要学习,但只需要本教程中包含的信息,您可以轻松地使8个LED以您喜欢的任何模式闪烁,您可以使用两个开关在模式中“点击”,将其存储在您的应用程序,它在LED上的播放,你可以使按钮在LED等上产生光图案。这就是开关和LED - 你可以(使用各种电路,所有这些都可以在网上找到)不同的地方)将您的UBW连接到红外探测器到时间段汽车或松木德比赛,您可以将您的UBW连接到您的圣诞灯以制作不同的图案等。
|
|