找回密码
 注册
关于网站域名变更的通知
查看: 162|回复: 3
打印 上一主题 下一主题

这怎么改频率?单片机PCA模块输出PWM程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-7-13 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这怎么改频率 谢谢大家
* P+ ]& s( E6 \0 W- H/ r+ n
$ A6 q) T' o) v7 n* \8 u9 v+ E: u% E1 [  k6 w4 U' w" E  Y4 C. x% d: \1 [
' a7 J' f/ w+ o  _- e
#include "STC8.H"

, _5 M- B6 c9 U, u( g! P* Y: R+ X#include <intrins.h>, W" _; X( v, ?. F" j4 O1 h
2 i: a; u3 K& B
#define u8  unsigned char
* r. n! y$ N+ Q7 ~' ?$ H#define u16  unsigned int) _: W* i# H- u( I  j2 W
#define u32  unsigned long: E* t  |) |) A4 `/ r

1 f9 j7 T$ z' V/ u* }1 N2 m. h1 o' Q9 L
void PCA_PWM_Init()$ n9 Q: z% `) Q% f; B, c7 r% Z
{: I* v) F  j) p/ x- ?" K6 L
                CCON = 0x00;  4 Z5 b0 ^' Q5 P
                CMOD = 0x08; //PCA时钟为系统时钟  9 D  y# _+ O3 O
                CL = 0x00;
: M" d+ c% V- v  Z1 o          CH = 0x00;
5 F( ^6 F2 F  N7 L' _: Y                CCAPM0 = 0x42; //PCA模块0为PWM工作模式  1.7  0~63
, n  J, _" ?; N                PCA_PWM0 = 0x80; //PCA模块0输出6位PWM  
6 o+ G; W! f  z                CCAP0L = 0x20; //PWM占空比为50%[(40H-20H)/40H]  / ~  J& B- J5 S. H! H
                CCAP0H = 0x20;  8 m5 O+ J) P5 k# b
          CCAPM1 = 0x42; //PCA模块1为PWM工作模式  - i- V  p, ~: t* G" C* D* |( P
                PCA_PWM1 = 0x40; //PCA模块1输出7位PWM  5 J. `/ O: D3 J4 ^) [  P5 t
                CCAP1L = 0x20; //PWM占空比为75%[(80H-20H)/80H]  1.6        0~127
+ i( N+ p& u' N# u% q& X                CCAP1H = 0x20;# q9 Y; m5 h) x  U7 s/ z& \2 K
          CCAPM2 = 0x42; //PCA模块2为PWM工作模式  ; G2 f1 A$ c/ J  Q( n6 M8 k4 t
                PCA_PWM2 = 0x00; //PCA模块2输出8位PWM  5 Y" ~9 N+ _' Z7 r  @  V
                CCAP2L = 0x20; //PWM占空比为87.5%[(100H-20H)/100H]  1.5  0~255  n5 F) ^6 ^9 A" r/ G
                CCAP2H = 0x20;2 V8 M* I  w' p3 |0 w5 ?$ P
          CCAPM3 = 0x42; //PCA模块3为PWM工作模式  6 s- y- G4 d0 B- p- {4 M9 [4 f( S) q
                PCA_PWM3 = 0xc0; //PCA模块3输出10位PWM9 H0 ^0 t7 A' o2 r$ g& R
          CCAP3L = 0x20; //PWM占空比为96.875%[(400H-20H)/400H]  
: k5 a/ R( q0 d                CCAP3H = 0x20;. b4 @; M; I  z1 T4 h
           CR = 1; //启动PCA计时器   
  z( }/ {; F+ ~2 o) `5 Q}$ r2 U4 s0 |; [* k

+ ^+ j) N: A% S0 f# U//end
5 l7 Z- w- j+ x/ H1 L2 [/******************************************************************************
5 M. ]% c: K9 z8 v% N* @ 函数名  : main8 q7 M5 s7 m5 ~9 l" Q
* @ 功  能  : 主函数
3 Q" ~  g2 b3 N; l; r& l* @ 参  数  : 无' E" Q& Z4 u0 }
* @ 返回值  : 无9 `2 M8 N0 y" s% m0 k
******************************************************************************/3 z  {9 d; K/ @5 x6 Y! o' J

3 w/ r$ Y& ?5 |8 S2 ^int main()
. U5 t2 t9 x' f! i! _4 _1 c{
* }2 C2 M1 f2 K$ B    P0M1 = 0x20;   P0M0 = 0x00;   //设置为准双向口                        P0.5为高阻% U9 S0 j; `$ e( F; o
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口; g# Q" b1 m$ w3 I& R8 T; s  j
    P2M1 = 0x00;   P2M0 = 0x20;   //设置为准双向口设置P3.5为推挽输出
4 L4 x9 Y! `5 ^5 S; ]2 R! Y    P3M1 = 0x40;   P3M0 = 0x00;   //设置为准双向口 P3.6为高阻
7 R' p* {" e' L* U" U5 f    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口, w6 o* k  I! Z- \
    P5M1 = 0x30;   P5M0 = 0x00;   //设置为准双向口  P5.5 P5.4为高阻0 C/ f  O  N' L) r# d
    P6M1 = 0x20;   P6M0 = 0x00;   //设置为准双向口  P6.5为高阻
8 s' t: Q* z% A1 j  \2 B    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
+ h$ y! B; l( N        PCA_PWM_Init();                  
# C" l# I' H( u0 c, U        while(1)
. X  O. @5 i) l+ y: p" a$ _0 D2 A        {3 N. g6 @. e  l
         & i/ i2 z6 @3 s
        }' d! U+ E+ E! t- u$ R
      
- u0 b- b% I9 D% @: S( d: H' \5 @}
" e; A5 |7 U. f7 A* e& D3 O
  • TA的每日心情
    开心
    2022-1-21 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-7-13 13:07 | 只看该作者
    改变PCA时钟输入源的频率就可以改变PWM的频率

    该用户从未签到

    3#
    发表于 2022-7-13 13:13 | 只看该作者
    CMOD   选择时钟为系统时钟/12, E; N4 S9 p1 E$ i) E/ a
    PCA_PWM0        选择10位PWM# m% N) b3 E$ l
    还不行就用6MHZ的时钟
    ( E5 w# |1 E; j# B, M/ I8 M, m再不行就用32KHZ的时钟
  • TA的每日心情
    开心
    2022-1-24 15:10
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-7-13 13:22 | 只看该作者
    CMOD = 0x04;8 a1 p* g3 ~/ w" @. K
    然后,用定时器来定频率吧,你爱多慢就多慢。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-7 02:22 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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