第一范文网 - 专业文章范例文档资料分享平台

(完整版)基于51单片机的步进电机的控制毕业设计论文

来源:用户分享 时间:2025/6/11 1:10:58 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

具体操作:启动系统,默认步进电机正转。此时按下sw2,切换到反转;按下sw1可切换回正转;每按一次sw3,就加速一次,直至上限速度;按一次sw4,就减速一次,直到下限速度。 5.2 源程序代码

运行Keil中文版,参照电路图和流程图编写程序

#include

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

static int spcount; 步进电机转速参数计数

void delay(unsigned int endcount); 延时函数,延时为endcount*0.5毫秒 void gorun(); 步进电机控制步进函数 void main(void) {

count = 0; step_index = 0; spcount = 0; stop_flag = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0;

EA = 1; 允许CPU中断 TMOD = 0x11; 设定时器0和1为16位模式1 ET0 = 1; 定时器0中断允许

TH0 = 0xFE;

TL0 = 0x0C; 设定时每隔0.5ms中断一次 TR0 = 1; 开始计数 turn = 0; speedlevel = 2; delay(10000); speedlevel = 1; do{

speedlevel = 2; delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=0; Turn=!turn; }while(1); }

定时器0中断处理

void timeint(void) interrupt 1 {

TH0=0xFE;

TL0=0x0C; 设定时每隔0.5ms中断一次 count++; spcount--;

if(spcount<=0) {

spcount = speedlevel; gorun(); } }

void delay(unsigned int endcount) {

count=0;

do{}while(count

void gorun() {

if (stop_flag==1) {

P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; return; }

switch(step_index) { case 0: 0 P1_0 = 1;

P1_1 = 0; P1_2 = 0; P1_3 = 0; break; case 1: 0、1 P1_0 = 1; P1_1 = 1; P1_2 = 0; P1_3 = 0; break; case 2: 1 P1_0 = 0; P1_1 = 1; P1_2 = 0; P1_3 = 0; break; case 3: 1、2 P1_0 = 0; P1_1 = 1; P1_2 = 1; P1_3 = 0; break; case 4: 2 P1_0 = 0; P1_1 = 0;

(完整版)基于51单片机的步进电机的控制毕业设计论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c79kxg4oa7z9epjx24qwd4i6jo0x1m70128y_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top