找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 465|回复: 3
打印 上一主题 下一主题
收起左侧

请教一个遥控升降控制单片机程序上下需要按两次的问题,谢谢大家

[复制链接]
跳转到指定楼层
楼主
ID:408861 发表于 2023-3-21 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大咖好,本人才疏学浅,业余尝试自己写写简单的程序,现在遇到一个困惑:
遥控升降过程中,电机从底部向上走,或者从顶部向下走,会被行程开关影响到停机的问题,我现在把我程序贴出,看能否指点一二,感谢!

单片机源程序如下:
#include<STC15.H>

sbit  A = P3^2;//遥控升
sbit  B1 = P3^3;//遥控停
sbit  C = P3^4;        //遥控降         
sbit  M1 = P1^0;//电机正
sbit  M2 = P1^1;//电机反
sbit  UP = P2^0;//上限位开关
sbit  DN = P2^1;//下限位开关

void main ()
{
                P1M0 = 0XFF;//配置为强输出
                P1M1 = 0X00;//配置为强输出
                P3M0 = 0X00;//配置为高阻输入
               P3M1 = 0XFF;//配置为高阻输入
               P2M0 = 0X00;//配置为准双向口
               P2M1 = 0X00; //配置为准双向口  
              A = 0;         //上电初始置低
              B1 = 0;        //上电初始置低
              C = 0;        //上电初始置低
              M1 = 0;        //上电初始置低
              M2 = 0;        //上电初始置低
        while (1)
         {         
                                if(A==1)        //当按下遥控升且同时上限位开关打开
                      {
                   M1=1;          //电机上升
                    M2=0;         
                         }
                         if(C==1)        //当按下遥控升且同时上限位开关打开
                      {
                    M1=0;          //电机下降
                    M2=1;         
                         }
               
         if(UP==0||DN==0||B1==1)  //当上限开关或者下限开关闭合或者遥控停
              {
                    M1=0;  //电机停
                    M2=0;
                                  }
                       
                while(UP==0) //当上限开关闭合后进入遥控降等待状态
                        {

                        if(C==1)  //遥控降给信号
                       {
                          M1=0;          //电机下降
                          M2=1;}
                           }
                while(DN==0) //当下限开关闭合后进入遥控升等待状态
                        {
                         if(A==1)
                          {
                          M1=1;          //电机上升
                          M2=0;
                          }      
                          
                        }
                        
                          }
}
         
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2023-3-21 21:28 | 只看该作者
你把按键引脚设为高阻
然后检测高电平(按下)
那引脚有没有加下拉电阻?
回复

使用道具 举报

板凳
ID:844772 发表于 2023-3-22 15:04 | 只看该作者
没看懂你的问题,但你程序确实有问题,主要是if 和 while 判断事项有重合且不能在时序上分开,比如在升的过程,如果被while(UP==0)截获,那就停不下来了。
回复

使用道具 举报

地板
ID:123289 发表于 2023-3-22 16:41 | 只看该作者
建议:
先画个逻辑流程图,走通流程后,按图写程序。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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