欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 求程序,根據(jù)輸入的方波,來輸出pwm,來控制電機(jī)轉(zhuǎn)速,89c51應(yīng)該是stc12c5芯片 [打印本頁]

作者: 13370353201    時(shí)間: 2019-11-14 19:28
標(biāo)題: 求程序,根據(jù)輸入的方波,來輸出pwm,來控制電機(jī)轉(zhuǎn)速,89c51應(yīng)該是stc12c5芯片

3(`VUU)7AY)8CHI7PNSRBS0.png (71.73 KB, 下載次數(shù): 128)

3(`VUU)7AY)8CHI7PNSRBS0.png

O(LS_LS8AH5%HOS}GZTWAO3.png (81.89 KB, 下載次數(shù): 59)

O(LS_LS8AH5%HOS}GZTWAO3.png

作者: 13370353201    時(shí)間: 2019-11-14 20:44
我這個(gè)程序能實(shí)現(xiàn)這個(gè)功能嗎???
#include "define.h"
#include "delay.h"
#include "play.h"
#include "motor.h"
#include "mic.h"


/********請先在define.h中調(diào)整晶振頻率與周期配置**************/


u8 mode = 0; //速度級別
void change_mode()
{
        static u8 i=0,j=0;     //計(jì)時(shí)變量約為8ms
         if(mic_flag==2)
                {
                         i++;
                        if(i>10&&mic_flag==2)
                        {
        //開機(jī)確認(rèn)
                                if(mode==0)
                                {
                                        Play_music(PCM8sfkj,sizeof(PCM8sfkj));
                                        j=50;
                                        mic_flag=0;
                                        while(j--)
                                        {
                                                delay_ms(100);
                                                if(mic_flag==2)
                                                {
                                                        Play_music(PCM8zstz,sizeof(PCM8zstz));
                                                        mode=1;
                                                        mic_flag=0;
                                                        break;
                                                }               
                                        }
                                }
                                else if(mode==1)       
                                {       
                                        mode=2;
                                }
                                else if(mode==2)       
                                {
                                        Play_music(PCM8zstz,sizeof(PCM8zstz));                                        
                                        mode=1;
                                }       
                                mic_flag=0;
                                i=0;
                        }
                }
                else if(mic_flag==3)
                {
                         i++;
                        if(i>15&&mic_flag==3)
                        {
                          mode=0;
                                mic_flag=0;
                                i=0;
                        }
                }
}
void change_PWM()
{
                if(mode==0)
                {
                        PCA_PWM0 = 0x03;
                        CCAP0H = CCAP0L = 0xff;
                }
                else if(mode==1)
                {
                        PCA_PWM0 = 0x00;
                        CCAP0H = CCAP0L = CCAP0L-1;
                }
                else if(mode==2)
                {
                        PCA_PWM0 = 0x00;
                        CCAP0H = CCAP0L = CCAP0L;
                }

}
void main()
{

  Timer1Init();
        IT0Init();
        PWMInit();
        Play_init();
        delay_ms(1000);
        while(1)
        {
                change_mode();
    change_PWM();
                Digital_Display_One(CCAP0L/16);
                delay_ms(50);
        }
  
}



void delay_ms(uint ms)  
{      
         unsigned char i, j;
        do
        {                    
                i = TIME_I;
                j = TIME_J;
                do
                {
                        while (--j);
                } while (--i);      
        }while(--ms);
}
#if Machine_Cycle==12UL
void delay5us()                //@12.000MHz
{
        _nop_();
}
#elif Machine_Cycle==2UL
void delay5us()                //@12.000MHz
{
        unsigned char i;
        i = 12;
        while (--i);
}

void IT0Init(void)                //100微秒@11.0592MHz
{
        IT0=1;
        EX0=1;
        EA=1;
}
void Timer1Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0xBF;                //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0x0F;                //設(shè)置定時(shí)器模式
        TMOD |= 0x10;                //設(shè)置定時(shí)器模式
        TL1 = 0x66;                //設(shè)置定時(shí)初值
        TH1 = 0xFC;                //設(shè)置定時(shí)初值
        TF1 = 0;                //清除TF1標(biāo)志
        TR1 = 1;                //定時(shí)器1開始計(jì)時(shí)
        EA = 1;
        ET1 = 1;
}     
u32 times=0;
void T1INT() interrupt 3
{
        TL1 = 0x66;                //設(shè)置定時(shí)初值
        TH1 = 0xFC;                //設(shè)置定時(shí)初值
        times++;
}
u8 mic_flag=0;
void EX0INT(void)  interrupt 0
{  
        static u32 last_time=0;
        u32 differ;
        differ=times-last_time;
        last_time=times;
        if(differ>1000)
        {
                mic_flag=1;
        }
        else if(mic_flag>0&&differ>100&&differ<500)
        {
                 mic_flag++;
        }
}

void PWMInit()
{      
        CCON = 0;                       //清除PCA控制寄存器
                                 
        CL = 0;                         //復(fù)位PCA定時(shí)器計(jì)數(shù)值
        CH = 0;
        CMOD=0x0a;                                                                                        //工作模式:頻率=Sysclk/4/256=10800Hz 無中斷
       
        CCAP0H = CCAP0L = 0xff;         //PWM0設(shè)置占空比50%
        PCA_PWM0 = 0x03;
        CCAPM0 = 0x42;                  //PCA模塊0 工作在8比特方式 無中斷
        CR = 1;                         //PCA定時(shí)器運(yùn)行
}

作者: 來51學(xué)習(xí)1    時(shí)間: 2019-11-15 10:31
你是想根據(jù)方波的什么特征開控制PWM?
作者: 13370353201    時(shí)間: 2019-11-23 12:21
來51學(xué)習(xí)1 發(fā)表于 2019-11-15 10:31
你是想根據(jù)方波的什么特征開控制PWM?

方波的脈寬啊





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1