访问电脑版页面

导航:老古开发网手机版Pic单片机PIC单片机的应用

基于PIC单片机对全功能步进电机的控制设计

导读:
关键字:
步进电机,PIC单片机,

//适合3ePIC实验板。

#include //包含单片机内部资源预定义

#include

void delay(unsigned int endcount); //延时函数,延时为endcount*0.5毫秒

void run(); //步进电机运行控制函数

void stop(); //步进电机停止函数

基于PIC单片机对全功能步进电机的控制设计

//定义变量

unsigned int count; //延时函数用计数器

staTIc int step_index; //步进索引数,值为0-7

staTIc bit turn; //步进电机转动方向

staTIc bit stop_flag; //步进电机停止标志

staTIc int speedlevel; //步进电机转速参数,数值越大速度越慢,最小值为1,速度最快

static int steptimecount; //步进电机每步时长倒计数

static unsigned char powertimecount; //步进电机每步已通电时间计数

void main(void)

{

TRISE2=0;

TRISC2=0;

TRISC0=0;

TRISC1=0;

step_index = 0;

stop_flag = 0;

steptimecount = 0;

stop();//步进电机停止

T0CS=0;//选择内部指令周期信号为TMR0的时钟源

PSA=0;//TMR0使用预分频器

PS2=0;//预分频器分频比1:16

PS1=1;

PS0=1;

T0IF=0;//清除TMR0中断标记

TMR0=0X65;//TMR0设置初值

T0IE=1;//TMR0中断允许

GIE=1; //全局中断使能

do{

stop_flag=0;

turn = 0;

speedlevel =7;

delay(1000);//延时2.5秒

speedlevel = 3;

delay(1000);

stop_flag=1;

delay(1000);

stop_flag=0;

turn = 1;

speedlevel = 7;

delay(1000);

speedlevel =3;

delay(1000);

stop_flag=1;

delay(1000);

}while(1);

}

//定时器0中断处理

void interrupt clkint(void)

{

TMR0=0X65;//设定时每隔2.5MS中断一次

T0IF=0;//清除TMR0中断标记

count++;

steptimecount--;

if(powertimecount《=1)//每步最短通电时间5ms

{

powertimecount++;//未达最大值时加1

}

if(powertimecount==1)

{

stop();

}

else if(steptimecount《=0)

{

powertimecount=0;

if (stop_flag==1)

{

stop();

}

else

{

steptimecount = speedlevel;

run();

}

}

}

void delay(unsigned int endcount)

{

count=0;

do{}while(count}

void run()

{

switch(step_index)

{

case 0:RC2=1;RC0=0;RC1=0;RE2=0;break;

case 1:RC2=1;RC0=1;RC1=0;RE2=0;break;

case 2:RC2=0;RC0=1;RC1=0;RE2=0;break;

case 3:RC2=0;RC0=1;RC1=1;RE2=0;break;

case 4:RC2=0;RC0=0;RC1=1;RE2=0;break;

case 5:RC2=0;RC0=0;RC1=1;RE2=1;break;

case 6:RC2=0;RC0=0;RC1=0;RE2=1;break;

case 7:RC2=1;RC0=0;RC1=0;RE2=1;

}

if (turn==0)

{

step_index++;

if (step_index》7)

step_index=0;

}

else

{

step_index--;

if (step_index《0)

step_index=7;

}

}

void stop()//使步进电机处于停机状态

{

RC2=0;//M1

RC0=0;//M3

RC1=0;//M2

RE2=0;//M4

}

来源:未知   作者:工程师周亮  2018/10/26 15:07:00
栏目: [ PIC单片机的应用]

相关阅读

数字电位器X9241与PIC单片机的接口及程序设计

基于PIC单片机的六挡调控电涡流缓速器的设计

基于PIC单片机的SPWM控制技术

PIC单片机在远程控制中的应用

基于PIC单片机的精确加油系统设计

基于PIC单片机的厨房设备智能组合控制设计

PIC单片机实现护理机智能控制的设计

基于PIC单片机的多功能厨房控制系统设计

基于PIC单片机的厨房电器设备的智能控制设计方案解析

PIC单片机与触摸屏串行通信MODBUS协议

基于PIC单片机的多回路温度控制系统设计

基于PIC单片机产生SPWM信号控制逆变桥的方法设计

基于PIC单片机的摩托车防盗器设计

PIC单片机对复费率电能表时钟误差分析仪系统的设计

基于PIC单片机的护理机自动控制系统设计

基于PIC单片机和GPS接收模块的手持式GPS定位系统

用PIC单片机实现50Hz锁相信号发生器

PIC单片机对家庭防盗传感器的设计

PIC单片机在家用电暖气中的应用

PIC单片机UPS电源电路图