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

標(biāo)題: 這怎么改頻率?單片機(jī)PCA模塊輸出PWM程序 [打印本頁]

作者: 淡忘一世    時(shí)間: 2022-7-12 17:54
標(biāo)題: 這怎么改頻率?單片機(jī)PCA模塊輸出PWM程序
這怎么改頻率 謝謝大家

#include "STC8.H"
#include <intrins.h>

#define u8  unsigned char
#define u16  unsigned int
#define u32  unsigned long


void PCA_PWM_Init()
{
                CCON = 0x00;  
                CMOD = 0x08; //PCA時(shí)鐘為系統(tǒng)時(shí)鐘  
                CL = 0x00;
          CH = 0x00;
                CCAPM0 = 0x42; //PCA模塊0為PWM工作模式  1.7  0~63
                PCA_PWM0 = 0x80; //PCA模塊0輸出6位PWM  
                CCAP0L = 0x20; //PWM占空比為50%[(40H-20H)/40H]  
                CCAP0H = 0x20;  
          CCAPM1 = 0x42; //PCA模塊1為PWM工作模式  
                PCA_PWM1 = 0x40; //PCA模塊1輸出7位PWM  
                CCAP1L = 0x20; //PWM占空比為75%[(80H-20H)/80H]  1.6        0~127
                CCAP1H = 0x20;
          CCAPM2 = 0x42; //PCA模塊2為PWM工作模式  
                PCA_PWM2 = 0x00; //PCA模塊2輸出8位PWM  
                CCAP2L = 0x20; //PWM占空比為87.5%[(100H-20H)/100H]  1.5  0~255
                CCAP2H = 0x20;
          CCAPM3 = 0x42; //PCA模塊3為PWM工作模式  
                PCA_PWM3 = 0xc0; //PCA模塊3輸出10位PWM
          CCAP3L = 0x20; //PWM占空比為96.875%[(400H-20H)/400H]  
                CCAP3H = 0x20;
           CR = 1; //啟動(dòng)PCA計(jì)時(shí)器   
}

//end
/******************************************************************************
* @ 函數(shù)名  : main
* @ 功  能  : 主函數(shù)
* @ 參  數(shù)  : 無
* @ 返回值  : 無
******************************************************************************/

int main()
{
    P0M1 = 0x20;   P0M0 = 0x00;   //設(shè)置為準(zhǔn)雙向口                        P0.5為高阻
    P1M1 = 0x00;   P1M0 = 0x00;   //設(shè)置為準(zhǔn)雙向口
    P2M1 = 0x00;   P2M0 = 0x20;   //設(shè)置為準(zhǔn)雙向口設(shè)置P3.5為推挽輸出
    P3M1 = 0x40;   P3M0 = 0x00;   //設(shè)置為準(zhǔn)雙向口 P3.6為高阻
    P4M1 = 0x00;   P4M0 = 0x00;   //設(shè)置為準(zhǔn)雙向口
    P5M1 = 0x30;   P5M0 = 0x00;   //設(shè)置為準(zhǔn)雙向口  P5.5 P5.4為高阻
    P6M1 = 0x20;   P6M0 = 0x00;   //設(shè)置為準(zhǔn)雙向口  P6.5為高阻
    P7M1 = 0x00;   P7M0 = 0x00;   //設(shè)置為準(zhǔn)雙向口
        PCA_PWM_Init();                  
        while(1)
        {
         
        }
      
}

作者: huashanhui20    時(shí)間: 2022-7-12 20:33
改變PCA時(shí)鐘輸入源的頻率就可以改變PWM的頻率
作者: 淡忘一世    時(shí)間: 2022-7-12 20:54
huashanhui20 發(fā)表于 2022-7-12 20:33
改變PCA時(shí)鐘輸入源的頻率就可以改變PWM的頻率

降了一些,但還是太大了

作者: Y_G_G    時(shí)間: 2022-7-12 21:58
CMOD   選擇時(shí)鐘為系統(tǒng)時(shí)鐘/12
PCA_PWM0        選擇10位PWM
還不行就用6MHZ的時(shí)鐘
再不行就用32KHZ的時(shí)鐘
作者: 188610329    時(shí)間: 2022-7-12 22:27
CMOD = 0x04;

然后,用定時(shí)器來定頻率吧,你愛多慢就多慢。
作者: wulin    時(shí)間: 2022-7-13 10:40
淡忘一世 發(fā)表于 2022-7-12 20:54
降了一些,但還是太大了

改變定時(shí)器時(shí)間就改變PWM頻率,100Hz占空比50%示例
#include <STC8.H>

void Timer0Init(void)                //39微秒@12.000MHz
{
        AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TL0 = 0x2C;                //設(shè)置定時(shí)初始值
        TH0 = 0xFE;                //設(shè)置定時(shí)初始值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
}

void main()
{
        CCON = 0x00;
        CMOD = 0x04;      //PWM周期=定時(shí)器0的溢出周期/256
        CL = 0x00;
        CH = 0x00;
        CCAPM0 = 0x42;    //PCA模塊0為PWM工作模式
        PCA_PWM0 = 0x00;  //PCA模塊0輸出8位PWM
        CCAP0H=CCAP0L=0x80;//PWM占空比為50%
        CR = 1;           //啟動(dòng)PCA計(jì)時(shí)器
        Timer0Init();
        while (1);
}

作者: 淡忘一世    時(shí)間: 2022-7-13 10:54
Y_G_G 發(fā)表于 2022-7-12 21:58
CMOD   選擇時(shí)鐘為系統(tǒng)時(shí)鐘/12
PCA_PWM0        選擇10位PWM
還不行就用6MHZ的時(shí)鐘

好的,試試
作者: 淡忘一世    時(shí)間: 2022-7-13 10:55
188610329 發(fā)表于 2022-7-12 22:27
CMOD = 0x04;

然后,用定時(shí)器來定頻率吧,你愛多慢就多慢。

好的,謝謝
作者: 淡忘一世    時(shí)間: 2022-7-13 10:55
wulin 發(fā)表于 2022-7-13 10:40
改變定時(shí)器時(shí)間就改變PWM頻率,100Hz占空比50%示例
#include

謝謝大佬
作者: wulin    時(shí)間: 2022-7-13 11:17
淡忘一世 發(fā)表于 2022-7-13 10:55
謝謝大佬

//PWM周期=定時(shí)器0的溢出周期*256
作者: 阿飛7812    時(shí)間: 2022-8-11 09:21
wulin 發(fā)表于 2022-7-13 11:17
//PWM周期=定時(shí)器0的溢出周期*256

//PWM周期=定時(shí)器0的溢出周期*256 ,如果溢出時(shí)間0.14US ,那14*256就它的周期嗎?為什么是256 這個(gè)沒搞明白,望指點(diǎn)小白 ,是因?yàn)?位機(jī)的原因嗎
作者: lkc8210    時(shí)間: 2022-8-11 10:46
阿飛7812 發(fā)表于 2022-8-11 09:21
//PWM周期=定時(shí)器0的溢出周期*256 ,如果溢出時(shí)間0.14US ,那14*256就它的周期嗎?為什么是256 這個(gè)沒搞明白 ...

STC8A-F手冊(cè)有寫



作者: 阿飛7812    時(shí)間: 2022-8-12 09:14
lkc8210 發(fā)表于 2022-8-11 10:46
STC8A-F手冊(cè)有寫

謝謝指點(diǎn) 如果選6位PWM ,周期=就是如溢出時(shí)間*63 對(duì)嗎
作者: coody_sz    時(shí)間: 2022-8-12 13:53
使用定時(shí)器0溢出率做PCA時(shí)鐘。
作者: 阿飛7812    時(shí)間: 2022-8-13 09:05
coody_sz 發(fā)表于 2022-8-12 13:53
使用定時(shí)器0溢出率做PCA時(shí)鐘。

我的意思是怎樣計(jì)算 如溢出為0.14US 6位PWM  頻率是怎么計(jì)算的 是0.14*32  ,0010 0000,是這樣的嗎




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