91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

//兩相5、6線步進電機,分為四拍和八拍,這里介紹輸出八拍方式:A-AC-C-CB-B-BD-D-DA

資源截圖

代碼片段和文件信息

//兩相5、6線步進電機,分為四拍和八拍,這里介紹輸出八拍方式:A-AC-C-CB-B-BD-D-DA
//四拍:A-C-B-D,因此在八拍的基礎上減去中間的就可以了,不過步距角要大一倍
#include?
#include?

sbit?la=P2^0; //定義兩相電機的四組線,從板上設計來分配,選擇P2口的低四位輸出相應的輸出也可以反應在LED燈上
//P2。0為A相,P2。1為B相,P2。2為C相,P2。3為D相
sbit?lb=P2^1;
sbit?lc=P2^2;
sbit?ld=P2^3;

#define?uchar?unsigned?char
code?unsigned?int?lhj[]={1501001508011005001204003080050100
150120020080140020150130020090050150};
//定義電機動作的參數,每三個數為一組,第一個是方向(1、正轉,0、反轉)
//第二個是步進量,第三個是轉速
unsigned?char?key();//鍵盤動作,這里的鍵盤掃描只用到四個按鍵有效(板上標的0,4,8,C)
unsigned?char?right(unsigned?int?Speedunsigned?int?road); //正轉
unsigned?char?left(unsigned?int?Speedunsigned?int?road); //反轉
void?mDelay(unsigned?int?DelayTime); //延時函數


void?main()
{??
uchar?i=0;
while(1){
if(key()==0xde){//8的按鍵按下
for(i=0;i<34;i+=3){//循環輸出我們定義好的動作數據
if(lhj[i]) //調入數組,先判斷正反轉
right(lhj[i+1]lhj[i+2]); //兩個參數代表步進量和轉速
else
left(lhj[i+1]lhj[i+2]);
if(key()==0xee)//C的按鍵按下
break;
}
}
}

}
unsigned?char?right(unsigned?int?Speedunsigned?int?road)//兩個參數代表步進量和轉速
{
//步進節拍:A-AC-C-CB-B-BD-D-DA
while(1){
if(!Speed) //判斷步進量走完沒?以下都是,每走一步,判斷一次
break;
ld=1;
la=0; //a
mDelay(road);//這里的延時就可控制轉速
if(!Speed--)
break;
lc=0; //ac
mDelay(road);
if(!Speed--)
break;
la=1; //c
mDelay(road);
if(!Speed--)
break;
lb=0; //cb
mDelay(road);
if(!Speed--)
break;
lc=1; //b
mDelay(road);
if(!Speed--)
break;
ld=0; //bd
mDelay(road);
if(!Speed--)
break;
lb=1; //d
mDelay(road);
if(!Speed--)
break;
la=0; //da
mDelay(road);
Speed--;
}
P3=P3|0x0f;//將四個腳輸出置高
}
unsigned?char?left(unsigned?int?Speedunsigned?int?road)//兩個參數代表步進量和轉速
{
//步進節拍A-AD-D-DB-B-BC-C-CA
while(1){
if(!Speed)//判斷步進量走完沒?以下都是,每走一步,判斷一次
break;
lc=1;
la=0; //a
mDelay(road);
if(!Speed--)
break;
ld=0; //ad
mDelay(road);
if(!Speed--)
break;
la=1; //d
mDelay(road);
if(!Speed--)
break;
lb=0; //db
mDelay(road);
if(!Speed--)
break;
ld=1; //b
mDelay(road);
if(!Speed--)
break;
lc=0; //bc
mDelay(road);
if(!Speed--)
break;
lb=1; //c
mDelay(road);
if(!Speed--)
break;
la=0; //ca
mDelay(road);
Speed--;
}
P3=P3|0x0f;//將四個腳輸出置高
}
void?mDelay(unsigned?int?DelayTime) //延時函數
{????
unsigned?char?j=0;
?????while(DelayTime--){
? for(j=0;j<10;j++){}
?}
}
unsigned?char?key()//鍵盤掃描是否有鍵按下,這里只掃描一列四個鍵,其它不用
{???
uchar?KeyV;
P0=0xfe;
KeyV=P0;
if(KeyV==0xfe)//只掃描一列
?????return(0);
mDelay(100);
KeyV=P0;
if(KeyV==0xfe)
???return(0);
????else
???return(KeyV);
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3147??2008-08-07?21:06??新建文件夾\兩相5、6線步進電1.c

?????文件???????3249??2008-09-06?21:01??新建文件夾\兩相5、6線步進電2.c

?????目錄??????????0??2010-06-27?21:51??新建文件夾

-----------?---------??----------?-----??----

?????????????????6396????????????????????3


評論

共有 條評論