公司新闻

重庆时时彩走势第25节:用LED灯和按键来模拟工业

  控制跑马灯的各种状态,这一节我们要做一个机械手控制程序,这个机械手可以左右移动,最左边有一个开关感应器,最右边也有一个开关感应器。它也可以上下移动,最下面有一个开关感应器。左右移动是通过一个气缸控制,上下移动也是通过一个气缸控制。而把信号放大,然后控制气缸上的电磁阀。这个系统机械手驱动部分的输出和输入信号如下:

  2个输出IO口,分别控制2个气缸。对于左右移动的气缸,当IO口为0时往左边跑,当IO口为1时往右边跑。对于上下移动的气缸,当IO口为0时往上边跑,当IO口为1时往下边跑。

  3个输入IO口,分别检测3个开关感应器。感应器没有被触发时,IO口检测为高电平1。被触发时,IO口检测为低电平0。

  第二点:如何用Switch语句搭建工业自动控制的程序框架。还是那句话,我们只要以Switch语句为支点,再复杂再繁琐的程序都可以轻松地编写出来。

  (1)硬件平台:基于朱兆祺51单片机学习板。用矩阵键盘中的S1键作为启动独立按键,用S5按键模拟左边的开关感应器,用S9按键模拟右边的开关感应器,用S13按键模拟下边的开关感应器。记得把输出线一直输出低电平,模拟独立按键的触发地GND。

  开机默认机械手在左上方的原点位置。按下启动按键后,机械手从左边开始往右边移动,当机械手移动到最右边时,机械手马上开始往下移动,最后机械手移动到最右下角的位置时,延时1秒,然后原路返回,一直返回到左上角的原点位置。注意:启动按键必须等机械手处于左上角原点位置时,启动按键的触发才有效。

  void sensor_scan(); //开关感应器软件抗干扰处理函数,放在定时中断里。

  * 按键去抖动关注的是IO口的一种状态,而开关感应器关注的是IO口的两种状态。

  * 当开关感应器从原来的1状态切换到0状态之前,要进行软件滤波处理过程,一旦成功地

  * 切换到0状态了,再想从0状态切换到1状态的时候,又要经过软件滤波处理过程,符合

  * 开关感应器从1变成0难,从0变成1也难。这里所说的难是指要经过去抖处理。

  void sensor_scan() //开关感应器软件抗干扰处理函数,放在定时中断里。

  if(left_sr==1)//左边感应器是高电平,说明有可能没有被接触 对应朱兆祺学习板的S5键

  uiLeftCnt1=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零

  uiLeftCnt2=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零

  if(right_sr==1)//右边感应器是高电平,说明有可能没有被接触 对应朱兆祺学习板的S9键

  uiRightCnt1=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零

  uiRightCnt2=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零

  if(down_sr==1)//下边感应器是高电平,说明有可能没有被接触 对应朱兆祺学习板的S13键

  uiDownCnt1=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零

  uiDownCnt2=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零

  if(key_sr1==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位

  uiKeyTimeCnt1=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。

  ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发

  ucLed_update=0; //及时清零,让它产生只更新一次的效果,避免一直更新。

  hc595_st_dr=0;//ST引脚把两个寄存器的数据更新输出到74HC595的输出引脚上并且锁存起来

  case 0: //机械手处于左上角原点的位置,待命状态。此时触发启动按键ucRunStep=1,就触发后续一些列的连续动作。

  case 2: //等待机械手移动到最右边,直到触发了最右边的开关感应器。

  case 4: //等待机械手从右上边移动到右下边,直到触发了右下边的开关感应器。

  uiRunTimeCnt=0;//时间计数器清零,为接下来延时1秒钟做准备

  case 9: //原路返回,等待机械手移动到最左边的感应开关,表示返回到了原点

  uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止。才停止鸣叫

  ; //此处多加一个空指令,想维持跟if括号语句的数量对称,都是两条指令。不加也可以。

  key_gnd_dr=0; //模拟独立按键的地GND,因此必须一直输出低电平

  前面花了很多节内容在讲按键和跑马灯的关系,但是一直没涉及到人机界面,在大多数的实际项目中,人机界面是必不可少的。人机界面的程序框架该怎么样写?欲知详情,请听下回分解-----在主函数while循环中驱动数码管的动态扫描程序。

重庆时时彩走势

联系我们

CONTACT US

联系人:张先生

手机:13988889999

电话:020-66889888

邮箱:admin@casi-bc.com

地址:广东省广州市番禺经济开发区58号