打印

PWM控制直流电机正反转C程序原码

[复制链接]
2847|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
enjoy21cn|  楼主 | 2009-4-19 23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM控制直流电机正反转C程序编译通过,
目前想要通过四个I/O端口分时输出多路PWM来控制终端,不知道这样能行的通不?有没有比较好的编程方法!有不对的地方请高手指点一下。最好有一个框家架图!

下面是直流电机PWM程序:
#include<reg52.h>
#define num_sec 3           //统计多少秒
#define num_run 5000       //转的圈数
#define num_cry 100        //报警的次数
sbit bee=P1^7;
sbit P17 = P1^7;
sbit m1=P1^6;
sbit P16 = P1^6;
sbit m2=P1^5;
sbit P15 = P1^5;
sbit key=P1^4;
unsigned char cir=0,num50ms=0;
unsigned int n=0;

void delay1ms(unsigned int count)
{
   unsigned int i,j;
   for(i=0;i<count;i++)
   for(j=0;j<120;j++);
}
void cry(unsigned char c)
{
   unsigned k;
   for(k=0;k<c;k++)
   {
     bee=0;
     delay1ms(80);
     bee=1;
     delay1ms(80);
   }
}
void time0(void) interrupt 1 using 1
{
   num50ms++;                 //AT89s52
   if(num50ms==(num_sec*20)) //20为1秒
   {
       m1=~m1;
       m2=~m2;
       num50ms=0;
       cir++;
    }
   if(cir==2)
   {
       cir=0;
       n++;
   }
   TH0=0X4C;
   TL0=0;
}
main()
{
   m1=1;m2=1;
   bee=1;
   while(1)
   {
     if(!key&&n==0)
     {
       delay1ms(20);
       if(!key)
       {
       TMOD=0x01;
       EA=1;
       ET0=1;
       TH0=0X4C;
       TL0=0;
       TR0=1;
       m1=1;
       m2=0;
       bee=0;
       delay1ms(100);
       bee=1;
       }
       while(!key);
     }
    if(n==num_run)
     {
       TR0=0;
       m1=1;
       m2=1;
       cry(num_cry);
       n=0;
     }
   }

}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

107

帖子

0

粉丝