上位机(delphi编程)通过51单片机控制步进电机 15
上位机控制程序如下(部分)procedureTFrmMain.tingzhiClick(Sender:TObject);varstr:Pchar;Count:intege...
上位机控制程序如下(部分)
procedure TFrmMain.tingzhiClick(Sender: TObject);
var
str: Pchar;
Count: integer;
bb:integer;
sbuf:array[1..16] of byte;
begin
sbuf[3]:=($03);
for bb:=3to 3do;
comm1.WriteCommData(@sbuf[3],3);
str := Pchar(edit1.Text);
Count := Length(str);
if Comm1.WriteCommData(str,count) then
memo1.Lines.Add('已发送' + intTostr(Count) + '个字符'+'停止:')
else
raise exception.Create('发送错误');
end;
单片机控制程序如下:
void main()
{
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
while(1)
{ if (Flag==1)
{
EA=0;
SBUF=SenData; //SUBF接受/发送缓冲器
while(TI==0);
TI=0;
Flag=0;
EA=1;
}
if(SenData==0x03)//停止
{
while(1)
//A
{ PH1 = 1; //PH1为0 则A线圈为反向电流,自定义PH1=P2^1
PH1 = 0 ;
PH2 = 1; //PH2为1 则B线圈为正向电流
PH2 = 0;
I01 = 1;
I11 = 1;
I02 = 1;
I12 = 1;
SBUF=0x03 ;
delay(speed);
}
} }
这些程序只能让步进电机转动一步,不能让它连续转动。上位机加延时控件,控制时电机可以连续转动但是每隔一段时间电机会停顿一下同时memo窗口显示的数据出现乱码。delphi中我采用的spcomm串口通信口。问我该怎么修改程序才能让电机可以连续不断转动而不会出现停顿乱码的状况。求详解最好有程序,谢谢各位大神了。
步进电机为四线双极性,要怎么输入状态有没有具体的方法? 展开
procedure TFrmMain.tingzhiClick(Sender: TObject);
var
str: Pchar;
Count: integer;
bb:integer;
sbuf:array[1..16] of byte;
begin
sbuf[3]:=($03);
for bb:=3to 3do;
comm1.WriteCommData(@sbuf[3],3);
str := Pchar(edit1.Text);
Count := Length(str);
if Comm1.WriteCommData(str,count) then
memo1.Lines.Add('已发送' + intTostr(Count) + '个字符'+'停止:')
else
raise exception.Create('发送错误');
end;
单片机控制程序如下:
void main()
{
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
while(1)
{ if (Flag==1)
{
EA=0;
SBUF=SenData; //SUBF接受/发送缓冲器
while(TI==0);
TI=0;
Flag=0;
EA=1;
}
if(SenData==0x03)//停止
{
while(1)
//A
{ PH1 = 1; //PH1为0 则A线圈为反向电流,自定义PH1=P2^1
PH1 = 0 ;
PH2 = 1; //PH2为1 则B线圈为正向电流
PH2 = 0;
I01 = 1;
I11 = 1;
I02 = 1;
I12 = 1;
SBUF=0x03 ;
delay(speed);
}
} }
这些程序只能让步进电机转动一步,不能让它连续转动。上位机加延时控件,控制时电机可以连续转动但是每隔一段时间电机会停顿一下同时memo窗口显示的数据出现乱码。delphi中我采用的spcomm串口通信口。问我该怎么修改程序才能让电机可以连续不断转动而不会出现停顿乱码的状况。求详解最好有程序,谢谢各位大神了。
步进电机为四线双极性,要怎么输入状态有没有具体的方法? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询