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

发布者:变形金刚最新更新时间:2020-01-18 来源: elecfans关键字: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)

{

ADCON1=0B00000110;//设置RE端口为普通I/O口

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

}

关键字:PIC单片机  全功能步进电机  控制设计 引用地址:基于PIC单片机对全功能步进电机的控制设计

上一篇:基于PIC单片机对SC1621摇控器的控制
下一篇:PIC单片机中断执行的步骤及过程

推荐阅读最新更新时间:2024-11-10 20:42

基于传感器设计室内照明设备的自动控制系统
1.引言 随着经济社会的飞速发展,电能越来越紧张,电能浪费的现象却依旧存在。许多高校存在着教室照明管理不到位的问题,在夜晚,空无一人的教室仍然是灯火辉煌,对于这类大型楼宇,照明节能日显重要。现普及的照明节能开关基本有声控型、接触型等,由于使用的局限性,这些开关只能作为控制控制系统的辅助部分。要实现室内照明系统智能化、节能化,最重要的一点是该系统能探测和判断是否有人的存在,而市面上的被动式热释电红外传感器,局限于检测动态人体,对静坐教室学习的人不做任何反应。本项目组基于主动式热释电红外传感器设计了一种低成本、低耗电的室内自动控制系统。 2.系统总体功能与结构 2.1功能特点 采用热释电红外技术探测室内是否有人存在,当有人进入室
[单片机]
基于传感器<font color='red'>设计</font>室内照明设备的自动<font color='red'>控制</font>系统
基于LabVIEW的虚拟触摸屏控制面板设计
菜制氮制氧车仿真模型的仪表显示部分由LabVIEW完成,它翔仿真模型之间愁经逶过UDP逶讯协议互连成功,并且组态王KingVIEW和仿真模型之间的通讯已通过Modbus实现。触摸屏显示部分的编程大部分足LabVIEW实现,只是单独震LabVlEw不好实现的地方采取调用DLL的方法,这样便有利于通过UDP通讯协议实现流程控制与仿真模型之间的通讯,利用Modbus通讯协议完成KingVIEW与仿真模型的通讯。利用LabVIEW编程和DLL的调用,通过仿真 模型静褥梁作用来间接实现流程控镧的控裁作用。 1 触摸屏显示系统的功能设计 1.1 系统整体结构 该系统结构如图1所示。仿真模塑和流程控镧将阀门的状态量(模拟量和开关摄)通过UD
[测试测量]
PIC单片机开发板之流水灯代码
/* 这是自已写的流水灯,速度为500ms */ #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void delay(uint x) { uint a,b; for(a=x;a 0;a--) for(b=110;b 0;b--); } void main() { uchar i; //变量定义最好放在第一行,否则会出错(提示一大堆的错误) TRISD=0x00; TRISC=0x00; PORTC=0x00; //把数码管屏蔽
[单片机]
<font color='red'>PIC单片机</font>开发板之流水灯代码
PIC单片机控制DS18B20数字温度传感器原理及实现
#include pic.h #define uchar unsigned char #define uint unsigned int #define DQ RC1 #define DQ_HIGH() TRISC1=1 #define DQ_LOW() TRISC1=0;DQ=0 __CONFIG(0x3B31); const uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f}; const uchar table1 ={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,
[单片机]
pic单片机MPLAB安装步骤&工程建立&经验总结
写在前面: pic这款单片机用的也很普遍了,其性能及能做些什么就不必啰嗦去说了。有很多人反映pic的编译器mplab安装出问题,有的是安装后软件打不开,有的是编译时出错,总之都是些常见的问题。我在这里把以前的mplab卸载再安装了一遍,并写下安装步骤和第一个工程建立方法供大家参考。另外,我把自己学习pic的一些经验总结下。 pic是我在51之后接触的的第二款单片机,都说它跟51区别不大,但是突然换了一种芯片就跟换了一个环境一样,开始有些不适应,在摸索了大概一个星期后我才慢慢适应了,凭借着有些51的基础,pic走下来很顺利,我才发现真的和51没太大的区别,出了指令不同,寄存器配置不一样外都差不多。这里也可以延伸一下,那么其他的
[单片机]
电动机控制电路图 四种常见的电动机控制电路设计
单输出自锁控制电路 启动信号 I0.0 和停止信号 I0.1 持续为 ON 的时间般都短。该电路最主要的特点是具有“记忆”功能。 多输出自锁控制电路(置位、复位) 多输出自锁控制即多个负载自锁输出,有多种 编程 方法,可用置位、复位指令 单向顺序启停控制电路 1. 单向顺序启动控制电路是按照生产工艺预先规定的顺序,在各个输入信号的作用下,生产过程中的各个执行机构自动有序动作。只有 Q0.0 启动后,Q0.1 方可启动,Q0.2 必须在 Q0.1 启动完成后才可以启动。 2. 单向顺序停止控制电路就是要求按一定顺序停止已经执行的各机构。只有 Q0.2被停止后才可以停止 Q0.1,若想停止 Q0.0,则必须先停止
[嵌入式]
电动机<font color='red'>控制</font>电路图 四种常见的电动机<font color='red'>控制</font>电路<font color='red'>设计</font>
在电源转换应用中实现高性能、成本优化型实时控制设计
在持续需要更高性能和效率的实时电源转换领域,投资可扩展且可持续的工业和汽车电源转换解决方案对设计人员来说至关重要。这种需求反之导致对实时控制系统资源的需求,例如在伺服驱动系统,电力与电网基础设施和车载充电应用对MCU每秒百万条指令(MIPS)的计算算力、脉宽调制器(PWM)和模拟-数字转换器(ADC)数量。这也导致开发人员需要以简单和低风险的方式构建和维护其产品线。性能可扩展性和产品组合兼容性为开发人员提供了一种省力而又经济高效的方式来扩展实时控制资源并维护长期电源转换解决方案的平台。 通过分布式架构扩展实时控制资源 可再生能源的兴起推动了诸如太阳能逆变器等应用中使用更高功率水平。随着功率水平的提高,需要更多在功率转换过程
[电源管理]
在电源转换应用中实现高性能、成本优化型实时<font color='red'>控制</font><font color='red'>设计</font>
Intersil电源前端微控制电路设计
  Intersil锂离子电池组监测、保护和平衡IC是专门设计来满足严格的安全、可靠性和便携式和电池供电的应用程序的性能需求如消费产品、家用电器、电池备份和电机/电动自行车。集成电路的所有主要的内部包含内置的故障检测功能和检测外部故障如明线,下电压、温度以及细胞平衡故障减少电池组故障。整体的高度集成的功能提供许多好处和他们的使用可以显著降低整体电池管理成本。    测试前端电压电路   完整的独立操作,独立包装,没有单片机控制,需要在eepm操作参数设定,可以使用作为一个外部的前端,微控制器μC可以覆盖的部分或全部自动完成特性。3 - 8细胞的应用程序支持LiIon首席运营官包从6 - 36 v电压监测电池电压从0到4.8 v
[电源管理]
Intersil电源前端微<font color='red'>控制</font>电路<font color='red'>设计</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved