单片机例程(7)

2019-06-11 00:38

单片机例程

C = 1; D = 1; }

void SetMotor() {

// if(Speed == 0) return;

MotorDelay=Speed; //调整速度 switch(MotorStep) {

case 0:

if(TIM) // A { A = 0; //0xf1 b = 1; C = 1; D = 1;

MotorStep = 1; TIM=0; } break;

case 1: // AB if(TIM) {

A = 0; //0xf3 b = 0; C = 1; D = 1;

MotorStep = 2; TIM=0; } break;

case 2: //B if(TIM) {

A = 1; b = 0; //0xf2 C = 1;

I Believe I Can Do 31

!

单片机例程

D = 1;

MotorStep = 3; TIM=0; } break;

case 3: //BC if(TIM) {

A = 1; b = 0; C = 0; D = 1;

MotorStep = 4; TIM=0; } break; case 4: //C if(TIM) {

A = 1; b = 1; C = 0; D = 1;

MotorStep = 5; TIM=0; } break; case 5: //CD if(TIM) {

A = 1; b = 1; C = 0; D = 0;

MotorStep = 6; TIM=0; } break; case 6: //D if(TIM) {

//0xf6 //0xf4 //0xfc I Believe I Can Do 32

!

单片机例程

A = 1; b = 1; //0xf8 C = 1; D = 0;

MotorStep = 7; TIM=0; } break; case 7: //DA if(TIM) {

A = 0; b = 1; C = 1; D = 0;

MotorStep = 0; TIM=0; } break; } }

void system_Ini() {

TMOD|= 0x11;

TH0=0xDC; //11.0592M TL0=0x00; IE = 0x8A; TR0 = 1; }

main()

{ system_Ini(); InitMotor(); while(1) { SetMotor(); }

//0xf9 I Believe I Can Do 33

!

单片机例程

}

/************************************************ * * * 定时中断延时 * ************************************************/ void Tzd(void) interrupt 1 {

TH0 = 0xfe; //11.0592 TL0 = 0x33; if( CT++==speed) {TIM=1; CT=0; } }

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

* 十九 标题: 步进电机试验三(加减速运行)

*

* *

* 通过本例程了解步进马达使用及驱动程序编写 * *; 单双八拍工作方式: *

*; A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75 度) *

* *

* 请学员一定要消化掉本例程 *

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

#include \

void delay();

I Believe I Can Do !

34

单片机例程

//Motor

sbit F1 = P1^0; sbit F2 = P1^1; sbit F3 = P1^2; sbit F4 = P1^3;

unsigned char code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反转 unsigned char code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正转 unsigned int K, rate;

/********************************************************** * * * 步进电机驱动 * ***********************************************************/ void motor_ffw() {

unsigned char i;

for (i=0; i<8; i++) //一个周期转30度 {

P1 = FFW[i]&0x1f; //取数据

delay(); //调节转速 } }

/******************************************** 延时程序

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

void delay()

{ unsigned int k,t; t=rate; while(t--) {

for(k=0; k<100; k++) { } } }

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

I Believe I Can Do !

35


单片机例程(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈乡镇卫生院资产管理的现状与对策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: