您现在所在的是:

单片机论坛

回帖:4个,阅读:1372 [上一页] [1] [下一页]
1082
jjkg
文章数:55
年度积分:50
历史总积分:1082
注册时间:2007/3/25
发站内信
发表于:2009/4/23 22:19:14
#0楼
附件:
[本地下载]
单片机控制继电器+直流电机,程序不一样,干扰也不一样,???请指教,有电路图
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit s1=P3^5;//执行控制开关
sbit s2=P3^4;//主刀控制开关
sbit k1=P1^0;//继电器1输出主刀电机用
sbit k2=P1^5;//继电器2输出主刀电机用
sbit k3=P1^6;//继电器3输出移动电机用
void delay(uint z);//延时声明
void main()//主程序
{
s1=1;
s2=1;
k1=1;
k2=1;
k3=1;
if(s1==0)
 {
  k1=0;
  delay(5000);
  k2=0;
  delay(500);
  while(!s1)//BT1上电程序运行,当把电机直接到BT2时,K1就会不停的乱动。
     // 当把while(!s1),改为while(1)时,同样把电机直接到BT2,这时K1不乱动
  {
  k1=1;
  }
 }
 else{k1=1;k2=1;k3=1;}



}
/***********************************/
void delay(uint z)//延时子程序
{
uint x,y;
for(x=1;x>0;x--)
   for(y=z;y>0;y--);
}  
/***********************************/
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2009/4/24 13:41:02
#1楼
s1=1的时候,程序飞出?
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
1809
yyddyym
文章数:201
年度积分:53
历史总积分:1809
注册时间:2007/10/4
发站内信
发表于:2009/5/10 0:16:35
#2楼
当S1S2都没按下时,程序只运行一次就飞了,
在主程序里加上
for(;;)
{
   if(s1==0)
 {
  k1=0;
  delay(5000);
  k2=0;
  delay(500);
  while(!s1)//BT1上电程序运行,当把电机直接到BT2时,K1就会不停的乱动。
     // 当把while(!s1),改为while(1)时,同样把电机直接到BT2,这时K1不乱动
  {
  k1=1;
  }
 }
 else{k1=1;k2=1;k3=1;}


}
/***********************************/
void delay(uint z)//延时子程序
{
uint x,y;
for(x=1;x>0;x--)
   for(y=z;y>0;y--);
}  

}
才对,主程序是不能结束的
3641
yueliang150
文章数:389
年度积分:50
历史总积分:3641
注册时间:2003/4/24
发站内信
发表于:2009/5/12 8:06:52
#3楼
这样写逻辑控制是不好的!!!
中间延时不要等待停顿,要想PLC一样循环扫描。
单片机、ARM产品开发设计;
小设备、夹具、治具控制器设计开发;数码管、点阵LED电子看板开发;
17528
ahljj
文章数:3386
年度积分:240
历史总积分:17528
注册时间:2002/3/23
发站内信
发表于:2010/7/13 15:02:38
#4楼
学习了

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004