標(biāo)題:
以下是我弄的步進(jìn)電機(jī)源代碼
[打印本頁(yè)]
作者:
FLC123
時(shí)間:
2018-6-24 09:46
標(biāo)題:
以下是我弄的步進(jìn)電機(jī)源代碼
此源代碼包含了電機(jī)的正反轉(zhuǎn)控制,加減速,顯示模塊還沒(méi)開(kāi)始弄,還望各路大神多多指教
單片機(jī)源程序如下:
//采用一相勵(lì)磁方式,即四根信號(hào)線每次只有一個(gè)為高電平。步進(jìn)電機(jī)型號(hào)28BYJ-48,5V,DC,四相八拍
#include<reg52.h>
#define uchar unsigned char
sbit jia_key=P3^2; //電機(jī)加速I/O口定義
sbit jian_key=P3^3; //電機(jī)減速I/O口定義
sbit zf_key=P3^4; //電機(jī)正反轉(zhuǎn)I/O口定義
bit flag=0; //電機(jī)正反轉(zhuǎn)標(biāo)志位,flag為0時(shí)正轉(zhuǎn),flag為1時(shí)為反轉(zhuǎn)
uchar num=0,maichong=4,table_begin=0;
uchar code table1[]={0x01,0x02,0x04,0x08, 0x08,0x04,0x02,0x01}; //電機(jī)正反轉(zhuǎn)I/O口的高低電平對(duì)應(yīng)表
//延時(shí)函數(shù)
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=120;k>0;k--); //12M晶振
}
//按鍵檢測(cè)處理函數(shù)
void key ()
{
if(jia_key==0)
{
delay(5);
if(jia_key==0) //key=0按下
{
num++;
if(num==4)
num=3; //最大則保持3
while(jia_key==0);//等待松開(kāi)按鍵
}
}
if(jian_key==0)
{
delay(5);
if(jian_key==0)
{
if(num!=0) //判斷是否最小速
num--;
else
num=0;
while(jian_key==0); //等待按鍵釋放,若按鍵沒(méi)有釋放則jian_key始終等于0,程序就一直停在while語(yǔ)句處,直到按鍵釋放jian_key=1跳出while循環(huán)。
//通常我們?cè)跈z測(cè)單片機(jī)按鍵時(shí),要等待按鍵釋放才去執(zhí)行相應(yīng)代碼
}
}
if(zf_key==0) //電機(jī)正反轉(zhuǎn)標(biāo)志
{
delay(5);
if(zf_key==0) //按鍵按下為0則反轉(zhuǎn)
{
flag=~flag; //正反轉(zhuǎn)標(biāo)識(shí)取反
while(zf_key==0);
}
}
}
//根據(jù)速度標(biāo)識(shí)進(jìn)行數(shù)據(jù)處理
void dispose()
{
switch(num)
{
case 0:
//show_num=2;
maichong=8;
break;
case 1:
// show_num=4;
maichong=6;
break;
case 2:
//show_num=6;
maichong=4;
break;
case 3:
// show_num=8;
maichong=2;
break;
}
if(flag==0)
{
table_begin=0;
}
else
table_begin=4;
}
//電機(jī)速度,和正反轉(zhuǎn)控制
void qudong()
{
uchar i,j;
for(j=table_begin;j<4+table_begin;j++)
{
P1=table1[j];
for(i=0;i<maichong;i++)
{
//display();
delay(5);
}
}
}
//主函數(shù)
void main()
{
while(1)
{
key();
dispose();
qudong();
}
}
復(fù)制代碼
所有資料51hei提供下載:
步進(jìn)電機(jī).zip
(4.39 KB, 下載次數(shù): 8)
2018-6-24 09:46 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1