版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【PWM 】.精选文库-2精选文库-3精选文库-4精选文库-5精选文库实例一 :电路图如上,该程序的功能是利用按键S1 对 LED 的亮度进行调节。程序如下:#include"STC12C5A.h"/ 注意这个头文件,用reg52 是不行的,如果你没有的话,可以去百/ 度文档里搜索“STC12C5A系列单片机头文件” ,有我共享的头文件。void delay(unsigned int cnt)unsigned char i;for(;cnt>0;cnt-)for(i=0;i<250;i+);void main()CCON=0;/PCA 初始化CL=0;/PCA
2、的 16 位计数器低八位CH=0;/PCA 的 16 位计数器高八位CMOD=0x00; / 选择系统时钟 /12 为计数脉冲 ,则 PWM 的频率 f=sysclk/256/12;CCAP0H=0x80;/占空比控制CCAP0L=0x80;PCA_PWM0=0x00; / 控制占空比的第九位为0CCAPM0=0x42;/ 允许 P13 作为 PWM 输出CR=1;/ 启动 PCA 计数器while(1)if(P10=0)delay(200);while(P10=0);CCAP0H+=10;/ 占空比调节CCAP0L+=10;-6精选文库实例二:两个文件main.c#include <R
3、EG51.H>#include <intrins.h>#define U8 unsigned char#define U16 unsigned intvoid DelayMs(U8 ms);void PWM_clock(U8 clock);void PWM_start(U8 module,U8 mode);/延时子程序 /void DelayMs(U8 ms) / 在 11.0592M 晶振下, stc10f 系列(单周期指令)的ms 级延时U16 i;while(ms-)for(i = 0; i < 850; i+);/ 主函数入口 /sfr CCON= 0xD8;
4、/PCA控制寄存器sfr CMOD= 0xD9; /PCA模式寄存器sfr CCAPM0=0xDA;/PCA模 块0模式寄存器/模块0对 应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列 )sfr CCAPM1=0xDB;/PCA模 块1模式寄存器/模块1对 应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列 )sfr CL= 0xE9;/PCA 定时寄存器 低位sfr CH= 0xF9; /PCA定时寄存器高位sfr CCAP0L= 0xEA; /PCA模块 0 的 捕获寄存器低位sfr CCAP0H= 0xFA;/PCA 模块 0 的 捕获寄存器高
5、位sfr CCAP1L= 0xEB; /PCA模块 1 的 捕获寄存器低位sfr CCAP1H= 0xFB; /PCA模块 1 的 捕获寄存器高位sfr PCA_PWM0 = 0xF2; /PCA PWM模式辅助寄存器0sfr PCA_PWM1 = 0xF3; /PCA PWM模式辅助寄存器1sbit CF= 0xDF;/PCA 计数溢出标志位sbit CR= 0xDE;/PCA 计数器 运行控制位sbit CCF1 = 0xD9;/PCA 模块 1 中断标志-7精选文库sbit CCF0 = 0xD8;/PCA 模块 0 中断标志/* CCAPOH = CCAPOL = 0XC0; /模块
6、0 输出 占空因数为 25%/* CCAPOH = CCAPOL = 0X80; /模块 0 输出 占空因数为 50%/* CCAPOH = CCAPOL = 0X40; /模块 0 输出 占空因数为 75%void PWM_clock(U8 clock);void PWM_start(U8 module,U8 mode);void PWM_clock(U8 clock)CMOD |= (clock<<1);CL = 0x00;CH = 0x00;void PWM_start(U8 module,U8 mode)CCAP0L = 0XC0;CCAP0H = 0XC0;/模块 0 初
7、始输出占空因数为25%CCAP1L = 0XC0;CCAP1H = 0XC0;/模块 1 初始输出占空因数为25%if(module=0)switch(mode)case 0: CCAPM0 = 0X42;break; / 模块 0 设置为 8 位 PWM 输出,无中断case 1: CCAPM0 = 0X53;break; / 模块 0 设置为 8 位 PWM 输出,下降沿产生中断case 2: CCAPM0 = 0X63;break; / 模块 0 设置为 8 位 PWM 输出,上升沿产生中断case 3: CCAPM0 = 0X73;break; / 模块 0 设置为 8 位 PWM输出
8、,跳变沿产生中断default: break;elseif(module=1)switch(mode)case 0: CCAPM1 = 0X42;break; / 模块 1 设置为 8 位 PWM 输出,无中断case 1: CCAPM1 = 0X53;break; / 模块 1 设置为 8 位 PWM 输出,下降沿产生中断case 2: CCAPM1 = 0X63;break; / 模块 1 设置为 8 位 PWM 输出,上升沿产生中断case 3: CCAPM1 = 0X73;break; / 模块 1 设置为 8 位 PWM 输出,跳变沿产生中断default: break;-8精选文库
9、elseif(module=2)switch(mode)case 0: CCAPM0 = CCAPM1 = 0X42;break; /模块 0 和 1 设置为 8 位 PWM 输出,无中断case 1: CCAPM0 = CCAPM1 = 0X53;break; / 模块 0 和 1 设置为 8 位 PWM 输出,下降沿产生中断case 2: CCAPM0 = CCAPM1 = 0X63;break; / 模块 0 和 1 设置为 8 位 PWM 输出,上升沿产生中断case 3: CCAPM0 = CCAPM1 = 0X73;break; / 模块 0 和 1 设置为 8 位 PWM 输出,
10、跳变沿产生中断default: break;CR=1; /PCA 计数器开始计数void PCA_Intrrpt(void) interrupt 7if(CCF0) CCF0=0;if(CCF1) CCF1=0;/软件清零if(CF)CF=0;/ 软件清零void main()TMOD|=0x02; /* timer 0 mode 2: 8-Bit reload */TH0=0xff;TR0=1;PWM_clock(2);/ PCA/PWM时钟源为定时器 0 的溢出PWM_start(0,0); /模块 0,设置为 PWM 输出 ,无中断 ,初始占空因素为25%while(1)DelayMs(
11、250);PwmDrive_12C5A.c-9精选文库#include <intrins.h>#define U8 unsigned charsfr CCON= 0xD8; /PCA控制寄存器sfr CMOD= 0xD9; /PCA 模式寄存器sfr CCAPM0=0xDA;/PCA模 块0模式寄存器/模块0对 应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列 )sfr CCAPM1=0xDB;/PCA模 块1模式寄存器/模块1对 应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列 )sfr CL= 0xE9;/PCA定时寄存器 低位sfr
12、 CH= 0xF9; /PCA定时寄存器高位sfr CCAP0L= 0xEA; /PCA模块 0 的 捕获寄存器低位sfr CCAP0H= 0xFA;/PCA 模块 0 的 捕获寄存器 高位sfr CCAP1L= 0xEB; /PCA模块 1 的 捕获寄存器低位sfr CCAP1H= 0xFB; /PCA模块 1 的 捕获寄存器高位sfr PCA_PWM0 = 0xF2; /PCA PWM模式辅助寄存器0sfr PCA_PWM1 = 0xF3; /PCA PWM模式辅助寄存器1sbit CF= 0xDF;/PCA 计数溢出标志位sbit CR= 0xDE;/PCA 计数器 运行控制位sbit
13、CCF1 = 0xD9;/PCA 模块 1 中断标志sbit CCF0 = 0xD8;/PCA 模块 0 中断标志/* CCAPOH = CCAPOL = 0XC0; /模块 0 输出 占空因数为 25%/* CCAPOH = CCAPOL = 0X80; /模块 0 输出 占空因数为 50%/* CCAPOH = CCAPOL = 0X40; /模块 0 输出 占空因数为 75%void PWM_clock(U8 clock);void PWM_start(U8 module,U8 mode);void PWM_clock(U8 clock)CMOD |= (clock<<1);
14、CL = 0x00;CH = 0x00;void PWM_start(U8 module,U8 mode)CCAP0L = 0XC0;CCAP0H = 0XC0;/模块 0 初始输出占空因数为25%CCAP1L = 0XC0;CCAP1H = 0XC0;/模块 1 初始输出占空因数为25%-10精选文库if(module=0)switch(mode)case 0: CCAPM0 = 0X42;break; / 模块 0 设置为 8 位 PWM 输出,无中断case 1: CCAPM0 = 0X53;break; / 模块 0 设置为 8 位 PWM 输出,下降沿产生中断case 2: CCAP
15、M0 = 0X63;break; / 模块 0 设置为 8 位 PWM 输出,上升沿产生中断case 3: CCAPM0 = 0X73;break; / 模块 0 设置为 8 位 PWM 输出,跳变沿产生中断default: break;elseif(module=1)switch(mode)case 0: CCAPM1 = 0X42;break; / 模块 1 设置为 8 位 PWM 输出,无中断case 1: CCAPM1 = 0X53;break; / 模块 1 设置为 8 位 PWM 输出,下降沿产生中断case 2: CCAPM1 = 0X63;break; / 模块 1 设置为 8 位 PWM 输出,上升沿产生中断case 3: CCAPM1 = 0X73;break; / 模块 1 设置为 8 位 PWM 输出,跳变沿产生中断default: break;elseif(module=2)switch(mode)case 0: CCAPM0 = CCAPM1 = 0X42;break; /模块 0 和 1 设置为 8 位 PWM 输出,无中断case 1: CCAPM0 = CCAPM1 = 0X53;break; / 模块 0 和 1 设置为 8 位 PWM 输出,下降沿产生中断case 2: CCAPM0 = CCAPM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年超市员工宿舍安全用电与卫生管理
- IT基础设施管理与维护手册
- 2026年地基与基础工程施工工艺
- 顾客服务满意度调查问卷模板
- 企业发展与社会责任相辅相成的承诺书(5篇)
- 纺织印染厂染料使用细则
- 品牌策划与营销实战作业指导
- 旅游景区管理服务提升手册
- 企业品牌传播与推广计划书模版
- 高新技术企业研发投入管理优化方案
- 南京市特长生数学试卷
- 美制航空航天螺纹unjf标准
- DG-TJ08-2134-2024 建筑装饰工程石材应用技术标准
- 重组融合蛋白培训课件
- 民航危险品运输第一类爆炸品72课件
- 商务数据分析-形考作业1(第1-2章)-国开(ZJ)-参考资料
- 国家开放大学《公共部门人力资源管理》形考任务2答案
- 《公路施工便道技术指南》
- 陕西省汉中市2023-2024学年八年级上学期联考数学试题
- 城市规划设计计费指导意见(2004年)
- 天然淡水珍珠科普知识讲座
评论
0/150
提交评论