找回密码
 立即注册
查看: 317|回复: 2

这个是一个pwm 7位的呼吸灯,看视频一直没看懂怎么改变

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:356
  • 最近打卡:2025-05-07 01:01:21
已绑定手机

130

主题

1556

回帖

2001

积分

金牌会员

积分
2001
发表于 2024-5-30 11:57:11 | 显示全部楼层 |阅读模式

CL和CH,还有CCAP1L和CCAP1H 我知道这几个可以控制LED的占空比,但是这个值是怎么换算的哦?
#define pwh_MAX 0xfa // PWM脉宽最小值,占空比2.3%
#define pwh_MIN 0x02 // PWM脉宽最大值,占空比98%

还有这个值怎么取出来的?


现在大概的思路我懂了,就是里面这些参数有点蒙蒙的.
我这个程序是


CL=0x00; // PCA计数器低位
CH=0x00; // PCA计数器高位



// 设置PCA通道1的捕获/比较寄存器,用于定义PWM的占空比
// 这里需要根据实际情况调整CCAP1L和CCAP1H的值
CCAP1L=0xFF; // PCA通道1的捕获/比较值低位
CCAP1H=0x02; // PCA通道1的捕获/比较值高位


  1. #include "intrins.h"
  2. #include <STC8G.H>
  3. #define pwh_MAX 0xfa        // PWM脉宽最小值,占空比2.3%
  4. #define pwh_MIN 0x02       // PWM脉宽最大值,占空比98%
  5. #define STEP 0x03;                    // PWM脉宽变化步长
  6. unsigned char  pwh;     // PWM脉宽变量,即存入CCAP1H中的值
  7. #define MAIN_Fosc 11059200L                        //定义主时钟
  8. void Delay(unsigned int ms)                //注:ms_max=65536
  9. {
  10.         unsigned int i;
  11.         do
  12.         {
  13.                 i=MAIN_Fosc/10000;
  14.                 while(--i);
  15.         }
  16.                 while(--ms);
  17. }
  18. void PWM_OUT()
  19. {
  20.         pwh=pwh_MIN;
  21.         while(1)
  22.         {
  23.                 if (pwh>pwh_MAX) break;
  24.                         CCAP1H= pwh;
  25.                 pwh+=STEP;
  26.                 Delay(20);
  27.         }
  28.         pwh=pwh_MAX;
  29.         while(1)
  30.         {
  31.         if (pwh<pwh_MIN) break;
  32.                 CCAP1H= pwh;
  33.                 pwh-=STEP;
  34.                 Delay(20);
  35.         }
  36. }
  37.         void main()
  38.                
  39.         {
  40.     P0M0 = 0x00; P0M1 = 0x00;
  41.     P1M0 = 0x00; P1M1 = 0x00;
  42.     P2M0 = 0x00; P2M1 = 0x00;
  43.     P3M0 = 0x00; P3M1 = 0x00;
  44.     P4M0 = 0x00; P4M1 = 0x00;
  45.     P5M0 = 0x00; P5M1 = 0x00;
  46.     P6M0 = 0x00; P6M1 = 0x00;
  47.     P7M0 = 0x00; P7M1 = 0x00;
  48.     CCON=0x00; // 清除PCA控制寄存器  
  49.     CMOD=0x08; // PCA计数模式配置(例如,定时器模式)  
  50.     CL=0x00;   // PCA计数器低位  
  51.     CH=0x00;   // PCA计数器高位  
  52.                
  53.     // 配置PCA通道1为PWM模式,并启用中断(如果需要)  
  54.     CCAPM1=0x42; // 设置PCA通道1为PWM模式,并启用中断(如果需要)  
  55.     PCA_PWM1=0x00; // 设置PCA通道1的PWM输出为高有效  
  56.                
  57.     // 设置PCA通道1的捕获/比较寄存器,用于定义PWM的占空比  
  58.     // 这里需要根据实际情况调整CCAP1L和CCAP1H的值  
  59.     CCAP1L=0xFF; // PCA通道1的捕获/比较值低位  
  60.     CCAP1H=0x02; // PCA通道1的捕获/比较值高位  
  61.    
  62.         CR=1;                //启动PCA
  63.         while(1)
  64.         {
  65.                 PWM_OUT();
  66.         }
  67. }
复制代码


回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:173
  • 最近打卡:2025-05-06 17:17:05
已绑定手机

90

主题

962

回帖

2326

积分

超级版主

积分
2326
QQ
发表于 2024-5-30 16:45:09 | 显示全部楼层
宝,需要向冲老师请教呢, 冲哥视频教程和各种开源资料QQ交流群884047237,可群
热线19952583534
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:356
  • 最近打卡:2025-05-07 01:01:21
已绑定手机

130

主题

1556

回帖

2001

积分

金牌会员

积分
2001
发表于 2024-5-30 17:54:21 来自手机 | 显示全部楼层
国学芯用 发表于 2024-5-30 16:45
宝,需要向冲老师请教呢, 冲哥视频教程和各种开源资料QQ交流群884047237,可群 ...

加了,等待验证
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-8 00:50 , Processed in 0.131818 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表