您现在所在的是:

单片机论坛

回帖:3个,阅读:2097 [上一页] [1] [下一页]
906
chejie
文章数:2
年度积分:50
历史总积分:906
注册时间:2006/5/15
发站内信
发表于:2006/5/15 16:51:00
#0楼
毕业设计:   求用8051单片机C语言编程控制三相步进电机(转速,方向,起停).用在研华工控机上的
cjbmwz@163.com
906
chejie
文章数:2
年度积分:50
历史总积分:906
注册时间:2006/5/15
发站内信
发表于:2006/5/15 17:01:00
#1楼
三相六拍的
910
dahai85
文章数:4
年度积分:50
历史总积分:910
注册时间:2007/3/21
发站内信
发表于:2007/3/21 11:10:00
#2楼
单片机
毕业设计:   51单片机控制三相步进电机智能驱动,程序控制三相六拍输出,有过流保护功能,电流小于十安,低压驱动VMOS管,
能不能给我一份?真诚感谢!
dahai85@163.com.cn
1121
屏凡
文章数:78
年度积分:50
历史总积分:1121
注册时间:2006/4/21
发站内信
发表于:2007/3/23 8:06:00
#3楼
应该不难吧。看看我这个电位器调速的。参考一下。
#include<pic.h>

#define uchar  unsigned char
#define uint   unsigned int
#define ulong  unsigned long

__CONFIG(XT&UNPROTECT&PWRTEN&BORDIS&WDTEN);

union {
     struct {
        unsigned b0:1;
        unsigned b1:1;
        unsigned b2:1;
        unsigned b3:1;
        unsigned b4:1;
        unsigned b5:1;
        unsigned b6:1;
        unsigned b7:1;
        }tpBit;
       unsigned char tpBits;
      } tp;
#define bj0  tp.tpBit.b0
#define bj1  tp.tpBit.b1
#define bj   tp.tpBits  

const  unsigned char table[]={ 0x60,0x30,0x90,0x0C0, };
const  unsigned char tablef[]={0x0C0,0x90,0x30,0x060, };
   

uchar  i;
///////AD 延时子程序////////////////
void  ADdelay (uchar i)
{  
 while(i--) ;
}    

/////// 延时子程序////////////////
void delay(uint i)
{  
 while(i--)
 {
   uchar a=127;
    while(a--);
 }
 
}    


////系统 各I/O初始化子程序////////////////////
void  initial (void)
{   TRISB=0;
   //TRISC=0;
   TRISA=0x0ff;
}
///////A/D转换初始化子程序/////////////////////
void  adinitial()
{
       ADCON1=0;//;设置RA为A/D甬道模拟输入
                  //;RC时钟。打开A/D转换器。先中通道0
      ADCON0=0x0c1;// B'11000001'   // ;A/D时钟为RC。RA0作A/D输入等
              // ADIE=1; //时。开放中断
      ADIF=0; //清/AD中断标志位   PIR1,
              //  PEIE=1; //开放外围部件中断INTCON,
              // GIE=1;   //开放总中断   INTCON,
      TRISA0=1;
      TRISA1=1;
}

//////////////////////////A/D转换/////////////////////////////////////////////////////////
void  AD_ad()
{
        ADCON0=0x0c1;   // B'11001001'   // ;A/D时钟为RC。RA0作A/D输入等
       
        ADdelay(3);//采样时间30us
        ADGO=1;      //启动A/D转换 ADCON0,
        while(ADGO); //等待
 }
 
////////////////主程序///////////////////
void main()
 {
       initial ();  //系统 各I/O初始化子程序
       adinitial();  //A/D转换初始化子程序
       i=250;
      while(1)
      {
          unsigned char   c;
       
        for(c=0;c<4;c++)
             {
              if(bj0)PORTB=table[ c] ;      
          else   PORTB=tablef[ c] ;      
               CLRWDT();
                AD_ad();
               delay(ADRES );
         }
            i--;
             while(i==0)
              {
                i=250;bj0=!bj0;
              }
        }
  }

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004