程序如下,不大,但是就是调试不好,帮忙看下,谢谢
//控制程序,控制时序说明:按下
电源键,系统供电,按下供膜,夹持电磁铁得电,延时500ms后电机启动,膜送至指定位置
//后传感器1发出信号,固定电磁铁吸合,电机自锁,夹持松开,500ms延时后电机反转,反转回指定位置时传感器2发出信号,
//电机停转,蜂鸣器提示待装入微孔板;微孔板装入后按下热封键,热封机启动热封,定时6s后固定电磁铁失电松开,热封结束
//后取出微孔板,此为一个工作循环。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit supply= P3^7;
sbit sealer= P3^6;
sbit power= P3^5;
sbit in1= P0^0;
sbit in2= P0^1;
sbit in3= P0^2;
sbit in4= P0^3;
sbit jiachi= P1^4;
sbit guding= P2^7;
sbit refeng= P2^6;
sbit chuangan1= P3^3;
sbit chuangan2= P3^2;
sbit buzzer= P1^5;
uchar code zz[]={0x03,0x06,0x0C,0x09}; //步进电机正转
uchar code fz[]={0x09,0x0A,0x06,0x03}; //步进电机反转
void delay(uint ms) //毫秒延时函数
{
uint t;
while(ms--)
for(t=0;t<120;t++);
}
void motor_zz() //步进电机正转
{
while(1)
{
uint i;
for(i=0;i<4;i++)
{
P0=zz[i];
delay(5);
}
}
}
void motor_fz() //步进电机反转
{
while(1)
{
uint j;
for(j=0;j<4;j++)
{
P0=fz[j];
delay(5);
}
}
}
void main()
{
while(1) //工作循环
{
supply=1; //清零操作
sealer=1;
power= 1;
jiachi= 1;
buzzer= 1;
guding=1;
chuangan1= 1;
chuangan2=1;
refeng= 1;
if(supply==0) //供膜检查
delay(10); //按键防抖
if(supply==0)
{
jiachi=0;
delay(20);
while(chuangan1==1)
{
motor_zz();
if(chuangan1==0)
break;
}
guding=0;
delay(20);
jiachi=1;
while(chuangan2==1)
{
motor_fz();
if(chuangan2==0)
break;
}
buzzer=0;
delay(20);
buzzer=1;
}
if(sealer==0) //热封检查
delay(20);
if(sealer==0)
{
refeng=0;
}
}
}
一周热门 更多>