• 大小: 5.24KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-04-20
  • 语言: C/C++
  • 标签: 步进电机  电机  

资源简介

步进电机调速原理.c

资源截图

代码片段和文件信息

/*-----------------------------------------------
  名称:步进电机
  论坛:www.doflye.net
  编写:shifang
  日期:2009.5
  修改:无
  内容:本程序用于测试4相步进电机常规驱动 2个按键 调节速度 
        使用1-2相励磁
数码管显示 1-5速度等级,数字越大,速度越小
 ------------------------------------------------*/

#include 

#define KeyPort P3
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1=P2^2;//定义锁存使能端口 段锁存
sbit LATCH2=P2^3;//                 位锁存

unsigned char code dofly_DuanMa[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};// 显示段码值0~9
unsigned char code dofly_WeiMa[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};//分别对应相应的数码管点亮即位码
unsigned char TempData[8]; //存储显示值的全局变量

sbit A1=P1^0; //定义步进电机连接端口
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;


#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

unsigned char Speed=1;
bit StopFlag;
void Display(unsigned char FirstBitunsigned char Num);
void Init_Timer0(void);
unsigned char KeyScan(void);
/*------------------------------------------------
 uS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编大致延时
 长度如下 T=tx2+5 uS 
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
 while(--t);
}
/*------------------------------------------------
 mS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
     
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
 DelayUs2x(245);
 }
}
/*------------------------------------------------
                    主函数
------------------------------------------------*/
main()
{
 unsigned int i=512;//旋转一周时间
 unsigned char num;
 Init_Timer0();
 Coil_OFF
 while(1)  //正向
  { 
   num=KeyScan();    //循环调用按键扫描
   if(num==1)//第一个按键速度等级增加
      {
   if(Speed<5)
   Speed++;
  }
   else if(num==2)//第二个按键,速度等级减小
      {
   if(Speed>1)
   Speed--;

评论

共有 条评论