找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2421|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)(STC12C5A60S2)內(nèi)部PWM實(shí)現(xiàn)呼吸燈源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:832215 發(fā)表于 2020-10-24 18:58 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
今天我們將使用單片機(jī)內(nèi)部自帶的PWM來進(jìn)行呼吸燈設(shè)計(jì),自己可以查看該單片機(jī)型號的中文資料。所看章節(jié)如下:

直接上代碼吧,大家可以查看代碼,如果不明白的可以給我留言,^_^。
  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值的分配,為了實(shí)現(xiàn)不同的占空比

  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;        //  設(shè)置脈沖源

  17.         CCAPM0 = 0X42;      //  開啟比較器,允許輸出脈寬調(diào)制信號
  18.         PCA_PWM0 = 0X00;    //  組成9位比較器,可以設(shè)置成1,也可以設(shè)置成0
  19.         CCAP0L = 0x80;      //  比較器中的初值
  20.         CCAP0H = 0X80;      //  比較器初值重裝
  21.         CL=0;   //  裝載值為0
  22.         CR =1;  //  啟動(dòng)計(jì)數(shù)模式
  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.     }
復(fù)制代碼

可以看結(jié)果了:


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表