呆猫一号吧 关注:128贴子:235
  • 2回复贴,共1

大神帮忙看看这个直流电机的程序

只看楼主收藏回复

这个程序基本上可以跑,但是这是我网上找的,一开始的时候电机不转,按键按一下,缓慢转动,再按加速,再按更加加速,再按,慢速,最后按,停止,然后循环·······请大神帮忙解释解释每步的大概意思,或者帮忙给个直流电机的变速代码,谢谢······
#include <AT89X51.H>void delay( unsigned int ms);
#define Key P2_1
#define motor P1_2
unsigned char code set[4]={0,3,6,9}; //PWM 占空比90%,60%,30%
unsigned char code zy[9]={2,4,6,8,9,8,6,4,2}; //自然风
unsigned char tt=0; //档位
unsigned char jj=0;
void delay( unsigned int ms);
void main( void)
{
bit kk=0; //按键
motor = 0; TMOD = 0x01; //定时器T0,工作方式1
TH0 = -1000/256;TL0 = -1000%256; //定时1ms
ET0 = 1;
EA = 1;
TR0 = 1;
while(1)
{
Key =1;
if( Key == 0)
{
delay(10);
Key =1;
if(Key == 0 && kk ==0)
{ tt++;
if(tt>4) tt=0; kk =1;
}
}
Key = 1; if( Key == 1) kk= 0;
}
}
void IT( void ) interrupt 1
{
static unsigned char i = 0;
TH0 = -1000/256;
TL0 = -1000%256; //定时1ms
if(tt<4)
{
if( i < set[tt] ) motor =1;
else
motor = 0; i++;if(i>=10) i=0;
}
else if(tt==4)
{ static unsigned char j = 0;
if(j<zy[jj]) motor=1;
else motor=0;
j++;if (j>=30)
{
j=0; jj++;} if(jj>9) jj=0;
}
}
void delay( unsigned int ms) //延时
{
unsigned char i;
while( ms--)
{
for( i=0 ; i<125 ; i++);
}
}


IP属地:陕西1楼2013-08-06 16:59回复
    你好问下,你这个使用单片机的最小系统控制的么


    7楼2014-10-01 14:55
    收起回复