軟件設計中初始化設置要定義各端口的功能,電機的初始化主要是運行前設置端口的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軟件程序流程
結語