機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
單片機步進電機正反轉(zhuǎn)和加速減速c程序
單片機步進電機正反轉(zhuǎn)和加速減速c程序
 更新時間:2010-1-26 16:33:39  點擊數(shù):0
【字體: 字體顏色

單片機步進電機正反轉(zhuǎn)和加速減速c程序

*****************************************
單4拍正轉(zhuǎn) zheng[]={0x01,0x08,0x04,0x02}
單4拍反轉(zhuǎn) fang[]={0x01,0x02,0x04,0x08}

雙4拍正轉(zhuǎn) zheng[]={0x09,0x0c,0x06,0x03}
雙4拍反轉(zhuǎn) fang[]={0x03,0x06,0x0c,0x09}

單雙8拍正轉(zhuǎn) zheng[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03}
單雙8拍反轉(zhuǎn) fang[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}
*****************************************/

#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
bit front_MOVe,back_move;

uchar jzaj(void); //單4拍正轉(zhuǎn) zheng[]={0x01,0x08,0x04,0x02}; 單4拍反轉(zhuǎn) fang[]={0x01,0x02,0x04,0x08};
void ajcl(uchar jz);
void delay(uchar del); 

uchar code zheng[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};
uchar code fang[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

void timer0() interrupt 1
{
static uchar jz;
TH0=0xfc;
TL0=0x18;
jz=jzaj();
if(jz)
ajcl(jz);
}
void main()
{
uchar count=0;
TMOD=0x01;
TH0=0xFC;
TL0=0x18;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(front_MOVe)
{
P2=zheng[count];
delay(100);
count++;
if(count==8) count=0;
}
if(back_MOVe)
{
P2=fang[count];
delay(100);
count++;
if(count==8) count=0;
}
}
}

uchar jzaj(void)
{
uchar hz,lz;
P1=0xf0; //置所有行為低電平,行掃描,列線輸入(此時)
if((P1&0xf0)!=0xf0) //判斷是否有有鍵按下(讀取列的真實狀態(tài),若第4列有鍵按下則P1的值會變成0111 0000),有往下執(zhí)行
{
delay(10); //延時去抖動(10ms)
if((P1&0xf0)!=0xf0) //再次判斷列中是否是干擾信號,不是則向下執(zhí)行
{
hz=0xfe; //逐行掃描初值(即先掃描第1行) 
while((hz&0x10)!=0) //行掃描完成時(即4行已經(jīng)全部掃描完成)sccode為1110 1111 停止while程序 
{
P1=hz; //輸出行掃描碼
if ((P1&hz)!=hz) //***(P2&0xf0)!=0xf0***也可這樣 本行有鍵按下(即P1(真實的狀態(tài))的高四位不全為1)
{
lz=(P1&0xf0)|0x0f; //列
while((P1&0xf0)!=0xf0);
return((~hz)|(~lz)); //返回行和列
break; //有按鍵返回 提前退出循環(huán)

}
else //所掃描的行沒有鍵按下,則掃描下一行,直到4行都掃描,此時sccode值為1110 1111 退出while程序
hz=_crol_(hz,1);//行掃描碼左移一位

}
}
}
else
return 0; //無鍵按下,返回0 
}
void ajcl(uchar jz)
{
if(jz==0x11)
{
back_MOVe=0;
front_MOVe=1; 
}
if(jz==0x21)
{
front_MOVe=0;
back_MOVe=1;
}
if(jz==0x41)
{
P2=0x00;
front_MOVe=0;
back_MOVe=0;
}


}
void delay(uchar del)
{
uchar i;
for(;del>0;del--)
for(i=0;i<125;i++)
{;}
}

  • 上一篇: 單片機串口發(fā)送接收程序模塊程序
  • 下一篇: 沒有了
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1