我想把这个程序驱动步进电机的部分做修改,把程序改为使用ULN2003A驱动的请大家帮忙修改一下吧,谢谢了。
没有图纸程序是别的网站复制的。
程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit fm=P2^2;//定义蜂鸣器
sbit eb=P2^3;//步进电机
sbit ez=P2^4;//钻孔电机
sbit led1=P2^7;//下降显示
sbit led2=P2^6;//工作显示
sbit led3=P2^5;//上升显示
sbit a=P2^0;//检测是否有板子的红外线传感器
sbit b=P2^1;//检测板子是否钻穿的红外线传感器
//
sbit fs=P3^7;//散热风扇
void delay(uint x);
uchar code table[]={0x07,0x0b,0x0d,0x0e};//定义升
uchar code table0[]={0x0e,0x0d,0x0b,0x07};//定义降
uchar i,j,n,k,num;
uint m;
void jiang()//定义降子函数
{
eb=0; //步进电机转动
led3=1;
for(i=0;i<4;i++)
{
P1=table0;
delay(4);
}
}
void sheng()//定义升子函数
{
eb=0;
m=180;//定义升的时间
while(m--)
{
for(i=0;i<4;i++)
{
P1=table;
delay(6);
ez=0;
}
}
}
void delay(uint x)//延时子函数
{
uint k,j;
for(k=x;k>0;k--)
for(j=110;j>0;j--);
}
void main()
{
for(i=3;i>0;i--)
{
led2=0;
fm=0;
delay(500);
led2=1;
fm=1;
delay(500);
}//开机提示
led2=0;
while(1)
{
if(a==0)//检测是否有板子
{
ez=0;//钻孔电机转动
jiang();//并开始下降
led1=0;//下降指示灯亮
fs=0;//散热风扇开始转动
}
else(eb=1,ez=1,led1=1);//否则步进电机,直流电机停止,下降指示熄灭。
if(b==0)//检测板子是否钻穿
{
delay(20);
if(b==0)//如果确认板子钻穿
{
fm=0;
delay(300);
fm=1;//蜂鸣器响一下
led3=0;//上升指示灯显示
sheng();//开始上升
}
}
else(
led3=1,
fm=1,
ez=1);
}
}
|