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

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

3天内不再提示

使用按钮依次切换8个输出且可控制输出通道

冬至子 来源:呆萌的长颈鹿 作者:三十而惑 2023-12-04 15:52 次阅读

本案例使用按钮依次切换8个输出且可控制输出通道,比如控制指示灯,可以输入序号来点亮该序号指示灯,连接时钟信号可以实现跑马灯效果。点击正向按钮则正序依次切换指示灯,如此反复。点击反向按钮则逆序依次切换指示灯。

功能介绍

图片

  • 如果EN为FALSE,则所有输出均为FALSE。输入EN必须为TRUE,在E = TRUE时只有一个输出Qn为TRUE。
  • 当E = TRUE时,使用输入UP从输出Qn切换到Qn +1,而输入DN将输出Qn切换到Qn-1。
  • 当E = TRUE时,可以由SET输入和输入IN值选择主动输出Q0..Q7。如SET=TRUE,IN=5将输出Q5=TRUE,而所有其他输出都设置为FALSE。
  • 当E = TRUE时,输入RST=TRUE将输出Q0设置为TRUE,而所有其他输出都设置为FALSE。
  • 当E = TRUE时,状态输出总是显示当前选择了哪个输出Qn;当E=FALSE时,状态输出保持不变,E再次变为TRUE时,Qn再次输出。

SELECT_8源代码

SELECT_8实现的是选择器的功能,内部调用一个取模函数INC,详见下面介绍取模运算(INC)以及其代码。

图片

图片

图片

01

取模运算(INC)

取模是除以两个数字时查找余数的操作。因此,当你问“什么是2 mod 2?”时,你是在问 “当你把 2 除以 2 时,余数是多少?”

图片

SELECT_8源代码

FUNCTION_BLOCK "SELECT_8"
TITLE = 'SELECT_8'
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      E : Bool;
      SET : Bool;
      IN : Int;
      UP : Bool;
      DN : Bool;
      RST : Bool;
   END_VAR




   VAR_OUTPUT 
      Q0 : Bool;
      Q1 : Bool;
      Q2 : Bool;
      Q3 : Bool;
      Q4 : Bool;
      Q5 : Bool;
      Q6 : Bool;
      Q7 : Bool;
      STATE : Int;
   END_VAR




   VAR 
      last_up : Bool;
      last_dn : Bool;
   END_VAR








BEGIN


IF #RST THEN
  #STATE := 0;
ELSIF #SET THEN
  #STATE := #IN;
ELSIF #UP AND NOT #last_up THEN
  #STATE := "INC"(X := #STATE, D := 1, M := 7);
ELSIF #DN AND NOT #last_dn THEN
  #STATE := "INC"(X := #STATE, D := -1, M := 7);
END_IF;
#last_up := #UP;
#last_dn := #DN;


#Q0 := FALSE;
#Q1 := FALSE;
#Q2 := FALSE;
#Q3 := FALSE;
#Q4 := FALSE;
#Q5 := FALSE;
#Q6 := FALSE;
#Q7 := FALSE;


IF #E THEN
  CASE #STATE OF
    0:
      #Q0 := TRUE;
    1:
      #Q1 := TRUE;
    2:
      #Q2 := TRUE;
    3:
      #Q3 := TRUE;
    4:
      #Q4 := TRUE;
    5:
      #Q5 := TRUE;
    6:
      #Q6 := TRUE;
    7:
      #Q7 := TRUE;
  END_CASE;
END_IF;




END_FUNCTION_BLOCK

INC源代码

FUNCTION "INC" : Int
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      X : Int;
      D : Int;
      M : Int;
   END_VAR








BEGIN


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

    关注

    3

    文章

    416

    浏览量

    28403
  • 跑马灯
    +关注

    关注

    5

    文章

    117

    浏览量

    34873
  • RST
    RST
    +关注

    关注

    0

    文章

    31

    浏览量

    7429
  • 时钟信号
    +关注

    关注

    4

    文章

    453

    浏览量

    28709
  • 选择器
    +关注

    关注

    0

    文章

    109

    浏览量

    14598
收藏 人收藏

    评论

    相关推荐

    STM32定时器DMA输出通道和双通道输出切换出现异常的原因?

    STM32定时器DMA输出通道和双通道输出切换出现异常
    发表于 03-26 06:44

    tlv5610是否可以控制单通道输出

    8通道DA芯片tlv5610,输出第一通道同时,第二
    发表于 01-24 07:37

    控制按钮切换相关

    单片机连接3按钮,怎么编写程序控制1按钮切换选中两
    发表于 04-04 14:29

    布尔按钮控制数字输出

    怎么设计VI使得上下左右停四按钮分别控制常数12345的输出
    发表于 05-08 18:51

    通道依次自动测试0-5v希望给点意见

    通道依次自动测试,测试输出端Led指示灯或电压显示模块显示。有那么一点思绪,不过全给否了。往大神给点意见。
    发表于 01-15 16:08

    请问该芯片是否可以控制单通道输出

    8通道DA芯片tlv5610,输出第一通道同时,第二通道
    发表于 06-12 06:14

    AD7124-8 AD采集的通道随机切换,怎么才能按顺序切换通道

    AD7124-8 采用8全差分输入,全功率,AD采集的通道随机切换,有时候两
    发表于 12-07 08:17

    矩阵切换器的输入/输出电平

    矩阵切换器的输入/输出电平  
    发表于 01-07 10:33 482次阅读

    mcgs按钮怎么切换画面

    第一在执行Sleep时,窗口0里是不能运行任何东西的,比如按钮之类的都不能好使了。所以我不喜欢用。而第二种就不会影响窗口里的东西,我一般是用第二,然后窗口0里面在放一
    的头像 发表于 02-09 09:54 2.8w次阅读
    mcgs<b class='flag-5'>按钮</b>怎么<b class='flag-5'>切换</b>画面

    如何通过并行端口控制32DAC通道

    有时,系统需要几个数字可编程电压输出通道。这种输出通道通常提供对机器人定位,工业过程甚至家庭自动化的控制。图1中的电路
    的头像 发表于 08-08 11:23 3417次阅读

    CN0405 带按钮控制的高压输出DAC

    。数字电位计AD5116提供64游标位置,端到端电阻容差为±8%,适合各类调整应用。此外,AD5116内置一EEPROM,可通过一按钮
    发表于 06-02 14:00 2次下载
    CN0405 带<b class='flag-5'>按钮</b><b class='flag-5'>控制</b>的高压<b class='flag-5'>输出</b>DAC

    温控器可控硅触发输出控制温度

    智能温控仪可控硅触发输出,分为可控硅(SCR)过零触发输出和SCR移相触发输出可控硅一般选
    的头像 发表于 10-24 09:43 8707次阅读

    按钮开/关电源控制

    本应用笔记给出了一按钮电源控制电路。该设计由一按钮、去抖动器和触发器组成的开/关控制电路
    的头像 发表于 06-25 11:21 1045次阅读
    单<b class='flag-5'>按钮</b>开/关电源<b class='flag-5'>控制</b>

    副边双输出控制器严格调节两隔离输出

    LT3804 是一款副边双输出控制器。它 包含一误差放大器和一光耦合器驱动器,以 调节第一输出
    的头像 发表于 06-26 11:49 785次阅读
    副边双<b class='flag-5'>输出</b><b class='flag-5'>控制</b>器严格调节两<b class='flag-5'>个</b>隔离<b class='flag-5'>输出</b>

    可控硅如何控制输出电压

    信号来控制阳极(Anode)和阴极(Cathode)之间的导通状态,从而实现对输出电压的控制。以下是关于可控控制
    的头像 发表于 07-31 09:35 1587次阅读