标题:
请教一个遥控升降控制单片机程序上下需要按两次的问题,谢谢大家
[打印本页]
作者:
深圳芙蓉王
时间:
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;
}
}
}
}
作者:
lkc8210
时间:
2023-3-21 21:28
你把按键引脚设为高阻
然后检测高电平(按下)
那引脚有没有加下拉电阻?
作者:
glinfei
时间:
2023-3-22 15:04
没看懂你的问题,但你程序确实有问题,主要是if 和 while 判断事项有重合且不能在时序上分开,比如在升的过程,如果被while(UP==0)截获,那就停不下来了。
作者:
yzwzfyz
时间:
2023-3-22 16:41
建议:
先画个逻辑流程图,走通流程后,按图写程序。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1