标题: 51单片机步进电机控制系统Proteus仿真程序设计 加减速 正反转 [打印本页]

作者: ViJay_ZHOU    时间: 2020-7-2 11:31
标题: 51单片机步进电机控制系统Proteus仿真程序设计 加减速 正反转
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

本设计研究的是基于
51单片机的步进电机控制系统。采用单片机AT89C51作为控制核心,通过五个按键控制步进电机的运行状态,即控制启停、正反转、加减速,并利用八位的数码管显示步进电机的速度等级。本设计的硬件部分主要由单片机、键盘控制模块、电机驱动模块、数码管显示模块以及电源模块五部分组成。

编程实现方式有两种,查询和中断。全部文件都在附件中上传了。

软件设计部分本控制算法分为查询方式和中断方式两种控制算法。相比于查询方式,中断方式按键响应延时更小。主要的思路是:主函数先初始化相关寄存器后,在while循环中不断执行键盘扫描函数,而步进电机控制函数在调用定时器中断来实现。以下是算法解析:

步进电机采用八拍控制,数码管显示0-9的数字。预先设定对应的16进制数,存入数组。
本设计研究的是基于51单片机的步进电机控制系统。采用单片机AT89C51作为控制核心,通过五个按键控制步进电机的运行状态,即控制启停、正反转、加减速,并利用八位的数码管显示步进电机的速度等级。本设计的硬件部分主要由单片机、键盘控制模块、电机驱动模块、数码管显示模块以及电源模块五部分组成。系统框图如图1所示
本设计主要实现的功能:
(1)5 个按键控制整个电路,对应功能分别是:启动    / 暂停、正转、反转、加速、减速。
(2)数码管显示电机转动速度的等级;

单片机源程序如下:

  1. uchar cw[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};     //正转

  2. uchar acw[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};    //反转

  3. uchar a[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳数码管段码

  4. 声明相关函数

  5. void Delay_ms(uint x);         //延时函数

  6. void scan_key();                              //键盘扫描

  7. void display(uchar num);      //显示函数                  

  8. 定时器中断控制函数:index是一个循环系数,每次进入中断,系数自增一,当index到达预设的速度档位,就执行电机控制部分。



  9. void MOTOR_control() interrupt 3 //定时器1中断服务程序

  10. {

  11.        TH1=(65536-10000)/256;

  12.        TL1=(65526-10000)%256;

  13.        index++;

  14.        if(index >= loop)  //循环系数

  15.        {

  16.               index=0;

  17.               if(sw==1)

  18.               {

  19.                      step++;    //步进值

  20.                      if(step>8)

  21.                      {

  22.                             step=0;

  23.                      }

  24.                      else

  25.                      {

  26.                             if(flag==1)

  27.                             {

  28.                                    P2=cw[step-1]; //正转

  29.                             }

  30.                             else

  31.                             {

  32.                                    P2=acw[step-1];  //反转

  33.                             }

  34.                      }

  35.               }

  36.               else P2=0x00;}}
复制代码


全部资料51hei下载地址:
项目1.rar (339.84 KB, 下载次数: 640)


作者: yanannl    时间: 2020-7-3 10:50
附件里的仿真文件是仿真文件吗
作者: ViJay_ZHOU    时间: 2020-7-8 10:44
yanannl 发表于 2020-7-3 10:50
附件里的仿真文件是仿真文件吗

是的,是proteus仿真工程文件,直接打开就可以了
作者: mule.。    时间: 2021-1-23 11:06
你好,STC89C51单片机可以用吗?
作者: mule.。    时间: 2021-1-23 11:19
STC89C51单片机可以用吗?电机的转速大致范围是多少
作者: mule.。    时间: 2021-1-23 11:41
mule.。 发表于 2021-1-23 11:19
STC89C51单片机可以用吗?电机的转速大致范围是多少

楼主,希望你看到后回答下。谢谢
作者: 流殊    时间: 2021-1-28 10:06
为什么我复制来不能用

作者: mule.。    时间: 2021-3-19 16:34
请问如何让基础速度加快一些
作者: b9589    时间: 2021-3-25 17:41
步进电机控制是基础动作,一定要学好这个
作者: 12师弟    时间: 2021-9-21 23:44
新手,可以直接学这个有压力嘛?

作者: ViJay_ZHOU    时间: 2022-1-8 17:18
mule.。 发表于 2021-1-23 11:41
楼主,希望你看到后回答下。谢谢

51的都可以用的
作者: 馒头宝宝    时间: 2023-3-22 07:33
谢谢你的宝贵资料,感谢你的分享




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1