附件中是我做的项目中的控制发热丝的 pwm源码,仅供参考
单片机源程序如下:
- /**
- * @Examle Version V1.0.0.0
- * @Demo Version V1.0.1.0
- * @Date 2017.09.18
- * ************************************************************************************
- * 模块性能介绍
- * 1、HC89S003F4拥有一个单路8位PWM3模块,PWM3提供周期溢出中断
- * 2、PWM3周期:[PWM3P]*PWM3工作时钟源周期
- * 3、PWM3占空比:[PWM3D]*PWM3工作时钟源周期
- * ************************************************************************************
- * 应用注意事项
- * 1、占空比0%(PWM3D[0-7]=0x00)输出低电平,占空比100%(PWM3P≤PWM3D)输出高电平
- * 2、关闭PWM3模块时,PWM计数停止,输出立即关闭。再打开PWM3模块时,PWM计数器都重新从1开
- * 始计数,输出受PWM3OEN控制
- * 3、PWM3允许输出,必须在PWM3EN置1下才有效,否则为PWM3输出关闭状态(输出时对应端口必须
- * 设为输出模式);即使都禁止输出,只要相关位被使能,PWM3都可以溢出中断,即此时PWM3
- * 可以作为定时器/计数器使用,此控制位修改立即生效
- * ************************************************************************************
- * 客户服务
- * 感谢您使用我们的单片机,若发现错误或对函数的使用存在疑问。
- * ***************************************************************
- **/
- #include "HC89S003F4.h"
- /***************************************************************************************
- * @实现效果 P11口输出频率为15.69KHz,占空比为34%的方波
- ***************************************************************************************/
- int main()
- {
- /************************************系统初始化****************************************/
- WDTCCR = 0x00; //关闭看门狗
- while((CLKCON&0x20)!=0x20); //等待内部高频晶振起振
- CLKSWR = 0x51; //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
- while((CLKSWR&0xC0)!=0x40); //等待内部高频切换完成
- CLKDIV = 0x01; //Fosc1分频得到Fcpu,Fcpu=16MHz
- /************************************PWM3初始化****************************************/
- P1M0 = P1M0&0x0F|0x80; //P11设置为推挽输出
- PWM3_MAP = 0x11; //PWM3映射P11口
- PWM3C = 0x92; //使能PWM3,关闭中断,允许输出,时钟4分频
- //周期计算 = 0xFF / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
- // = 0xFF /(16000000 / 4)
- // = 255 /4000000
- // = 63.75us 即15.69KHZ
- PWM3P = 0xFF; //PWM周期为0xFF
- //有效电平时间计算(即占空比)
- // = 0x55 / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
- // = 0x55 /(16000000 / 4)
- // = 85 /4000000
- // = 21.25us 占空比为 21.25 / 63.75 = 34%
- PWM3D = 0x55; //PWM占空比设置
- while(1);
- return 0;
- }
复制代码
所有资料51hei提供下载:
1路独立PWM输出(8位).zip
(67.35 KB, 下载次数: 11)
|