1. 本程序模块仅根据STC12C2052AD系列单片机的数据手册编写,用于其他单片机时需要依情况修改。

2. 用于PWM输出的引脚将不能作为I/O接口使用,除非提前关闭PWM输出。

3. PWM脉冲的频率由系统时钟产生,PWM有分频功能,在使用时需要注意。

可将其模板下载到本地硬盘,在编写新程序的时候复制、粘贴到工程当中,然后根据情况写入具体内容。

/*********************************************************************************************

函数名:PWM初始化函数

调  用:PWM_init();

参  数:无

返回值:无

结  果:将PCA初始化为PWM模式,初始占空比为0

备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可

/**********************************************************************************************/

void PWM_init (void){

CMOD=0x02; //设置PCA定时器

CL=0x00;

CH=0x00;

CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)

CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同

CCAP0H=0x00; // PWM0初始时为0

//CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(使用时删除//)

//CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同

//CCAP1H=0x00; // PWM1初始时为0

//CCAPM2=0x42; //PWM2设置PCA工作方式为PWM方式

//CCAP2L=0x00; //设置PWM2初始值与CCAP0H相同

//CCAP2H=0x00; // PWM2初始时为0

//CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式

//CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同

//CCAP3H=0x00; // PWM3初始时为0

CR=1; //启动PCA定时器

}

/**********************************************************************************************/

/*********************************************************************************************

函数名:PWM0占空比设置函数

调  用:PWM0_set();

参  数:0x00~0xFF(亦可用0~255)

返回值:无

结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平

备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可

/**********************************************************************************************/

void PWM0_set (unsigned char a){

CCAP0L= a; //设置值直接写入CCAP0L

CCAP0H= a; //设置值直接写入CCAP0H

}

/**********************************************************************************************/

/*********************************************************************************************

程序名:    PWM模块调试程序(仅实验用)

硬件支持:  STC12C2052  12MHz

接口说明:  LED灌电流接P3.7接口(PWM0)

/*********************************************************************************************

说明:

/*********************************************************************************************/

#include //头文件

/*********************************************************************************************

函数名:PWM初始化函数

调  用:PWM_init();

参  数:无

返回值:无

结  果:将PCA初始化为PWM模式,初始占空比为0

备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可

/**********************************************************************************************/

void PWM_init (void){

CMOD=0x02; //设置PCA定时器

CL=0x00;

CH=0x00;

CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)

CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同

CCAP0H=0x00; // PWM0初始时为0

//CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(使用时删除//)

//CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同

//CCAP1H=0x00; // PWM1初始时为0

//CCAPM2=0x42; //PWM2设置PCA工作方式为PWM方式

//CCAP2L=0x00; //设置PWM2初始值与CCAP0H相同

//CCAP2H=0x00; // PWM2初始时为0

//CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式

//CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同

//CCAP3H=0x00; // PWM3初始时为0

CR=1; //启动PCA定时器

}

/**********************************************************************************************/

/*********************************************************************************************

函数名:PWM0占空比设置函数

调  用:PWM0_set();

参  数:0x00~0xFF(亦可用0~255)

返回值:无

结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平

备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可

/**********************************************************************************************/

void PWM0_set (unsigned char a){

CCAP0L= a; //设置值直接写入CCAP0L

CCAP0H= a; //设置值直接写入CCAP0H

}

/**********************************************************************************************/

/*********************************************************************************************

函数名:主函数

调  用:无

参  数:无

返回值:无

结  果:程序开始处,无限循环

备  注:

/**********************************************************************************************/

void main (void){

PWM_init(); //PWM初始化

PWM0_set(0x10); //设置PWM占空比

while(1){

//无限循环程序

}

}

/**********************************************************************************************/

pwm脉宽调制c语言程序,MCS-51系列单片机C语言编程PWM脉宽调制器程序模板相关推荐

  1. 51单片机除c语言 中断嵌套,关于51系列单片机中断嵌套 - 关于单片机中断嵌套总结...

    关于51系列单片机中断嵌套 说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套.现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了. 在说到 ...

  2. 51系列单片机采用脉冲宽度调制(PWM)

    介绍一个51系列单片机采用脉冲宽度调制(PWM)方式控制LED灯亮度的一个程序,大家都知道,51单片机本身是没有pwm接口的,这个程序是 通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的 ...

  3. uIP TCP/IP协议栈在51系列单片机上的应用

    uIP 协议栈是一种免费的可实现的极小的TCP/IP协议栈,可以使用于由8位或16位微处理器构建的嵌入式系统.本文分析了uIP协议栈的结构和应用接口,并讨论了如何将其应用到51系列单片机上. 关键字: ...

  4. STC89系列单片机看门狗的使用及应用程序

    转载:STC89系列单片机看门狗的使用及应用程序 "看门狗"概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程 ...

  5. 单片机c语言编程入门下載,系列单片机C语言编程入门.pdf

    系列单片机C语言编程入门.pdf 本文由c h e n j u n j u n j u n 3贡献 p d f 文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机 查看. 维普资 ...

  6. 单片机 spwm c语言程序,基于STC系列单片机的SPWM波形实现

    摘要:文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA实现SPWM控制软件的编写过程,并 ...

  7. 51系列单片机指令快速记忆法

    随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小.性价比 高.功能强.可靠性高等独有的特点,在各个领域(如工业控制.家电产品.汽车电子.通信.智能仪器仪表)得到了广泛的应用.学习. ...

  8. 单片机C语言数据存储原理,学习单片机C语言,必知的数据存储与程序编写知识!...

    一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...

  9. 利用51系列单片机定时器功能实现测量脉冲宽度

    STC12C系列增强型单片机片上扩展了基本51单片机的功能,如提供了PCA/PWM接口,定时器能工作在1T模式下(基本51单片机的时钟是Fosc的12分频,1T模式下1分频). PCA可以用于脉宽测量 ...

  10. c语言错误 xef代表什么,单片机C语言代码手册 含100多个经典C程序

    1 单片机单片机 C 语言代码手册语言代码手册 1 LED 灯灯 点亮一个点亮一个 LED include void main while 1 P0 0 x01 P2 0 x7d 流水灯闪烁流水灯闪烁 ...

最新文章

  1. Linux安装无法运行install,Linux新手安装Debian-8.2.0可能遇到的问题
  2. toString()与new String ()用法区别
  3. hdu 4109 Instrction Arrangement 拓扑排序 关键路径
  4. 阿里巴巴版来了:“有一个程序媛女友/老婆是什么样的体验?”
  5. mmdnn TensorFlow is outdated
  6. 手机能上wifi电脑不行_锦囊在此(电脑手机如何配置使用WIFI)
  7. DMA驱动开发(6,参考资料)有用链接
  8. etc profile 的使用
  9. CDMA2000中的Walsh码,PN码,短码序列的初相位偏置(PN OFFSET)之間的差別與關係(1)
  10. 【黑马程序员数据库】数据库基础大总结
  11. 在Git项目中使用pre-commit统一管理hooks
  12. python爬取笔趣阁小说
  13. 《按自己的意愿过一生》语录一
  14. Samba文件服务器的配置
  15. 常见邮件服务器 接收服务器和发送邮件服务器 地址
  16. 马克维茨模型matlab求解,马克维茨投资组合模型的matlab计算
  17. 计算机远程用户关机指令,详细介绍一个远程关机命令
  18. 那些值得一看的数学电影!
  19. 关于兴业银行接口对接 注意事项
  20. 1.2Android已发布的版本

热门文章

  1. 中柏平板u盘启动_中柏平板电脑u盘启动设置方法
  2. 基于Android的人脸门禁系统
  3. 【用Java模拟KTV点歌系统】
  4. MongoDB 数据库基本操作
  5. Java实现论坛系统
  6. 百度竞价的关键词如何分类?
  7. druid数据库连接池 数据库配置密码加密
  8. 这款网页翻译插件,用了就舍不得戒掉
  9. LHC或许已经首次制造出顶夸克“四胞胎”
  10. flutter 文字颜色渐变