當前位置:編程學習大全網 - 源碼下載 - 求兩相四線步進電機驅動,C語言源碼,可以控制步數的。

求兩相四線步進電機驅動,C語言源碼,可以控制步數的。

#include <stdio.h> #include <fcntl.h> #include <string.h> #include <sys/ioctl.h>

#define STEPMOTOR_IOCTRL_PHASE 0x13 staticintstep_fd = -1;

char *STEP_DEV="/dev/exio/0raw"; //定義壹個指針指向步進電機的驅動 程序

/********* A, AB, B, BC, C CD, D, DA ***/

char stepdata[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};//各 個相位對應的值

void Delay(int t) //延時函數 { int i;

for(;t>0;t--)

for(i=0;i<400;i++); }

/***************************************************** ***********/

int main(intargc, char **argv) {

int i = 0;

if((step_fd=open(STEP_DEV, O_WRONLY))<0){ printf("Error opening /dev/exio/0raw device\n"); return 1; } /*

打開設備的驅動程序,由於LINUX把所有的設備都模擬成文件。 step_fd=open(STEP_DEV,0_WRONLY)實際調用的函數為:

staticint s3c2410_exio_open(structinode *inode, struct file *filp) //驅動程序中的設備打開程序 */

for (;;) {

for (i=0; i<sizeof(stepdata)/sizeof(stepdata[0]); i++) { ioctl(step_fd, STEPMOTOR_IOCTRL_PHASE, stepdata[i]); }

/*程序進入壹個死循環,這樣可以使電機在沒有人為停止的狀況下,壹直的 轉動下去。

*第二層for語句循環壹次即電機轉動壹周。函數ioctl()對應函 數*s3c2410_exio_ioctl()

*而這個函數最終將調用函數do_stepmotor_run((char)arg);使步進電 機轉動起來。 */

printf("Delay(100)\n"); Delay(100); }

close(step_fd); //程序結束時關閉設備 printf("Step motor start running!\n"); return 0; }本文來自百度文庫,妳可以搜搜,其中答案更詳細的!

  • 上一篇:HTML代碼怎樣做利於SEO優化
  • 下一篇:軟件架構和系統架構有什麽區別(什麽是軟件架構)?
  • copyright 2024編程學習大全網