久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2769|回復: 14
收起左側

這怎么改頻率?單片機PCA模塊輸出PWM程序

[復制鏈接]
ID:1008383 發表于 2022-7-12 17:54 | 顯示全部樓層 |閱讀模式
這怎么改頻率 謝謝大家

#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時鐘為系統時鐘  
                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; //啟動PCA計時器   
}

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

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

使用道具 舉報

ID:878061 發表于 2022-7-12 20:33 | 顯示全部樓層
改變PCA時鐘輸入源的頻率就可以改變PWM的頻率
回復

使用道具 舉報

ID:1008383 發表于 2022-7-12 20:54 | 顯示全部樓層
huashanhui20 發表于 2022-7-12 20:33
改變PCA時鐘輸入源的頻率就可以改變PWM的頻率

降了一些,但還是太大了
回復

使用道具 舉報

ID:401564 發表于 2022-7-12 21:58 | 顯示全部樓層
CMOD   選擇時鐘為系統時鐘/12
PCA_PWM0        選擇10位PWM
還不行就用6MHZ的時鐘
再不行就用32KHZ的時鐘
回復

使用道具 舉報

ID:624769 發表于 2022-7-12 22:27 | 顯示全部樓層
CMOD = 0x04;

然后,用定時器來定頻率吧,你愛多慢就多慢。
回復

使用道具 舉報

ID:213173 發表于 2022-7-13 10:40 | 顯示全部樓層
淡忘一世 發表于 2022-7-12 20:54
降了一些,但還是太大了

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

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

void main()
{
        CCON = 0x00;
        CMOD = 0x04;      //PWM周期=定時器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;           //啟動PCA計時器
        Timer0Init();
        while (1);
}
回復

使用道具 舉報

ID:1008383 發表于 2022-7-13 10:54 | 顯示全部樓層
Y_G_G 發表于 2022-7-12 21:58
CMOD   選擇時鐘為系統時鐘/12
PCA_PWM0        選擇10位PWM
還不行就用6MHZ的時鐘

好的,試試
回復

使用道具 舉報

ID:1008383 發表于 2022-7-13 10:55 | 顯示全部樓層
188610329 發表于 2022-7-12 22:27
CMOD = 0x04;

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

好的,謝謝
回復

使用道具 舉報

ID:1008383 發表于 2022-7-13 10:55 | 顯示全部樓層
wulin 發表于 2022-7-13 10:40
改變定時器時間就改變PWM頻率,100Hz占空比50%示例
#include

謝謝大佬
回復

使用道具 舉報

ID:213173 發表于 2022-7-13 11:17 | 顯示全部樓層

//PWM周期=定時器0的溢出周期*256
回復

使用道具 舉報

ID:65237 發表于 2022-8-11 09:21 | 顯示全部樓層
wulin 發表于 2022-7-13 11:17
//PWM周期=定時器0的溢出周期*256

//PWM周期=定時器0的溢出周期*256 ,如果溢出時間0.14US ,那14*256就它的周期嗎?為什么是256 這個沒搞明白,望指點小白 ,是因為8位機的原因嗎
回復

使用道具 舉報

ID:161164 發表于 2022-8-11 10:46 | 顯示全部樓層
阿飛7812 發表于 2022-8-11 09:21
//PWM周期=定時器0的溢出周期*256 ,如果溢出時間0.14US ,那14*256就它的周期嗎?為什么是256 這個沒搞明白 ...

STC8A-F手冊有寫
2022-08-11_104331.png

回復

使用道具 舉報

ID:65237 發表于 2022-8-12 09:14 | 顯示全部樓層

謝謝指點 如果選6位PWM ,周期=就是如溢出時間*63 對嗎
回復

使用道具 舉報

ID:1034262 發表于 2022-8-12 13:53 | 顯示全部樓層
使用定時器0溢出率做PCA時鐘。
回復

使用道具 舉報

ID:65237 發表于 2022-8-13 09:05 | 顯示全部樓層
coody_sz 發表于 2022-8-12 13:53
使用定時器0溢出率做PCA時鐘。

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久123| 一区二区三区视频在线观看 | 日本xx视频免费观看 | 99精品国产在热久久 | 在线视频日韩精品 | 成年人免费看的视频 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 日本久久综合 | 求个av网址 | 一二三四在线视频观看社区 | 日韩在线资源 | 99久久99热这里只有精品 | 欧美一区免费 | 久久久国产精品一区 | 国产色在线 | 91成人影院 | 国产一区二区三区四区在线观看 | 91九色视频在线 | 国产欧美精品区一区二区三区 | 一本在线| 欧洲精品一区 | 日本在线免费看最新的电影 | 国产传媒视频在线观看 | 色屁屁在线观看 | 夜夜撸av| 午夜资源 | 国产亚洲精品久久久久久豆腐 | 激情在线视频网站 | 国产在线精品一区二区三区 | 日本午夜网 | 欧美在线观看一区 | 亚洲综合色视频在线观看 | 免费福利视频一区二区三区 | 国产国拍亚洲精品av | 成人免费小视频 | 综合二区 | www日韩欧美 | 欧美福利在线 | 成人在线免费观看视频 | 精品亚洲第一 | 国产一区二区三区免费观看在线 |