找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2238|回复: 0
打印 上一主题 下一主题
收起左侧

89s003适用于89c51单片机1路独立PWM输出源程序

[复制链接]
跳转到指定楼层
楼主
ID:268788 发表于 2017-12-29 12:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
附件中是我做的项目中的控制发热丝的 pwm源码,仅供参考

单片机源程序如下:
  1. /**
  2. *        @Examle Version                V1.0.0.0
  3. *        @Demo Version                V1.0.1.0
  4. *        @Date                                2017.09.18
  5. *        ************************************************************************************
  6. *                                                                        模块性能介绍
  7. *        1、HC89S003F4拥有一个单路8位PWM3模块,PWM3提供周期溢出中断
  8. *        2、PWM3周期:[PWM3P]*PWM3工作时钟源周期
  9. *        3、PWM3占空比:[PWM3D]*PWM3工作时钟源周期
  10. *        ************************************************************************************
  11. *                                                                         应用注意事项
  12. *        1、占空比0%(PWM3D[0-7]=0x00)输出低电平,占空比100%(PWM3P≤PWM3D)输出高电平
  13. *        2、关闭PWM3模块时,PWM计数停止,输出立即关闭。再打开PWM3模块时,PWM计数器都重新从1开
  14. *           始计数,输出受PWM3OEN控制
  15. *        3、PWM3允许输出,必须在PWM3EN置1下才有效,否则为PWM3输出关闭状态(输出时对应端口必须
  16. *           设为输出模式);即使都禁止输出,只要相关位被使能,PWM3都可以溢出中断,即此时PWM3
  17. *           可以作为定时器/计数器使用,此控制位修改立即生效
  18. *        ************************************************************************************
  19. *                                                                         客户服务
  20. *        感谢您使用我们的单片机,若发现错误或对函数的使用存在疑问。
  21. *        ***************************************************************

  22. **/

  23. #include "HC89S003F4.h"

  24. /***************************************************************************************
  25.   * @实现效果        P11口输出频率为15.69KHz,占空比为34%的方波
  26. ***************************************************************************************/
  27. int main()
  28. {
  29. /************************************系统初始化****************************************/
  30.         WDTCCR = 0x00;                                                //关闭看门狗
  31.         while((CLKCON&0x20)!=0x20);                        //等待内部高频晶振起振
  32.         CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
  33.         while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
  34.         CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
  35. /************************************PWM3初始化****************************************/
  36.     P1M0 = P1M0&0x0F|0x80;              //P11设置为推挽输出
  37.         PWM3_MAP = 0x11;                                        //PWM3映射P11口
  38.         PWM3C = 0x92;                                                 //使能PWM3,关闭中断,允许输出,时钟4分频
  39.         //周期计算         = 0xFF / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
  40.         //                        = 0xFF /(16000000 / 4)                        
  41.         //                         = 255 /4000000
  42.         //                        = 63.75us                即15.69KHZ               

  43.         PWM3P = 0xFF;                                                //PWM周期为0xFF
  44.         //有效电平时间计算(即占空比)         
  45.         //                        = 0x55 / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
  46.         //                        = 0x55 /(16000000 / 4)                        
  47.         //                         = 85 /4000000
  48.         //                        = 21.25us                占空比为 21.25 / 63.75 = 34%

  49.         PWM3D = 0x55;                                                //PWM占空比设置
  50.     while(1);
  51.     return 0;
  52. }
复制代码

所有资料51hei提供下载:
1路独立PWM输出(8位).zip (67.35 KB, 下载次数: 11)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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