单片机51—步进电机的设计
禁止作为商用,仅供学习交流。
0.本文主要内容
本文主要介绍了为实现步进电机的控制,先在电脑编写程序,仿真成功后,在进行实物的制作,最终独立自主的完成51单片机的编程,硬件电路的设计,画原理图,画PCB板,购买电子元器件,PCB板的焊接和检测,实物的展示等工作。
个人的观点,这个设计的现实意义不大,因为步进电机真正特点是利用脉冲信号去控制步进电机转动的角度。主要用于房间空调器分体系列室内机导风板、暖风器导风板、移动空调、壁炉更洁宝和各种智能气阀(燃气热水器、燃气灶等)。转动的速度很慢不占优势。(为什么我做了呢?因为这是一个课程设计。哈哈)
1.主要功能
本设计可采用STC89C51/52、AT89S51/52或AT89C51/52单片机作为主控制器;
(1)按键功能:
• 按键1:正转
• 按键2:反转
• 按键3:速度加
• 按键4:速度减
• 按键5:暂停/开始
(2)LED使用:五个红色LED,一个为电源指示,四个指示电机的转速。
2.Proteus软件仿真
(1)硬件电路
四位数码管为共阴极的。
4相5线步进电机28YBJ-48 28BYJ48不熟悉,你可以不用管,你只要知道对它输送一定的脉冲波形他就可以转动就行了。
uchar code turn[ ]={0x02,0x06,0x04,0x0c,0x80,0x09,0x01,0x03};//正转脉冲顺序
uchar code durn[ ]={0x03,0x01,0x09,0x80,0x0c,0x04,0x06,0x02};//反转脉冲顺序
仿真文件在文末连接
(2)软件程序
/* Main.c file generated by New Project wizard
*
* Created: 周日 9月 19 2021
* Processor: AT89C51
* Compiler: Keil for 8051
*/
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define out P2
uchar code turn[ ]={
0x02,0x06,0x04,0x0c,0x80,0x09,0x01,0x03};
uchar code durn[ ]={
0x03,0x01,0x09,0x80,0x0c,0x04,0x06,0x02};
uchar code smgduan[17]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//显示0~F的值
uchar i; //脉冲的第几个状态
uint dang=0;//挡位
uint fang;//转向
uint ci=0;//中断出发次数
uint dan;//备份挡位
uint fan;//备份转向
uchar gao;
uchar di;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P37=P3^7;
void delayms(uint j)
{
uchar a;
for(;j>0;j--)//0.5ms
{
a=