找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机(STC12C5A60S2)内部PWM实现呼吸灯源程序

[复制链接]
跳转到指定楼层
楼主
今天我们将使用单片机内部自带的PWM来进行呼吸灯设计,自己可以查看该单片机型号的中文资料。所看章节如下:

直接上代码吧,大家可以查看代码,如果不明白的可以给我留言,^_^。
  1.     #include <stc12c5a60s2.h>

  2.     unsigned char dy[15]={16,32,48,64,80,96,112,128,144,160,176,192,208,224,240};   //  CCAP0H值的分配,为了实现不同的占空比

  3.     void modify_duty();
  4.     void Init_PWM();
  5.     void delay();

  6.     void main()
  7.     {
  8.         Init_PWM();
  9.         while(1)
  10.         {
  11.             modify_duty();
  12.         }
  13.     }

  14.     void Init_PWM()         //  PWM功能的初始化
  15.     {
  16.         CMOD = 0X02;        //  设置脉冲源

  17.         CCAPM0 = 0X42;      //  开启比较器,允许输出脉宽调制信号
  18.         PCA_PWM0 = 0X00;    //  组成9位比较器,可以设置成1,也可以设置成0
  19.         CCAP0L = 0x80;      //  比较器中的初值
  20.         CCAP0H = 0X80;      //  比较器初值重装
  21.         CL=0;   //  装载值为0
  22.         CR =1;  //  启动计数模式
  23.     }

  24.     void modify_duty()
  25.     {
  26.        int i;
  27.        for(i=0;i<15;i++)
  28.        {
  29.            CCAP0H =  dy[i];
  30.            delay();
  31.        }
  32.        for(i=13;i>=1;i--)
  33.        {
  34.            CCAP0H =  dy[i];
  35.            delay();
  36.        }
  37.     }

  38.     void delay()
  39.     {
  40.         int i,j;
  41.         for(i=0;i<200;i++)
  42.         {
  43.             for(j=0;j<200;j++);
  44.         }
  45.     }
复制代码

可以看结果了:


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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