欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
按鍵控制步進電機并在數碼管顯示
[打印本頁]
作者:
騰飛的龍
時間:
2015-10-28 19:40
標題:
按鍵控制步進電機并在數碼管顯示
步進電機任意角度控制并顯示
/*****************************************************
程序說明
通過改變脈沖個數改變步進電機的角度,通過按鍵可以讓步進
電機停在任意角度及正反轉 并在數碼管顯示,正轉顯示1,反轉顯示2
單片機 :STC12C5A60S2
晶振 :11.0592MHZ
步進電機驅動芯片:ULN2003A
作者 :蘇義江
時間 :2015年6月5日
八拍方式驅動 :順序為A AB B BC C CD D DA
zhengzhuan[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
fanzhuan[] ={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
*****************************************************/
#include<12c5a.H>
//#include <reg52.h>
//#define uchar unsigned char
//#define uint unsigned int
sbit key=P1^0; //按鍵控制步進電機的正轉方向
sbit key1=P1^1; //按鍵控制步進電機的反轉方向
sbit dula =P0^7; //段鎖存使能
sbit wela =P0^6; //位鎖存使能
uchar code zhengzhuan[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar code fanzhuan[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
//共陽段碼
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
0xa1,0x86,0x8e,0x89};
uchar code tab_f[]={0x0c,0x06,0x03,0x09,
0x0c,0x06,0x03,0x09};//2相勵磁 反傳
uchar code tab_z[]={0x09,0x03,0x06,0x0c,
0x09,0x03,0x06,0x0c};//2相勵磁 正傳
void Delay( uint i)//延時
{
uint x,y;
for(x=i;x>0;x--)
for(y=300;y>0;y--);
}
void display()
{
wela=1;
P2=0xfe;
wela=0;
dula =1;
P2=0xf9;//正轉顯示1
Delay( 10);
P2=0xff;
dula =0;
}
void display1()
{
wela=1;
P2=0xf7;
wela=0;
dula =1;
P2=0xa4;//反轉顯示2
Delay( 10);
P2=0xff;
dula =0;
}
void main()
{
uint i,j;//j代表脈沖.i代表數據
P0M1=0; //設置P0口為強推免輸出模式,下同
P0M0=0XFF;
while(1)
{
//j等于13個脈沖,電機旋轉一周。改變j的值就會改變電機的角度
for(j=3;j>0;j--)//正轉4分之一周
{
for(i=0;i<8;i++)
{
display();
P0=zhengzhuan[i];//正轉數組
Delay(5);//5秒旋轉一周 改變延時改變速度
}
}
Delay(200);//正反轉之間延時
for(j=3;j>0;j--)//反轉4分之一周
{
for(i=0;i<8;i++)
{
display1();
P0=fanzhuan[i];//反轉數組
Delay(5);//5秒旋轉一周 改變延時改變速度
}
}
Delay(200);
}
/********下面程序都正常控制步進電機狀態*****************/
/* while(1)
{
if(!key)
Delay(10);
{
if(!key)
{
display();
Delay(10);
for(j=7;j>0;j--)//j=7個脈沖,正轉半周
{
for(i=0;i<8;i++)
{
P0=zhengzhuan[i];//正轉數組
Delay(10);
}
}
}
while(!key);
}
if(!key1)
Delay(10);
{
if(!key1)
{
display1();
Delay(10);
for(j=7;j>0;j--)//j=7個脈沖,反轉半周
{
for(i=0;i<8;i++)
{
P0=fanzhuan[i];//反轉數組
Delay(10);
}
}
}
while(!key1);
}
}*/
/* while(1)
{
//j等于13個脈沖,電機旋轉一周。改變j的值就會改變電機的角度
for(j=13;j>0;j--)//正轉一周
{
for(i=0;i<8;i++)
{
display();
P0=zhengzhuan[i];//正轉數組
Delay(5);//6秒旋轉一周
}
}
Delay(2000);
for(j=13;j>0;j--)//反轉一周
{
for(i=0;i<8;i++)
{
display1();
P0=fanzhuan[i];//反轉數組
Delay(5);//6秒旋轉一周
}
}
Delay(2000);
}
*/
/* while(1)
{
//j等于13個脈沖,電機旋轉一周。改變j的值就會改變電機的角度
for(j=25;j>0;j--)//正轉二周
{
for(i=0;i<8;i++)
{
display();
P0=zhengzhuan[i];//正轉數組
Delay(3);
}
}
Delay(2000);
for(j=25;j>0;j--)//反轉一周
{
for(i=0;i<8;i++)
{
display1();
P0=fanzhuan[i];//反轉數組
Delay(3);
}
}
Delay(2000);
}*/
/* while(1)
{
//j等于13個脈沖,電機旋轉一周。改變j的值就會改變電機的角度
for(j=250;j>0;j--)//正轉二十周
{
for(i=0;i<8;i++)
{
display();
P0=zhengzhuan[i];//正轉數組
Delay(6); //延時控制轉速不能小于500
}
}
Delay(2000);
for(j=250;j>0;j--)//反轉二十周
{
for(i=0;i<8;i++)
{
display1();
P0=fanzhuan[i];//反轉數組
Delay(6); //延時控制轉速不能小于500
}
}
Delay(20000);
}*/
/* while(1)
{
for(i=0;i<8;i++)
{
if(key) //按鍵未按下,正轉
{
P0=zhengzhuan[i];//正轉數組
Delay(8);
}
else //按鍵按下,反轉
{
P0=fanzhuan[i];//反轉數組
Delay(8);
}
}
}*/
}
復制代碼
作者:
Kjjjjjpop
時間:
2020-3-24 18:20
請問有沒有仿真圖呢?謝謝啦
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1