欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)步進(jìn)電機(jī)控制源程序,根據(jù)按鍵控制圈數(shù)(注釋詳細(xì))
[打印本頁]
作者:
waveking
時(shí)間:
2019-3-17 10:54
標(biāo)題:
單片機(jī)步進(jìn)電機(jī)控制源程序,根據(jù)按鍵控制圈數(shù)(注釋詳細(xì))
以下是步進(jìn)電機(jī)的驅(qū)動(dòng)原碼,實(shí)現(xiàn)正轉(zhuǎn)反轉(zhuǎn),根據(jù)按鍵控制圈數(shù)
#include <reg52.h>
sfr P4 = 0xE8;
void KeyDriver();
void KeyScan();
signed long beats = 0; //電機(jī)轉(zhuǎn)動(dòng)節(jié)拍總數(shù)
/* 步進(jìn)電機(jī)啟動(dòng)函數(shù), angle-需轉(zhuǎn)過的角度 */
void StartMotor(signed long angle)
{
//在計(jì)算前關(guān)閉中斷,完成后再打開,以避免中斷打斷計(jì)算過程而造成錯(cuò)誤
EA = 0;
beats = (angle * 4076) / 360; //實(shí)測(cè)為 4076 拍轉(zhuǎn)動(dòng)一圈
EA = 1;
}
/* 步進(jìn)電機(jī)停止函數(shù) */
void StopMotor()
{
EA = 0;
beats = 0;
EA = 1;
}
/* 電機(jī)轉(zhuǎn)動(dòng)控制函數(shù) */
void TurnMotor()
{
unsigned char tmp; //臨時(shí)變量
static unsigned char index = 0; //節(jié)拍輸出索引
unsigned char code BeatCode[8] = { //步進(jìn)電機(jī)節(jié)拍對(duì)應(yīng)的 IO 控制代碼
0x6,0x7,0x3,0xb,0x9,0xd,0xc,0xe
};
if (beats != 0) //節(jié)拍數(shù)不為 0 則產(chǎn)生一個(gè)驅(qū)動(dòng)節(jié)拍
{
if (beats > 0) //節(jié)拍數(shù)大于 0 時(shí)正轉(zhuǎn)
{
index++; //正轉(zhuǎn)時(shí)節(jié)拍輸出索引遞增
index = index & 0x07; //用&操作實(shí)現(xiàn)到 8 歸零
beats--; //正轉(zhuǎn)時(shí)節(jié)拍計(jì)數(shù)遞減
}
else //節(jié)拍數(shù)小于 0 時(shí)反轉(zhuǎn)
{
index--; //反轉(zhuǎn)時(shí)節(jié)拍輸出索引遞減
index = index & 0x07; //用&操作同樣可以實(shí)現(xiàn)到-1 時(shí)歸 7
beats++; //反轉(zhuǎn)時(shí)節(jié)拍計(jì)數(shù)遞增
}
tmp = P4; //用 tmp 把 P4 口當(dāng)前值暫存
tmp = tmp & 0xF0; //用&操作清零低 4 位
tmp = tmp | BeatCode[index]; //用|操作把節(jié)拍代碼寫到低 4 位
P4 = tmp; //把低 4 位的節(jié)拍代碼和高 4 位的原值送回 P1
}
else //節(jié)拍數(shù)為 0 則關(guān)閉電機(jī)所有的相
{
P4 = P4 | 0xff;
}
}
作者:
hhyyzzcool
時(shí)間:
2019-3-18 01:28
學(xué)習(xí)學(xué)習(xí),好東東!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1