研发埠

标题: 如何用51单片机实现直流电机调速? [打印本页]

作者: 布丁奶茶    时间: 2013-3-13 14:15
标题: 如何用51单片机实现直流电机调速?

作者: 狗狗    时间: 2013-3-13 14:16
直流电机调速主要采用PWM调速方式实现。51单片机实现直流电机调速可以采用中断方式实现PWM脉宽的控制,实现调速功能。 下例是51单片机结合中断实现直流电机调速的程序。#include<reg52.h> sbit KEY1 = P3^1;    //定义调速按键sbit PWM = P1^5;    //定义调速端口unsigned char CYCLE;    //定义周期T=x*0.1msunsigned char PWM_ON ;    //定义高电平时间 void delay(unsigned int cnt){        while(--cnt);} main(){        unsigned char PWM_Num;        TMOD |=0x01;        TH0=(65536-1000)/256;        TL0=(65536-1000)%256;        IE= 0x82;        TR0=1;         CYCLE = 10;        while(1)        {                if(!KEY1)                {                        delay(10000);                        if(!KEY1)                        {                                PWM_Num++;                                if(PWM_Num==4)                                         PWM_Num=0;                                switch(PWM_Num)                                 {                                        case 00=0x06WM_ON=0;break;                                        case 10=0x5BWM_ON=4;break;                                        case 20=0x4FWM_ON=6;break;                                        case 30=0x66WM_ON=8;break;                                        default:break;                                }                        }                }        }}void tim(void) interrupt 1 using 1{        static unsigned char count;        TH0=(65536-1000)/256;        TL0=(65536-1000)%256;         if (count==PWM_ON)        {                PWM = 1;        }        count++;        if(count == CYCLE)        {                count=0;                if(PWM_ON!=0)                        PWM = 0;         }}




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2