?? stepping motor-simple-02.c
字號:
/******************************************************************/
/* */
/* ME500單片機開發系統演示程序 - 步進電機加減速運行 */
/* */
/* 步進電機啟動時,轉速由慢到快逐步加速。 */
/* 步進電機勻速運行 */
/* 步進電機由快到慢逐步減速到停止 */
/* */
/* 版本: V1.0 (2006/11/20) */
/* 作者: gguoqing (Email: gguoqing@willar.com) */
/* 網站: www.willar.com(偉納電子) www.mcusj.com(偉納單片機世界)*/
/* 郵箱: support@willar.com */
/* */
/*【版權】COPYRIGHT(C)偉納電子 www.willar.com ALL RIGHTS RESERVED */
/*【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息! */
/* */
/******************************************************************/
#include <reg51.h> //51芯片管腳定義頭文件
#include <intrins.h> //內部包含延時函數 _nop_();
#define uchar unsigned char
#define uint unsigned int
sbit K1=P1^4;
uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
//uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
uchar rate ;
/********************************************************/
/*
/* 延時
/* 11.0592MHz時鐘,
/*
/********************************************************/
void delay()
{
uchar k;
uint s;
k = rate;
do
{
for(s = 0 ; s <1000 ; s++) ;
}while(--k);
}
/********************************************************/
/*
/*步進電機正轉
/*
/********************************************************/
void motor_ffw()
{
uchar i;
for (i=0; i<8; i++) //一個周期轉30度
{
P1 = FFW[i]; //取數據
delay(); //調節轉速
}
}
/********************************************************
*
*步進電機運行
*
*********************************************************/
void motor_turn()
{
uchar x;
rate=0x0a;
x=0x80;
do
{
motor_ffw(); //加速
rate--;
}while(rate!=0x01);
do
{
motor_ffw(); //勻速
x--;
}while(x!=0x01);
do
{
motor_ffw(); //減速
rate++;
}while(rate!=0x0a);
}
/********************************************************
*
* 主程序
*
*********************************************************/
main()
{
P1=0xf0;
while(1)
{
P1=0xf0;
if(K1==0)
{
motor_turn();
}
}
}
/********************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -