对于只需要不到键盘或数字键盘的应用,这个简单的电路使用单个多通道1-Wire可寻址开关(DS2408)和几个外部元件来监视多个按钮开关。
键盘和数字小键盘通常为电子设备提供用户界面,但许多应用只需要少量按钮。对于这些,您可以通过一对电线监控多个按钮(图1)。
图1.该电路连接到微控制器,仅使用两根电线即可监控8个按钮。
多通道、1-Wire可寻址开关(U1、DS2408)提供输入/输出端口P0–P7,在本应用中用作输入。高值电阻器(R帕金森)将这些端口接地以确保定义的逻辑状态(0),D1–C1形成本地电源,从1-Wire通信线路窃取能量。当您按下按钮时,它将相应的端口连接到本地电源电压,相当于逻辑1。这种状态变化设置端口的活动锁存器(参见数据手册)。
条件搜索轮询
作为1-Wire从器件,U1不启动通信。相反,主机(通常为微控制器)轮询1-Wire线路。为了最大限度地降低开销,U1支持称为“条件搜索”的1-Wire网络功能。但是,在使用该功能之前,必须根据应用程序的需要配置 U1。这包括定义合格输入端口(通道选择),指定合格端口的极性(通道极性选择),在端口的引脚或活动锁存器之间进行选择,以及指定设备是响应单个端口的活动(OR)还是所有端口的活动(AND)。
配置示例
例如,如果八个端口中的任何一个检测到活动,则考虑 U1 将执行条件搜索。此条件需要以下配置设置:通道选择掩码(地址 008Bh)= 11111111b(1 表示选择了端口);通道极性选择寄存器(地址008Ch)= 11111111b(1表示电平必须高);控制/状态寄存器(地址 008Dh) = 00000001b(选择端口的活动锁存器作为源,并指定 OR 作为条件搜索词,即单个端口上的活动)。
上电后,必须使用写入条件搜索寄存器命令将配置数据加载到 U1 中。要用作输入,PIO 输出锁存器必须设置为 1。通道访问写入命令(以 FFh 作为 PIO 输出数据字节)将端口定义为输入。随后,“重置活动闩锁”命令的发出将完成配置。U1 现在已准备好处理按钮活动。
软件大纲
配置U1后,上电时的应用软件进入无限循环,其中1-Wire复位后跟条件搜索命令。如果没有按钮活动,则 U1 没有响应,如条件搜索命令代码后面的两个位的“逻辑 1”所示。在这种情况下,微控制器取消条件搜索并重新开始。
如果 U1 响应条件搜索,则前两位将为 1 和 0,以真形式和反转形式表示设备家族代码 (29h) 的最低有效位。在这种情况下,微控制器应完成条件搜索流程,该流程由192位序列组成(参见数据手册)。接下来,微控制器通过使用PIO活动锁存器状态寄存器的地址(地址008Ah)发出读取PIO寄存器命令来读取寄存器的数据。然后,微控制器发出1-Wire复位,然后发出恢复和复位活动锁存器命令。然后,它返回到无限循环,轮询下一个按钮事件。
如果U1响应且未连接其他1-Wire从机,微控制器可在读取前2位后取消条件搜索,发出1-Wire复位,然后发出Skip ROM命令,然后读取PIO活动锁存器状态寄存器。接下来,它必须发出1-Wire复位,然后发出跳过ROM和复位活动锁存器命令,然后返回无限循环。
按下了哪个按钮?
从PIO活动锁存器状态寄存器读取的代码包含答案。如果按下 PB1,则数据为 00000001b,对于 PB2,数据为 00000010b,依此类推。8 位中至少有一个为 1。如果自上次“重置活动闩锁”命令以来按下了多个按钮,则几个位将为 1。然后,应用软件必须决定此类条件是否有效。 (在最简单的情况下(8 个代码中的 1 个),软件会将所有设置了多个位的代码视为无效。
超过 8 个按钮
这个概念可以扩展到8个以上的按钮。您可以将其他按钮与同时激活的两个端口相关联,而不是将一个按钮与一个端口相关联(2/8 代码)。这些附加按钮 (PBn) 的连接如图 2 所示(x, y = 0 到 7, x ≠ y)。如果 Px 或 Py 被另一个按钮激活,二极管会阻止该活动传播到其他端口。同样,应用软件必须检查从PIO活动锁存器状态寄存器读取的代码,以确定其是否有效。这个概念的理论极限是 255 个按钮,每个额外的按钮需要组合 2、3、4、5、6、7 或 8 个二极管。当每增加一个按钮的二极管成本开始超过收益时,你会发现再增加一个DS2408更具成本效益。
图2.如果使用二极管将其他按钮(最多 28 个)连接到两个端口,则可以对其进行监控。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !