找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3581|回复: 12
收起左侧

STC15F104W控制逻辑器

[复制链接]
ID:12312 发表于 2015-7-13 17:06 | 显示全部楼层 |阅读模式
用此单片机控制两个IO状态,有信号时变高电平,无信号时变低电平,有一个开关无论前面有没有信号都取反控制。请问哪位大侠有没有这么方面的程序参考一下,或者说有没有逻辑方式

回复

使用道具 举报

ID:73833 发表于 2015-7-15 21:03 | 显示全部楼层
本人愚钝,不明白楼主的意思:是谁有无信号时,是其中的一个I/O口变高变低吗?,另一个开关又是哪位呢?是两个I/O口始终取反吗?哎,你的语言表达……

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:12312 发表于 2015-7-21 13:01 | 显示全部楼层
哦,本人表达可能有问题,单片机的有两个IO端作输入,一个是按键一个是外部电平的高低变化,当外部电平为高时关电机,为低时开电机,同时按按键的
回复

使用道具 举报

ID:12312 发表于 2015-7-21 13:09 | 显示全部楼层
又可以让电机取反转动,但同时输入端会长期会保持一个高电平或一个低电平。比如外部是低电平电机开启正转,此时按按键电机反转但松手后电机又正转,因为外部输入是高电平。同理外部高电平时按按键时也是这样。所有这个逻辑要怎么处理。
回复

使用道具 举报

ID:80992 发表于 2015-7-21 20:18 | 显示全部楼层
很牛的逻辑看了都没看出来电机转究竟会朝那边转

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:86421 发表于 2015-7-21 22:30 | 显示全部楼层
没明白说的是什么
回复

使用道具 举报

ID:12312 发表于 2015-7-22 23:43 | 显示全部楼层
首先要谢谢你的回复我会测试后回复于你,下面是本人写的就是按住按键时电机有动,松手就是反转。想请大侠顺便看一下本人哪里的错了,可以好好向你们学习学习。


#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
uchar flag,b;
sfr P3M0 = 0xB2;
sfr P3M1 = 0xB1;

sbit  MA = P3^2;
sbit  MB = P3^3;

sbit  LED1 = P3^0;
sbit  LED2 = P3^1;
sbit  KEY1 = P3^4;
sbit  KEY2 = P3^5;

void delayms(uchar x)
{
  uchar i,j;
  do
    {
      for(i=12;i>0;i-- )
          for(j=169;j>0;j-- );
    }
        while(--x);
}

void sw_12()
  {
    if(KEY1==0)//正转
         {
           delayms(10);
           if(KEY1==0)
           {
                    MA=~MA;MB=~MB;LED1=~LED1;LED2=~LED2;
           }
          while(KEY1==0);
     }
  }

void sw_13()
  {
    if(KEY2==1)//正转
         {
           delayms(10);
           if(KEY2==1)
           {
                     MA=1;MB=0;LED1=1;LED2=0;
           }
//           while(KEY2==1);
     }

  }

void sw_14()
  {
    if(KEY2==0)//正转
         {
           delayms(10);
           if(KEY2==0)
           {
                    MA=0;MB=1;LED1=0;LED2=1;
           }
           while(KEY2==0);
     }
  }


void main()
{
  P3M0 = 0x0C;
  P3M1 = 0x00;
  //P3=0xff;
  MA=1;MB=1;LED1=1;LED2=1;
  
  while(1)
  {
    sw_12();
    sw_13();
    sw_14();
    /*switch(b)
  {
           case 1:MA=0;MB=1;LED1=0;LED2=1;break;
         case 2:MA=1;MB=0;LED1=1;LED2=0;b=0;break;         
  }*/        
  }
  

}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:12312 发表于 2015-7-22 23:46 | 显示全部楼层
首先要谢谢你给我解答。本人也写了个程序麻烦大侠们给我看看哪里出了问题。
回复

使用道具 举报

ID:86626 发表于 2015-7-23 16:07 | 显示全部楼层
描述实在是看不明白,
回复

使用道具 举报

ID:86626 发表于 2015-7-23 16:07 | 显示全部楼层
不懂你按键用来控制什么。
回复

使用道具 举报

ID:12312 发表于 2015-7-23 21:00 | 显示全部楼层
按键做为测试之用,就是看一下电路有没有问题。简单点来说的话就是,输入的高电平控制马达正转,输入低电平时控制马达反转。按键就是在任意状态时按下后马达可以来回转动。不知道这样说能不能明白
回复

使用道具 举报

ID:12312 发表于 2015-7-24 11:43 | 显示全部楼层
现在主要的问题是输入端在任何都有一个状态。要怎么个方式来取反控制电机转动。而不影响输入控制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表