步进电机调速控制系统设计C语言程序及说明

上传人:飞*** 文档编号:47481890 上传时间:2018-07-02 格式:PDF 页数:5 大小:4.96KB
返回 下载 相关 举报
步进电机调速控制系统设计C语言程序及说明_第1页
第1页 / 共5页
步进电机调速控制系统设计C语言程序及说明_第2页
第2页 / 共5页
步进电机调速控制系统设计C语言程序及说明_第3页
第3页 / 共5页
步进电机调速控制系统设计C语言程序及说明_第4页
第4页 / 共5页
步进电机调速控制系统设计C语言程序及说明_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《步进电机调速控制系统设计C语言程序及说明》由会员分享,可在线阅读,更多相关《步进电机调速控制系统设计C语言程序及说明(5页珍藏版)》请在金锄头文库上搜索。

1、步进电机调速控制系统设计C语言程序及说明使用元器件:单片机 8051、步进电机 17H185H-04A 、128 细分/3.0A步进电机驱动器、 LED显示器。实现控制功能:以 8051 单片机为控制器, 系统设四个按键:“工作 /停止按键”、 “加速按键”、 “减速按键” 、 “正反向控制按键”。系统上电后,按下“正反向控制按键” ,控制电机正反转;每按一次“加速按键”后,步进电机由低向高加速一级,每按一次“减速按键”后,由高向低减速一级;按“工作/停止按键”后,电机停止转动,系统回到等待状态。同时需要显示运行状态和转速(以实际转速或等级表示)。程序清单及说明#include sbit EN

2、=P20; / 使能输出sbit DIR=P21; / 方向控制sbit PWM=P22; /PWM 输出sbit zled=P26; / 正转信号灯sbit fled=P27; / 反转信号灯sbit sw1=P00; / 启停按钮sbit sw2=P01; / 正反转按钮sbit sw3=P02; / 加速按钮sbit sw4=P03; / 减速按钮unsigned char table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; unsigned char i,j,k,temp=0,zkb=5,zkb1=0,speed=0; vo

3、id delay() / 延时 10ms for(i=20;i0;i-) for(j=248;j0;j-); void InitTimer0(void) /T0 定时器初始化 TMOD = 0x00; / 设置定时器方式 0 TH0 = 0xef; / 高 8 位送初值TL0 = 0xdd; / 低 8 位送初值EA = 1; / 开中断总允许ET0 = 1; / 开 T0中断允许TR0 = 1; / 启动 T0开始定时 void main() / 主程序 InitTimer0(); EN=1; / 初始使能端输出 0 DIR=1; / 方向端输出 1 zled=0; / 正传信号灯端口输出0

4、,灯亮fled=1; / 反转信号灯输出 1,灯不亮while(1) P1=tablespeed; / 启停if(sw1=0) / 判断启停键按下 delay(); / 调用延时程序if(sw1=0) / 再判断,启停键按下 while(sw1=0); / 启停键按下 ,使能端取反EN=EN; / 正反转子程序if(sw2=0) / 判断换向键是否按下 delay(); if(sw2=0) while(sw2=0); DIR=DIR; / 换向键按下,方向端口取反fled=fled; / 正传指示灯控制端取反zled=zled; / 反转传指示灯控制端取反 / 加速子程序if(sw3=0) /

5、 判断加速键是否按下 delay(); if(sw3=0) while(sw3=0); / 加速键按下if(speed=5) / 判断转速是否大于5 speed=5; / 大于 5,保持 5 级转速else speed+; / 小于 5,加速一级 / 减速子程序if(sw4=0) / 判断减速键是否按下 delay(); if(sw4=0) while(sw4=0); / 减速键按下if(speed=1) / 转速为 1,保持 1 级转速speed=1; else speed-; / 转速不为 1,减速 1 级 void Timer0Interrupt(void) interrupt 1 switch(speed) / 加减速按键按下,对应选择T0初值,进入终端产生不同频率脉冲 case 1:TH0=0XDD;break; case 2:TH0=0XE1;break; case 3:TH0=0XE5;break; case 4:TH0=0XEa;break; case 5:TH0=0xf0;break; TL0 = 0xdd; if(zkb1=10) zkb1=0; zkb1+; if(zkb1=5) PWM=1; else PWM=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号