上位机(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串口通信口。问我该怎么修改程序才能让电机可以连续不断转动而不会出现停顿乱码的状况。求详解最好有程序,谢谢各位大神了。
步进电机为四线双极性,要怎么输入状态有没有具体的方法?
展开
 我来答
百度网友186dfeac08
2013-10-11 · TA获得超过754个赞
知道小有建树答主
回答量:1074
采纳率:50%
帮助的人:529万
展开全部
要让步进电机不停地转下去,那就一直输入状态就行啦,期间不要停顿。

另外,你的步进电机是几线几相的?
更多追问追答
追问
步进电机为四线双极性,要怎么输入状态有没有具体的方法?
追答
哦,有空帮你看看。现在没空,不好意思啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式