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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 340|回復: 3
收起左側

請教各位工程師,為什么我的頻率總是設置的不對

[復制鏈接]
ID:1153575 發表于 2025-6-11 15:18 | 顯示全部樓層 |閱讀模式
下面是我的基于STC15W408AS的代碼,我想要設置 2個 頻率為7KHZ,占空比為 50% ,輸出相反高低電平方波,燒錄后測量,頻率確實43Kh,請教各位工程師,指點一下[color=rgba(0, 0, 0, 0.85)]
  1. #include "stc15.h"    // 包含STC15系列寄存器定義
  2. #include "intrins.h"

  3. #define FOSC    11059200L  // 系統時鐘頻率
  4. typedef unsigned char BYTE;
  5. typedef unsigned int WORD;

  6. // PCA引腳映射定義(STC15W408AS數據手冊)
  7. #define CCP_S0  0x10       // P_SW1.4,選擇第二組CCP引腳(P3.4~P3.7)
  8. #define CCP_S1  0x20       // P_SW1.5(未使用,保留為0)

  9. // 引腳定義
  10. sbit PWM1 = P3^5;  // CCP0_2,對應PCA模塊0
  11. sbit PWM2 = P3^7;  // CCP2_2,對應PCA模塊2

  12. void PCA_PWM_Init(void);  // PCA初始化函數

  13. /********************** 主函數 **********************/
  14. void main() {
  15.     // 配置引腳為推挽輸出
  16.     P3M0 |= 0x84;  // P3.5(PWM1)和P3.7(PWM2)設為推挽輸出(P3M0.2=1, P3M0.7=1)
  17.     P3M1 &= ~0x84; // 清除推挽輸出禁止位

  18.     // 初始化PCA模塊
  19.     PCA_PWM_Init();

  20.     while (1); // 主循環空轉
  21. }

  22. /********************** PCA初始化函數 **********************/
  23. void PCA_PWM_Init(void) {
  24.     BYTE duty = 128;  // 50%占空比(8位PWM中255為滿周期,128為中點)
  25.    
  26.     // 1. 停止PCA計數器
  27.     CR = 0;
  28.    
  29.     // 2. 配置PCA引腳映射(選擇第二組CCP引腳:P3.5=CCP0_2,P3.7=CCP2_2)
  30.     P_SW1 &= ~(CCP_S0 | CCP_S0); // 清除CCP_S0和CCP_S1位
  31.     P_SW1 |= CCP_S0;             // 設置CCP_S0=1,選擇P3.4~P3.7作為CCP引腳
  32.    
  33.     // 3. 配置時鐘源為系統時鐘/1T(STC15W支持1T模式,需確保AUXR設置正確)
  34.     AUXR |= 0x04;  // AUXR.CT0=0(定時器0模式),AUXR.ST0=1(定時器0使用1T時鐘)
  35.     CMOD = 0x09;   // CMOD=0b00001001,時鐘源為系統時鐘/1T(CPS1=1, CPS0=0),禁止PCA定時器溢出中斷
  36.    
  37.     // 4. 配置PCA模塊0(P3.5)為8位PWM模式
  38.     PCA_PWM0 = 0x00;       // 8位PWM模式(自動重裝,計數器0x00~0xFF)
  39.     CCAPM0 = 0x42;         // PWM模式,允許模塊中斷(若需要)
  40.     CCAP0H = CCAP0L = duty; // 設置占空比(高電平持續時間)
  41.    
  42.     // 5. 配置PCA模塊2(P3.7)為8位PWM模式(互補波形)
  43.     PCA_PWM2 = 0x00;       // 8位PWM模式
  44.     CCAPM2 = 0x42;         // PWM模式
  45.     CCAP2H = CCAP2L = 255 - duty; // 互補占空比(低電平持續時間與PWM1高電平一致)
  46.    
  47.     // 6. 啟動PCA計數器
  48.     CR = 1;
  49. }
復制代碼

回復

使用道具 舉報

ID:320306 發表于 2025-6-11 18:49 | 顯示全部樓層
是不是7K這個頻率不在分頻點上,我記得51單片機并不是每個頻率都能產生!
回復

使用道具 舉報

ID:401564 發表于 2025-6-12 10:08 | 顯示全部樓層
15W系列沒有用過,但我用過STC8H的,它是不能自己設定頻率的,只能是系統時鐘的幾分頻而已
估計你只能根據自己要頻率,去找一個差不多的時鐘頻率了
回復

使用道具 舉報

ID:1153607 發表于 2025-7-4 21:18 | 顯示全部樓層
毛病出在你選的8位,每周期255個脈沖,11.0592M/255=43K 。沒毛病。一個簡單的辦法就是將PCA輸入選為T0的溢出脈沖,這樣你就可以通過調整T0的定時大范圍調整頻率了。就是修改PCA第三項,具體看datasheet.
可見這個老片子使用上不如新的STC8H好用。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九热精品 | 国产一级片网站 | av免费在线观看网站 | 亚洲第一综合 | 婷婷综合五月天 | 黄色大片av | 99国产精品99久久久久久粉嫩 | 欧美久久一区二区 | 亚洲激情四射 | 亚洲成人一区二区 | 久久久天堂国产精品女人 | 国产成人一区二区三区 | av青青草 | a级一级片 | 伊人久久久 | 五月天黄色网 | 欧美福利视频 | 久久不卡视频 | 欧美日韩国产激情 | 成人欧美一区二区三区黑人孕妇 | 男女啪啪免费 | 日韩免费高清视频 | 久热精品视频在线观看 | 天天视频国产 | 97国产视频 | 成人免费视频播放 | 成人在线观看网站 | 狠狠干欧美 | 天天拍天天干 | 日韩精品久久久久 | 黄色一级片网站 | 伊人久久中文字幕 | 中文字幕在线网站 | 亚洲一级特黄 | 九九国产精品视频 | 国产综合视频在线观看 | 亚洲一区二区在线视频 | av免费网 | 狠狠干夜夜 | 欧美日韩精品一区二区在线播放 | 人人插人人射 |