軟件設(shè)計(jì)中初始化設(shè)置要定義各端口的功能,電機(jī)的初始化主要是運(yùn)行前設(shè)置端口的I/O方向,確定所選擇的細(xì)分驅(qū)動方式等。之后,要實(shí)時(shí)獲得電機(jī)的工作狀態(tài)和驅(qū)動電機(jī)運(yùn)轉(zhuǎn),并在中斷服務(wù)程序中處理電機(jī)的丟步和轉(zhuǎn)向控制[6]?,F(xiàn)代單片機(jī)運(yùn)行速度都很快,所以對編碼器采用軟件鑒相,既簡化電路結(jié)構(gòu),又節(jié)約成本。將編碼器的A相與單片機(jī)的外部中斷INT0相連,B相與普通I/O口的P1.0相連。由于編碼器的A相與B相在輸出上有固定的相位關(guān)系,正轉(zhuǎn)與反轉(zhuǎn)時(shí)編碼器的A、B兩相的電平信號不同,正轉(zhuǎn)時(shí),每當(dāng)A相出現(xiàn)高電平的前四分之一周期時(shí),B相為高電平;反轉(zhuǎn)時(shí),每當(dāng)A相出現(xiàn)高電平的前四分之一周期時(shí),B相為低電平。因此,單片機(jī)使用外部中斷0來處理編碼器數(shù)據(jù),把編碼器的A相接中斷源。在中斷服務(wù)程序中,程序通過讀取B相(P1.0口)的狀態(tài)來確定編碼器的轉(zhuǎn)向,進(jìn)而完成加1或者減1的雙向計(jì)數(shù)。軟件程序流程如圖4所示。
圖4軟件程序流程
結(jié)語