软件设计中初始化设置要定义各端口的功能,电机的初始化主要是运行前设置端口的I/O方向,确定所选择的细分驱动方式等。之后,要实时获得电机的工作状态和驱动电机运转,并在中断服务程序中处理电机的丢步和转向控制[6]。现代单片机运行速度都很快,所以对编码器采用软件鉴相,既简化电路结构,又节约成本。将编码器的A相与单片机的外部中断INT0相连,B相与普通I/O口的P1.0相连。由于编码器的A相与B相在输出上有固定的相位关系,正转与反转时编码器的A、B两相的电平信号不同,正转时,每当A相出现高电平的前四分之一周期时,B相为高电平;反转时,每当A相出现高电平的前四分之一周期时,B相为低电平。因此,单片机使用外部中断0来处理编码器数据,把编码器的A相接中断源。在中断服务程序中,程序通过读取B相(P1.0口)的状态来确定编码器的转向,进而完成加1或者减1的双向计数。软件程序流程如图4所示。
图4软件程序流程
结语