0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

仅使用两根电线即可感应多个按钮

星星科技指导员 来源:ADI 作者:ADI 2023-01-14 12:00 次阅读

对于只需要不到键盘或数字键盘的应用,这个简单的电路使用单个多通道1-Wire可寻址开关(DS2408)和几个外部元件来监视多个按钮开关。

键盘和数字小键盘通常为电子设备提供用户界面,但许多应用只需要少量按钮。对于这些,您可以通过一对电线监控多个按钮(图1)。

pYYBAGPCKMeADgNCAAAZ6JFG6P8406.gif?imgver=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更具成本效益。

poYBAGPCKMmAKn4bAAAFuQa4MfA860.gif?imgver=1

图2.如果使用二极管将其他按钮(最多 28 个)连接到两个端口,则可以对其进行监控。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电源
    +关注

    关注

    182

    文章

    16553

    浏览量

    244719
  • 电阻器
    +关注

    关注

    19

    文章

    3562

    浏览量

    61330
  • 锁存器
    +关注

    关注

    8

    文章

    744

    浏览量

    41037
收藏 人收藏

    评论

    相关推荐

    两根天线

    增益大
    发表于 09-01 16:28

    两根线重叠绕制的共模电感和两根线各自占磁环一边绕制的共模电感效果有什么区别

    如下图,图一的共模电感是两根线重叠绕制的,图二的共模电感是两根线各自占磁环一边绕制的,这个共模电感效果上有什么区别吗?各自有什么优点?用于什么场合?图一 共模电感是两根线重叠绕制图二
    发表于 09-29 10:26

    求大神帮忙,原理图的两根线这样画圈是什么意思?

    本帖最后由 cxyshuang 于 2016-1-27 17:29 编辑 原理图的两根线这样画圈是什么意思?
    发表于 01-27 16:56

    请问两根trace的阻抗随着距离的靠近怎么变化

    两根trace,阻抗大小均为50欧姆,当它们距离足够远时,者的阻抗和为100欧姆,当它们逐渐靠近时,者的阻抗和怎么变化,是大于100欧姆还是小于100欧姆?为什么?
    发表于 10-08 10:23

    请问GND上面的两根斜线是什么?

    RT,那两根斜线是什么鬼?
    发表于 04-17 06:36

    请问我这个u***那两根线为什么一直亮着?

    请问,我这个u***那两根线是怎么回事,一致亮着
    发表于 06-20 22:21

    为什么PCB大电流到要两根并行?

    PCB 为什么大电流到要两根并行
    发表于 07-07 22:19

    为什么Altium中u***那两根线一直是高亮?

    为啥u***那两根线一直是高亮
    发表于 07-11 05:35

    如何在AD中设置两根网络线的距离?

    AD怎么设置两根网络线的距离
    发表于 09-19 03:07

    请问485通讯中能把多个通讯设备直接并联在A,B两根线上吗?

    我想在485的通讯中直接把多个通讯设备直接并联在A,B两根线上,这样可以吗???PC经过232转485的板子,然后并联不大于10个的设备在A,B线上,这样可以通讯吗???如果这样可以的话,用那种协议
    发表于 10-21 01:49

    如何解释一火线是220V,两根火线是380V

    在生活中,我们都知道常用的电源电压是220V的,而在工厂车间里很多大型机器的电压是380V。一般两根火线是380V,单是220V,这是为什么呢? 电是矢量,它有方向和大小物理量。在交流发电机定子
    发表于 10-23 08:00

    喇叭两根线接反了会有区别吗

    请问喇叭两根线接反了会有区别吗?
    发表于 02-14 14:38

    如何去接外接制动电阻的两根线

    本文适用于立迈胜PMM系列一体化伺服电机出现的常见问题。如您的伺服电机是其他型号的请谨慎操作。解决方法如下:外接制动电阻的两根线,其中一接到电机的制动电阻线上,另一接到电机48V
    发表于 09-01 07:53

    耳机子两根线断了有没有正负

    先上图:耳机子两根线都断了,网上搜的说没有正负。还说要去掉漆。两根线一黄的,一绿的,那绿的是不是涂漆了,怎么去掉啊?谢谢!
    发表于 02-08 16:02

    四线直流碳刷电机转子两根线定子的两根线怎么接才能转呢?

    四线直流碳刷电机转子两根线定子的两根线怎么接才能转呢?
    发表于 03-20 14:22