资源简介

步进电机控制细分驱动程序,用于单片机对步进电机的控制;程序包括了串口通信,参数设置等功能可以和上位机进行通信。

资源截图

代码片段和文件信息

/********************************************************************************
*  标题: 细分驱动控制器的控制信号程序                                           *
*  功能:对细分模块进行控制                             *
*********************************************************************************/
#include 
#include 
#define uchar  unsigned  char 
#define uint  unsigned  int
sbit PWM=P1^0;   //PWM波输出口
sbit DIR=P1^1;   //正反转控制信号
sbit ENA=P1^2;   //使能信号
/************************************************************************************************************************
*  系统频率设定    200Hz400Hz600Hz700Hz800Hz900Hz1000Hz1050Hz1100kHz1150kHz1200kHz1250kHz 1300kHz1350kHz *
************************************************************************************************************************/
uint code  dsz[14]={ 0xfe0c0xff060xff590xff710xff830xff900xff9c0xffa00xffa5 0xffa90xffac0xffb00xffb30xffb5} ;
uint  d_timer Z_B=2000;  //   d_timer 每次加载频率Z_B 每次加载的总步数;
uchar timer1keycountC_timers=0;  //  timer1 PWM波频率控制 key按键值设定 count每个频率段的步数C_timers加载次数
uchar temp=0scounter=0zhuangtai[7];    //串行通讯数据
char i=0;
/********************************************************************************
*                           系统初始化 *
*********************************************************************************/
void system_Ini()
{
    P1=0xfb;
P2=0xff;
d_timer=dsz[0]  ;
TH0 = (uchar) (d_timer/256);          // 设定定时器初始值
TL0 = (uchar) (d_timer%256);
TR0 = 0;    //定时器开始计时
    ET0 = 1;              //开定时器T0中断
EA  = 1;    //开总中断

}
/********************************************************************************
*                           串口初始化 *
*********************************************************************************/
void comm_init()

  SCON=0x50;   //串口控制字
  PCON=0x00;   //波特率不增倍
  TMOD=0x21;//定时器0以工作方式1工作,定时器1以工作方式2工作
  TH1=0xfd;      //波特率为9600
  TR1=;   //启动定时器
  ES=1;
  ET1=0;
  EA=1;

}

/********************************************************************************
*                           延时函数0.1ms     *
*********************************************************************************/
void   delay(void) 
    {   uchar   num=150;
   while(num--) 
   {_nop_();
    _nop_();
_nop_();}
   }
/********************************************************************************
*                           延时函数0.1ms *
*********************************************************************************/
void   long_delay(void) 
    {   uchar   num=200;
   while(num--) 
   {_nop_();_nop_();_nop_();_nop_();_nop_();
    }
   }
/********************************************************************************
*                           键值判断 *
*********************************************************************************/
uchar fkey(void )
  {  uchar k=0;
   if(~P2==0x01)   {dela

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2006-02-19 10:42  细分驱动控制波已完成\
     文件       86972  2010-10-17 10:51  细分驱动控制波已完成\Backup Of linxi.DBK
     文件       86990  2010-10-16 22:04  细分驱动控制波已完成\Last Loaded linxi.DBK
     文件       86973  2010-10-17 14:24  细分驱动控制波已完成\linxi.DSN
     文件         819  2006-02-19 11:43  细分驱动控制波已完成\linxi.PWI
     文件        8728  2006-02-19 10:43  细分驱动控制波已完成\PWM
     文件        6519  2006-02-19 15:42  细分驱动控制波已完成\PWM.c
     文件        2453  2006-02-19 10:43  细分驱动控制波已完成\PWM.hex
     文件          38  2006-02-19 10:43  细分驱动控制波已完成\PWM.lnp
     文件       11812  2006-02-19 10:43  细分驱动控制波已完成\PWM.LST
     文件       10743  2006-02-19 10:43  细分驱动控制波已完成\PWM.M51
     文件       10346  2006-02-19 10:43  细分驱动控制波已完成\PWM.OBJ
     文件         200  2006-02-19 15:43  细分驱动控制波已完成\PWM.plg
     文件       54867  2006-02-19 15:43  细分驱动控制波已完成\PWM.uvopt
     文件       13224  2010-09-24 10:51  细分驱动控制波已完成\PWM.uvproj
     文件       54867  2006-02-19 11:43  细分驱动控制波已完成\PWM_uvopt.bak
     文件           0  2010-09-24 10:19  细分驱动控制波已完成\PWM_uvproj.bak

评论

共有 条评论