|
50黑幣
本帖最后由 1492548699 于 2016-3-4 20:46 編輯
51單片機控制42步進電機不知道接線,程序有!求救50黑幣。。,現在想要電機轉起來,希望有人能夠幫我,51芯片的腳怎么接我才可以控制電機。謝謝 qq1492548699
#include <AT89X52.h> //調用51單片機的頭文件
//---------------------------------------
//定義一個數據表格
unsigned char code TAB[8]=
{ //定義表格一定要使用code,這樣會做到程序存儲區中
0x7F, //表格第1步數據0b01111111
0x3F, //表格第2步數據0b00111111
0xBF, //表格第3步數據0b10111111
0x9F, //表格第4步數據0b10011111
0xDF, //表格第5步數據0b11011111
0xCF, //表格第6步數據0b11001111
0xEF, //表格第7步數據0b11101111
0x6F, //表格第8步數據0b01101111
};
//---------------------------------------
//8獨立按鍵相關I/O設置
sbit P1key=P2^0; //按鍵P1接在P2.0口上
sbit P2key=P2^1; //按鍵P2接在P2.1口上
sbit P3key=P2^2; //按鍵P3接在P2.2口上
sbit P4key=P2^3; //按鍵P4接在P2.3口上
sbit P5key=P2^4; //按鍵P5接在P2.4口上
sbit P6key=P2^5; //按鍵P6接在P2.5口上
sbit P7key=P2^6; //按鍵P7接在P2.6口上
sbit P8key=P2^7; //按鍵P8接在P2.7口上
//---------------------------------------
//---------------------------------------
//按鍵部分用寄存器設置
unsigned char KEYbuf; //設置8位的寄存器用來暫存按鍵鍵值數據
unsigned char KEYcon;
bit KEYbit;
//---------------------------------------
unsigned char STEPspeed;
//---------------------------------------
//名稱: 主函數
//適用:給力者GL9單片機開發學習系統
//公司:寧波芯動電子有限公司
//網址:www.MovingChip.com
//日期:20120914
//---------------------------------------
void main(void) //主函數,單片機開機后就是從這個函數開始運行
{
unsigned int a=0; //定義一個int型變量,做延時用
unsigned char b=0; //定義一個char型變量,顯示內容用
while(1) //死循環,單片機初始化后,將一直運行這個死循環
{
//***8獨立按鍵掃描部分***
//按P1-P8鍵,KEYbuf賦值1-8
if(P1key==0) KEYbuf=1; //如果P1鍵按下,KEYbuf賦值寫1
else if(P2key==0) KEYbuf=2; //如果P2鍵按下,KEYbuf賦值寫2
else if(P3key==0) KEYbuf=3; //如果P3鍵按下,KEYbuf賦值寫3
else if(P4key==0) KEYbuf=4; //如果P4鍵按下,KEYbuf賦值寫4
else if(P5key==0) KEYbuf=5; //如果P5鍵按下,KEYbuf賦值寫5
else if(P6key==0) KEYbuf=6; //如果P6鍵按下,KEYbuf賦值寫6
else if(P7key==0) KEYbuf=7; //如果P7鍵按下,KEYbuf賦值寫7
else if(P8key==0) KEYbuf=8; //如果P8鍵按下,KEYbuf賦值寫8
else
{
KEYbuf=0;
if(KEYbit==0)
{
if(++KEYcon>20)
{
KEYcon=0;
KEYbit=1; //無按鍵按下,KEYbit賦值為1
}
}
}
//*********************
if(KEYbuf==1) //P1鍵控制步進電機方向
{
if(KEYbit==1)
{
KEYbit=0;
if(++STEPspeed>3) STEPspeed=0; //速度加1,并限制在0-3間
}
}
if(STEPspeed==0)
{
for(a=0;a<1700;a++); //速度1延時
}
else if(STEPspeed==1)
{
for(a=0;a<1300;a++); //速度2延時
}
else if(STEPspeed==2)
{
for(a=0;a<900;a++); //速度3延時
}
else
{
for(a=0;a<500;a++); //速度4延時
}
if(++b>7) b=0; //b做+1操作,并限制在0-7以內
P1=TAB; //將TAB的值送入P1口輸出
}
}
|
|