dda演算法控制電機 微控制器控制步進電機c語言程式

2021-10-16 21:37:58 字數 2156 閱讀 7557

//**********==步進電機正反轉調速&1602顯示***************==

#include //52晶元管腳定義標頭檔案

#include //內部包含延時函式 _nop_();

#define uchar unsigned char

#define uint unsigned int

#define delaynop(); ;

uchar code ffw[8]=; //正轉相序表

uchar code rev[8]=; //反轉

sbit k1 = p3^2; //執行與停止

sbit k2 = p3^3; //設定圈數

sbit k3 = p3^4; //方向轉換

sbit k4 = p3^5; //速率調整

sbit beep = p3^6; //蜂鳴器

sbit lcd_rs = p2^0;

sbit lcd_rw = p2^1;

sbit lcd_en = p2^2;

bit on_off=0; //執行與停止標誌

bit direction=1; //方向標誌

bit rate_dr=1; //速率標誌

bit snum_dr=1; //圈數標誌

uchar code cdis1[ ] = ;

uchar code cdis2[ ] = ;

uchar code cdis3[ ] = ;

uchar code cdis4[ ] = ;

uchar code cdis5[ ] = ;

uchar m,v=0,q=0;

uint number=0,number1=0;

uchar snum=10,snum1=10; //預設定圈數

uchar rate=2; //預設定速率

uchar data_temp,data_temp1,data_temp2;

/* 延時t毫秒

/* 11.0592mhz時鐘,延時約1ms

void delay(uint t)

uchar k;

while(t--)

for(k=0; k<125; k++)

void delayb(uchar x) //x*0.14ms

uchar i;

while(x--)

for (i=0; i<13; i++)

void beep()

uchar j;

for (j=0;j<100;j++)

delayb(4);

beep=!beep; //beep取反

beep=1; //關閉蜂鳴器

delay(170);

/*檢查lcd忙狀態

/*lcd_busy為1時,忙,等待。為0時,閒,可寫指令與資料。

bit lcd_busy()

bit result;

lcd_rs = 0;

lcd_rw = 1;

lcd_en = 1;

delaynop();

result = (bit)(p0&0x80);

lcd_en = 0;

return(result);

/*寫指令資料到lcd

/*rs=l,rw=l,e=高脈衝,d0-d7=指令碼。

void lcd_wcmd(uchar cmd)

while(lcd_busy());

lcd_rs = 0;

lcd_rw = 0;

lcd_en = 0;

_nop_();

_nop_();

p0 = cmd;

delaynop();

lcd_en = 1;

delaynop();

lcd_en = 0;

/*寫顯示資料到lcd

/*rs=h,rw=l,e=高脈衝,d0-d7=資料。

void lcd_wdat(uchar dat)

while(lcd_busy());

lcd_rs = 1;

lcd_rw = 0;

lcd_en = 0;

p0 = dat;

delaynop();

lcd_en = 1;

delaynop();

lcd_en = 0;

基於51微控制器步進電機控制

1 用矩陣鍵盤設定電機目標轉速及旋轉方向,範圍 100 300 轉 分 2 測量 顯示電機實際轉速和方向 正轉顯示 p 反轉顯示 n 從實現功能上分析,軟體可以分解3個功能模組 1,步進電機控制模組 2,矩陣鍵盤輸入模組 3,顯示輸出模組 步進電機通過輸入脈衝訊號進行控制,即電機的總轉動角度由輸入脈...

51微控制器紅外控制步進電機

include 定義一些特殊暫存器 typedef unsigned char u8 typedef unsigned int u16 u8 code ffw 8 轉動陣列 u8 code rev 8 u16 code smgduan 17 u8 irvalue 6 u8 time u8 read ...

51微控制器控制四相步進電機

接觸微控制器快兩年了,不過只是非常業餘的興趣,實踐卻不多,到現在還算是個初學者吧。這幾天給自己的任務就是搞定步進電機的微控制器控制。以前曾看過有關步進電機原理和控制的資料,畢竟自己沒有做過,對其具體原理還不是很清楚。今天從 網買了乙個epson的umx 1型步進電機,此步進電機為雙極性四相,接線共有...