⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c语言写的一个驱动步进电机的程序.txt

📁 C语言写的使用PIC16F73芯片大的一个驱动步进电机的程序
💻 TXT
字号:
/******************************************************************
* 芯片: PIC16F73 *
* 晶振: 4MHz *
* *
* 使用PICC8.05编译器,MPLAB v7.50调试。 *
* *
******************************************************************/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
const uchar FFW[4]={0xf1,0xf2,0xf4,0xf8};
const uchar REV[4]={0xf8,0xf4,0xf2,0xf1};
#define left_key RB5
#define right_key RB4
/**********************************************************
初始化函数:初始化个端口
**********************************************************/
void ioint()
{
 INTCON = 0X00;
 TRISB = 0xff;
 OPTION = 0X7F;
 GIE = 1;
 RBIE = 1;
 PORTB = PORTB;

}
/**********************************************************
k*1ms延时函数
**********************************************************/
void delay(uint k){
  uint t;
  for(;k!=0;k--)
  for(t=110;t!=0;t--);
}
/********************************************************
步进电机正转函数
********************************************************/
void motor_ffw()
{
  uchar i;
  uint j;

  for (j=0; j<10; j++) //一个周期转90度
  {
   for (i=0; i<4; i++) 
    {
      PORTC = FFW[i]; //取数据
      delay(20); //调节转速
    }
   PORTC = FFW[1]; //取数据
   delay(20); //调节转速
  }
}

/********************************************************
步进电机反转函数
********************************************************/
void motor_rev()
{
  uchar i;
  uint j;
    for (j=0; j<10; j++) //一个周期转90度
     {
      for (i=0; i<4; i++) 
       {
         PORTC = REV[i]; //取数据
         delay(15); //调节转速
       }
         PORTC = REV[1]; //取数据
         delay(15); //调节转速
     }
}
/********************************************************
停止运行函数
*********************************************************/
void stop_run()
{
PORTC=0x00;
delay(1000); //延时
}
/**********************************************************
中断函数
**********************************************************/
void interrupt HI_ISR()
{
  GIE =0;
  if((RBIE)&&(RBIF))
    {      
      delay(10);
      PORTB = PORTB;
      if(left_key == 0){motor_ffw();}
      if(right_key == 0){motor_rev();}
      stop_run();
     RBIF = 0;
    }
  GIE =1; 
}

/********************************************************
主函数
*********************************************************/
main()
{
  ioint();
  TRISC = 0xF0; //设置RC4-RC7为输入,RC0-RC3为输出。
  while(1)
   {
         ;
   }
}
/********************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -